# --------------------------------------------------
# initialize event scheduling (squire transmission model)
# Sean L. Wu (slwood89@gmail.com)
# May 2021
# 1. setup_events
# --------------------------------------------------
#' @title Schedule events for individuals at initialisation
#' @param parameters model parameters
#' @param events a list of [individual::TargetedEvent], the output of [create_events]
#' @param variables a list of model variables, the output of [create_variables]
#' @param dt size of the time step
#' @export
setup_events <- function(
parameters,
events,
variables,
dt
) {
# E individuals
bset_E <- variables$states$get_index_of("E")
if (bset_E$size() > 0) {
if (!is.null(variables$ab_titre)) {
init_fn <- create_exposure_scheduler_listener_vaccine(
events = events,
variables = variables,
parameters = parameters,
dt = dt
)
} else {
init_fn <- create_exposure_scheduler_listener(
events = events,
variables = variables,
parameters = parameters,
dt = dt
)
}
init_fn(timestep = 1, target = bset_E)
}
# IMild
bset_IMild <- variables$states$get_index_of("IMild")
if (bset_IMild$size() > 0) {
init_fn <- create_event_scheduler_listener(
event = events$recovery,
duration = parameters$dur_IMild,
func = make_rexp,
shift = 1L,
dt = dt
)
init_fn(timestep = 1, target = bset_IMild)
}
# IAsymp
bset_IAsymp <- variables$states$get_index_of("IAsymp")
if (bset_IAsymp$size() > 0) {
init_fn <- create_event_scheduler_listener(
event = events$recovery,
duration = parameters$dur_IAsymp,
func = make_rexp,
shift = 1L,
dt = dt
)
init_fn(timestep = 1, target = bset_IAsymp)
}
# ICase
bset_ICase <- variables$states$get_index_of("ICase")
if (bset_ICase$size() > 0) {
init_fn <- create_event_scheduler_listener(
event = events$hospitilisation,
duration = parameters$dur_ICase,
func = make_rerlang,
shift = 1L,
dt = dt
)
init_fn(timestep = 1, target = bset_ICase)
}
# IMVGetLive
bset_IMVGetLive <- variables$states$get_index_of("IMVGetLive")
if (bset_IMVGetLive$size() > 0) {
init_fn <- create_event_scheduler_listener(
event = events$stepdown,
duration = parameters$dur_get_mv_survive,
func = make_rerlang,
shift = 1L,
dt = dt
)
init_fn(timestep = 1, target = bset_IMVGetLive)
}
# IMVGetDie
bset_IMVGetDie <- variables$states$get_index_of("IMVGetDie")
if (bset_IMVGetDie$size() > 0) {
init_fn <- create_event_scheduler_listener(
event = events$death,
duration = parameters$dur_get_mv_die,
func = make_rerlang,
shift = 1L,
dt = dt
)
init_fn(timestep = 1, target = bset_IMVGetDie)
}
# IMVNotGetLive
bset_IMVNotGetLive <- variables$states$get_index_of("IMVNotGetLive")
if (bset_IMVNotGetLive$size() > 0) {
init_fn <- create_event_scheduler_listener(
event = events$recovery,
duration = parameters$dur_not_get_mv_survive,
func = make_rerlang,
shift = 1L,
dt = dt
)
init_fn(timestep = 1, target = bset_IMVNotGetLive)
}
# IMVNotGetDie
bset_IMVNotGetDie <- variables$states$get_index_of("IMVNotGetDie")
if (bset_IMVNotGetDie$size() > 0) {
init_fn <- create_event_scheduler_listener(
event = events$death,
duration = parameters$dur_not_get_mv_die,
func = make_rerlang,
shift = 1L,
dt = dt
)
init_fn(timestep = 1, target = bset_IMVNotGetDie)
}
# IOxGetLive
bset_IOxGetLive <- variables$states$get_index_of("IOxGetLive")
if (bset_IOxGetLive$size() > 0) {
init_fn <- create_event_scheduler_listener(
event = events$recovery,
duration = parameters$dur_get_ox_survive,
func = make_rerlang,
shift = 1L,
dt = dt
)
init_fn(timestep = 1, target = bset_IOxGetLive)
}
# IOxGetDie
bset_IOxGetDie <- variables$states$get_index_of("IOxGetDie")
if (bset_IOxGetDie$size() > 0) {
init_fn <- create_event_scheduler_listener(
event = events$death,
duration = parameters$dur_get_ox_die,
func = make_rerlang,
shift = 1L,
dt = dt
)
init_fn(timestep = 1, target = bset_IOxGetDie)
}
# IOxNotGetLive
bset_IOxNotGetLive <- variables$states$get_index_of("IOxNotGetLive")
if (bset_IOxNotGetLive$size() > 0) {
init_fn <- create_event_scheduler_listener(
event = events$recovery,
duration = parameters$dur_not_get_ox_survive,
func = make_rerlang,
shift = 1L,
dt = dt
)
init_fn(timestep = 1, target = bset_IOxNotGetLive)
}
# IOxNotGetDie
bset_IOxNotGetDie <- variables$states$get_index_of("IOxNotGetDie")
if (bset_IOxNotGetDie$size() > 0) {
init_fn <- create_event_scheduler_listener(
event = events$death,
duration = parameters$dur_not_get_ox_die,
func = make_rerlang,
shift = 1L,
dt = dt
)
init_fn(timestep = 1, target = bset_IOxNotGetDie)
}
# R
if (is.finite(parameters$dur_R)) {
bset_R <- variables$states$get_index_of("R")
if (bset_R$size() > 0){
init_fn <- create_event_scheduler_listener(
event = events$immunity_loss,
duration = parameters$dur_R,
func = make_rerlang,
shift = 1L,
dt = dt
)
init_fn(timestep = 1, target = bset_R)
}
}
# IRec
bset_IRec <- variables$states$get_index_of("IRec")
if (bset_IRec$size() > 0) {
init_fn <- create_event_scheduler_listener(
event = events$recovery,
duration = parameters$dur_rec,
func = make_rerlang,
shift = 1L,
dt = dt
)
init_fn(timestep = 1, target = bset_IRec)
}
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.