Output from the simulator

Events tracked during the simulation

This simulator simulations individuals in a population using an event-based model. Briefly speaking,

  1. The simulator creates an initial population with a set of initial events (see later section for details)

  2. The events will happen at a pre-specified time and will trigger further events. For example,

an INFECTION event will cause someone to be infected with the virus. The individual will be marked as infected and according to individualized parameters of the infectivity of the infected individual, the INFECTION event may trigger a series of events such as INFECTION to other individuals, SHOW_SYMPTIOM if he or she is symptomatic and will show symptom after an incubation period, REMOVAL or QUARANTINE after symptoms are detected.

  1. The simulator processes and logs the events and stops after pre-specified exit condition.

Currently the following events are tracked

Name Event
ABORT If the first carrier show sympton during quarantine.
END Simulation ends.
ERROR An error was raised.
INFECION_FAILED No one left to infect
INFECTION_AVOIDED An infection happended during quarantine. The individual might not have showed sympton.
INFECTION_IGNORED Infect an infected individual, which does not change anything.
INFECTION Infect an non-quarantined individual, who might already been infected.
QUARANTINE Quarantine someone till specified time.
RECOVER Recovered, no longer infectious
REINTEGRATION Reintroduce the quarantined individual to group.
REMOVAL Remove from population.
SHOW_SYMPTOM Show symptom.
VACCINATION Vaccination
REPLACEMENT A special event that replace the existing individual with a new uninfected one.
START Start up simulation.
STAT Report population stats at specified intervals.

The log file contains all events that happens during the simulations. For example, for command

outbreak_simulator --repeat 100 --popsize 64 --logfile result_remove_symptomatic.txt

You will get an output file result_remove_symptomatic.txt with the following columns:

column content
id id of the simulation.
time time of the event in days, accurate to hour.
event type of event
target subject of the event, for example the ID of the individual that has been quarantined.
params Additional parameters, mostly for the INFECTION event where simulated $R_0$ and incubation period will be displayed.

and would look like the following:

id      time    event   target  params
2       0.00    START   .       id=2,time=06/23/2020-17:51:39,args=--infector 0
2       0.00    INFECTION       0       r0=2.10,r=0,r_presym=0,r_sym=0,incu=4.99
2       4.99    SHOW_SYMPTOM    0       .
2       4.99    REMOVAL 0       popsize=63
2       11.33   RECOVER 0       recovered=0,infected=0,popsize=63,True=True
2       11.33   END     63      popsize=63,prop_asym=0.123,time=06/23/2020-17:51:39
3       0.00    START   .       id=3,time=06/23/2020-17:51:39,args=--infector 0
3       0.00    INFECTION       0       r0=1.49,r=0,r_presym=0,r_sym=0,incu=5.47
3       5.47    SHOW_SYMPTOM    0       .
3       5.47    REMOVAL 0       popsize=63
3       11.64   RECOVER 0       recovered=0,infected=0,popsize=63,True=True
3       11.64   END     63      popsize=63,prop_asym=0.220,time=06/23/2020-17:51:39
7       0.00    START   .       id=7,time=06/23/2020-17:51:39,args=--infector 0
7       0.00    INFECTION       0       r0=0.43,r=0,r_asym=0

which I assume would be pretty self-explanatory. Note that the simulation IDs are not ordered because the they are run in parallel but you can expect all events belong to the same simulation are recorded together..

Summary report from multiple replicates

At the end of each command, a report will be given to summarize key statistics from multiple replicated simulations. The output contains the following keys and their values

name value
logfile Log file of the simulation with all the events
popsize Initial population size
handle_symptomatic If asymptomatic infectees are kept, removed, or quarantined, at what percentage.
prop_asym_carriers Proportion of asymptomatic carriers, also the probability of infectee who do not show any symptom
interval Interval of time events (1/24 for hours)
n_simulation Total number of simulations, which is the number of END events
total_infection Number of INFECTION events
total_infection_failed Number of INFECTION_FAILED events
total_infection_avoided Number of INFECTION_AVOIDED events
total_infection_ignored Number of INFECTION_IGNORED events
total_show_symptom Number of SHOW_SYMPTOM events
total_removal Number of REMOVAL events
total_quarantine Number of QUARANTINE events
total_reintegration Number of REINTEGRATION events
total_abort Number of ABORT events
total_asym_infection Number of asymptomatic infections
total_presym_infection Number of presymptomatic infections
total_sym_infection Number of symptomatic infections
n_remaining_popsize_XXX Number of simulations with XXX remaining population size
n_no_outbreak Number of simulations with no outbreak (no symptom from anyone, or mission canceled)
n_outbreak_duration_XXX Number of simulations with outbreak ends in day XXX . Pre-quarantine days are not counted as outbreak. Outbreak can end at day 0 if the infectee will not show symtom or infect others.
n_no_infected_by_seed Number of simulations when the introduced carrier does not infect anyone
n_num_infected_by_seed_XXX Number of simulations with XXX people affected by the introduced virus carrier, XXX > 0 .
n_first_infected_by_seed_on_day_XXX Number of simulations when the introduced carrier infect the first infectee on day XXX , XXX<1 is rounded to 1, and so on. Pre-quarantine time is deducted.
n_seed_show_no_symptom Number of simulations when the seed show no symptom
n_seed_show_symptom_on_day_XXX Number of simulations when the carrier show symptom at day XXX , XXX < 1 is rounded to 1, and so on.
n_no_first_infection Number of simualations with no infection at all.
n_first_infection_on_day_XXX Number of simualations with the first infection event happens at day XXX . It is the same as XXX_n_first_infected_by_seed_on_day but is reserved when multiple seeds are introduced.
n_first_symptom Number of simulations when with at least one symptomatic case
n_first_symptom_on_day_XXX Number of simulations when the first symptom appear at day XXX , XXX < 1 is rounded to 1, and so on. Symptom during quarantine is not considered and pre-quarantine days are deducted.
n_second_symptom Number of simulations when there are a second symptomatic case symptom.
n_second_symptom_on_day_XXX Number of simulations when the second symptom appear at day XXX after the first symptom
n_third_symptom Number of simulations when there are a third symptomatic case symtom
n_third_symptom_on_day_XXX Number of simulations when the first symptom appear at day XXX after the second symptom
n_popsize_XXX Population size at time XXX , a list if multiple replicates
n_YYY_popsize_XXX Population size of group YYY at time XXX a list if multiple replicates
n_infected_XXX Number of infected individuals at time XXX a list if multiple replicates
n_YYY_infected_XXX Number of infected individuals in group YYY at time XXX a list if multiple replicates
n_recovered_XXX Number of recovered individuals at time XXX a list if multiple replicates
n_YYY_recovered_XXX Number of recovered individuals in group YYY at time XXX a list if multiple replicates
incidence_rate_XXX Incidence rate (infected/popsize) at time XXX a list if multiple replicates
YYY_incidence_rate_XXX Incidence rate in group YYY at time XXX a list if multiple replicates
seroprevalence_XXX Seroprevalence (infected + recovered)/popsize) at time XXX a list if multiple replicates
YYY_seroprevalence_XXX Seroprevalence in group YYY at time XXX a list if multiple replicates
avg_n_popsize_XXX Average population size at time XXX if there are multiple replicates
avg_n_YYY_popsize_XXX Average population size of group YYY at time XXX if there are multiple replicates
avg_n_infected_XXX Average number of infected individuals at time XXX if there are multiple replicates
avg_n_YYY_infected_XXX Average number of infected individuals in group YYY at time XXX if there are multiple replicates
avg_n_recovered_XXX Average number of recovered individuals at time XXX if there are multiple replicates
avg_n_YYY_recovered_XXX Average number of recovered individuals in group YYY at time XXX if there are multiple replicates
avg_incidence_rate_XXX Average incidence rate (infected/popsize) at time XXX if there are multiple replicates
avg_YYY_incidence_rate_XXX Average incidence rate in group YYY at time XXX if there are multiple replicates
avg_seroprevalence_XXX Average neroprevalence (infected + recovered)/popsize) at time XXX if there are multiple replicates
avg_YYY_seroprevalence_XXX Average seroprevalence in group YYY at time XXX if there are multiple replicates
EVENT_STAT_XXX Reported statistics STAT for customized event EVENT at time XXX a list if multiple replicates
avg_EVENT_STAT_XXX Average reported statistics STAT for customized event EVENT at time XXX if there are multiple replicates

NOTE: All avg_ fields have average over existing replicates, and all replicates. For example, if at time 100, 8 of the replicate simulations have completed and the rest 2 have population size 5, and 10, the average population size will be reported as 7.5 ( 5+10/2 ) and 0.15 ( 5+10/10 ).