Skip to main content

Python wrapper for dynSIS Fortran simulations

Project description

Optimized Gillespie algorithms for the simulation of Markovian epidemic processes on large and heterogeneous networks: SIS-OGA

This code is part of the article "Optimized Gillespie algorithms for the simulation of Markovian epidemic processes on large and heterogeneous networks" [ArXiv].

license language

Fortran implementation

Versions

(this) Fortran implementation - for performance

Python implementation - learn and use

NetworkX Python implementation - range of options

GA Fortran implementation - Statistically exact, but NOT optimized

Citation

Full bibliographic details: Computer Physics Communications 219C (2017) pp. 303-312

DOI information: 10.1016/j.cpc.2017.06.007

@article{COTA2017303,
title = "Optimized Gillespie algorithms for the simulation of Markovian epidemic processes on large and heterogeneous networks",
journal = "Computer Physics Communications",
volume = "219",
number = "",
pages = "303 - 312",
year = "2017",
note = "",
issn = "0010-4655",
doi = "http://dx.doi.org/10.1016/j.cpc.2017.06.007",
url = "http://www.sciencedirect.com/science/article/pii/S0010465517301893",
author = "Wesley Cota and Silvio C. Ferreira",
keywords = "Complex networks",
keywords = "Markovian epidemic processes",
keywords = "Gillespie algorithm",
abstract = "Numerical simulation of continuous-time Markovian processes is an essential and widely applied tool in the investigation of epidemic spreading on complex networks. Due to the high heterogeneity of the connectivity structure through which epidemic is transmitted, efficient and accurate implementations of generic epidemic processes are not trivial and deviations from statistically exact prescriptions can lead to uncontrolled biases. Based on the Gillespie algorithm (GA), in which only steps that change the state are considered, we develop numerical recipes and describe their computer implementations for statistically exact and computationally efficient simulations of generic Markovian epidemic processes aiming at highly heterogeneous and large networks. The central point of the recipes investigated here is to include phantom processes, that do not change the states but do count for time increments. We compare the efficiencies for the susceptible–infected–susceptible, contact process and susceptible–infected–recovered models, that are particular cases of a generic model considered here. We numerically confirm that the simulation outcomes of the optimized algorithms are statistically indistinguishable from the original GA and can be several orders of magnitude more efficient."
}

Synopsis

This code is a implementation of the SIS-OGA (Optimized Gillespie Algorithm), as detailed in our paper. It receives as input a network file, containing a list of edges and read, via terminal, the dynamical parameters.

Dataset input

You need to provide a file containing the list of edges (in and out, two collumns). ID of the vertices must be enumerated sequentially as 1, 2, 3,..., N, where N is the total number of vertices of the network. Here, we assume undirected and unweighted networks without multiple neither self connections.

Consider, for example, a network with N=5 vertices represented by:

1,2
1,3
2,4
2,5
3,4

Examples of datasets and their specifications are available at https://wcota.me/dynSISdatasets.

Installation

In Linux and OSX, it is simple: just type make in the terminal in the *.f90 directory. If you need debugging, use make c=1.

For Windows, however, you must compile all mod*.f90 files and the program code dynamics.f90. An example is:

gfortran mod_read_tools.f90 mod_random.f90 mod_netdata.f90 dynamics.f90 -o dynamics

Use

If you want to manually input the dynamical parameters, just type:

./dynamics <edges_file> <output_file>

where <output_file> will be written with the average density of infected vertices versus time.

Alternatively, use (Linux):

bash run.sh <edges_file> <output_file> <number of samples> <infection rate lambda> <maximum time steps> <fraction of infected vertices (initial condition)>

Example:

bash run.sh edges/s01.edges.dat "s01.lb0.002_100-samples.dat" 100 0.002 1000000 0.5

License

This code is under GNU General Public License v3.0.

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

dynsis-2.0.0rc1.tar.gz (14.8 kB view details)

Uploaded Source

Built Distribution

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

dynsis-2.0.0rc1-py3-none-any.whl (844.8 kB view details)

Uploaded Python 3

File details

Details for the file dynsis-2.0.0rc1.tar.gz.

File metadata

  • Download URL: dynsis-2.0.0rc1.tar.gz
  • Upload date:
  • Size: 14.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for dynsis-2.0.0rc1.tar.gz
Algorithm Hash digest
SHA256 2eb83701fbedbcc16abcb16c43462695d9214af2b9c8686640fdb8fe8ae370eb
MD5 e04d2c2f1986d5596c7daf00682cac95
BLAKE2b-256 d535f1f5faa80176185cc2857c3710bfaa00b1a1f069ed1f8c87bac794f5a5dd

See more details on using hashes here.

Provenance

The following attestation bundles were made for dynsis-2.0.0rc1.tar.gz:

Publisher: python-publish.yml on wcota/dynSIS_new

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dynsis-2.0.0rc1-py3-none-any.whl.

File metadata

  • Download URL: dynsis-2.0.0rc1-py3-none-any.whl
  • Upload date:
  • Size: 844.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for dynsis-2.0.0rc1-py3-none-any.whl
Algorithm Hash digest
SHA256 156a6398f29e307b93b4729520e9fc3f5632c376f5b6ae6d816e6e4220450614
MD5 67baef6265af98b9f549a03cc94598a9
BLAKE2b-256 67367491b9e77c6c7c0c2433efdcb7d5bed25b955abe27efb91e15e8e867a92e

See more details on using hashes here.

Provenance

The following attestation bundles were made for dynsis-2.0.0rc1-py3-none-any.whl:

Publisher: python-publish.yml on wcota/dynSIS_new

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