Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

GraphBLAS Algorithms

conda-forge pypi License Tests Coverage DOI Discord

GraphBLAS algorithms written in Python with Python-graphblas. We are trying to target the NetworkX API algorithms where possible.

Installation

conda install -c conda-forge graphblas-algorithms
pip install graphblas-algorithms

Basic Usage

First, create a GraphBLAS Matrix.

import graphblas as gb

M = gb.Matrix.from_coo(
  [0, 0, 1, 2, 2, 3],
  [1, 3, 0, 0, 1, 2],
  [1., 2., 3., 4., 5., 6.],
  nrows=4, ncols=4, dtype='float32'
)

Next wrap the Matrix as ga.Graph.

import graphblas_algorithms as ga

G = ga.Graph(M)

Finally call an algorithm.

hubs, authorities = ga.hits(G)

When the result is a value per node, a gb.Vector will be returned. In the case of HITS, two Vectors are returned representing the hubs and authorities values.

Algorithms whose result is a subgraph will return ga.Graph.

Plugin for NetworkX

Dispatching to plugins is a new feature in Networkx 3.0. When both networkx and graphblas-algorithms are installed in an environment, calls to NetworkX algorithms can be dispatched to the equivalent version in graphblas-algorithms.

Dispatch Example

import networkx as nx
import graphblas_algorithms as ga

# Generate a random graph (5000 nodes, 1_000_000 edges)
G = nx.erdos_renyi_graph(5000, 0.08)

# Explicitly convert to ga.Graph
G2 = ga.Graph.from_networkx(G)

# Pass G2 to NetworkX's k_truss
T5 = nx.k_truss(G2, 5)

G2 is not a nx.Graph, but it does have an attribute __networkx_plugin__ = "graphblas". This tells NetworkX to dispatch the k_truss call to graphblas-algorithms. This link connection exists because graphblas-algorithms registers itself as a "networkx.plugin" entry point.

The result T5 is a ga.Graph representing the 5-truss structure of the original graph. To convert to a NetworkX Graph, use:

T5.to_networkx()

Note that even with the conversions to and from ga.Graph, this example still runs 10x faster than using the native NetworkX k-truss implementation. Speed improvements scale with graph size, so larger graphs will see an even larger speed-up relative to NetworkX.

Plugin Algorithms

The following NetworkX algorithms have been implemented by graphblas-algorithms and can be used following the dispatch pattern shown above.

  • Boundary
    • edge_boundary
    • node_boundary
  • Centrality
    • degree_centrality
    • eigenvector_centrality
    • in_degree_centrality
    • katz_centrality
    • out_degree_centrality
  • Cluster
    • average_clustering
    • clustering
    • generalized_degree
    • square_clustering
    • transitivity
    • triangles
  • Community
    • inter_community_edges
    • intra_community_edges
  • Core
    • k_truss
  • Cuts
    • boundary_expansion
    • conductance
    • cut_size
    • edge_expansion
    • mixing_expansion
    • node_expansion
    • normalized_cut_size
    • volume
  • DAG
    • ancestors
    • descendants
  • Dominating
    • is_dominating_set
  • Isolate
    • is_isolate
    • isolates
    • number_of_isolates
  • Link Analysis
    • hits
    • pagerank
  • Reciprocity
    • overall_reciprocity
    • reciprocity
  • Regular
    • is_k_regular
    • is_regular
  • Shortest Paths
    • floyd_warshall
    • floyd_warshall_predecessor_and_distance
    • single_source_bellman_ford_path_length
    • all_pairs_bellman_ford_path_length
    • has_path
  • Simple Paths
    • is_simple_path
  • S Metric
    • s_metric
  • Structural Holes
    • mutual_weight
  • Tournament
    • is_tournament
    • score_sequence
    • tournament_matrix
  • Triads
    • is_triad

Download files

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

Source Distribution

graphblas-algorithms-2023.2.1a0.tar.gz (52.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

graphblas_algorithms-2023.2.1a0-py3-none-any.whl (71.1 kB view details)

Uploaded Python 3

File details

Details for the file graphblas-algorithms-2023.2.1a0.tar.gz.

File metadata

File hashes

Hashes for graphblas-algorithms-2023.2.1a0.tar.gz
Algorithm Hash digest
SHA256 de0c334e0ee664a4d3ea7e4e921b70d80728e39fa0d4df2b08e3b49aea9ef468
MD5 4475f9f2c91844fa2b798d2d4adf9f57
BLAKE2b-256 f59a5054929cdd2552e2f923c9f2423590a3da7ac7576d24bc514a66058f7f53

See more details on using hashes here.

File details

Details for the file graphblas_algorithms-2023.2.1a0-py3-none-any.whl.

File metadata

File hashes

Hashes for graphblas_algorithms-2023.2.1a0-py3-none-any.whl
Algorithm Hash digest
SHA256 b151936378700c04f475f26259e531dd0dac8377f87277c7e694702a4178beb2
MD5 47ddb253976c3cc092800ad15758864d
BLAKE2b-256 c303015d1f52d94238837401ac6e80d3088a85c9c4c8b85843a4ca095bd6fbc2

See more details on using hashes here.

Release history Release notifications | RSS feed

2023.10.0

2 files

2023.6.0

2 files

2023.5.0

2 files

2023.2.1

2 files

This release

2023.2.1a0 This release

2 files

2022.12.0

2 files

2022.11.0

2 files

2022.4.1

2 files

2022.4.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page