Skip to main content
Join the official 2019 Python Developers SurveyStart the survey!

Another fast graph algorithms library

Project description

Leafy Graph Library

Leafy is a python graph library written in cython. This mix gives the speed of writing the library in c with the benefit of python bindings.

Usage

Graph Objects

Leafy supports two types of graphs: Dense and Sparse. These are represented by the classes leafy.graph.Graph and leafy.graph.SparseGraph.

To instantiate a graph object we need to know the number of nodes (verticies) in the graph, and if the graph is directed. Graphs defualt to undirected.

>>> from leafy.graph import Graph
>>> g = Graph(4)
>>> g.add_edge(0, 1)
>>> g.add_edge(2, 3)
>>> g.add_edge(2, 1)
>>> g.matrix
array([[0, 1, 0, 0],
       [1, 0, 1, 0],
       [0, 1, 0, 1],
       [0, 0, 1, 0]], dtype=int32)

the same edges can be defined as a directed SparseGraph

>>> from leafy.graph import SparseGraph
>>> g = SparseGraph(4, True)
>>> g.add_edge(0, 1)
>>> g.add_edge(2, 3)
>>> g.add_edge(2, 1)
>>> g.list
[[1], [], [3, 1], []]

Search

Leafy can run Depth First Search (DFS) and Breadth First Search (BFS) on a graph and return the graph search properties.

To run a search we need to define the graph to search and the node to start from. Before you can view the properties we must call .run().

>>> from leafy.search import DFS
>>> graph = small_graph(request.param)
>>> dfs = DFS(graph, 0)
>>> dfs.run()
>>> dfs.simple_path(12)
[0, 1, 2, 11, 12]
>>> dfs.bridges
[(1, 3), (3, 4), (3, 5), (2, 11), (11, 12)]

Digraphs

For diagraphs leafy supports DFS which can be imported from leafy.digraph

>>> from leafy.digraph import DFS
>>> dag = small_dag()
>>> dfs = DFS(dag, 0)
>>> dfs.run()
>>> dfs.is_dag
True
>>> dfs.topological_order()
[0, 6, 2, 3, 5, 4, 9, 11, 12, 10, 1]

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for leafy, version 0.1.0a2
Filename, size File type Python version Upload date Hashes
Filename, size leafy-0.1.0a2-cp36-cp36m-macosx_10_6_intel.whl (664.4 kB) File type Wheel Python version cp36 Upload date Hashes View hashes
Filename, size leafy-0.1.0a2-cp36-cp36m-manylinux1_x86_64.whl (1.3 MB) File type Wheel Python version cp36 Upload date Hashes View hashes
Filename, size leafy-0.1.0a2-cp37-cp37m-macosx_10_9_x86_64.whl (330.3 kB) File type Wheel Python version cp37 Upload date Hashes View hashes
Filename, size leafy-0.1.0a2-cp37-cp37m-manylinux1_x86_64.whl (1.3 MB) File type Wheel Python version cp37 Upload date Hashes View hashes
Filename, size leafy-0.1.0a2.tar.gz (513.9 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page