gerritgr / non-markovian-simulation

Fast simulation of non-Markovian SIS and SIR-type models on complex networks in Julia.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Simulation of Networked non-Markovian Agent Models

License: GPL v3 Build Status

Copyright: 2019, Gerrit Großmann, Group of Modeling and Simulation at Saarland University

Version: 0.1 (Please note that this is proof-of-concept code in a very early development stage.)

Overview


Official code for our paper Rejection-Based Simulation of Non-Markovian Agents on Complex Networks.

Installation


Install Julia following the instructions on https://julialang.org/downloads/platform.html. Install packages with

julia setup.jl

Example Usage


There is an off-the-shelf script (that also installs the required packages) to run the rejection- and baseline-code on all available graph-files:

python evaluation.py

Besides, you can run the Julia-code using:

julia sis_reject.jl 10 graph_10k_5p_Infected.txt sis_model_out.txt

where 10 is the time horizon and graph_10k_5p_Infected.txt is the contact graph (including the initial labeling) and sis_model_out.txt is the name of the output file. The corresponding rates and rate functions are part of the Julia code.

Network File

The network file contains containing a labeled graph specifying the initial state, each line having the form <Nodeid>;<Label>;<Neighbor1>,<Neighbor2>,...

0;I;31,29,94,13,83
1;S;66,15,73
2;S;29,61,26,80,16,83,30,62,3,93,27,87,68,18,79,6
3;I;83,2,29,4,28,61,46,21,9,49,41,68,16,74
4;S;82,28,12,83,3,62,66,68
...

Nodes start with id 0 and are sorted (rendering the first number somewhat redundant). Isolates (nodes withouth neighbors) are not supported (yet). There should be at least one node for each possible label.

Output:
  • .txt file containing the trajectory
  • .pdf file with a visualization
  • .txt file with the runtime

TODOs


TBA

Known Issues and Pitfalls


TBA

Runtime Gain Example


TBA

More Information


TBA

About

Fast simulation of non-Markovian SIS and SIR-type models on complex networks in Julia.

License:GNU Lesser General Public License v3.0


Languages

Language:Julia 98.3%Language:Python 1.7%