Example #1
0
    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")
Example #2
0
    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")
Example #3
0
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
Example #4
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
Example #5
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
Example #6
0
 def clear(self):
     self._ports.clear()
     self._pid_generator = IdGenerator()
     PropertyGraph.clear(self)
Example #7
0
    def remove_vertex(self, vid):
        for pid in list(self.ports(vid)):
            self.remove_port(pid)

        PropertyGraph.remove_vertex(self, vid)
Example #8
0
 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
Example #9
0
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"))
Example #10
0
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
Example #11
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')
Example #12
0
 def clear(self):
     self._ports.clear()
     self._pid_generator = IdGenerator()
     PropertyGraph.clear(self)
Example #13
0
    def remove_vertex(self, vid):
        for pid in list(self.ports(vid)):
            self.remove_port(pid)

        PropertyGraph.remove_vertex(self, vid)
Example #14
0
 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
Example #15
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')