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 65 functions across 9 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, multiple_linkage_analysis
structural Topology-based methods global_threshold_filter, strongest_n_ties, global_sparsification, primary_linkage_analysis, edge_betweenness_filter, node_degree_filter, 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 simple_projection, hyper_projection, probs_projection, ycn_projection, sdsm, fdsm, fixedfill, fixedrow, fixedcol, backbone
unweighted Sparsification for unweighted graphs sparsify, lspar, local_degree
filters Post-hoc filtering utilities multigraph_to_weighted, 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
visualization Graph comparison plotting graph_difference, compare_graphs, save_graph_comparison

NetBone Core Coverage

Core method families used in netbone (Yassin et al., 2023) are represented here, including:

  • Statistical: disparity_filter, marginal_likelihood_filter, ecm_filter, noise_corrected_filter, lans_filter, multiple_linkage_analysis
  • Structural: global_threshold_filter, global_sparsification, primary_linkage_analysis, edge_betweenness_filter, high_salience_skeleton, doubly_stochastic_filter, maximum_spanning_tree_backbone
  • Hybrid: glab_filter

Quick Start

import networkx as nx
import networkx_backbone as nb

# Create a weighted graph
G = nx.les_miserables_graph()

# 1) Score edges
scored = nb.disparity_filter(G)

# 2) Filter edges
backbone = nb.threshold_filter(scored, "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%}")

Disparity filter visualization

Disparity filter on Les Miserables

Proximity-based scoring

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

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

Bipartite backbone

B = nx.davis_southern_women_graph()
women_nodes = [n for n, d in B.nodes(data=True) if d["bipartite"] == 0]
scored = nb.sdsm(B, agent_nodes=women_nodes, projection="hyper")
backbone = nb.threshold_filter(scored, "sdsm_pvalue", 0.05, mode="below")

Projection weights follow the simple/hyper/ProbS/YCN formulations described in Coscia & Neffke (2017).

Comparing multiple methods

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

Dependencies

  • Required: networkx >= 3.0
  • Optional: numpy >= 1.23, scipy >= 1.9, matplotlib >= 3.7 (needed for statistical methods, bipartite methods, some structural/proximity methods, visualization helpers, and docs gallery generation)

Testing

pip install -e ".[test]"
pytest

Visualization gallery

Backbone visualizations in the docs are generated with Sphinx Gallery from example scripts under docs/examples/.

Build docs (including the graph comparison gallery and function-linked visualizations):

pip install -e ".[docs]"
sphinx-build -b html docs docs/_build/html

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.2.0.post1.dev9.tar.gz (6.7 MB 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.2.0.post1.dev9-py3-none-any.whl (44.3 kB view details)

Uploaded Python 3

File details

Details for the file networkx_backbone-0.2.0.post1.dev9.tar.gz.

File metadata

File hashes

Hashes for networkx_backbone-0.2.0.post1.dev9.tar.gz
Algorithm Hash digest
SHA256 fa644a8438ad300d6d2d0136c3dc0362d631e132aac5fa32f41e667dffcea74e
MD5 0401d62cd669625d8d445887938b8bea
BLAKE2b-256 a255f2cd1a770737c07e09ae74ea68daa8dd3d65408ffc2c5b400569181d14e2

See more details on using hashes here.

Provenance

The following attestation bundles were made for networkx_backbone-0.2.0.post1.dev9.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.2.0.post1.dev9-py3-none-any.whl.

File metadata

File hashes

Hashes for networkx_backbone-0.2.0.post1.dev9-py3-none-any.whl
Algorithm Hash digest
SHA256 d6ce7baaca800bdf2b2b7cf05fb29a20157c057c3366c2bec8f6b2cb6062d577
MD5 df4cf7d4d090752fd4f2fe59f975d6f9
BLAKE2b-256 a357eea55266779129748cf08ac2738ba540106346803245aa213357060a2865

See more details on using hashes here.

Provenance

The following attestation bundles were made for networkx_backbone-0.2.0.post1.dev9-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