A stochastic, age-stratified agent-based computational model for the transmission dynamics of COVID-19. The computational model simulates autonomous agents (representing individuals in a human population) and their interactions within a constrained virtual environment. Agents follow the natural history of disease, including epidemiological stages of susceptible, infected and incubating, asymptomatic, presymptomatic, and symptomatic with either mild, severe, or critical illness, recovered, and dead.
Model features include:
- Age structured with realistic contact dynamics
- Asymptomatic, Presymptomatic transmission
- Isolation of mild/severe cases
- Spread of Omicron
- Waning of immunity induced by the vaccine and recovery.
Prerequisites: Julia 1.0.4, access to a cluster or a high-compute workstation.
- Download or clone the entire repository and navigate to the folder.
- Launch Julia and cctivate the project by:
julia --project=.
. Double check if the project environment is set correct by enteringPkg
mode by typing]
. - Instantiate the project by typing
] instantiate
. - Include the file simulations_cluster.jl using the command
include("simulations_cluster.jl")
Note, that in our version of this file we connect to our compute cluster using the Slurm
cluster software. The user may want to simply use addprocs
to run locally on their computer, run everything in a serial manner (takes long), or use a compute cluster with the help of ClusterManagers
. The simulations/scenarios can be launched by executing
run_param_scen_cal(calibrating,b,h,init1,init2,init3,init4,init5,init6,time2,time3,time4,time5,time6,index,status,days_after,v1,v2,modeltime,vaccination,when_relax,turnon,waning,red,trans,redred,nb,ddkids,rate_kids,boost_inc_day,boost_inc,change_elig,ba)
to run the scenarios. The arguments are
- b: Float64 - probability of transmission for presymptomatic cases.
- province: Symbol - The province that one wants to use demographics
- h: Int64 - previous herd immunity in the population (either 5, 10, 20, 30 or 50%).
- ic1: Int64 - number of initial infected for strain.
- strain: Int64 - This should be set to 3.
- index: Int64 - index to differ different files (see Model output).
- scen: Int64 - 0 to 5, being Baseline, SP1, Sp2 and SP3 represented by 0, 3, 4 and 5.
- tra: Int64 - either 1, 2, 3 or 4, being the test to be use. 1 - PCR, 2 - Abbott_PanBio 3 - BD VERITO 4 - SOFIA.
- eb: Int64 - percentage of extra booster given to the population at the beginning of simulation.
- wpt: Int64 - the minimum size of workplaces that will be tested.
- testtime: Int64 - time to start screening.
- test_dur: Int64 - duration of screening.
- mildcomp: Float64 - Mild compliance to testing.
- workcomp: Float64 - Compliance of workplaces to screening.
- days: Vector(Int64) - Days of testing (1 and 4 by default).
- trans_omicron: Float64 - transmissibility of omicron (if one wants to increase it)
- immu_omicron: Float64 - immunity of omicron against the vaccine.
The scenarios are in
include("scen.jl")
First, make sure that the address 'main_folder' inside function 'create_folder' in file simulations_cluster points to a valid directory in your system.
Inside this folder, one will find different data files. The most important ones are the ones named simlevel_*_inc_**.dat in which
- * stands for lat3, hos3, icu3, ded3, inf3. Which are the number of infections, Non-ICU hospitalizations, ICU hospitalizations and deaths and severe cases generated by each one of the strains.
The files contain a modeltime x number of simulations (by default 318x500) matrix. However, the first row is the heading of the file and the first column of it is the timeline. The other columns are the incidence of a given outcome in the given day of simulation.