nosoi (version 1.0.0)

dualContinuous: Dual-host pathogen in structured (continuous) hosts populations

Description

This function runs a dual-host transmission chain simulation, with structured hosts populations (such as spatial features) in a shared 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.

Usage

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

Value

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

Raster

The structure raster(s) provided provided should of class raster. High values of the environmental variable can attract hosts if attracted.by.raster is TRUE. Raster have to share the same space (i.e. also the same cell size and ID).

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.A or host.count.B (optional, only if hostCount is TRUE) and parameters specified in the list.

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.

Suffixes

The suffix .A or .B specifies if the considered function or parameter concerns host type A or B.

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").

See Also

For simulations with a discrete structure, see dualDiscrete. For simulations without any structures, see dualNone.

Examples

Run this code
# NOT RUN {
library(raster)

#Generating a raster the for 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)

library(igraph)
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)

set.seed(805)
test.nosoi <- nosoiSim(type="dual", popStructure="continuous",
                       length.sim=200,
                       max.infected.A=500,
                       max.infected.B=500,
                       init.individuals.A=1,
                       init.individuals.B=0,
                       init.structure.A=start.pos,
                       init.structure.B=NA,
                       structure.raster.A=test.raster,
                       structure.raster.B=test.raster,
                       pExit.A=p_Exit_fct,
                       param.pExit.A=NA,
                       timeDep.pExit.A=FALSE,
                       diff.pExit.A=FALSE,
                       pMove.A=p_Move_fct,
                       param.pMove.A=NA,
                       timeDep.pMove.A=FALSE,
                       diff.pMove.A=FALSE,
                       diff.sdMove.A=TRUE,
                       sdMove.A=sdMove_fct,
                       param.sdMove.A=NA,
                       attracted.by.raster.A=TRUE,
                       nContact.A=time_contact,
                       param.nContact.A=NA,
                       timeDep.nContact.A=FALSE,
                       diff.nContact.A=FALSE,
                       pTrans.A=proba,
                       param.pTrans.A=list(p_max=p_max_fct,
                                           t_incub=t_incub_fct),
                       timeDep.pTrans.A=FALSE,
                       diff.pTrans.A=FALSE,
                       prefix.host.A="H",
                       pExit.B=p_Exit_fct,
                       param.pExit.B=NA,
                       timeDep.pExit.B=FALSE,
                       diff.pExit.B=FALSE,
                       pMove.B=p_Move_fct,
                       param.pMove.B=NA,
                       timeDep.pMove.B=FALSE,
                       diff.pMove.B=FALSE,
                       diff.sdMove.B=TRUE,
                       sdMove.B=sdMove_fct,
                       param.sdMove.B=NA,
                       attracted.by.raster.B=TRUE,
                       nContact.B=time_contact,
                       param.nContact.B=NA,
                       timeDep.nContact.B=FALSE,
                       diff.nContact.B=FALSE,
                       pTrans.B=proba,
                       param.pTrans.B=list(p_max=p_max_fct,
                                           t_incub=t_incub_fct),
                       timeDep.pTrans.B=FALSE,
                       diff.pTrans.B=FALSE,
                       prefix.host.B="V")
test.nosoi
# }
# NOT RUN {
# }

Run the code above in your browser using DataLab