Skip to main content

Network Diffusion - a package for simulating spreading phenomena.

Project description

Network Diffusion - Spreading Models in Networks

Licence 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 the graph - a medium for spreading
network = nd.mln.functions.get_toy_network_piotr()

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

# obtain detailed logs for each actor in the form of JSON
raw_logs_json = logs.get_detailed_logs()

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

# or just save a summary of the experiment with all the experiment's 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 temporal models can be created using regular time windows or leverage CogSnet.

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

  • Predefined Models: You have the option to 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 we currently support Linux, MacOS, and Windows, but the package is mostly tested and developed on Unix-based 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 bear in mind that this project is still in development, so the API usually differs between versions. Nonetheless, the code is documented well, so we encourage users to explore the repository. Another way to familiarise yourself with the operating principles of network_diffusion are projects which utilise it:

  • Generator of a dataset with actors' spreading potentials - v0.16.0 - repo
  • Influence max. under LTM in multilayer networks - v0.14.0 pre-release - repo
  • Comparison of spreading in various temporal network models - v0.13.0 - repo
  • Seed selection methods for ICM in multilayer networks - v0.10.0 - repo
  • Modelling coexisting spreading phenomena - v0.6 - 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},
}

Reporting Bugs

Please report bugs on this board or by sending a direct e-mail to the main author.

About Us

This library is developed and maintained by Network Science Lab from Politechnika Wrocławska / Wrocław University of Science and Technology / Technische Universität Breslau and external partners. For more information and updates, please visit our website or GitHub page.

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

network_diffusion-0.17.0.tar.gz (98.7 kB view details)

Uploaded Source

Built Distributions

network_diffusion-0.17.0-cp312-cp312-win_amd64.whl (129.5 kB view details)

Uploaded CPython 3.12 Windows x86-64

network_diffusion-0.17.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.whl (145.1 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.5+ x86-64

network_diffusion-0.17.0-cp312-cp312-macosx_10_13_universal2.whl (132.2 kB view details)

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

File details

Details for the file network_diffusion-0.17.0.tar.gz.

File metadata

  • Download URL: network_diffusion-0.17.0.tar.gz
  • Upload date:
  • Size: 98.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for network_diffusion-0.17.0.tar.gz
Algorithm Hash digest
SHA256 14ecee35ebba12fad644c9a88889a6db63f081070b9bb1e3d9487e6b97f50f30
MD5 461e1d7f33c5b22032dcbcbe1916761a
BLAKE2b-256 790e9b7f4e8503f4b1fbe423a9107323efa41edc7d85451851e08fd3ecd2ae33

See more details on using hashes here.

File details

Details for the file network_diffusion-0.17.0-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for network_diffusion-0.17.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 e0a9c007c01df122f8f965f6e9be76f4a63df9e12d1f3eebeb69d20f079ab29e
MD5 0224b6d12a6fd807a99b27a0e1b3ba5c
BLAKE2b-256 fb40da6df8ece5183253231898277c47d7fb9520780e8497a78f6ca115f7324c

See more details on using hashes here.

File details

Details for the file network_diffusion-0.17.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for network_diffusion-0.17.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 2ce63cb4b044cab868beff18e97a8fc0dcf070c135636268ad76205cfcf6f448
MD5 b5bf9359e7165963e83716690bc0ee73
BLAKE2b-256 dd13514d7f4dec198afa0b3b37c8b34e61fa893957a0b04d6f9e23923ca56b6d

See more details on using hashes here.

File details

Details for the file network_diffusion-0.17.0-cp312-cp312-macosx_10_13_universal2.whl.

File metadata

File hashes

Hashes for network_diffusion-0.17.0-cp312-cp312-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 8cb52fb6404d0cab3b9b0e9ab7cd6fcd1e63536042f4ceccd12cfa29325f1cab
MD5 381340fc898dccd9772c2875ca73f9f5
BLAKE2b-256 14ef422600342e7e058c1deec5f46d60a2044e6f0a52c744420304e8f5485d99

See more details on using hashes here.

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