class Network: """A set of species that are explicitly linked by interactions. The network is a directed multigraph with labeled edges. The nodes in the graph are the biochemical species involved. The edges represent an interaction between two species, and the edge label is a reference to the associated Interaction object. Attributes: - None """ def __init__(self, species=()): """Initialize a new Network object.""" self.__graph = MultiGraph(species) def __repr__(self): """Return a debugging string representation of this network.""" return "<Network: __graph: " + repr(self.__graph) + ">" def __str__(self): """Return a string representation of this network.""" return "Network of %i species and %i interactions." % ( len(self.species()), len(self.interactions()), ) def add_species(self, species): """Add species to this network.""" self.__graph.add_node(species) def add_interaction(self, source, sink, interaction): """Add interaction to this network.""" self.__graph.add_edge(source, sink, interaction) def source(self, species): """Return list of unique sources for species.""" return self.__graph.parents(species) def source_interactions(self, species): """Return list of (source, interaction) pairs for species.""" return self.__graph.parent_edges(species) def sink(self, species): """Return list of unique sinks for species.""" return self.__graph.children(species) def sink_interactions(self, species): """Return list of (sink, interaction) pairs for species.""" return self.__graph.child_edges(species) def species(self): """Return list of the species in this network.""" return self.__graph.nodes() def interactions(self): """Return list of the unique interactions in this network.""" return self.__graph.labels()
def testAdditionalFunctions(self): a = MultiGraph(['a', 'b', 'c']) a.add_edge('a', 'b', 'label1') a.add_edge('b', 'c', 'label1') a.add_edge('b', 'a', 'label2') self.assertTrue( str(a) == "<MultiGraph: 3 node(s), 3 edge(s), 2 unique label(s)>") self.assertListEqual(a.edges('label1'), [('a', 'b'), ('b', 'c')]) self.assertListEqual(a.labels(), ['label1', 'label2'])
def testAdditionalFunctions(self): a = MultiGraph(["a", "b", "c"]) a.add_edge("a", "b", "label1") a.add_edge("b", "c", "label1") a.add_edge("b", "a", "label2") self.assertEqual( str(a), "<MultiGraph: 3 node(s), 3 edge(s), 2 unique label(s)>") self.assertListEqual(a.edges("label1"), [("a", "b"), ("b", "c")]) self.assertListEqual(a.labels(), ["label1", "label2"])
class Network(object): """A set of species that are explicitly linked by interactions. The network is a directed multigraph with labeled edges. The nodes in the graph are the biochemical species involved. The edges represent an interaction between two species, and the edge label is a reference to the associated Interaction object. Attributes: - None """ def __init__(self, species=()): """Initialize a new Network object.""" self.__graph = MultiGraph(species) def __repr__(self): """Return a debugging string representation of this network.""" return "<Network: __graph: " + repr(self.__graph) + ">" def __str__(self): """Return a string representation of this network.""" return "Network of " + str(len(self.species())) + " species and " + \ str(len(self.interactions())) + " interactions." def add_species(self, species): """Add species to this network.""" self.__graph.add_node(species) def add_interaction(self, source, sink, interaction): """Add interaction to this network.""" self.__graph.add_edge(source, sink, interaction) def source(self, species): """Return list of unique sources for species.""" return self.__graph.parents(species) def source_interactions(self, species): """Return list of (source, interaction) pairs for species.""" return self.__graph.parent_edges(species) def sink(self, species): """Return list of unique sinks for species.""" return self.__graph.children(species) def sink_interactions(self, species): """Return list of (sink, interaction) pairs for species.""" return self.__graph.child_edges(species) def species(self): """Return list of the species in this network.""" return self.__graph.nodes() def interactions(self): """Return list of the unique interactions in this network.""" return self.__graph.labels()