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.
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¶
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’.