Skip to content

Commit

Permalink
update model description
Browse files Browse the repository at this point in the history
  • Loading branch information
swo committed Dec 9, 2024
1 parent cdc7c9f commit 57cf50e
Showing 1 changed file with 36 additions and 99 deletions.
135 changes: 36 additions & 99 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,123 +8,60 @@ 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
- Contact tracing has an independent probability of detecting each infection
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

Expand Down

0 comments on commit 57cf50e

Please sign in to comment.