This function runs a single-host transmission chain simulation, with a structured host population (such as spatial features) in a continuous space. The simulation stops either at the end of given time (specified by length.sim) or when the number of hosts infected threshold (max.infected) is passed. The movement of hosts on the continuous space map is a random walk (Brownian motion) that can be modified towards a biased random walk where hosts tend to be attracted to higher values of the environmental variable defined by the raster.

singleContinuous(
  length.sim,
  max.infected,
  init.individuals,
  init.structure,
  structure.raster,
  diff.pExit = FALSE,
  timeDep.pExit = FALSE,
  hostCount.pExit = FALSE,
  pExit,
  param.pExit,
  diff.pMove = FALSE,
  timeDep.pMove = FALSE,
  hostCount.pMove = FALSE,
  pMove,
  param.pMove,
  diff.sdMove = FALSE,
  timeDep.sdMove = FALSE,
  hostCount.sdMove = FALSE,
  sdMove,
  param.sdMove,
  attracted.by.raster = FALSE,
  diff.nContact = FALSE,
  timeDep.nContact = FALSE,
  hostCount.nContact = FALSE,
  nContact,
  param.nContact,
  diff.pTrans = FALSE,
  timeDep.pTrans = FALSE,
  hostCount.pTrans = FALSE,
  pTrans,
  param.pTrans,
  prefix.host = "H",
  print.progress = TRUE,
  print.step = 10
)

Arguments

length.sim

specifies the length (in unit of time) over which the simulation should be run.

max.infected

specifies the maximum number of hosts that can be infected in the simulation.

init.individuals

number of initially infected individuals.

init.structure

in which location the initially infected individuals are located. A vector of coordinates in the same coordinate space as the raster.

structure.raster

raster object defining the environmental variable.

diff.pExit

does pExit depend on the environmental variable (set by the raster) (TRUE/FALSE).

timeDep.pExit

is pExit dependent on the absolute time of the simulation? (TRUE/FALSE)

hostCount.pExit

does pExit vary with the host count in each raster cell? (TRUE/FALSE); if TRUE, diff.pExit should be TRUE.

pExit

function that gives the probability to exit the simulation for an infected host (either moving out, dying, etc.).

param.pExit

parameter names (list of functions) for the pExit.

diff.pMove

does pMove depend on the environmental variable (set by the raster) (TRUE/FALSE).

timeDep.pMove

does pMove depend on the absolute time of the simulation (TRUE/FALSE).

hostCount.pMove

does pMove vary with the host count in each raster cell? (TRUE/FALSE); if TRUE, diff.pMove should also be TRUE.

pMove

function that gives the probability of a host moving as a function of time.

param.pMove

parameter names (list of functions) for the pMove.

diff.sdMove

does sdMove depend on the environmental variable (set by the raster) (TRUE/FALSE).

timeDep.sdMove

does sdMove depend on the absolute time of the simulation (TRUE/FALSE).

hostCount.sdMove

does sdMove vary with the host count in each raster cell? (TRUE/FALSE); if TRUE, diff.sdMove should be TRUE.

sdMove

function that gives the distance traveled (based on coordinates); output is the standard deviation value for the Brownian motion.

param.sdMove

parameter names (list of functions) for sdMove.

attracted.by.raster

should the hosts be attracted by higher values in the environmental raster? (TRUE/FALSE).

diff.nContact

does nContact depend on the environmental variable (set by the raster) (TRUE/FALSE).

timeDep.nContact

is nContact dependent on the absolute time of the simulation? (TRUE/FALSE)

hostCount.nContact

does nContact vary with the host count in each raster cell? (TRUE/FALSE); if TRUE, diff.nContact should be TRUE.

nContact

function that gives the number of potential transmission events per unit of time.

param.nContact

parameter names (list of functions) for param.nContact.

diff.pTrans

does pTrans depend on the environmental variable (set by the raster) (TRUE/FALSE).

timeDep.pTrans

is pTrans dependent on the absolute time of the simulation? (TRUE/FALSE)

hostCount.pTrans

does pTrans vary with the host count in each raster cell? (TRUE/FALSE); if TRUE, diff.pTrans should be TRUE.

pTrans

function that gives the probability of transmit a pathogen as a function of time since infection.

param.pTrans

parameter names (list of functions) for the pExit.

prefix.host

character(s) to be used as a prefix for the hosts identification number.

print.progress

if TRUE, displays a progress bar (current time/length.sim).

print.step

print.progress is TRUE, step with which the progress message will be printed.

Value

An object of class nosoiSim, containing all results of the simulation.

Details

The pExit and pTrans functions should return a single probability (a number between 0 and 1), and nContact a positive natural number (positive integer) or 0.

The param arguments should be a list of functions or NA. Each item name in the parameter list should have the same name as the argument in the corresponding function.

The use of timeDep (switch to TRUE) makes the corresponding function use the argument prestime (for "present time").

Raster

The structure raster provided provided should of class raster. High values of the environmental variable can attract hosts if attracted.by.raster is TRUE.

Structure Parameters

The pMove function should return a single probability (a number between 0 and 1), and sdMove a real number (keep in mind this number is related to your coordinate space).

The use of diff (switch to TRUE) makes the corresponding function use the argument current.env.value (for "current environmental value").

The use of hostCount (switch to TRUE) makes the corresponding function use the argument host.count.

Order of Arguments

The user specified function's arguments should follow this order: t (mandatory), prestime (optional, only if timeDep is TRUE), current.env.value (optional, only if diff is TRUE), host.count (optional, only if hostCount is TRUE) and parameters specified in the list.

See also

For simulations with a discrete structure, see singleDiscrete. For simulations without any structures, see singleNone.

Examples

# \donttest{ library(raster) #Generating a raster for the movement set.seed(860) test.raster <- raster(nrows=100, ncols=100, xmn=-50, xmx=50, ymn=-50,ymx=50) test.raster[] <- runif(10000, -80, 180) test.raster <- focal(focal(test.raster, w=matrix(1, 5, 5), mean), w=matrix(1, 5, 5), mean) plot(test.raster)
t_incub_fct <- function(x){rnorm(x,mean = 5,sd=1)} p_max_fct <- function(x){rbeta(x,shape1 = 5,shape2=2)} p_Move_fct <- function(t){return(0.1)} sdMove_fct = function(t,current.env.value){return(100/(current.env.value+1))} p_Exit_fct <- function(t){return(0.08)} proba <- function(t,p_max,t_incub){ if(t <= t_incub){p=0} if(t >= t_incub){p=p_max} return(p) } time_contact = function(t){round(rnorm(1, 3, 1), 0)} start.pos <- c(0,0) test.nosoiA <- nosoiSim(type="single", popStructure="continuous", length=200, max.infected=500, init.individuals=1, init.structure=start.pos, structure.raster=test.raster, pMove=p_Move_fct, param.pMove=NA, diff.sdMove=TRUE, sdMove=sdMove_fct, param.sdMove=NA, attracted.by.raster=TRUE, nContact=time_contact, param.nContact=NA, pTrans = proba, param.pTrans = list(p_max=p_max_fct, t_incub=t_incub_fct), pExit=p_Exit_fct, param.pExit=NA)
#> Starting the simulation #> Initializing ...
#> running ...
#> Time: 10 (5% of maximum length). Hosts count: 10 (2% of maximum infected hosts).
#> Time: 20 (10% of maximum length). Hosts count: 201 (40% of maximum infected hosts).
#> done. #> The simulation has run for 24 units of time and a total of 648 hosts have been infected.
# }