This function provides a unified interface to the various simulation algorithms for SPN, returning output sampled at a lattice of time points to the user, and handling various exogenous events that may occur during the simulation (such as release of adult mosquitoes).

  dt = 1,
  dt_stoch = 0.1,
  folders = "./",
  stage = c("M", "F"),
  Sout = NULL,
  sampler = "tau",
  method = "lsoda",
  events = NULL,
  batch = NULL,
  verbose = TRUE,



the initial marking of the SPN (initial state, M0)


the final time to end simulation


the time-step at which to return output (not the time-step of the sampling algorithm)


time-step used for approximation of hazards


vector of folders to write output


life-stages to print. Any combination of: "E", "L", "P"," M", "U", "F", "H"


a stoichiometry Matrix-class object


list of hazard functions


an optional matrix to track event firings


determines sampling algorithm, one of; "ode", "tau", "cle", or "dm"


if sampler is "ode", the solver to use, from deSolve


a data.frame of events


a list of batch migration events, created from batch_migration, may be set to NULL if not used


print a progress bar?


further named arguments passed to the step function


NULL - prints output to .csv files


dt_stoch is used by the Poisson Time-Step (step_PTS) and Chemical Langevin (step_CLE) methods to approximate the hazards. A smaller dt_stoch provides a better approximation, but will take longer to run.

The stoichiometry matrix (S) is generated in spn_S.

The list of hazards (hazards) come from spn_hazards.

Several samplers are provided. The default is a Poisson Time-Step (step_PTS) method. Other options are Gillespie's Direct Method (step_DM) and a Chemical Langevin sampler (step_CLE). Additionally, for convenience, an ODE "sampler" (step_ODE) is provided for compatibility with other samplers. This function uses methods from deSolve.

If using the ode sampler, several methods are provided in the deSolve package, see ode. For inhomogeneous systems, consider using the "rk4" method to avoid excessive integration times.

Additionally, events objects must follow the format required by deSolve. This was done for consistency, see events for more information.

This function writes all output to .csv files. Each simulation is written to a folder element - the number of repetitions is the number of folders provided. What life-stages get recorded is specified by the stage parameter. All life-stages can be stored, or any subset thereof. Females are split by infection status, i.e. by "S", "E", or "I".

This function tracks state variables specified by argument stage by default; an optional argument Sout can be provided to track number of event firings each time step (for discrete stochastic simulations), or cumulative intensity (for continuous stochastic simulations), or the rate function of particular events for ODE simulation. The matrix must have number of columns equal to number of events in the system (the number of hazard functions), and a row for each tracking variable. If Sout is provided, it output an additional csv, "events.csv". The function track_hinf is provided, which builds a matrix to track human infection events.

To return simulations to R for further processing, see sim_trajectory_R.