graphi package¶
GraphI - Graphs for Humans¶
Documentation is available in docstrings of modules, classes and functions.
In an interactive session, use help
, or ipython’s ?
and ??
.
For example, use help(graphi.GraphABC)
to view the graph interface.
For further help, tutorials and examples visit http://graphi.readthedocs.io to view the full documentation.
Using Graphs¶
You should start by using the type graphi.graph
- the most well-rounded
graph implementation on your system. Like all graphi
types, it uses an
interface similar to the Python builtin types:
from graphi import graph
from datetime import timedelta
# create a graph with initial nodes
airports = graph("New York", "Rio", "Tokyo")
# add edges between nodes
airports["New York":"Rio"] = timedelta(hours=9, minutes=50)
airports["New York":"Tokyo"] = timedelta(hours=13, minutes=55)
All graphs behave like a blend of a set
of nodes and a dict
of edges.
Bulk lookups, such as the adjacency of a node or edges of a graph, provide
efficient views. For example, len(graph[node])` provides the number of
outgoing edges from node
without building intermediate containers.
print('There are', len(airports), 'airports in the world!')
# iterate directly on nodes...
for node in airports:
print(node, 'has', len(airports[node]), 'outgoing connections.')
# ... or use graph.nodes(), graph.edges(), graph.values() or graph.items()
for edge in airports.edges():
print('Origin:', edge.start, ' Destination:', edge.stop, ' Flight Time:', airports[edge])
-
graphi.
graph
¶
-
graphi.
GraphABC
¶ alias of
graphi.abc.Graph
-
class
graphi.
Edge
(start, stop, step=None)¶ Bases:
object
An edge in a graph as a pair of nodes
Parameters: - start – the start or tail of an edge
- stop – the stop or head of an edge
- step – currently unused
This is a verbose interface for creating edges between nodes for use in a graph. It allows using slice notation independent of a graph:
>>> atb = Edge[a:b] >>> a2b = Edge(a, b) >>> graph[a2b] = 1337 >>> graph[a:b] == graph[atb] == graph[a2b] == graph[Edge[a:b]] == graph[Edge(a, b)] True
A
Edge
can also be used for explicit containment tests:>>> Edge[a:b] in graph True
In addition to their slice-like nature,
Edge
is iterable and indexable. This allows for easy unpacking:>>> edge = Edge[a:b] >>> tail, head = edge
Note
This class creates a representation of an edge as a connection between nodes. Edge values can be arbitrary objects.
Warning
Even though
Edge
behaves like aslice
in graphs, builtin containers such aslist
cannot make use of anEdge
.-
start
¶
-
stop
¶