LogoLogo
JHU-IDDCOVID-19 Scenario Modeling hubCOVID-19 Forecast Hub
  • Home
  • 🦠gempyor: modeling infectious disease dynamics
    • Modeling infectious disease dynamics
    • Model Implementation
      • flepiMoP's configuration file
      • Specifying population structure
      • Specifying compartmental model
      • Specifying initial conditions
      • Specifying seeding
      • Specifying observational model
      • Distributions
      • Specifying time-varying parameter modifications
      • Other configuration options
      • Code structure
    • Model Output
  • 📈Model Inference
    • Inference Description
    • Inference Implementation
      • Specifying data source and fitted variables
      • (OLD) Configuration options
      • (OLD) Configuration setup
      • Code structure
    • Inference Model Output
    • Inference with EMCEE
  • 🖥️More
    • Setting up the model and post-processing
      • Config writer
      • Diagnostic plotting scripts
      • Create a post-processing script
      • Reporting
    • Advanced
      • File descriptions
      • Numerical methods
      • Additional parameter options
      • Swapping model modules
      • Using plug-ins 🧩[experimental]
  • 🛠️How To Run
    • Before any run
    • Quick Start Guide
    • Multiple Configuration Files
    • Synchronizing Files
    • Advanced run guides
      • Running with Docker locally 🛳
      • Running locally in a conda environment 🐍
      • Running on AWS 🌳
      • Running On A HPC With Slurm
    • Common errors
    • Useful commands
    • Tips, tricks, FAQ
  • 🗜️Development
    • Git and GitHub Usage
    • Guidelines for contributors
  • Deprecated pages
    • Module specification
  • JHU Internal
    • US specific How to Run
      • Running with Docker locally (outdated/US specific) 🛳
      • Running on Rockfish/MARCC - JHU 🪨🐠
      • Running with docker on AWS - OLD probably outdated
        • Provisioning AWS EC2 instance
        • AWS Submission Instructions: Influenza
        • AWS Submission Instructions: COVID-19
      • Running with RStudio Server on AWS EC2
    • Inference scratch
Powered by GitBook
On this page
  • Generalized compartmental infection model
  • Clinical outcomes and observations model
  • Population structure
  • Initial conditions
  • Time-dependent interventions
Edit on GitHub
Export as PDF
  1. gempyor: modeling infectious disease dynamics

Modeling infectious disease dynamics

PreviousHomeNextModel Implementation

Last updated 11 months ago

Within flepiMoP, gempyor is an open-source Python package that constructs and simulates compartmental infectious disease dynamics models. gempyor is meant to be used within flepiMoP, where it integrates with parameter inference and data processing scripts, but can also be run standalone with a command-line interface, generating simulations of disease incidence under different scenario assumptions.

To simulate an infectious disease dynamics problem, the following building blocks needs to be defined:

  • The over which the disease is transmitted

  • The , defining the compartments and the transitions between compartments

  • An , defining different observable outcomes (serology, hospitalization, deaths, cases) from the transmission model

  • The parameters and modifiers that apply to them

Generalized compartmental infection model

At the core of our pipeline is a dynamic mathematical model that categorizes individuals in the population into a discrete set of states ('compartments') and describes the rates at which transitions between states can occur. Our modeling approach was developed to describe classic infectious disease transmission models, like the SIR model, but is much more general. It can encode any compartmental model in which transitions between states are of the form

X→bXZaY,X \xrightarrow{b X Z^{a}} Y,XbXZa​Y,

where XXX, YYY, and ZZZ are time-dependent variables describing the number of individuals in each state, bbb is a rate parameter (units of time−1^{-1}−1) and aaa is a scaling parameter (unitless). ZZZ may be XXX, YYY, a different variable, or 1, and the rate may also be the sum of terms of this form. Rates that involve non-linear functions or more than two variables are currently not possible. For simplicity, we omitted the time dependencies on parameters (e.g XXX is in fact X(t)X(t)X(t) and aaa,bbb are a(t)a(t)a(t),b(t)b(t)b(t)).

The model can be simulated as a continuous-time, deterministic process (i.e., a set of ordinary differential equations), which in this example would be in the form

dXdt=bXZa.\frac{dX}{dt} = b X Z^a.dtdX​=bXZa.

Alternatively, the model can be simulated as a discrete-time stochastic process, where the number of individuals transitioning between states XXX and YYY at time ttt is a binomial random variable

NX→Y(t)=Binom(X,1−e−Δt⋅bZ(t)a),N_{X\rightarrow Y}(t) = \textrm{Binom}(X,1-e^{-\Delta{t} \cdot bZ(t)^a}),NX→Y​(t)=Binom(X,1−e−Δt⋅bZ(t)a),

where the second term is the expected fraction of individuals in the XXX state at time ttt who would transition to YYY by time t+Δtt+\Delta tt+Δt if there were no other changes to XXX in this time, and time step Δt\Delta{t}Δt is a chosen parameter that must be small for equivalence between continuous- and discrete-time versions of the model.

SEIR model

For example, an SEIR model – which describes an infection for which susceptible individuals (SSS) who are infected first pass through a latent or exposed (EEE) phase before becoming infectious (III) and that confers perfect lifelong immunity after recovery (RRR) – could be encoded as

S→βSI/NE→σEI→γIR,S \xrightarrow{\beta S I/N} E \xrightarrow{\sigma E} I \xrightarrow{\gamma I} R,SβSI/N​EσE​IγI​R,

where β\betaβ is the transmission rate (rate of infectious contact per infectious individual), σ\sigmaσ is the rate of progression (1/σ1/\sigma1/σ is the average latent/incubation period), and γ\gammaγ is the recovery rate (1/γ1/\gamma1/γ is the average duration of the infectious period), and NNN is the total population size (N=S+E+I+RN=S+E+I+RN=S+E+I+R). In differential equation form, this model is

dSdt=−βSIN,\frac{dS}{dt} = - \beta S \frac{I}{N} ,dtdS​=−βSNI​,
dEdt=βSIN−σE,\frac{dE}{dt} = \beta S \frac{I}{N} - \sigma E,dtdE​=βSNI​−σE,
dIdt=σE−γI,\frac{dI}{dt} = \sigma E - \gamma I,dtdI​=σE−γI,
dRdt=γI,\frac{dR}{dt} = \gamma I,dtdR​=γI,

and as a stochastic process, it is

NS→E(t)=Binom(S(t),1−e−Δt⋅βI(t)/N),N_{S\rightarrow E}(t) = \textrm{Binom}(S(t),1-e^{-\Delta{t} \cdot \beta I(t)/N}),NS→E​(t)=Binom(S(t),1−e−Δt⋅βI(t)/N),
NE→I(t)=Binom(E(t),1−e−Δt⋅σ),N_{E\rightarrow I}(t) = \textrm{Binom}(E(t),1-e^{-\Delta{t} \cdot \sigma}),NE→I​(t)=Binom(E(t),1−e−Δt⋅σ),
NI→R(t)=Binom(I(t),1−e−Δt⋅γ).N_{I\rightarrow R}(t) = \textrm{Binom}(I(t),1-e^{-\Delta{t} \cdot \gamma }).NI→R​(t)=Binom(I(t),1−e−Δt⋅γ).

A common COVID-19 model is a variation of this SEIR model that incorporates:

  1. multiple identical stages of the infectious period, which allows us to model gamma-distributed durations of infectiousness, and

  2. an infection rate modified by a 'mixing coefficient', α∈[0,1]\alpha \in [0,1]α∈[0,1], which is a rough heuristic for the slowdown in disease spread that occurs in realistically heterogeneous populations where more well-connected individuals are infected first.

A three-stage infectious period model is given by

S→βS(I1+I2+I3)α/NE→σEI1→3γI1I2→3γI2I3→3γI3R.S \xrightarrow{\beta S (I_1+I_2+I_3)^\alpha/N} E \xrightarrow{\sigma E} I_1 \xrightarrow{3\gamma I_1} I_2 \xrightarrow{3\gamma I_2} I_3 \xrightarrow{3\gamma I_3} R.SβS(I1​+I2​+I3​)α/N​EσE​I1​3γI1​​I2​3γI2​​I3​3γI3​​R.

The flepiMoP model structure is specifically designed to make it simple to encode the type of more complex "stratified'' models that often arise in infectious disease dynamics. The following are some examples of possible stratifications.

Age groups

To describe an SEIR-type disease that spreads and progresses differently among children versus adults, one may want to repeat each compartment of the model for each of the two age groups (C – Children, A – Adults), creating an age-stratified model

SC→SC(βCCIC/NC+βACIA/NA)EC→σCECIC→γCICRC,S_C \xrightarrow{S_C (\beta_{CC} I_C/N_C + \beta_{AC} I_A/N_A)} E_C \xrightarrow{\sigma_C E_C} I_C \xrightarrow{\gamma_C I_C} R_C,SC​SC​(βCC​IC​/NC​+βAC​IA​/NA​)​EC​σC​EC​​IC​γC​IC​​RC​,
SA→SA(βAAIA/NA+βCAIC/NC)EA→σAEAIA→γAIARA,S_A \xrightarrow{S_A (\beta_{AA} I_A/N_A + \beta_{CA} I_C/N_C)} E_A \xrightarrow{\sigma_A E_A} I_ A \xrightarrow{\gamma_A I_A} R_A,SA​SA​(βAA​IA​/NA​+βCA​IC​/NC​)​EA​σA​EA​​IA​γA​IA​​RA​,

where βXY\beta_{XY}βXY​ is the transmission rate between age X and Y, and we have assumed individuals do not age on the timescale relevant to the model.

Vaccination status

Vaccination status could influence disease progression and infectiousness, and could also change over time as individuals choose to get the vaccine (V – vaccinated, U – unvaccinated)

SU→βSU(IU+IV)/NEU→σUEUIU→γUIURU,S_U \xrightarrow{\beta S_U (I_U + I_V)/N} E_U \xrightarrow{\sigma_U E_U} I_U \xrightarrow{\gamma_U I_U} R_U,SU​βSU​(IU​+IV​)/N​EU​σU​EU​​IU​γU​IU​​RU​,
SV→β(1−θ)SV(IU+IV)/NEV→σVEVIV→γVIVRV,S_V \xrightarrow{\beta (1-\theta) S_V (I_U + I_V)/N} E_V \xrightarrow{\sigma_V E_V} I_V \xrightarrow{\gamma_V I_V} R_V,SV​β(1−θ)SV​(IU​+IV​)/N​EV​σV​EV​​IV​γV​IV​​RV​,
SU→νSUSV,S_U \xrightarrow{\nu S_U} S_V,SU​νSU​​SV​,
RU→νRURV,R_U \xrightarrow{\nu R_U} R_V,RU​νRU​​RV​,

where uuu is the vaccination rate (we assume that individuals do not receive the vaccine while they are exposed or infectious) and θ\thetaθ is the vaccine efficacy against infection. Similar structures could be used for other sources of prior immunity or other dynamic risk groups.

Pathogen strain

Another common stratification would be pathogen strain, such as COVID-19 variants. Individuals may be infected with one of several variants, strains, or serotypes. Our framework can easily create multistrain models, for example

SA→βASAIA/NAEA→σAEAIA→γAIARA,S_A \xrightarrow{\beta_A S_A I_A/N_A} E_A \xrightarrow{\sigma_A E_A} I_ A \xrightarrow{\gamma_A I_A} R_A,SA​βA​SA​IA​/NA​​EA​σA​EA​​IA​γA​IA​​RA​,
SA→βBSBIB/NBEB→σBEBIB→γBIBRB,S_A \xrightarrow{\beta_B S_B I_B/N_B} E_B \xrightarrow{\sigma_B E_B} I_B \xrightarrow{\gamma_B I_B} R_B,SA​βB​SB​IB​/NB​​EB​σB​EB​​IB​γB​IB​​RB​,
RA→βB(1−ϕAB)RAIB/NBEAB→σABEABIAB→γABIABRAB,R_{A} \xrightarrow{\beta_B(1-\phi_{AB}) R_A I_B/N_B} E_{AB} \xrightarrow{\sigma_{AB} E_{AB}} I_{AB} \xrightarrow{\gamma_{AB} I_{AB}} R_{AB},RA​βB​(1−ϕAB​)RA​IB​/NB​​EAB​σAB​EAB​​IAB​γAB​IAB​​RAB​,
RB→βA(1−ϕBA)RBIA/NBEAB→σABEABIAB→γABIABRAB,R_{B} \xrightarrow{\beta_A (1-\phi_{BA}) R_B I_A/N_B} E_{AB} \xrightarrow{\sigma_{AB} E_{AB}} I_{AB} \xrightarrow{\gamma_{AB} I_{AB}} R_{AB},RB​βA​(1−ϕBA​)RB​IA​/NB​​EAB​σAB​EAB​​IAB​γAB​IAB​​RAB​,

where ϕAB\phi_{AB}ϕAB​ is the immune cross-protection conferred from infection with strain A to subsequent infection with strain B. Co-infection is ignored. All individuals are assumed to be initially equally susceptible to both infections and are just categorized as SAS_ASA​ (vs SBS_BSB​) for convenience.

Clinical outcomes and observations model

The pipeline allows for an additional type of dynamic state variable beyond those included in the mathematical model. We refer to these extra variables as "Outcomes" or "Observations". Outcome variables can be functions of model variables, but do not feed back into the model by influencing other state variables. Typically, we use outcome variables to describe the process through which some subset of individuals in a compartment are "observed'' and become part of the data to which models are compared and attempt to predict. For example, in the context of a model for an infectious disease like COVID-19, outcome variables include reported cases, hospitalizations, and deaths.

An outcome variable H(t)H(t)H(t) can be generated from a state variable of the mathematical model X(t)X(t)X(t) using the following properties:

  • The proportion of all individuals in XXX who will be observed as HHH, ppp

  • The delay between when an individual enters state XXX and when they are observed as HHH, which can follow a class of probability distributions f(Δt;θ)f(\Delta t;\theta)f(Δt;θ) where θ\thetaθ is the parameters of the distribution (e.g., the mean and standard deviation of a normal distribution)

  • (optional) the duration spent in observable HHH, in which case the output will also contain the prevalence (number of individuals currently in HHH in addition to the incidence into HHH

In addition to single values (drawn from a distribution), the duration and delay can be inputted as distributions, producing a convolution of the output.

The number of individuals in XXX at time t1t_1t1​ who become part of the outcome variable H(t2)H(t_2)H(t2​) is a random variable, and individuals who are observed in HHH at time ttt could have entered XXX at different times in the past.

Formally, for a deterministic, continuous-time model

H(t)=∫τpX(τ)f(t−τ,θ)dτH(t) = \int_{\tau} p X(\tau) f(t-\tau, \theta) d\tauH(t)=∫τ​pX(τ)f(t−τ,θ)dτ

For a discrete-time, stochastic model

H(t)=∑τi=0tMultinomial(Binomial(X(τi),p),{f(t−τi,θ)}).H(t) = \sum_{\tau_i=0}^{t}\text{Multinomial} (\text{Binomial}(X(\tau_i), p), \{f(t-\tau_i, \theta)\}).H(t)=τi​=0∑t​Multinomial(Binomial(X(τi​),p),{f(t−τi​,θ)}).

Note that outcomes H(t)H(t)H(t) constructed in this way always represent incidence values; meaning they describe the number of individuals newly entering this state at time ttt. If the model state X(t)X(t)X(t) is also an incidence, then ppp is a unitless probability, whereas if X(t)X(t)X(t) is a prevalence (number of individuals currently in state at time ttt), then ppp is instead a probability per time unit.

Outcomes can also be constructed as functions of other outcomes. For example, a fraction of hospitalized patients may end up in the intensive care unit (ICU).

There are several benefits to separating outcome variables from the mathematical model. Firstly, these variables can be calculated after the model is run, and only at the timepoints of interest, which can dramatically reduce the memory needed during model simulation. Secondly, outcome variables can be fully stochastic even when the mathematical model is simulated deterministically. This becomes useful when an infection might be at high enough prevalence that a deterministic simulation is appropriate, but when there is a rare and therefore quite stochastic outcome reported in the data (e.g., severe cases) that the model is tasked with predicting. Thirdly, outcome variables can have arbitrary delay distributions, to take into account the complexities of health reporting practices, whereas our mathematical modeling framework is designed mainly for exponentially distributed delays and only easily permits extensions to gamma-distributed delays. Finally, this separation keeps the pipeline modular and allow for easy editing of one component of the model without disrupting the other.

Population structure

The pipeline was designed specifically to simulate infection dynamics in a set of connected subpopulations. These subpopulations could represent geographic divisions, like countries, states, provinces, or neighborhoods, or demographic groups, or potentially even different host species. The equations and parameters of the transmission and outcomes models are repeated for each subpopulation, but the values of the parameters can differ by location. Within each subpopulation, infection is equally likely to spread between any pair of susceptible/infected individuals after accounting for their infection class, whereas between subpopulations there may be varying levels of mixing.

Formally, this type of population structure is often referred to as a “metapopulation”, and each subpopulation may be called a “deme”.

The following properties may be different between subpopulations:

  • the population size

  • the parameters of the transmission model (see LINK)

  • the parameters of the outcomes model (see LINK)

  • the amount of transmission that occurs within this subpopulation versus from any other subpopulation (see LINK)

  • the timing and extent of any interventions that modify these parameters (see LINK)

  • the initial timing and number of external introductions of infections into the population (see LINK)

  • the ground truth timeseries data used to compare to model output and infer model parameters (see LINK)

Currently, the following properties must be the same across all subpopulations:

  • the compartmental model structure

  • the form of the likelihood function used to estimate parameters by fitting the model to data (LINK)

  • ...

Mixing between subpopulations

The generalized compartmental model allows for second order “interaction” terms that describe transitions between model states that depend on interactions between pairs of individuals. For example, in the context of a classical SIR model, the rate of new infections depends on interactions between susceptible and infectious individuals and the transmission rate

dIdt=βSI−γI\frac{dI}{dt} = \beta S I - \gamma IdtdI​=βSI−γI

For a model with multiple subpopulations, each of these interactions can occur either between individuals in the same or different subpopulations, with specific rate parameters for each combination of individual locations

dIidt=∑jβjiIjSi−γIi\frac{dI_i}{dt} = \sum_j \beta_{ji} I_j S_i - \gamma I_idtdIi​​=j∑​βji​Ij​Si​−γIi​

where βji\beta_{ji}βji​ is the per-contact per-time rate of disease transmission between an infected individual residing in subpopulation jjj and a susceptible individual from subpopulation iii.

In general for infection models in connected subpopulations, the transmission rates βji\beta_{ji}βji​ can take on arbitrary values. In this pipeline, however, we impose an additional structure on these terms. We assume that interactions between subpopulations occur when individuals temporarily relocate to another subpopulation, where they interact with locals. We call this movement “mobility”, and it could be due to regular commuting, special travel, etc. There is a transmission rate (βj\beta_jβj​) associated with each subpopulation jjj, and individuals physically in that subpopulation – permanently or temporarily – are exposed and infected with this local rate whenever they encounter local susceptible individuals.

The transmission matrix is then

βji={paMijNiβjif j≠i(1−∑j≠ipaMijNi)if j=i\beta_{ji} = \begin{cases} p_a \frac{M_{ij}}{N_i} \beta_j &\text{if } j \neq i \\ \left( 1- \sum_{j \neq i} p_a \frac{M_{ij}}{N_i} \right) &\text{if } j = i \end{cases}βji​={pa​Ni​Mij​​βj​(1−∑j=i​pa​Ni​Mij​​)​if j=iif j=i​

where βj\beta_jβj​ is the onward transmission rate from infected individuals in subpopulation jjj, MijM_{ij}Mij​ is the number of individuals in subpopulation i who are interacting with individuals in subpopulation jjj at any given time (for example, fraction who commute each day), and pap_apa​ is a fractional scaling factor for the strength of inter-population contacts (for example, representing the fraction of hours in a day commuting individuals spend outside vs. inside their subpopulation).

If an alternative compartmental disease model is created that has other interactions (second order terms), then the same mobility values are used to determine the degree of interaction between each pair of subpopulations.

Initial conditions

Initial conditions can be specified by setting the values of the compartments in the disease transmission model at time zero, or the start of the simulation. For example, we might assume that for day zero of an outbreak the whole population is susceptible except for one single infected individual, i.e. S(0)=N−1S(0) = N-1S(0)=N−1 and I(0)=1I(0) = 1I(0)=1. Alternatively, we might assume that a certain proportion of the population has prior immunity from previous infection or vaccination.

It might also be necessary to model instantaneous changes in values of model variables at any time during a simulation. We call this 'seeding'. For example, individuals may import infection from other external populations, or instantaneous mutations may occur, leading to new variants of the pathogen. These processes can be modeled with seeding, allowing individuals to change state at specified times independently of model equations.

We also note that seeding can also be used as a convenient way to specify initial conditions, particularly ealy in an outbreak where the outbreak is triggered by a few 'seedings'.

Time-dependent interventions

Parameters in the disease transmission model or the observation model may change over time. These changes could be, for example: environmental drivers of disease seasonality; “non-pharmaceutical interventions” like social distancing, isolation policies, or wearing of personal protective equipment; “pharmaceutical interventions” like vaccination, prophylaxis, or therapeutics; changes in healthcare seeking behavior like testing and diagnosis; changes in case reporting, etc.

The model allows for any parameter of the disease transmission model or the observation model to change to a new value for a time interval specified by start and end times (or multiple start and end times, for interventions that are recurring). Each change may be subpopulation-specific or apply to the entire population. Changes may be overlapping in time.

For example, the rate of transmission in subpopulation iii, βi\beta_iβi​, may be reduced by an intervention rkr_krk​that acts between times tk,startt_{k,\text{start}}tk,start​ and tk,endt_{k,\text{end}}tk,end​, and another intervention rlr_lrl​ that acts between times tl,startt_{l,\text{start}}tl,start​and tl,endt_{l,\text{end}}tl,end​

βj′(t)=(1−rk(t;tk,start,tk,end))(1−rl(t;tl,start,tl,end)))βj0\beta_j'(t) = (1-r_k(t;t_{k,\text{start}},t_{k,\text{end}}))(1-r_l(t;t_{l,\text{start}},t_{l,\text{end}})))\beta_j^0βj′​(t)=(1−rk​(t;tk,start​,tk,end​))(1−rl​(t;tl,start​,tl,end​)))βj0​

In this case, rk(t)r_k(t)rk​(t) and rl(t)r_l(t)rl​(t) are both considered simple SinglePeriodModifier interventions. There are four possible types of interventions that can be included in the model

  • SinglePeriodModifier - an intervention rjr_jrj​ that leads to a fractional reduction in a parameter value in subpopulation jjj (i.e., βj\beta_jβj​) between two timepoints

βj′(t)=(1−rj(t;tj,start,tj,end))βj0\beta_j'(t) = (1-r_j(t;t_{j,\text{start}},t_{j,\text{end}}))\beta_j^0βj′​(t)=(1−rj​(t;tj,start​,tj,end​))βj0​
rj(t;tj,start,tj,end)={rjif tj,start<t<tj,end0otherwiser_j(t;t_{j,\text{start}},t_{j,\text{end}}) = \begin{cases} r_j &\text{if } t_{j,\text{start}} < t <t_{j,\text{end}} \\ 0 &\text{otherwise} \end{cases}rj​(t;tj,start​,tj,end​)={rj​0​if tj,start​<t<tj,end​otherwise​
  • MultiPeriodModifier - an intervention rjr_jrj​ that leads to a fractional reduction in a parameter value in subpopulation jjj (i.e., βj\beta_jβj​) value between multiple sets of timepoints

βj′(t)=(1−rj(t;{tj,k,start,tj,k,end}k))βj0\beta_j'(t) = (1-r_j(t; \{t_{j,k,\text{start}},t_{j,k,\text{end}}\}_k))\beta_j^0βj′​(t)=(1−rj​(t;{tj,k,start​,tj,k,end​}k​))βj0​
rj(t;{tj,k,start,tj,k,end}k)={rjif tj,k1,start<t<tj,k1,endrjif tj,k2,start<t<tj,k2,end...rjif tj,kn,start<t<tj,kn,end0otherwiser_j(t;\{t_{j,k,\text{start}},t_{j,k,\text{end}}\}_k) = \begin{dcases} r_ j&\text{if } t_{j,k1,\text{start}} < t <t_{j,k1,\text{end}} \\ r_j &\text{if } t_{j,k2,\text{start}} < t <t_{j,k2,\text{end}} \\ & ... \\ r_j &\text{if } t_{j,kn,\text{start}} < t <t_{j,kn,\text{end}} \\ 0 &\text{otherwise} \end{dcases}rj​(t;{tj,k,start​,tj,k,end​}k​)=⎩⎨⎧​rj​rj​rj​0​if tj,k1,start​<t<tj,k1,end​if tj,k2,start​<t<tj,k2,end​...if tj,kn,start​<t<tj,kn,end​otherwise​
  • ModifierModifier- an intervention πj\pi_jπj​ that leads to a fractional reduction in the value of another intervention rjr_jrj​ between two timepoints

βj′(t)=(1−rj(t;tj,start,tj,end)(1−πr,j(t;tr,j,start,tr,j,end)))βj0\beta_j'(t) = (1-r_j(t;t_{j,\text{start}},t_{j,\text{end}})(1-\pi_{r,j}(t;t_{r,j,\text{start}},t_{r,j,\text{end}})))\beta_j^0βj′​(t)=(1−rj​(t;tj,start​,tj,end​)(1−πr,j​(t;tr,j,start​,tr,j,end​)))βj0​
πr,j(t;tr,j,start,tr,j,end)={πr,jif tr,j,start<t<tr,j,end0otherwise\pi_{r,j}(t;t_{r,j,\text{start}},t_{r,j,\text{end}}) = \begin{cases} \pi_{r,j} &\text{if } t_{r,j,\text{start}} < t <t_{r,j,\text{end}} \\ 0 &\text{otherwise} \end{cases}πr,j​(t;tr,j,start​,tr,j,end​)={πr,j​0​if tr,j,start​<t<tr,j,end​otherwise​
  • StackedModifier - TBA

Details on the numerical integration procedure for simulating such an equation is given in the section.

All combinations of these situations can be quickly specified in flepiMoP. Details on how to encode these models is provided in the section, with examples given in the section.

Details on how to specify these outcomes in the model configuration files is provided in the section, with examples given in the section.

The list of all pairwise mobility values and the interaction scaling factor are model input parameters. Details on how to specify them are given in the section.

The magnitude of these changes are themselves model parameters, and thus may along with other parameters when the model is fit to data. Currently, the start and end times of interventions must be fixed and cannot be varied or inferred.

🦠
Advanced
Model Implementation
Tutorials
Model Implementation
Tutorials
Model Implementation
inferred
transmission model
observation model
population structure