def __init__(self): PropertyGraph.__init__(self) self._ports = {} self._pid_generator = IdGenerator() self.add_edge_property("_source_port") self.add_edge_property("_target_port") self.add_vertex_property("_ports") self.add_vertex_property("_actor")
def test_pg_has_no_property_by_default(): pg = PropertyGraph() assert len(tuple(pg.vertex_property_names())) == 0 assert len(tuple(pg.edge_property_names())) == 0 assert len(tuple(pg.graph_property_names())) == 0 assert len(tuple(pg.vertex_properties())) == 0 assert len(tuple(pg.edge_properties())) == 0 assert len(tuple(pg.graph_properties())) == 0
def connect(self, source_pid, target_pid, eid=None): """ Connect two ports together. Connection can only be created between and output port and an input port. args: - source_pid (pid): global id of output port. - target_pid (pid): global if of input port. - eid (eid): edge id to use. If None, a new one will be assigned. return: - eid (eid): id of edge used to make the connection. """ if not self.is_out_port(source_pid): msg = "source_pid %s is not an output port" % str(source_pid) raise InvalidPort(msg) if not self.is_in_port(target_pid): msg = "target_pid %s is not an input port" % str(target_pid) raise InvalidPort(msg) eid = PropertyGraph.add_edge(self, self.vertex(source_pid), self.vertex(target_pid), eid) self.edge_property("_source_port")[eid] = source_pid self.edge_property("_target_port")[eid] = target_pid return eid
def clear(self): self._ports.clear() self._pid_generator = IdGenerator() PropertyGraph.clear(self)
def remove_vertex(self, vid): for pid in list(self.ports(vid)): self.remove_port(pid) PropertyGraph.remove_vertex(self, vid)
def add_vertex(self, vid=None): vid = PropertyGraph.add_vertex(self, vid) self.vertex_property("_ports")[vid] = set() self.set_actor(vid, None) return vid
def test_pg_can_be_extended_with_another_graph_with_different_properties(): pg = PropertyGraph() for i in range(5): pg.add_vertex(i) for i in range(4): pg.add_edge(i, i + 1, i) pg.add_vertex_property("aprop") for vid in pg.vertices(): pg.vertex_property("aprop")[vid] = 1 pg.add_edge_property("aprop") for eid in pg.edges(): pg.edge_property("aprop")[eid] = 2 pg.add_graph_property("gprop", 'a') old_len = len(g) old_len_vprop = len(g.vertex_property("prop")) old_len_eprop = len(g.edge_property("prop")) g.extend(pg) assert len(g) == old_len + len(pg) assert "prop" in g.vertex_property_names() assert "aprop" in g.vertex_property_names() assert "prop" in g.edge_property_names() assert "aprop" in g.edge_property_names() assert "gprop" in g.graph_property_names() assert len(g.vertex_property("prop")) == old_len_vprop assert len(g.edge_property("prop")) == old_len_eprop assert len(g.vertex_property("aprop")) == len(pg.vertex_property("aprop")) assert len(g.edge_property("aprop")) == len(pg.edge_property("aprop"))
from nose.tools import assert_raises, with_setup from openalea.container.graph import Graph from openalea.container.property_graph import (PropertyGraph, InvalidVertex, InvalidEdge, InvalidProperty) g = PropertyGraph() g.add_vertex_property("prop") g.add_edge_property("prop") def setup_func(): for i in range(10): g.add_vertex(i) g.vertex_property("prop")[i] = 'v%d' % i for i in range(9): g.add_edge(i, i + 1, i) g.edge_property("prop")[i] = 'e%d' % i def teardown_func(): g.clear() @with_setup(setup_func, teardown_func) def test_pg_has_no_property_by_default(): pg = PropertyGraph() assert len(tuple(pg.vertex_property_names())) == 0 assert len(tuple(pg.edge_property_names())) == 0
def __init__(self, root=0, graph=None): PropertyGraph.__init__(self, graph) self._root = root self.add_edge_property('weight') self.add_edge_property('loop')
def __init__(self, root=0, graph=None): PropertyGraph.__init__(self,graph) self._root = root self.add_edge_property('weight') self.add_edge_property('loop')