Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 45 additions & 9 deletions cpp/models/lct_secir/README.md
Original file line number Diff line number Diff line change
@@ -1,23 +1,59 @@
# LCT SECIR model

This model is based on the Linear Chain Trick.

The Linear Chain Trick provides the option to use Erlang-distributed sojourn times in the compartments through the use of subcompartments.
The normal ODE models have (possibly unrealistic) exponentially distributed sojourn times.
The LCT model can still be described by an ordinary differential equation system.

For the concept see
- Lena Plötzke, "Der Linear Chain Trick in der epidemiologischen Modellierung als Kompromiss zwischen gewöhnlichen und Integro-Differentialgleichungen", 2023. (https://elib.dlr.de/200381/, German only)
- P. J. Hurtado und A. S. Kirosingh, "Generalizations of the ‘Linear Chain Trick’: incorporating more flexible dwell time distributions into mean field ODE models“, 2019. (https://doi.org/10.1007/s00285-019-01412-w)

The eight compartments
- Susceptible, may become exposed at any time
- Exposed, becomes infected after some time
- InfectedNoSymptoms, becomes InfectedSymptoms or Recovered after some time
- InfectedSymptoms, becomes InfectedSevere or Recovered after some time
- InfectedSevere, becomes InfectedCritical or Recovered after some time
- InfectedCritical, becomes Recovered or Dead after some time
- Recovered
- Dead
- `Susceptible` ($S$), may become exposed at any time
- `Exposed` ($E$), becomes infected after some time
- `InfectedNoSymptoms` ($I_{NS}$), becomes InfectedSymptoms or Recovered after some time
- `InfectedSymptoms` ($I_{Sy}$), becomes InfectedSevere or Recovered after some time
- `InfectedSevere` ($I_{Sev}$), becomes InfectedCritical or Recovered after some time
- `InfectedCritical` ($I_{Cr}$), becomes Recovered or Dead after some time
- `Recovered` ($R$)
- `Dead` ($D$)

are used to simulate the spread of the disease.
It is possible to include subcompartments for the five compartments Exposed, InfectedNoSymptoms, InfectedSymptoms, InfectedSevere and InfectedCritical.

A simple example can be found at: examples/lct_secir.cpp.
Below is an overview of the model architecture and its compartments.

![tikzLCTSECIR](https://github.com/SciCompMod/memilio/assets/70579874/6a5d5a95-20f9-4176-8894-c091bd48bfb7)

| Mathematical variable | C++ variable name | Description |
|---------------------------- | --------------- | -------------------------------------------------------------------------------------------------- |
| $\phi$ | `ContactPatterns` | Average number of contacts of a person per day. |
| $\rho$ | `TransmissionProbabilityOnContact` | Transmission risk for people located in the susceptible compartments. |
| $\xi_{I_{NS}}$ | `RelativeTransmissionNoSymptoms` | Proportion of nonsymptomatically infected people who are not isolated. |
| $\xi_{I_{Sy}}$ | `RiskOfInfectionFromSymptomatic` | Proportion of infected people with symptomps who are not isolated. |
| $N$ | `m_N0` | Total population. |
| $D$ | `D` | Number of death people. |
| $n_E$ | Defined via `InfectionState` | Number of subcompartments of the Exposed compartment. |
| $n_{NS}$ | Defined via `InfectionState` | Number of subcompartments of the InfectedNoSymptoms compartment. |
| $n_{Sy}$ | Defined via `InfectionState` | Number of subcompartments of the InfectedSymptoms compartment. |
| $n_{Sev}$ | Defined via `InfectionState` | Number of subcompartments of the InfectedSevere compartment.|
| $n_{Cr}$ | Defined via `InfectionState` | Number of subcompartments of the InfectedCritical compartment. |
| $T_E$ | `TimeExposed` | Average time in days an individual stays in the Exposed compartment. |
| $T_{I_{NS}}$ | `TimeInfectedNoSymptoms` | Average time in days an individual stays in the InfectedNoSymptoms compartment. |
| $T_{I_{Sy}}$ | `TimeInfectedSymptoms` | Average time in days an individual stays in the InfectedSymptoms compartment. |
| $T_{I_{Sev}}$ | `TimeInfectedSevere` | Average time in days an individual stays in the InfectedSevere compartment. |
| $T_{I_{Cr}}$ | `TimeInfectedCritical` | Average time in days an individual stays in the InfectedCritical compartment. |
| $\mu_{I_{NS}}^{R}$ | `RecoveredPerInfectedNoSymptoms` | Probability of transition from compartment InfectedNoSymptoms to Recovered. |
| $\mu_{I_{Sy}}^{I_{Sev}}$ | `SeverePerInfectedSymptoms` | Probability of transition from compartment InfectedSymptoms to InfectedSevere. |
| $\mu_{I_{Sev}}^{I_{Cr}}$ | `CriticalPerSevere` | Probability of transition from compartment InfectedSevere to InfectedCritical. |
| $\mu_{I_{Cr}}^{D}$ | `DeathsPerCritical` | Probability of dying when in compartment InfectedCritical. |

The notation of the compartments with indices here stands for subcompartments and not for age groups or similar, as in some ODE models. Accordingly, $I_{NS,n_{NS}}$, for example, stands for the number of people in the $n_{NS}$-th subcompartment of the InfectedNoSymptoms compartment.


## Examples

A simple example can be found at [LCT minimal example](../../examples/lct_secir.cpp).

6 changes: 3 additions & 3 deletions cpp/models/ode_secir/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ The model consists of the following major classes:

Below is an overview of the model architecture and its compartments.

![secir_model](https://github.com/SciCompMod/memilio/assets/69154294/d99b257b-1cc2-447d-8e32-ba3aa8329c0c)
![secir_model](https://github.com/SciCompMod/memilio/assets/70579874/46b09e8a-d083-4ef9-8328-21975890b60f)
| Mathematical variable | C++ variable name | Description |
|---------------------------- | --------------- | -------------------------------------------------------------------------------------------------- |
| $\phi$ | `ContactPatterns` | Matrix of daily contact rates / number of daily contacts between different age groups. |
Expand All @@ -23,8 +23,8 @@ Below is an overview of the model architecture and its compartments.
| $\xi_{I_{Sy}}$ | `riskFromInfectedSymptomatic` | Proportion of infected people with symptomps who are not isolated (time-dependent if `TestAndTraceCapacity` used). |
| $N_j$ | `Nj` | Total population of age group $j$. |
| $D_i$ | `Di` | Number of death people of age group $i$. |
| $\frac{1}{T_{E}}$ | `rateE` | Time in days an individual stays in the Exposed compartment (Computed from `SerialInterval` and `IncubationPeriod`). |
| $\frac{1}{T_{I_{NS}}}$ | `rateINS` | Time in days an individual stays in the InfectedNoSymptoms compartment (Computed from `SerialInterval` and `IncubationPeriod`). |
| $\frac{1}{T_{E}}$ | `rateE` | Reciprocal of the time in days an individual stays in the Exposed compartment (Computed from `SerialInterval` and `IncubationPeriod`). |
| $\frac{1}{T_{I_{NS}}}$ | `rateINS` | Reciprocal of the time in days an individual stays in the InfectedNoSymptoms compartment (Computed from `SerialInterval` and `IncubationPeriod`). |
| $T_{I_{Sy}}$ | `TimeInfectedSymptoms` | Time in days an individual stays in the InfectedSymptoms compartment. |
| $T_{I_{Sev}}$ | `TimeInfectedSevere` | Time in days an individual stays in the InfectedSevere compartment. |
| $T_{I_{Cr}}$ | `TimeInfectedCritical` | Time in days an individual stays in the InfectedCritical compartment. |
Expand Down