-
Notifications
You must be signed in to change notification settings - Fork 5
Interventions
This page details the implementation of interventions. Our model includes the following interventions:
- case isolation
- travel isolation
- household quarantine
- place closure
- social distancing
- vaccination
- testing.
Comparisons to the Ferguson Model are documented on the Comparison to Ferguson Model page.
Epiabm models interventions by reading in intervention parameters from the parameter file. The InterventionSweep
will be the first sweep run during the simulation. The sweep will check if interventions are active for each intervention for which parameters are provided in the parameter file. Activation depends on time and/or a threshold for the number of infectious cases, i.e. when start_time is within current simulation time and policy_duration, and/or the number of infectious cases exceed case_threshold the intervention is active. If activation of the intervention should only depend on start_time and policy_duration, case_threshold should be set to zero. If activation of the intervention should only depend on case_threshold, start_time should be set to zero and policy_duration should exceed the runtime of simulation.
Similar to the Ferguson Model, non-pharmaceutical interventions (NPIs) alter either the infectiousness of infected people, the susceptibility of susceptible people, or both. This is implemented at the Person level. In Epiabm, every person in the population has an intervention start time (e.g. isolation_start_time) which is set to None when the NPI is not applied to the person. When the NPI is activated and should be applied to a person (e.g. the person is infectious in the case isolation intervention) the intervention start time of that person will be set (with a certain probability) to the time at which the intervention should start applying to this person. In this case of case isolation, the isolation start time is after an intervention delay time (e.g isolation_delay). When the intervention start time has a value assigned the infectiousness and/or susceptibility is scaled in the force of infection functions in the property
files. Intervention start time is set back to None after the intervention duration time has passed (e.g. after isolation_start_time + isolation_duration) or if the NPI policy is inactivated.
Every intervention should have the following three parameters:
start_time: The start time of the intervention.
policy_duration: The duration for which the policy should take place.
case_threshold: The threshold for the number of infectious cases to activate the intervention.
If the Case Isolation intervention is active, at every time point isolated individuals will stop isolating after their isolation period and symptomatic or positively tested (if disease testing active) individuals will isolate with a given probability (isolation_probability). If an individual is isolated, place and spatial infectiousness is scaled by isolation_effectiveness and household infectiousness is scaled by isolation_house_effectiveness.
Next to the three general parameters, case isolation has the following parameters:
isolation_delay: delay of case isolation intervention.
isolation_duration: duration of which a person should isolate.
isolation_probability: probability with which susceptible or positively tested individuals isolate.
isolation_effectiveness: scaling place and spatial infectiousness by isolating.
isolation_house_effectiveness: scaling household infectiousness by isolating.
If travellers are entering and leaving the country (see Differences to Ferguson Model page) the Travel Isolation intervention could be activated. At every time point, travellers will isolate with a given probability (isolation_probability) in their assigned household (which can be a single household as set in the travel parameters) or in a single household (decided by hotel_isolate). If a traveller is isolated, place and spatial infectiousness is scaled by isolation_effectiveness and household infectiousness is scaled by isolation_house_effectiveness If travellers isolate in a hotel (single household) they will be assigned to an previously existing household (or to a new single household again based on the travel parameters).
Next to the three general parameters, case isolation has the following parameters:
isolation_delay: delay of travel isolation intervention.
isolation_duration: duration of which a traveller should isolate.
isolation_probability: probability with which traveller isolates.
isolation_effectiveness: scaling place and spatial infectiousness by isolating travellers.
isolation_house_effectiveness: scaling household infectiousness by isolating travellers.
hotel_isolate: restricting traveller to isolate in a single household.
If the Household Quarantine intervention is active, the household of a new case isolated individual will go into quarantine and quarantined individuals will go out of quarantine after their quarantine period. For every individual in a household of a new case isolated individual a probability determines if the individual will quarantine depending on two compliance parameters. First household compliance is checked based on the quarantine_house_compliant parameter, and if the household is compliant, compliance will be checked on individual level for each person in the household (quarantine_individual compliant). The household quarantine intervention only applies when the case isolation intervention is active. If a person is in quarantine, household susceptibility is scaled by quarantine_house_effectiveness, spatial susceptibility is scaled by quarantine_spatial_effectiveness, and place susceptibility is scaled by quarantine_place_effectiveness[k], where k is the place type. When a quarantined individual becomes symptomatic or test positive the individual will case isolate and their household, place, and spatial force of infection will scale by the case isolation parameters. A person could reach the end of their case isolation but still stay home because of the household quarantine intervention. A persons quarantine period is extended when another member of their household starts to case isolate.
quarantine_delay: delay of household quarantine intervention.
quarantine_duration: duration of which a person should quarantine.
quarantine_house_compliant: Compliance of the household.
quarantine_individual_compliant: Compliance of an individual in a household.
quarantine_house_effectiveness: scaling household infectiousness when in quarantine.
quarantine_spatial_effectiveness: scaling spatial infectiousness and susceptibility when in quarantine.
quarantine_place_effectiveness: scaling place infectiousness and susceptibility when in quarantine.
If the Place Closure intervention is active, at every time point closed places will open again after their closure period. All places with the given place type closure_place_type will be closed if the number of infectious cases in their microcell exceeds the case_microcell_threshold. If a place is closed, household infectiousness (of the infector) is scaled by closure_household_infectiousness, spatial infectiousness (of the infector) and susceptibility (of the infectee) is scaled by closure_spatial_params, and place infectiousness is set to 0.
closure_delay: delay of place closure intervention.
closure_duration: duration of which a place should be closed.
case_microcell_threshold: threshold for the number of infectious cases in the microcell to activate the intervention for places in this microcell.
closure_place_type: closure of places with these place types when in place closure.
closure_household_infectiousness: scaling household infectiousness when in place closure.
closure_spatial_params: scaling spatial infectiousness and susceptibility when in place closure.
If the Social Distancing intervention is active, at every time point social distanced individuals will stop distancing after their distancing period. Individuals will be social distanced based on the number of infectious cases in the microcell and the intensity of social distancing will depend on enhanced probability. First, if the number of infectious cases in the microcell exceeds case_microcell_threshold parameter, all individuals in this microcell will be social distanced. There are two types of social distancing, which are non-enhanced and enhanced. The individuals will be allocated to enhanced social distancing based on distancing_enhanced_prob[k], where k is the age group. If a person is in non-enhanced social distancing, household susceptibility is scaled by distancing_house_susc, spatial susceptibility is scaled by distancing_spatial_susc, and place susceptibility is scaled by distancing_place_susc[m], where m is the place type. If a person is in enhanced social distancing, household susceptibility is scaled by distancing_house_enhanced_susc, spatial susceptibility is scaled by distancing_spatial_enhanced_susc, and place susceptibility is scaled by distancing_place_enhanced_susc[m], where m is the place type. The Social Distancing intervention is thus applied on only the susceptibility of susceptible people (infectees).
distancing_delay: delay of social distancing intervention.
distancing_duration: duration over which an individual should be social distanced.
case_microcell_threshold: threshold for the number of infectious cases in the microcell to activate the intervention for individuals in this microcell.
distancing_enhanced_prob: probability of an individual to be enhanced social distanced based on their age group.
distancing_house_susc: scaling household susceptibility when in non-enhanced social distancing.
distancing_spatial_susc: scaling spatial susceptibility when in non-enhanced social distancing.
distancing_place_susc: scaling place susceptibility when in non-enhanced social distancing.
distancing_house_enhanced_susc: scaling household susceptibility when in enhanced social distancing.
distancing_spatial_enhanced_susc: scaling spatial susceptibility when in enhanced social distancing.
distancing_place_enhanced_susc: scaling place susceptibility when in enhanced social distancing.
Similar to the NPIs, Vaccination is a policy which is active according to the start_time, policy_duration, and case_threshold. If vaccination is to be applied in the simulation, an initial sweep is run at the start of the simulation which screens the entire population and generates a vaccination queue. Individuals are added to the queue based on an age-based probability of accepting the vaccine (prob_vaccinated) and the queue is ordered such that the individuals within the first age range (as specified with min_ages) have the highest priority for vaccination. Other properties of a person, such as whether they are a care home resident, can also be used to control priority. When the mass vaccination policy is then activated, a given number of individuals (daily_doses) are removed from the queue each day in order of priority and 'vaccinated'. After a delay (governed by time_to_efficacy), being vaccinated may prevent an individual from ever becoming infected (with probability vacc_protectiveness), and means that if they do become infected, they are less infectious (by the percentage vacc_inf_drop).
vacc_inf_drop: scaling infectiousness when the infector is vaccinated.
vacc_protectiveness: probability that a vaccinated individual never becomes infected.
time_to_efficacy: mean of the poisson distribution governing at what time after vaccination it starts to protect the individual from infection and reduce their infectiousness if they do become infected.
min_ages: lower age threshold for each group in the priority queue.
prob_vaccinated: the probability that individuals within each age group as defined with min_ages receive the vaccine.
daily_doses: number of vaccines which can be administered daily nationwide.
Symptomatic, asymptomatic, and uninfected individuals can all be added to the testing queue. The proportions of individuals being tested can be varied according to whether they are symptomatic, and whether they are care home residents or key workers. After an individual has been selected as being tested, they are assigned in given proportions to either a PCR or LFT testing queue. At each time step, individuals are added to the queue, and others are removed according to the per cell testing capacity. When individuals are removed from the testing queue, they are assigned a date_positive time according the defined false_positive and false_negative rates, which are specified for PCR and LFT tests separately. Symptomatic individuals that test negative will go for another test if their symptoms get worse. Negatively tested asymptomatic individuals will go for another test when symptoms occur.
testing_capacity: number of tests which can be carried out each day per cell in the format [PCR capacity, LFT capacity]
false_positive: rate of false positives in the format [PCR capacity, LFT capacity]
false_negative: rate of false negatives in the format [PCR capacity, LFT capacity]
testing_asympt_uninf: proportions of asymptomatic and uninfected individuals who get tested in the format [care home individuals, key workers, general population]
asympt_uninf_pcr: proportions of asymptomatic and uninfected individuals who get tested who have a PCR test (the rest take LFT)
testing_sympt: proportion of symptomatic individuals who get tested in the format [care home individuals, key workers, general population]
sympt_pcr: proportion of symptomatic individuals who get tested who have a PCR test (the rest take LFT)
False positive and negative parameters for PCR and LFT tests used in the examples have been taken from (https://www.gov.uk/government/publications/gos-impact-of-false-positives-and-negatives-3-june-2020/impact-of-false-positives-and-false-negatives-in-the-uks-covid-19-rt-pcr-testing-programme-3-june-2020) and (Peto, 2021: https://doi.org/10.1016/j.eclinm.2021.100924), respectively.