From 57cf50e7585a5e727dce32453046687fa9b9a96b Mon Sep 17 00:00:00 2001 From: Scott Olesen Date: Mon, 9 Dec 2024 12:20:47 -0500 Subject: [PATCH] update model description --- README.md | 135 +++++++++++++++--------------------------------------- 1 file changed, 36 insertions(+), 99 deletions(-) diff --git a/README.md b/README.md index f7e54a5..aa5b8e9 100644 --- a/README.md +++ b/README.md @@ -8,34 +8,29 @@ app. ## Model description -### Skateboard version - -- Disease progression: susceptible, exposed/latent (i.e., will go onto - infection), infectious, recovered +- Disease progression: + - Susceptible + - Exposed/latent (i.e., will go on to infection) + - Infectious + - Recovered - Infection process - - Finite number of generations: index infection, generation 1 (contacts), - generation 2 (contacts of contacts), and generation 3 - - Number of infections - - For first version, assume that all infections have i.i.d. number of - offspring (i.e., branching process) - - Index infection creates a number of generation 1 infections, drawn from - some distribution - - Generation 1 infections each create a number of generation 2 infections - - These values are drawn jointly (i.e., from a multivariate distribution) - - All network features are marginalized over this distribution - - The potential for correlations between numbers of infections (e.g., that - generation 2 infections might share contacts) are all baked into that - distribution - - Similarly for generations 2 and 3 - - The distribution can vary between the three generations - - Timing of infections - - For first version, just space the infections uniformly in time - - For later versions, spacing them like for a Poisson process + - There are a finite number of generations + - Start with 4: index infection (i.e., generation 0), generation 1 + (contacts), generation 2 (contacts of contacts), and generation 3 + (potential escaping infections) + - In general, this number could be varied + - Assume + - Number of infections generated by infected people + - Assume branching process (i.e., each infections yields an i.i.d. number of + offspring) + - Assume it's a Poisson process: draw inter-infection times from + $\mathrm{Exp}(1/\lambda)$ until infectious period ends or infection is + detected - Passive detection (i.e., self-detection) - Each infection has an independent probability of passive detection - If passively detected, detection occurs at some time distribution since - exposure - - (No assumption that index case is passively detected) + exposure. Start with Dirac delta distribution. + - (N.B.: No assumption that index case is passively detected) - Contact tracing (i.e., active detection) - Every detected infection (whether passive or active) has an independent probability of triggering contact tracing @@ -43,88 +38,30 @@ app. caused by the detected infection - "Detection" means detection _and_ successful intervention - There is a distribution of times between triggering detection and contact - tracing completion -- Input parameters/assumptions for this model - - Latent period $t_\mathrm{latent}$ distribution (time from contact to onset - of infectiousness) - - Infectious period $t_\mathrm{inf}$ distribution - - Infectious rate (which could be defined via $R_0 / E[t_\mathrm{inf}]$) - - Distribution of infections (start by making these independent, Poisson) - - Passive detection probability and delay distribution - - Contact tracing probability and delay distribution -- Implementation/initialization - - Seed a single infection (e.g., exposed via travel) -- Output/viz - - Some discrete realizations, showing the timelines of events for individuals - (e.g., how the different disease state periods line up in time) - - Distribution of number of undetected in generation 3 - -### Fuller version - -- Disease progression: susceptible, exposed (i.e., will go onto infection), - infectious, recovered -- Individuals make contacts on some network, with some effective (i.e., - infection transmitting) contact rate. (Contact rates and effective contact - probability could be separated in parameter input, but they are perfectly - confounded in the model.) -- Each infected individual can be detected. E.g., infected people might notice - their own symptoms. -- When an infected person is detected, contact tracing and isolation are - initiated. - - Contact tracing - - Contact tracing can detect infections among contacts, contacts of - contacts, etc. - - Contact tracing has different performance characteristics for each "ring." - (The most straightforward choice would be to make second ring performance - equivalent to first ring, i.e., time from detecting infected contact to - infected contact-of-contact is identical to time from detecting index - infection to infected contact.) - - Isolation reduces transmission by some factor (which might be 100%) for that - individual. + tracing completion. Start with Dirac delta. - Input parameters/assumptions for this model - Latent period $t_\mathrm{latent}$ distribution (time from contact to onset - of infectiousness) - - Infectious period $t_\mathrm{inf}$ distribution - - Basic reproductive number $R_0$ (i.e., mean number of secondary infections - per index infection in the absence of intervention) - - Note: this defines some mean infectious rate $R_0 / E[t_\mathrm{inf}]$ - - Assume that this infectious rate is constant over the period of - infectiousness. E.g., if perfectly effective isolation is implemented - halfway through an individual's infectious period, that halves their - number of expected secondary infections. - - Some distribution of number of secondary infections around $R_0$ (e.g., - Poisson) - - Assume that the number of secondary infections is uncorrelated across - individuals (i.e., there is some kind of homogeneity in the contact - network). - - Per-infection detection (aka "passive" detection, in which individuals - identify their own symptoms) - - % of infections identified in this way (in the absence of contact tracing) - - Distribution of times from exposure to detection (or, equivalently, from - exposure to symptom onset and from symptom onset to detection) - - Contact tracing - - % of first ring (contacts) identified - - Distribution of times from index exposure to contact identification - - Time-varying performance of contact tracing (e.g., a simple assumption - would be that all infected contacts immediately stop infecting, i.e., that - the diagnostic test can identify infections with 100% sensitivity - immediately after exposure and isolation is 100% effective) - - % of second ring (contacts of contacts) identified, distribution of times, - etc. - - Third ring, etc. + of infectiousness). Start with Dirac delta. + - Infectious period $t_\mathrm{inf}$ distribution. Start with Dirac delta. + - Infectious rate. Start with identical for all people. + - Make this an input parameter, and for convenience, display + $R_0 = \mathrm{rate} / E[t_\mathrm{inf}]$ in the widget as a derived + parameter + - Network/contact structure: see above; these are i.i.d. Poisson + - Passive detection probability and delay distribution: Dirac delta + - Contact tracing probability and delay distribution: Dirac delta - Implementation/initialization - Seed a single infection (e.g., exposed via travel) - - **_Open question_**: How to deal with multiple rings? - - What are the network implications of treating undetected infections as new - index infections (with independent but identically distributed number of - secondary infections)? - - How hard would it be to simulate contacts on a simple network? - Output/viz - Some discrete realizations, showing the timelines of events for individuals (e.g., how the different disease state periods line up in time) - - Distribution of number of undetected -- Assumptions of note - - Assuming independence is conservative: clustering helps you + - Distribution of number of undetected in generation 4 (contacts of contacts + of contacts) + +### Questions for future development + +- Is the correlated draw of infections in each generation sufficient to describe + certain network parameters? Or do you also need timing? ## Project Admins