Skip to content

Commit

Permalink
review clarifications
Browse files Browse the repository at this point in the history
  • Loading branch information
ChiragKumar9 committed Nov 22, 2024
1 parent 7dc76f2 commit 4cf150d
Showing 1 changed file with 18 additions and 25 deletions.
43 changes: 18 additions & 25 deletions docs/transmission.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,20 @@ infectious agent and other susceptible agents. Agents become infectious immediat
upon successful infection attempt, though they may have a transmission probability of
0 for some time (mimicking an exposed compartment). Once infectious, agents have a pre-assigned
number of infection attempts. Infection attempt times are drawn from the generation interval.
Once there are no more infection attempts remaining for the agent, we argue that they do not
transition to a recovered compartment but rather back to a susceptible compartment but
with high immunity.
Once there are no more infection attempts remaining for the agent, we model the agent as having
their level of immunity against the disease set to, say, 1 but have them transition back
to the susceptible compartment. This is to simplify the disease model and make it such that
immunity levels can be re-calculated when contacts are drawn rather than needing to update
them on a schedule.

## Workflow

The transmission model is centered around a key workflow:
1. Watch for an agent becoming infectious (S --> I transition).
2. For the infectious agent, draw a number of infection attempts. This can be from the
$R_i$ distribution or the contact distribution.
2. For the infectious agent, draw a number of infection attempts. This could be from an $R_i$ distribution
or the distribution of the number of contacts an individual has based on their network connectivity.
There is also an option for each infection attempt to have a probability of transmission. This serves to
scale the contact distribution to a potential $R_i$ distribution.
3. Draw an infection time for the agent. This consists of taking an ordered draw from the generation
interval. The math for this is abstracted away under a generic `get_next_infection_time` method.
4. Draw a susceptible contact from the agent's contact group. Contacts could be drawn uniformly
Expand All @@ -28,37 +32,26 @@ the infection attempt is successful. Success is based on:
- whether any interventions are present that may reduce transmission,
- the contact's immunity level which is updated when the contact is drawn.

If the infection attempt is successful, the infectious contact is labeled as infectious.
If the infection attempt is successful, the susceptible contact is labeled as infectious.
5. Repeat steps #3 and #4, decreasing the number of infection attempts left by one each time
regardless of whether the attempt is successful and ending when the agent has no zero
infection attempts remaining.
6. Re-label the agent as susceptible. The immunity manager will set their latent immunity level
to the value of immunity based on natural infection to mimic a recovered compartment.
6. Re-label the agent as susceptible. Doing so will trigger the immunity manager to set the
agent's natural level of immunity to a value of immunity to mimic the agent being in
a recovered compartment. However, since we want the model to be general to consider waning
of immunity, labeling individuals as being in a recovered compartment where they have complete
immunity restricts the model's flexibility.

## Relationship to other managers/out of scope for the transmission manager

- The transmission manager does not implement interventions. It does not keep track
of interventions present or how they impact transmission. Instead, those quantities are
stored in an intervention plugin. The transmission manager can query an individual's transmissibility
at a given time based on their person characteristics to get their realized transmissibility
for use in the workflow described above, but it does not explicitly track which interventions
are present at what time or how they impact transmissibility.
of interventions present or how they impact transmission.

- The transmission manager also does not track an individual's contacts. Instead, the transmission
- The transmission manager does not track an individual's contacts. Instead, the transmission
manager calls a generic method called `get_contact` which is in the `mod contact_manager` to obtain
the individual's contacts.

- The transmission manager does not track an individual's health status. In fact, it is
completely independent from health status. Instead, health status is tracked in
`mod disease_progression_manager`. However, if transmission probability is changed based on
health status (i.e., hospitalized people are less likely to transmit), through the intervention
plugin, the transmission manager can query all the individual's transmission modifications and
adjust their transmission probability accordingly.

- An agent's contacts may also change through time (hospitalized patients interact with people
in the hospital). The transmission manager does not need to know about these changes as it just
queries an individual's contacts through the `get_contact` method. However, the intervention plugin
can store information about how an individual's contacts are changed based on their health status.
- The transmission manager does not track an individual's health status.

- The transmission manager does not track an individual's waning immunity over time. It can
interface with other methods that do calculate an individual's immunity -- for evaluating
Expand Down

0 comments on commit 4cf150d

Please sign in to comment.