Agent based disease transmission model

Overview

This benchmark model simulates the transmission of disease in a heterogenous population using EMOD, a stochastic agent based disease transmission model.

Authors

Run

docker run -it -p 4242:4242 linusseelinger/model-emod-abm:latest

Properties

Model

Description

forward

Forward model

forward

Mapping

Dimensions

Description

input

[3]

[ \(R_0\), variance of \(R_0\), correlation between acquisition and transmission ]

output

[1]

Dictionary with daily timeseries of ‘New Infections’, ‘Infected’, ‘Infectious Population’, ‘Susceptible Population’, ‘Symptomatic Population’, ‘Recovered Population’, and ‘Exposed Population’.

Feature

Supported

Evaluate

True

Gradient

False

ApplyJacobian

False

ApplyHessian

False

Config

Type

Default

Description

refresh_seed

(bool, int)

True

Change random seed for each model call

daily_import_pressures

double

1.0

Number of average importations per day for the first 5 days of the simulation

log_level

string

ERROR

level of logging by the model

epsilon

list

[0.001, 0.001, 0.001]

increment used by scipy.optimize.approx_fprime to estimate the gradient

Mount directories

Mount directory

Purpose

None

Source code

Model sources here.

Description

Our simulation consists of 100,000 individuals who are susceptible to a disease that is introduced into the population with a probabilistic rate of 1 infections per day for the first 5 days. This disease has an incubation period that follows a Gaussian distribution with mean 3 days and standard deviation of 0.8 days. The infectious period \(P\) is assumed to also follow a Gaussian distribution with a mean of 8 days and a standard deviation of 0.8. The infectivity of the disease (\(I_t\); how likely it is for an infectious individual to infect another) is assumed to follow a log-normal distribution and is determined by the simulation’s \(R_0\) and its variance: \( \mu_{I_t} = \log\left(\frac{{R_0}}{\mu_{P}}\right) - 0.5\sigma_{I_t}^2 \) where \( \sigma_{I_t} = \log\left(\frac{\sigma_{R_0}^2}{2R_0^2} + 0.5\right). \)

One of the challenges associated with this model is that it is stochastic. Even for the same parameters the total number of infections will differ between simulations. Furthermore, it is not guaranteed that there will always be an outbreak: sometimes, by chance, there are not enough initial infections to generate a large outbreak. You can reduce this challenge by increasing the number of initial infections via the daily_import_pressures configuration parameter (e.g., from 1 infections per day to 10 infections per day for the first 5 days).

Furthermore, the likelihood of an individual to acquire and then transmit the disease is correlated. There is no waning immunity. The benchmark is fitting to an attack fraction of 0.40 with a standard deviation of 0.025. There are bounds on \(R_0\) > 0; the variance of \(R_0\) > 0; and the correlation between acquisition and transmission must lie between 0 and 1 (inclusive).

The simulation terminates when there are no longer any infected individuals (minimum run time of 50 days) and return daily timeseries ‘New Infections’, ‘Infected’, ‘Infectious Population’, ‘Susceptible Population’, ‘Symptomatic Population’, ‘Recovered Population’, and ‘Exposed Population’.