Skip to main content

Network Diffusion - a package for simulating spreading phenomena.

Project description

Network Diffusion - Spreading Models in Networks

License: MIT PyPI version

Tests Builds Docs Codecov FOSSA Status

This Python library provides a versatile toolkit for simulating diffusion processes in complex networks. It offers support for various types of models, including temporal models, multilayer models, and combinations of both.

Short Example

import network_diffusion as nd

# define the model with its internal parameters
spreading_model = nd.models.MICModel(
    seeding_budget=[90, 10, 0],  # 95% act suspected, 10% infected, 0% recovered
    seed_selector=nd.seeding.RandomSeedSelector(),  # pick infected act randomly
    protocol="OR",  # how to aggregate impulses from the network's layers
    probability=0.5,  # probability of infection
)

# get a graph - a medium for spreading
network = nd.mln.functions.get_toy_network_piotr()

# perform the simulation for three epochs
simulator = nd.Simulator(model=spreading_model, network=network)
logs = simulator.perform_propagation(n_epochs=3)

# obtain detailed logs for each actor in JSON format
raw_logs_json = logs.get_detailed_logs()

# or obtain aggregated logs for each of the network's layers
aggregated_logs_json = logs.get_aggregated_logs()

# or save a summary of the experiment with all its details
logs.report(visualisation=True, path="my_experiment")

Key Features

  • Complex Network Simulation: The library enables users to simulate diffusion processes in complex networks with ease. Whether you are studying information spread, disease propagation, or any other diffusion phenomena, this library has you covered.

  • Temporal Models: You can work with temporal models, allowing you to capture the dynamics of processes over time. These models can be created using regular time windows or by leveraging CogSnet.

  • Multilayer Networks: The library supports multilayer networks, which are essential for modelling real-world systems with interconnected layers of complexity.

  • Predefined Models: You can use predefined diffusion models such as the Linear Threshold Model, Independent Cascade Model, and more. These models simplify the simulation process, allowing you to focus on your specific research questions.

  • Custom Models: Additionally, Network Diffusion allows you to define your own diffusion models using open interfaces, providing flexibility for researchers to tailor simulations to their unique requirements.

  • Centrality Measures: The library provides a wide range of centrality measures specifically designed for multilayer networks. These measures can be valuable for selecting influential seed nodes in diffusion processes.

  • NetworkX Compatible: The package is built on top of NetworkX, ensuring seamless compatibility with this popular Python library for network analysis. You can easily integrate it into your existing NetworkX-based workflows.

  • PyTorch representation: Network Diffusion offers a plausible converter of the multilayer network to PyTorch sparse representation. That feature can help in deep-learning experiments utilising complex networks (e.g. GNNs).

Package Installation

To install the package, run this command: pip install network_diffusion. Please note that the package is supported on Linux, macOS and Windows, and is mostly tested and developed on Unix-like systems.

To contribute, please clone the repo, switch to a new feature branch, and install the environment:

conda env create -f env/conda.yml
conda activate network-diffusion
pip install -e .

Documentation

Reference guide is available here!

Please note that this project is still under development, and the API may vary between versions. Nevertheless, the code is thoroughly commented and the documentation is kept up to date. Another way to become familiar with the operating principles of network_diffusion is to explore some example projects that make use of it:

  • Assessment of using control methods for influence maximisation - v0.17 - repo
  • Generator of a dataset with actors' spreading potentials - v0.16 - repo
  • Influence max. under LTM in multilayer networks - v0.14 - repo
  • Modelling of concurrent spreading and a diffusion in temporal networks - v0.13 - repo
  • Seed selection methods for ICM in multilayer networks - v0.10 - repo

Citing the Library

If you used the package, please consider citing us:

@article{czuba2024networkdiffusion,
  title={Network Diffusion Framework to Simulate Spreading Processes in Complex Networks},
  author={
      Czuba, Micha{\l} and Nurek, Mateusz and Serwata, Damian and Qi, Yu-Xuan
      and Jia, Mingshan and Musial, Katarzyna and Michalski, Rados{\l}aw
      and Br{\'o}dka, Piotr
    },
  journal={Big Data Mining And Analytics},
  volume={7},
  number={3},
  pages={637-654},
  year={2024},
  publisher={IEEE},
  doi = {10.26599/BDMA.2024.9020010},
  url={https://doi.org/10.26599/BDMA.2024.9020010},
}

Particularly if you used the functionality of simulating coexisting phenomena in complex networks, please add the following reference:

@inproceedings{czuba2022coexisting,
  author={Czuba, Micha\l{} and Br\'{o}dka, Piotr},
  booktitle={9th International Conference on Data Science and Advanced Analytics (DSAA)},
  title={Simulating Spreading of Multiple Interacting Processes in Complex Networks},
  volume={},
  number={},
  pages={1-10},
  year={2022},
  month={oct},
  publisher={IEEE},
  address={Shenzhen, China},
  doi={10.1109/DSAA54385.2022.10032425},
  url={https://ieeexplore.ieee.org/abstract/document/10032425},
}

About Us

This library is developed and maintained by the Network Science Lab at Wroclaw University of Science and Technology. For more information and updates, please visit our website or GitHub page.

Project details


Release history Release notifications | RSS feed

Download files

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

Source Distribution

network_diffusion-0.19.1rc20260316172428.tar.gz (107.5 kB view details)

Uploaded Source

Built Distributions

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

network_diffusion-0.19.1rc20260316172428-cp312-cp312-win_amd64.whl (143.2 kB view details)

Uploaded CPython 3.12Windows x86-64

network_diffusion-0.19.1rc20260316172428-cp312-cp312-manylinux1_x86_64.manylinux_2_5_x86_64.whl (158.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.5+ x86-64

network_diffusion-0.19.1rc20260316172428-cp312-cp312-macosx_10_13_universal2.whl (145.4 kB view details)

Uploaded CPython 3.12macOS 10.13+ universal2 (ARM64, x86-64)

File details

Details for the file network_diffusion-0.19.1rc20260316172428.tar.gz.

File metadata

File hashes

Hashes for network_diffusion-0.19.1rc20260316172428.tar.gz
Algorithm Hash digest
SHA256 45879dd3203cf189983264b83711bd896d552e4065cfd51b15ebc779c8bcf20e
MD5 526aadca7ecb501b92cf7bccf8417887
BLAKE2b-256 a87bbd28c70117d053d964afde115327244a3e5cad52b49d6c88dbc0401f00c9

See more details on using hashes here.

File details

Details for the file network_diffusion-0.19.1rc20260316172428-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for network_diffusion-0.19.1rc20260316172428-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 43a4164d0bd49be17f12390ba760121db5422e970c598047e7d87554ef2f4d1c
MD5 31cf90c911d59d6fc42be54e6419d01b
BLAKE2b-256 619d601e94611187f6a013f84fefec38d73cafced65e1abbd43d8cfdb1950581

See more details on using hashes here.

File details

Details for the file network_diffusion-0.19.1rc20260316172428-cp312-cp312-manylinux1_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for network_diffusion-0.19.1rc20260316172428-cp312-cp312-manylinux1_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 235db4e8d919b7bd56359a1598d1a6b06a81daac7444259b6d7a4cc391c25660
MD5 20afc54108f09617d3179823bae6ac4e
BLAKE2b-256 4a44872d4184f00bfa23b1f73de45aef6fd9120d22b96b4d2ca0dc8db1bdaaae

See more details on using hashes here.

File details

Details for the file network_diffusion-0.19.1rc20260316172428-cp312-cp312-macosx_10_13_universal2.whl.

File metadata

File hashes

Hashes for network_diffusion-0.19.1rc20260316172428-cp312-cp312-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 90d20bd8735d316e4b10316a08d018fa70eca6185b96fd0b9b4d789e4191b0d2
MD5 a37088a7279b6e8dad42498ecba3b696
BLAKE2b-256 948edb28c200d4af7f69cce4c9532825da5f3ae98c7bf8c9fb10c069f1e3b6d2

See more details on using hashes here.

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