Skip to main content

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.

Metadata

Release files for network-diffusion 0.19.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for network-diffusion 0.19.1
File Size Uploaded
network_diffusion-0.19.1.tar.gz 107.5 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for network-diffusion 0.19.1
File Interpreter ABI Platform
network_diffusion-0.19.1-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
network_diffusion-0.19.1-cp312-cp312-manylinux1_x86_64.manylinux_2_5_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.5+ x86-64 Details
network_diffusion-0.19.1-cp312-cp312-macosx_10_13_universal2.whl CPython 3.12 CPython 3.12 macOS 10.13+ universal2 (ARM64, x86-64) Details

Total release size: 554.2 kB

Release files / network_diffusion-0.19.1.tar.gz

Download URL network_diffusion-0.19.1.tar.gz
Size 107.5 kB
Tags Source
SHA-256 checksum
How to use checksums
ae9f7991ff65269f589f2940380fc438579ba8d10885a5dea1c8eb426a2a688b
BLAKE2b-256 checksum
How to use checksums
e6fcc90b43172d82d9994a21807a4c9e70a56a0944aa93a61395301261211e72
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.13

Release files / network_diffusion-0.19.1-cp312-cp312-win_amd64.whl

Download URL network_diffusion-0.19.1-cp312-cp312-win_amd64.whl
Size 143.0 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
c85518a5505e6540fef8ead68d352825a301015bdf3188ac70d730f4a811f5fc
BLAKE2b-256 checksum
How to use checksums
5226828579dff2d57f6e72353ccb460f4f37b9769518da4e7f2cae37d55bec32
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.13

Release files / network_diffusion-0.19.1-cp312-cp312-manylinux1_x86_64.manylinux_2_5_x86_64.whl

Download URL network_diffusion-0.19.1-cp312-cp312-manylinux1_x86_64.manylinux_2_5_x86_64.whl
Size 158.5 kB
Tags CPython 3.12 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
c9d029afd412d1279f72a328959fb5da4f7e0797f9704a17860001e266f341f7
BLAKE2b-256 checksum
How to use checksums
e64637447cb3afd367ebdc67bcb3cc7f7a2471e5420f5d65d327d625c5d1328e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.13

Release files / network_diffusion-0.19.1-cp312-cp312-macosx_10_13_universal2.whl

Download URL network_diffusion-0.19.1-cp312-cp312-macosx_10_13_universal2.whl
Size 145.2 kB
Tags CPython 3.12 macOS 10.13+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
d19ab017558864939210ebd5287a128bf377ecd35f1049f79da8cc2ecbfbceda
BLAKE2b-256 checksum
How to use checksums
c223761a2d3877a5eadabfffef4e4f1dfde36083afd56c0b2b2d33d7cb4eb798
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.13

Release history Release notifications | RSS feed

This release

0.19.1 This release

4 release files

0.18.1

4 release files

0.18.0

4 release files

0.16.0

4 release files

0.15.0

4 release files

0.14.4

3 release files

0.14.1

4 release files

0.14.0

4 release files

0.13.0

4 release files

0.10.0

2 release files

0.9.0

2 release files

0.8.0

2 release files

0.7.1

2 release files

0.6

2 release files

0.5.29

2 release files

0.5.28

2 release files

0.5.1

1 release file

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