Skip to main content

An experimental parallel backend for NetworkX

Project description

nx-parallel

nx-parallel is a NetworkX backend plugin that uses joblib and multiprocessing for parallelization. This project aims to provide parallelized implementations of various NetworkX functions to improve performance.

Features

nx-parallel provides parallelized implementations for the following NetworkX functions:

├── centrality
│   ├── betweenness_centrality
│   ├── closeness_vitality
├── tournament
│   ├── is_reachable
├── efficiency_measures
│   ├── local_efficiency

alt text

See the /timing folder for more heatmaps and code for heatmap generation!

Development install

To setup a local development:

  • Fork this repository.
  • Clone the forked repository locally.
git clone git@github.com:<your_username>/networkx.git
  • Create a fresh conda/mamba virtualenv and install the dependencies
pip install -e ".[developer]"
  • Install pre-commit actions that will run the linters before making a commit
pre-commit install

Usage

Here's an example of how to use nx-parallel:

In [1]: import networkx as nx; import nx_parallel

In [2]: G = nx.path_graph(4)

In [3]: H = nx_parallel.ParallelGraph(G)

In [4]: nx.betweenness_centrality(H)
Out[4]: {0: 0.0, 1: 0.6666666666666666, 2: 0.6666666666666666, 3: 0.0}

Testing

To run tests for the project, use the following command:

PYTHONPATH=. \
NETWORKX_GRAPH_CONVERT=parallel \
NETWORKX_TEST_BACKEND=parallel \
NETWORKX_FALLBACK_TO_NX=True \
    pytest --pyargs networkx "$@"

Contributing

We'd love to have you contribute to nx-parallel! Here are some guidelines on how to do that:

  • Issues: Feel free to open issues for any problems you face, or for new features you'd like to see implemented.
  • Pull requests: If you'd like to implement a feature or fix a bug yourself, we'd be happy to review a pull request. Please make sure to explain the changes you made in the pull request description.

Additional Information

This project is part of the larger NetworkX project. If you're interested in contributing to NetworkX, you can find more information in the NetworkX contributing guidelines.

Project details


Release history Release notifications | RSS feed

This version

0.1

Download files

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

Source Distribution

nx_parallel-0.1.tar.gz (376.7 kB view hashes)

Uploaded Source

Built Distribution

nx_parallel-0.1-py3-none-any.whl (10.7 kB view hashes)

Uploaded Python 3

Supported by

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