Giter Club home page Giter Club logo

healthbadge / episimmer Goto Github PK

View Code? Open in Web Editor NEW
16.0 4.0 3.0 50.7 MB

Episimmer is an Epidemic Simulation Framework for Decision Support. It is a highly flexible system that can be easily configured to help take decisions during an epidemic in closed communities like university campuses and gated communities.

License: Other

Python 13.16% Jupyter Notebook 86.84%
simulation usermodel epidemic-simulations recommender epidemiology policy intervention vulnerability-detection decision-support-system

episimmer's Introduction

Test Status Documentation Status Code Coverage License PyPI

Episimmer : Epidemic Simulation Platform

Powered by HealthBadge

Episimmer is an Epidemic Simulation Platform that aims to provide Decision and Recommendation Support to help answer your questions related to policies and restrictions during an epidemic. Using simulation techniques widely applied to other fields, we can help schools and colleges discover and hone the opportunities and optimizations they could make to their COVID-19 strategy.

From the most simple decisions (Which days to be online or offline) to more complex strategies (What restrictions should I put on library use?, How many times should I test?, Whom do I test?) Episimmer is the tool for the job.

The Environment

Episimmer is an agent-based epidemic simulator which allows you to model any kind of disease spreading environment. With the help of simple text files, you can have your agents and the interaction network setup in no time. Here are some example of the environments you can create.

SIR_2_locations.gifSIR_2_locations.gif random_SIR.gifrandom_SIR.gif
Completely connected agents at two locations Random Graph G(100, 0.1)
Star_graph.gifStar_graph.gif cellular_automaton.gifcellular_automaton.gif multi_cycle.gifmulti_cycle.gif
Star Graph Cellular Automaton Multi-cycle graph

The edges represent connections between the agents and the node colours represent the changing agent disease state.

But these are static networks, which aren't truly representing real-world phenomena. Episimmer allows you to have cycling dynamic networks which more closely align with real-world social networks than static networks.

Dynamic Network

Dynamic Network

Dynamic Network

The Disease Model

Episimmer also allows easy creation of compartmental disease models. You can be as creative as you like, for example,

complex_model1.pngcomplex_model1.png complex_model2.pngcomplex_model2.png
Complex Model 1 (Taken from here) Complex Model 2 (Taken from here)

Or you could even model a fancy Zombie Apocalypse disease model like this

Zombie Apocalypse

Zombie Apocalypse

Zombie Apocalypse

Intervention Policies

There are many kinds of policies that can be implemented in Episimmer by the user and each policy is built to be flexible. Multiple policies defined by the user can be run in a simulation seamlessly. We have also created templates for the user to test different kinds of policies.

Currently, the policies that can be implemented are:

  1. Lockdown Policy
  2. Testing Policy
  3. Vaccination Policy
  4. Contact Tracing Policy

Vulnerability Detection

Vulnerability Detection refers to finding vulnerabilities in the system that highly affect or are highly affected by disease spread. A major part of decision support is detecting vulnerabilities in the ecosystem and taking appropriate actions to control the disease spread.

Two kinds of Vulnerability Detection exist in Episimmer -

  1. Agent-based Vulnerability Detection
  2. Event-based Vulnerability Detection

For more details, check out the official documentation.

Installation

Prerequisites

Episimmer requires python 3.7+.

Install using pip

If you are using Linux or macOS you can install episimmer from PyPI with pip:

pip install episimmer

Install from source

Or you can install from source

  1. First clone this repository:
git clone https://github.com/healthbadge/episimmer.git
  1. Then, to install the package, run the following command inside the episimmer directory:
pip install -e .
  1. If you do not have pip you can instead use:
python setup.py install

If you do not have root access, you should add the --user option to the above lines.

Running Examples

To run examples -

If you installed episimmer through PyPI, run:

episimmer <Path_to_Example>

Otherwise, in the repository, run:

python episimmer/main.py <Path_to_Example>

Command line Arguments

positional arguments:

example_path : Pass the path to the data folder

optional arguments:

-np or --noplot : Restrict plotting the time plot after simulation. Default = False
-vul or --vuldetect : Run Vulnerability Detection on the data folder based on VD_config.txt. Default = False
-a or --animate : Creates a gif animation of the time plot. Default = False
-s or --stats : Choose to store statistics. Default = False
-viz or --vizdyn : Creates a gif of the simulation environment progressing through the days. Default = False

Tutorials

Check out Episimmer's official documentation for a complete tutorial on the simulator. You may also go through these colab notebooks for a more hands-on tutorial on Episimmer:

  1. Tutorial 1 - Episimmer Basics
  2. Tutorial 2 - The Environment
  3. Tutorial 3 - Disease Modelling
  4. Tutorial 4 - Intervention Policies
  5. Tutorial 5 - Vulnerability Detection

UI

Our current UI can be found at here. Note that it has minimal functionality as compared to running the codebase directly. Yet it competes with the current state of the art systems with multiple novel features.

episimmer's People

Contributors

anuritabose avatar aparahuja avatar foysavas avatar inavamsi avatar itisuday avatar pre-commit-ci[bot] avatar ruthushankar avatar suryadheeshjith avatar tusharshetty61 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

episimmer's Issues

External prevalence

In disease model add external prevalence. A function which determines which and at what rate an agent gets infected during the simulation from an external source.

Vulnerability Module

Modules for
-Vulnerable agents
-Agent vulnerabilities
-Event vulnerabilities
-Interaction vulnerabilities

Statistics Module

A statistics module that can save state of any data or value and present it at the end of the simulation.

Update tutorial

-Statistics module
-Vulnerability Detection module
-Custom changes to attributes

Create a Files Module

Hold all files, filenames and filelists.
Each file type has
-manage method in Main
-Initialize method in World
-load method to call in Simulate

Random interaction

A new building block for agent interactions.
Input : Agents list : number n : probability p
Action : an Er interctaion graph on those n agents.

Fix Initialise states in Model.py

Fix to ensure true probability. Cumulative proportion is set to floor without randomness. With remaining probability set to ceil.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.