Synergistic interventions to control COVID-19: mass testing and isolation mitigates reliance on distancing
This repository contains code to reproduce results in
Howerton E, Ferrari MJ, Bjørnstad ON, Bogich TL, Borchering RK, Jewell CP, et al. Synergistic interventions to control COVID-19: Mass testing and isolation mitigates reliance on distancing. PLoS Comput Biol. 2021;17: e1009518. doi:10.1371/journal.pcbi.1009518
All code is licensed under the CC-BY-NC Creative Commons attribution-noncommercial license (http://creativecommons.org/licenses/by-nc/3.0/).
code
├── LICENSE
├── Makefile
├── src
│ ├── analysis
│ │ ├── analysis_tools.R
│ │ ├── generate_initial_conditions.R
│ │ ├── setup_simulations.R
│ │ ├── sim_along_contours.R
| | └── simulate_model.R
│ ├── model
│ │ ├── calibration_tools.R
│ │ ├── define_parameters.R
│ │ ├── model_delayed_symp_isolation.R
│ │ ├── model_immediate_symp_isolation.R
| | └── model_tools.R
│ ├── viz
│ │ ├── change_outcomes_duncertainty.R
│ │ ├── contour_sims_plots.R
│ │ ├── correlation_plot.R
│ │ ├── heatmap_plots.R
│ │ ├── initial_conditions_plot.R
│ │ ├── sensitivity_plots.R
| └── └── viz_tools.R
├── output
│ ├── figures
│ ├── sims
│ │ ├── delayed
│ │ ├── immediate
│ │ ├── initial_conditions
└── └── └── sensitivity
This analysis was run in R >3.6 and uses several external packages. All required R packages are listed in src/analysis/simulate_model.R
. The analysis can be controlled using GNU Make (see the Makefile for details) or each subanalysis run using the commands listed below.
Simulation data can be generated using the following steps:
- Setup: Configure model and generate initial conditions
- Simulate interventions: Run model simulations under varying intervention scenarios
- Simulate along contours: Identify interventions with equivalent outcomes, and resimulate these
Data used for manuscript is available in output\sims
. Scripts can also be executed using make
command via Makefile
.
Step 1: create .rda object with model parameters (including biological and intervention)
Rscript src/model/define_parameters.R \
"src/model/calibration_tools.R" \
"output/sims/parameters.rda"
Step 2: create second .rda object that defines set of intervention combinations to simulate.
Rscript src/analysis/setup_simulations.R \
"output/sims/parameters.rda" \
"src/model/calibration_tools.R" \
"output/sims/sims_setup.rda"
Step 3: generate initial conditions for interventions
Rscript src/analysis/generate_initial_conditions.R \
"src/model/model_immediate_symp_isolation.R" \
"src/model/model_tools.R" \
"output/sims/parameters.rda" \
"output/sims/initial_conditions" \
Step 1: model assuming symptomatic infections quarantine immediately upon test administration, whereas asymptomatic infections isolate only upon positive test
Rscript src/analysis/simulate_model.R \
"src/model/model_immediate_symp_isolation.R" \
"output/sims/initial_conditions/initial_conditions_base.csv" \
"output/sims/parameters.rda" \
"src/model/model_tools.R" \
"output/sims/sims_setup.rda" \
"main"\
5000 \
"output/sims/immediate/immediate_model_simulations.csv"
Step 2: model assuming all infections wait for a positive test result to isolate
Rscript src/analysis/simulate_model.R \
"src/model/model_delayed_symp_isolation.R" \
"output/sims/initial_conditions/initial_conditions_base.csv" \
"output/sims/parameters.rda" \
"src/model/model_tools.R" \
"output/sims/sims_setup.rda" \
"main"\
5000 \
"output/sims/delayed/delayed_model_simulations.csv"
Step 1: execute for immediate model
Rscript src/analysis/sim_along_contours.R \
"output/sims/immediate/immediate_model_simulations.csv" \
"output/sims/initial_conditions/initial_conditions_base.csv" \
"output/sims/parameters.rda" \
"src/model/model_immediate_symp_isolation.R" \
"src/model/model_tools.R" \
"src/analysis/analysis_tools.R" \
5000 \
"output/sims/immediate/immediate_contours_simulations.csv"
Step 2: execute for delayed model
Rscript src/analysis/sim_along_contours.R \
"output/sims/delayed/delayed_model_simulations.csv" \
"output/sims/initial_conditions/initial_conditions_base.csv" \
"output/sims/parameters.rda" \
"src/model/model_delayed_symp_isolation.R" \
"src/model/model_tools.R" \
"src/analysis/analysis_tools.R" \
5000 \
"output/sims/delayed/delayed_contours_simulations.csv"
Created in Adobe illustrator, no code available.
Rscript src/viz/heatmap_plots.R \
"output/sims/immediate/immediate_model_simulations.csv" \
"src/analysis/analysis_tools.R" \
"src/viz/viz_tools.R" \
"TRUE" \
"TRUE" \
"FALSE" \
"output/figures/Fig2.pdf"
Note availability labels added in Adobe Illustrator.
Rscript src/viz/contour_sims_plots.R \
"output/sims/delayed/delayed_contours_simulations.csv" \
"output/sims/immediate/immediate_contours_simulations.csv" \
"output/sims/initial_conditions/initial_conditions_base.csv" \
"src/viz/viz_tools.R" \
"immed" \
"TRUE" \
"output/figures/Fig3.pdf"
Rscript src/viz/change_outcomes_duncertainty.R \
"output/sims/immediate/immediate_contours_simulations.csv" \
"src/viz/viz_tools.R" \
"output/figures/Fig4.pdf"
Rscript src/viz/initial_conditions_plot.R \
"output/sims/initial_conditions/initial_sims_full.rda" \
"output/figures/FigS1.pdf"
Rscript src/viz/heatmap_plots.R \
"output/sims/immediate/immediate_model_simulations.csv" \
$(analysis_tools) \
$(viz_tools) \
"FALSE" \
"FALSE" \
"TRUE" \
"output/figures/FigS2.pdf"
Rscript src/viz/heatmap_plots.R \
"output/sims/delayed/delayed_model_simulations.csv" \
$(analysis_tools) \
$(viz_tools) \
"TRUE" \
"FALSE" \
"FALSE" \
"output/figures/FigS3.pdf"
Rscript src/viz/sensitivity_plots.R \
"output/sims/immediate/immediate_model_simulations.csv" \
"output/sims/sensitivity" \
$(viz_tools) \
"output/figures/FigS4.pdf"
Rscript src/viz/contour_sims_plots.R \
"output/sims/delayed/delayed_contours_simulations.csv" \
"output/sims/immediate/immediate_contours_simulations.csv" \
"output/sims/initial_conditions/initial_conditions_base.csv" \
$(viz_tools) \
"diffiso" \
"FALSE" \
"output/figures/FigS5.pdf"
Rscript src/viz/contour_sims_plots.R \
"output/sims/delayed/delayed_contours_simulations.csv" \
"output/sims/immediate/immediate_contours_simulations.csv" \
"output/sims/initial_conditions/initial_conditions_base.csv" \
$(viz_tools) \
"both" \
"FALSE" \
"output/figures/FigS6.pdf"