All Projects → thoughtworks → epirust

thoughtworks / epirust

Licence: AGPL-3.0 License
An agent-based epidemiology simulation framework built in Rust

Programming Languages

rust
11053 projects
javascript
184084 projects - #8 most used programming language
python
139335 projects - #7 most used programming language
SCSS
7915 projects
shell
77523 projects
HTML
75241 projects

Projects that are alternatives of or similar to epirust

reina-model
Agent-based simulation model for COVID-19 spread in society and patient outcomes
Stars: ✭ 30 (-60.53%)
Mutual labels:  agent-based-modeling, epidemiology, agent-based-simulation
individual
R Package for individual based epidemiological models
Stars: ✭ 20 (-73.68%)
Mutual labels:  agent-based-modeling, epidemiology
housing-model
Agent-based model of the UK housing market.
Stars: ✭ 29 (-61.84%)
Mutual labels:  agent-based-modeling, agent-based-simulation
js-simulator
General-purpose discrete-event multiagent simulation library for agent-based modelling and simulation
Stars: ✭ 52 (-31.58%)
Mutual labels:  agent-based-modeling, agent-based-simulation
flocc
Agent-based modeling in JavaScript in the browser or on the server.
Stars: ✭ 26 (-65.79%)
Mutual labels:  agent-based-modeling, agent-based-simulation
agentpy
AgentPy is an open-source framework for the development and analysis of agent-based models in Python.
Stars: ✭ 236 (+210.53%)
Mutual labels:  agent-based-modeling, agent-based-simulation
EpiModelHIV
Network Models of HIV Transmission Dynamics among MSM and Heterosexuals
Stars: ✭ 20 (-73.68%)
Mutual labels:  agent-based-modeling, epidemiology
MesaFireEvacuation
Agent Based Fire Evacuation Model built using Project Mesa
Stars: ✭ 21 (-72.37%)
Mutual labels:  agent-based-modeling, agent-based-simulation
evoplex
Evoplex is a fast, robust and extensible platform for developing agent-based models and multi-agent systems on networks. It's available for Windows, Linux and macOS.
Stars: ✭ 98 (+28.95%)
Mutual labels:  agent-based-modeling, agent-based-simulation
covid19analysis
COVID-10 Analysis
Stars: ✭ 16 (-78.95%)
Mutual labels:  epidemiology
fjage
Framework for Java and Groovy Agents
Stars: ✭ 19 (-75%)
Mutual labels:  agent-based-simulation
alien
ALIEN is a CUDA-powered artificial life simulation program.
Stars: ✭ 2,493 (+3180.26%)
Mutual labels:  agent-based-simulation
SimInf
A framework for data-driven stochastic disease spread simulations
Stars: ✭ 21 (-72.37%)
Mutual labels:  epidemiology
FLAMEGPU2
FLAME GPU 2 is a GPU accelerated agent based modelling framework for C++ and Python
Stars: ✭ 25 (-67.11%)
Mutual labels:  agent-based-simulation
list
Repository for Global.health: a data science initiative to enable rapid sharing of trusted and open public health data to advance the response to infectious diseases.
Stars: ✭ 31 (-59.21%)
Mutual labels:  epidemiology
EpiTator
EpiTator annotates epidemiological information in text documents. It is the natural language processing framework that powers GRITS and EIDR Connect.
Stars: ✭ 38 (-50%)
Mutual labels:  epidemiology
Knowledge-Discovery-Agents
A Goal-Oriented Approach to Knowledge Discovery in Multi-Agent Systems
Stars: ✭ 38 (-50%)
Mutual labels:  agent-based-modeling
matsim-code-examples
A repository containing code examples around MATSim
Stars: ✭ 49 (-35.53%)
Mutual labels:  agent-based-simulation
MTBseq source
MTBseq is an automated pipeline for mapping, variant calling and detection of resistance mediating and phylogenetic variants from illumina whole genome sequence data of Mycobacterium tuberculosis complex isolates.
Stars: ✭ 26 (-65.79%)
Mutual labels:  epidemiology
ESL
​The Economic Simulation Library provides an extensive collection of tools to develop, test, analyse and calibrate economic and financial agent-based models. The library is designed to take advantage of different computer architectures. In order to facilitate rapid iteration during model development the library can use parallel computation. Econ…
Stars: ✭ 36 (-52.63%)
Mutual labels:  agent-based-modeling

EpiRust

An agent-based epidemiology simulation framework built in Rust

Build Status

This is a monorepo containing code for the EpiRust framework -

  1. engine - The main EpiRust engine, which can be run as a CLI app
  2. orchestrator - WIP - Coordinator for multiple engines to run large scale simulations
  3. web - The Web UI for EpiRust

Quickstart

The quickest way to run the application is using the CLI interface on the engine. Follow the docker or local setup to get the engine up and running.

Docker

Prerequisites:

Build EpiRust engine docker image
cd engine
docker build -t epirust-engine .
Running EpiRust engine docker container
docker run --rm --name epirust-engine epirust-engine /bin/bash -c 'cargo run --release -- -c config/default.json && ls *.csv'
  • Copy the listed CSV produced from the container to the host machine
docker cp epirust-engine:/engine/<CSV_FILE> .
  • Go to the visualization section to plot the copied CSV file

Local setup

Prerequisites:

  • Install Rust and Cargo (version 1.40.0 or above). Refer to https://rustup.rs/ for rust installation
  • Install cmake (version 3.16.4 or later). Installation instructions will depend on your platform. On MacOS you can install it using brew install cmake. Refer to https://cmake.org/download/
  • The following dependencies are needed on Debian: ca-certificates curl file build-essential autoconf automake autotools-dev libtool xutils-dev cmake pkg-config libfreetype6-dev libfontconfig1-dev xclip
  • Python 3 (for visualization and charting). We also need the pandas and matplotlib libraries which can be installed using pip or conda.
    • pip install pandas matplotlib

Running:

  • Go to the engine directory: cd engine/
  • Run RUST_LOG=info cargo run --release
  • To modify the settings, or run with custom settings, use cargo run --release -- -c config/[your-config].json. Refer to default.json for the available settings.

Visualization:

  • After the simulation is run, it will generate a CSV file. We can plot this using a simple script included in the engine/plot directory
    • Ensure you're in the engine directory
    • Run python plot/plot.py --data-path <PATH_TO_CSV_FILE> - this will plot the csv you provide.

Sample output: Epicurves plot

Running multi-region simulations

You can run EpiRust for multi-region simulations (e.g. to simulate a group of cities). This will require the orchestrator, and each engine representing a region. The architecture page on the wiki describes how this works at a high level.

Steps for running a multi-region simulation:

  1. Prepare a configuration. A configuration is a json file which consists of two parts:
    • The simulation configuaration for each engine. (Note that currently there is some repetition needed in the configuration for each engine)
    • The travel plan, which defines a matrix containing the daily travellers from one region to another. You can take a look at the orchestrator/config directory for examples of the configuration.
  2. Start Kafka. The engines and orchestrator will communicate using Kafka. (The topics should be created automatically when the first messages are sent).
  3. Start the engines. If there are n regions in the config, n engines should be started with the name specified in the config. E.g. ./epirust -d -i [engine-name], where epirust is the engine binary.
  4. Start the orchestrator, pointing to the config file. E.g. ./orchestrator -c [path_to_config]. The simulation should now start.

The multi-region simulation doesn't currently support the web interface. It will generate output CSV and JSON files which you can use to for analysis and charting.

License

EpiRust is an open source project licensed under AGPL v3

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].