Bases: sage.structure.sage_object.SageObject
A generic wrapper for the backend of a graph. Various graph classes use extensions of this class. Note, this graph has a number of placeholder functions, so the doctests are rather silly.
TESTS:
sage: import sage.graphs.base.graph_backends
Add an edge (u,v) to self, with label l. If directed is True, this is interpreted as an arc from u to v.
INPUT:
- ``u,v`` -- vertices
- ``l`` -- edge label
- ``directed`` -- boolean
TESTS:
sage: G = sage.graphs.base.graph_backends.GenericGraphBackend()
sage: G.add_edge(1,2,'a',True)
Traceback (most recent call last):
...
NotImplementedError
Add a sequence of edges to self. If directed is True, these are interpreted as arcs.
INPUT:
TESTS:
sage: G = sage.graphs.base.graph_backends.GenericGraphBackend()
sage: G.add_edges([],True)
Traceback (most recent call last):
...
NotImplementedError
Add a labelled vertex to self.
INPUT:
OUTPUT:
If name=None, the new vertex name is returned, None otherwise.
TESTS:
sage: G = sage.graphs.base.graph_backends.GenericGraphBackend()
sage: G.add_vertex(0)
Traceback (most recent call last):
...
NotImplementedError
Add labelled vertices to self.
INPUT:
OUTPUT:
Generated names of new vertices if there is at least one None value present in vertices. None otherwise.
EXAMPLES:
sage: G = sage.graphs.base.graph_backends.GenericGraphBackend()
sage: G.add_vertices([1,2,3])
Traceback (most recent call last):
...
NotImplementedError
Returns the total number of vertices incident to v.
INPUT:
OUTPUT:
degree of v
TESTS:
sage: G = sage.graphs.base.graph_backends.GenericGraphBackend()
sage: G.degree(1, False)
Traceback (most recent call last):
...
NotImplementedError
Deletes the edge (u,v) with label l.
INPUT:
TESTS:
sage: G = sage.graphs.base.graph_backends.GenericGraphBackend()
sage: G.del_edge(1,2,'a',True)
Traceback (most recent call last):
...
NotImplementedError
Delete a labelled vertex in self.
INPUT:
TESTS:
sage: G = sage.graphs.base.graph_backends.GenericGraphBackend()
sage: G.del_vertex(0)
Traceback (most recent call last):
...
NotImplementedError
Delete labelled vertices in self.
INPUT:
TESTS:
sage: G = sage.graphs.base.graph_backends.GenericGraphBackend()
sage: G.del_vertices([1,2,3])
Traceback (most recent call last):
...
NotImplementedError
Returns the edge label of (u,v).
INPUT:
OUTPUT:
label of (u,v)
TESTS:
sage: G = sage.graphs.base.graph_backends.GenericGraphBackend()
sage: G.get_edge_label(1,2)
Traceback (most recent call last):
...
NotImplementedError
True if self has an edge (u,v) with label l.
INPUT:
OUTPUT:
boolean
TESTS:
sage: G = sage.graphs.base.graph_backends.GenericGraphBackend()
sage: G.has_edge(1,2,'a')
Traceback (most recent call last):
...
NotImplementedError
True if self has a vertex with label v.
INPUT:
TESTS:
sage: G = sage.graphs.base.graph_backends.GenericGraphBackend()
sage: G.has_vertex(0)
Traceback (most recent call last):
...
NotImplementedError
Return the in-degree of
INPUT:
TESTS:
sage: G = sage.graphs.base.graph_backends.GenericGraphBackend()
sage: G.in_degree(1)
Traceback (most recent call last):
...
NotImplementedError
Iterate over the edges incident to a sequence of vertices. Edges are assumed to be undirected.
INPUT:
OUTPUT:
a generator which yields edges, with or without labels depending on the labels parameter.
TESTS:
sage: G = sage.graphs.base.graph_backends.GenericGraphBackend()
sage: G.iterator_edges([],True)
Traceback (most recent call last):
...
NotImplementedError
Iterate over the incoming edges incident to a sequence of vertices.
INPUT:
TESTS:
sage: G = sage.graphs.base.graph_backends.GenericGraphBackend()
sage: G.iterator_in_edges([],True)
Traceback (most recent call last):
...
NotImplementedError
Iterate over the vertices u such that the edge (u,v) is in self (that is, predecessors of v).
INPUT:
OUTPUT:
a generator which yields vertex labels
TESTS:
sage: G = sage.graphs.base.graph_backends.GenericGraphBackend()
sage: G.iterator_in_nbrs(0)
Traceback (most recent call last):
...
NotImplementedError
Iterate over the vertices adjacent to v.
INPUT:
OUTPUT:
a generator which yields vertex labels
TESTS:
sage: G = sage.graphs.base.graph_backends.GenericGraphBackend()
sage: G.iterator_nbrs(0)
Traceback (most recent call last):
...
NotImplementedError
Iterate over the outbound edges incident to a sequence of vertices.
INPUT:
OUTPUT:
a generator which yields edges, with or without labels depending on the labels parameter.
TESTS:
sage: G = sage.graphs.base.graph_backends.GenericGraphBackend()
sage: G.iterator_out_edges([],True)
Traceback (most recent call last):
...
NotImplementedError
Iterate over the vertices u such that the edge (v,u) is in self (that is, successors of v).
INPUT:
OUTPUT:
a generator which yields vertex labels
TESTS:
sage: G = sage.graphs.base.graph_backends.GenericGraphBackend()
sage: G.iterator_out_nbrs(0)
Traceback (most recent call last):
...
NotImplementedError
Iterate over the vertices v with labels in verts.
INPUT:
OUTPUT:
a generator which yields vertices
TESTS:
sage: G = sage.graphs.base.graph_backends.GenericGraphBackend()
sage: G.iterator_verts(0)
Traceback (most recent call last):
...
NotImplementedError
Get/set whether or not self allows loops.
INPUT:
TESTS:
sage: G = sage.graphs.base.graph_backends.GenericGraphBackend()
sage: G.loops(True)
Traceback (most recent call last):
...
NotImplementedError
sage: G.loops(None)
Traceback (most recent call last):
...
NotImplementedError
Get/set whether or not self allows multiple edges.
INPUT:
TESTS:
sage: G = sage.graphs.base.graph_backends.GenericGraphBackend()
sage: G.multiple_edges(True)
Traceback (most recent call last):
...
NotImplementedError
sage: G.multiple_edges(None)
Traceback (most recent call last):
...
NotImplementedError
Get/set name of self.
INPUT:
TESTS:
sage: G = sage.graphs.base.graph_backends.GenericGraphBackend()
sage: G.name("A Generic Graph")
Traceback (most recent call last):
...
NotImplementedError
sage: G.name(None)
Traceback (most recent call last):
...
NotImplementedError
The number of edges in self
INPUT:
TESTS:
sage: G = sage.graphs.base.graph_backends.GenericGraphBackend()
sage: G.num_edges(True)
Traceback (most recent call last):
...
NotImplementedError
sage: G.num_edges(False)
Traceback (most recent call last):
...
NotImplementedError
The number of vertices in self
TESTS:
sage: G = sage.graphs.base.graph_backends.GenericGraphBackend()
sage: G.num_verts()
Traceback (most recent call last):
...
NotImplementedError
Return the out-degree of
INPUT:
TESTS:
sage: G = sage.graphs.base.graph_backends.GenericGraphBackend()
sage: G.out_degree(1)
Traceback (most recent call last):
...
NotImplementedError
Relabel the vertices of self by a permutation.
INPUT:
TESTS:
sage: G = sage.graphs.base.graph_backends.GenericGraphBackend()
sage: G.relabel([],False)
Traceback (most recent call last):
...
NotImplementedError
Label the edge (u,v) by l.
INPUT:
TESTS:
sage: G = sage.graphs.base.graph_backends.GenericGraphBackend()
sage: G.set_edge_label(1,2,'a',True)
Traceback (most recent call last):
...
NotImplementedError
Bases: sage.structure.sage_object.SageObject
Class for unpickling old networkx.XDiGraph formats
TESTS:
sage: import sage.graphs.base.graph_backends
Change the old networkx XDiGraph format into the new one.
OUTPUT:
EXAMPLES:
sage: from sage.graphs.base.graph_backends import NetworkXDiGraphDeprecated as NXDGD
sage: X = NXDGD()
doctest:...
sage: X.adj = {1:{2:7}, 2:{1:[7,8], 3:[4,5,6,7]}}
sage: X.multiedges = True
sage: G = X.mutate()
sage: G.edges()
[(1, 2), (2, 1), (2, 3)]
sage: G.edges(data=True)
[(1, 2, {'weight': 7}),
(2, 1, {7: {}, 8: {}}),
(2, 3, {4: {}, 5: {}, 6: {}, 7: {}})]
Bases: sage.graphs.base.graph_backends.GenericGraphBackend
A wrapper for NetworkX as the backend of a graph.
TESTS:
sage: import sage.graphs.base.graph_backends
Add an edge (u,v) to self, with label l. If directed is True, this is interpreted as an arc from u to v.
INPUT:
TESTS:
sage: G = sage.graphs.base.graph_backends.NetworkXGraphBackend()
sage: G.add_edge(1,2,'a',True)
Add a sequence of edges to self. If directed is True, these are interpreted as arcs.
INPUT:
TESTS:
sage: G = sage.graphs.base.graph_backends.NetworkXGraphBackend()
sage: G.add_edges([],True)
Add a labelled vertex to self.
INPUT:
OUTPUT:
If name=None, the new vertex name is returned. None otherwise.
TESTS:
sage: G = sage.graphs.base.graph_backends.NetworkXGraphBackend()
sage: G.add_vertex(0)
Add labelled vertices to self.
INPUT:
OUTPUT:
Generated names of new vertices if there is at least one None value present in vertices. None otherwise.
EXAMPLES:
sage: G = sage.graphs.base.graph_backends.NetworkXGraphBackend()
sage: G.add_vertices([1,2,3])
sage: G.add_vertices([4,None,None,5])
[0, 6]
Returns the total number of vertices incident to v.
INPUT:
OUTPUT:
degree of v
TESTS:
sage: G = sage.graphs.base.graph_backends.NetworkXGraphBackend()
sage: G.add_vertices(range(3))
sage: G.degree(1, False)
0
Deletes the edge (u,v) with label l.
INPUT:
TESTS:
sage: G = sage.graphs.base.graph_backends.NetworkXGraphBackend()
sage: G.del_edge(1,2,'a',True)
Delete a labelled vertex in self.
INPUT:
TESTS:
sage: G = sage.graphs.base.graph_backends.NetworkXGraphBackend()
sage: G.del_vertex(0)
Traceback (most recent call last):
...
NetworkXError: The node 0 is not in the graph.
Delete labelled vertices in self.
INPUT:
TESTS:
sage: G = sage.graphs.base.graph_backends.NetworkXGraphBackend()
sage: G.del_vertices([1,2,3])
Traceback (most recent call last):
...
NetworkXError: The node 1 is not in the graph.
Returns the edge label of (u,v).
INPUT:
TESTS:
sage: G = sage.graphs.base.graph_backends.NetworkXGraphBackend()
sage: G.get_edge_label(1,2)
Traceback (most recent call last):
...
NetworkXError: Edge (1,2) requested via get_edge_label does not exist.
True if self has an edge (u,v) with label l.
INPUT:
TESTS:
sage: G = sage.graphs.base.graph_backends.NetworkXGraphBackend()
sage: G.has_edge(1,2,'a')
False
True if self has a vertex with label v.
INPUT:
TESTS:
sage: G = sage.graphs.base.graph_backends.NetworkXGraphBackend()
sage: G.has_vertex(0)
False
Returns the in-degree of v.
INPUT:
OUTPUT:
degree of v
TESTS:
sage: G = DiGraph(digraphs.Path(5),implementation="networkx")
sage: G = G._backend
sage: G.in_degree(0)
0
sage: G.in_degree(4)
1
Iterate over the edges incident to a sequence of vertices. Edges are assumed to be undirected.
INPUT:
TESTS:
sage: G = sage.graphs.base.graph_backends.NetworkXGraphBackend()
sage: G.iterator_edges([],True)
<generator object iterator_edges at ...>
Iterate over the incoming edges incident to a sequence of vertices.
INPUT:
TESTS:
sage: G = sage.graphs.base.graph_backends.NetworkXGraphBackend()
sage: i = G.iterator_in_edges([],True)
Iterate over the vertices u such that the edge (u,v) is in self (that is, predecessors of v).
INPUT:
TESTS:
sage: G = sage.graphs.base.graph_backends.NetworkXGraphBackend()
sage: G.iterator_in_nbrs(0)
Traceback (most recent call last):
...
AttributeError: 'MultiGraph' object has no attribute 'predecessors_iter'
Iterate over the vertices adjacent to v.
INPUT:
TESTS:
sage: G = sage.graphs.base.graph_backends.NetworkXGraphBackend()
sage: G.add_vertex(0)
sage: G.iterator_nbrs(0)
<dictionary-keyiterator object at ...>
Iterate over the outbound edges incident to a sequence of vertices.
INPUT:
TESTS:
sage: G = sage.graphs.base.graph_backends.NetworkXGraphBackend()
sage: i = G.iterator_out_edges([],True)
Iterate over the vertices u such that the edge (v,u) is in self (that is, successors of v).
INPUT:
TESTS:
sage: G = sage.graphs.base.graph_backends.NetworkXGraphBackend()
sage: G.iterator_out_nbrs(0)
Traceback (most recent call last):
...
AttributeError: 'MultiGraph' object has no attribute 'successors_iter'
Iterate over the vertices v with labels in verts.
INPUT:
TESTS:
sage: G = sage.graphs.base.graph_backends.NetworkXGraphBackend()
sage: G.iterator_verts(0)
<generator object bunch_iter at ...>
Get/set whether or not self allows loops.
INPUT:
TESTS:
sage: G = sage.graphs.base.graph_backends.NetworkXGraphBackend()
sage: G.loops(True)
sage: G.loops(None)
True
Get/set whether or not self allows multiple edges.
INPUT:
TESTS:
sage: G = sage.graphs.base.graph_backends.NetworkXGraphBackend()
sage: G.multiple_edges(True)
sage: G.multiple_edges(None)
True
Get/set name of self.
INPUT:
TESTS:
sage: G = sage.graphs.base.graph_backends.NetworkXGraphBackend()
sage: G.name("A NetworkX Graph")
sage: G.name(None)
'A NetworkX Graph'
The number of edges in self
INPUT:
TESTS:
sage: G = sage.graphs.base.graph_backends.NetworkXGraphBackend()
sage: G.num_edges(True)
0
sage: G.num_edges(False)
0
The number of vertices in self
TESTS:
sage: G = sage.graphs.base.graph_backends.NetworkXGraphBackend()
sage: G.num_verts()
0
Returns the out-degree of v.
INPUT:
OUTPUT:
degree of v
TESTS:
sage: G = DiGraph(digraphs.Path(5),implementation="networkx")
sage: G = G._backend
sage: G.out_degree(0)
1
sage: G.out_degree(4)
0
Relabel the vertices of self by a permutation.
INPUT:
TESTS:
sage: G = sage.graphs.base.graph_backends.NetworkXGraphBackend()
sage: G.relabel([],False)
Label the edge (u,v) by l.
INPUT:
TESTS:
sage: G = sage.graphs.base.graph_backends.NetworkXGraphBackend()
sage: G.set_edge_label(1,2,'a',True)
Bases: sage.structure.sage_object.SageObject
Class for unpickling old networkx.XGraph formats
TESTS:
sage: from sage.graphs.base.graph_backends import NetworkXGraphDeprecated as NXGD
sage: X = NXGD()
doctest:...
Change the old networkx XGraph format into the new one.
OUTPUT:
EXAMPLES:
sage: from sage.graphs.base.graph_backends import NetworkXGraphDeprecated as NXGD
sage: X = NXGD()
doctest:...
sage: X.adj = {1:{2:7}, 2:{1:7}, 3:{2:[4,5,6,7]}, 2:{3:[4,5,6,7]}}
sage: X.multiedges = True
sage: G = X.mutate()
sage: G.edges()
[(1, 2), (2, 3)]
sage: G.edges(data=True)
[(1, 2, {'weight': 7}), (2, 3, {4: {}, 5: {}, 6: {}, 7: {}})]