Skip to main content

emod-common — This package is a disease-specific distribution of the EMOD binary for the Generic (common to all sim types) simulation type.

EMOD

Epidemiological MODeling software (EMOD), is an agent-based model (ABM) that simulates the simultaneous interactions of agents in an effort to recreate complex phenomena. Each agent (such as a human or vector) can be assigned a variety of “properties” (for example, age, gender, etc.), and their behavior and interactions with one another are determined by using decision rules. These models have strong predictive power and are able to leverage spatial and temporal dynamics.

EMOD is also stochastic, meaning that there is randomness built into the model. Infection and recovery processes are represented as probabilistic Bernoulli random draws. In other words, when a susceptible person comes into contact with a pathogen, they are not guaranteed to become infected. Instead, you can imagine flipping a coin that has a λ chance of coming up tails S(t) times, and for every person who gets a “head” you say they are infected. This randomness better approximates what happens in reality. It also means that you must run many simulations to determine the probability of particular outcomes.

As of V2.22, EMOD will only support malaria and HIV and will no longer support diseases such as TB and Typhoid.

Project status

EMOD-Hub projects are provided as open source software under the MIT License for community use, research, and development.

Unless otherwise noted, these projects are no longer actively maintained or supported by IDM or the Gates Foundation.

Community contributions are welcome, and trusted collaborators may review and merge pull requests, but no guarantees are made regarding support, pull request review, security response, maintenance, or release timelines.

Running EMOD

Most users should interact with EMOD through the disease-specific Python workflow packages rather than directly through the C++ model source code.

These packages simplify configuring simulations, running experiments across different execution environments, and analyzing results.

The C++ source code in this repository is primarily intended for users interested in understanding the internal implementation of the model or modifying the core simulation engine.

Source Code Installation for Development

The following link provides instructions for installing the prerequisites required to build and run EMOD. This intended for code development and not doing research.

https://emod.idmod.org/EMOD/dev-install-overview/

Developer Documentation

For more information about modifying the disease model of EMOD, please see:

https://emod.idmod.org/EMOD/

Directory Structure

  • baseReportLib - A library of commonly used report components and base classes.
  • cajun - A C++ API for JSON
  • campaign - A library of commonly used intervention components and base classes.
  • componentTests - A collection of unit tests that verify that the EMOD pieces do the right thing.
  • Dependencies - Microsoft Cluster Pack
  • docs - Source files for documentation about how to modify the EMOD source code.
  • Eradication - The core components of EMOD including human intra-host, relationship, and vector models.
  • interventions - A collection of interventions that can be used with EMOD.
  • libsqlite - The SQLite source code for reading and creating SQLite databases.
  • lz4 - A fast compression engine used to read and write serialized populations.
  • rapidjson - A fast JSON parser/generator for C++ with box SAX/DOM style API
  • Regression - A collection of scripts, input data, and output data used to verify that EMOD models things correctly.
  • reporters - A collection of data extraction, or report, classes used to collect data during a simulation.
  • Scripts - A collection of support scripts
  • snappy - A fast compression engine used to read and write serialized populations.
  • UnitTest++ - A C++ unit test framework used by the componentTests
  • untils - A collection of utility classes to do things like help with configuring and generating pseudo random numbers.

If wanting to navigate through the code, the place to start is Eradication\Eradication.cpp.

More information on the EMOD Architecture can be found at:

https://emod.idmod.org/EMOD/dev-architecture-overview/

History & Publication Samples

EMOD development was started by Philip Welkoff in 2010 to model malaria. Since that time, EMOD has been used in numerous studies and policy decisions. Below is short sample of papers about EMOD and that used EMOD:

A malaria transmission-directed model of mosquito life cycle and ecology

Description of the EMOD-HIV Model v0.7

Effectiveness of reactive case detection for malaria elimination in three archetypical transmission settings: a modelling study

Implementation and applications of EMOD, an individual-based multi-disease modeling platform

  • Anna Bershteyn, Jaline Gerardin, Daniel Bridenbecker, Christopher W Lorton, Jonathan Bloedow, Robert S Baker, Guillaume Chabot-Couture, Ye Chen, Thomas Fischle, Kurt Frey, Jillian S Gauld, Hao Hu, Amanda S Izzo, Daniel J Klein, Dejan Lukacevic, Kevin A McCarthy, Joel C Miller, Andre Lin Ouedraogo, T Alex Perkins, Jeffrey Steinkraus, Tony Ting, Quirine A ten Bosch, Hung-Fu Ting, Svetlana Titova, Bradley G Wagner, Philip A Welkhoff, Edward A Wenger, Christian N Wiswell
  • Pathogens and Disease, 2018
  • https://academic.oup.com/femspd/article/76/5/fty059/5050059?login=false

Vector genetics, insecticide resistance and gene drives: an agent-based modeling approach to evaluate malaria transmission and elimination

The effect of 90-90-90 on HIV-1 incidence and mortality in eSwatini: a mathematical modelling study

Community

Have a question or a comment? Check out our Discussions space.

Contributing

If you have feature requests, issues, or new code, please see our CONTRIBUTING page for how to provide your feedback.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

emod_common-2.37.0.tar.gz (2.7 MB view details)

Uploaded Source

Built Distribution

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

emod_common-2.37.0-py3-none-any.whl (2.7 MB view details)

Uploaded Python 3

File details

Details for the file emod_common-2.37.0.tar.gz.

File metadata

  • Download URL: emod_common-2.37.0.tar.gz
  • Upload date:
  • Size: 2.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for emod_common-2.37.0.tar.gz
Algorithm Hash digest
SHA256 dbe5fc59fc170af7b6f2c583c40711aa60a41a01e3a69058b5d5d6fffe699673
MD5 3a586ecf24bc395548b69e2a2ea8d38b
BLAKE2b-256 e8e9e38cddc614422f634950af5aea8efdbbda980c9a683e86e6a79e8db66b19

See more details on using hashes here.

Provenance

The following attestation bundles were made for emod_common-2.37.0.tar.gz:

Publisher: build_publish.yml on EMOD-Hub/EMOD

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

File details

Details for the file emod_common-2.37.0-py3-none-any.whl.

File metadata

  • Download URL: emod_common-2.37.0-py3-none-any.whl
  • Upload date:
  • Size: 2.7 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for emod_common-2.37.0-py3-none-any.whl
Algorithm Hash digest
SHA256 38d506c29c35a731afe9ce0fab503f86ffe2da25dd637b7d45f0a22467dba4f3
MD5 ba8e81e6165d15652143f846c4deef23
BLAKE2b-256 8f081074dc81a19de0365cc437ad3ab80fe28456251a3a6063b38ba1f8e6da2b

See more details on using hashes here.

Provenance

The following attestation bundles were made for emod_common-2.37.0-py3-none-any.whl:

Publisher: build_publish.yml on EMOD-Hub/EMOD

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 Sentry Error logging StatusPage Status page