Skip to main content

Backbone extraction algorithms for complex networks

Project description

networkx_backbone

Backbone extraction algorithms for complex networks, built on NetworkX.

This library provides 47 functions across 8 modules for extracting backbone structures from weighted and unweighted networks.

Full documentation: https://www.brianckeegan.com/networkx_backbone/

Installation

pip install networkx-backbone

For full functionality (required for statistical tests, bipartite methods, and some structural methods):

pip install networkx-backbone[full]

Or install from source:

git clone https://github.com/brianckeegan/networkx_backbone.git
cd networkx_backbone
pip install -e ".[full]"

Modules

Module Description Key Functions
statistical Hypothesis-testing methods disparity_filter, noise_corrected_filter, marginal_likelihood_filter, ecm_filter, lans_filter
structural Topology-based methods global_threshold_filter, strongest_n_ties, high_salience_skeleton, metric_backbone, ultrametric_backbone, doubly_stochastic_filter, h_backbone, modularity_backbone, planar_maximally_filtered_graph, maximum_spanning_tree_backbone
proximity Neighborhood-similarity scoring jaccard_backbone, dice_backbone, cosine_backbone, hub_promoted_index, hub_depressed_index, adamic_adar_index, resource_allocation_index, local_path_index, and more
hybrid Combined approaches glab_filter
bipartite Bipartite projection backbones sdsm, fdsm
unweighted Sparsification for unweighted graphs sparsify, lspar, local_degree
filters Post-hoc filtering utilities threshold_filter, fraction_filter, boolean_filter, consensus_backbone
measures Evaluation and comparison node_fraction, edge_fraction, weight_fraction, reachability, ks_degree, ks_weight, compare_backbones

Quick Start

import networkx as nx
import networkx_backbone as nb

# Create a weighted graph
G = nx.karate_club_graph()
for u, v in G.edges():
    G[u][v]["weight"] = 1.0

# Extract backbone using the disparity filter
H = nb.disparity_filter(G)

# Filter to keep only significant edges (p < 0.05)
backbone = nb.threshold_filter(H, "disparity_pvalue", 0.05)

# Compare backbone to original
print(f"Edges kept: {nb.edge_fraction(G, backbone):.1%}")
print(f"Nodes kept: {nb.node_fraction(G, backbone):.1%}")

Proximity-based scoring

# Score edges by Jaccard similarity of endpoint neighborhoods
H = nb.jaccard_backbone(G)

# Keep only the top 20% most structurally embedded edges
backbone = nb.fraction_filter(H, "jaccard", 0.2, ascending=False)

Bipartite backbone

B = nx.Graph()
B.add_edges_from([(1, "a"), (1, "b"), (2, "a"), (2, "c"), (3, "b"), (3, "c")])

backbone = nb.sdsm(B, agent_nodes=[1, 2, 3], alpha=0.05)

Comparing multiple methods

backbones = {
    "disparity": nb.threshold_filter(nb.disparity_filter(G), "disparity_pvalue", 0.05),
    "mst": nb.maximum_spanning_tree_backbone(G),
}
results = nb.compare_backbones(G, backbones)

Dependencies

  • Required: networkx >= 3.0
  • Optional: numpy >= 1.23, scipy >= 1.9 (needed for statistical methods, bipartite methods, doubly stochastic filter, local path index, and KS measures)

Testing

pip install -e ".[test]"
pytest

References

Key papers behind the implemented methods:

Other libraries and datasets:

License

BSD 3-Clause License. See LICENSE for details.

Project details


Download files

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

Source Distribution

networkx_backbone-0.1.0.tar.gz (51.4 kB view details)

Uploaded Source

Built Distribution

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

networkx_backbone-0.1.0-py3-none-any.whl (30.1 kB view details)

Uploaded Python 3

File details

Details for the file networkx_backbone-0.1.0.tar.gz.

File metadata

  • Download URL: networkx_backbone-0.1.0.tar.gz
  • Upload date:
  • Size: 51.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for networkx_backbone-0.1.0.tar.gz
Algorithm Hash digest
SHA256 450f2728bea42088d3655767fdacfc0ad225d05720659bd1f00261a603fceb43
MD5 85cccfae9fa6bd43fee9bc873708673b
BLAKE2b-256 ed5fa10a16490a0663f3479ae26fb4b79ef13736bd1184af5c2dc9806d2c446d

See more details on using hashes here.

Provenance

The following attestation bundles were made for networkx_backbone-0.1.0.tar.gz:

Publisher: publish-to-PyPI.yml on brianckeegan/networkx_backbone

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file networkx_backbone-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for networkx_backbone-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 dee577b50e25c7be0600216e8b388fd351fcebea087f121114a4dd517e07bad6
MD5 276aa5bab09f6f4f7498612541cfbe09
BLAKE2b-256 fd7e26119c65e0f3786d7fc8991e392d2eee32f443fd471f358cc0a5d146914f

See more details on using hashes here.

Provenance

The following attestation bundles were made for networkx_backbone-0.1.0-py3-none-any.whl:

Publisher: publish-to-PyPI.yml on brianckeegan/networkx_backbone

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page