ssa.otl {GillespieSSA}R Documentation

Optimized tau-leap method (OTL)

Description

Optimized tau-leap method implementation of the SSA as described by Cao et al. (2006). It is usually called from within ssa, but can be invoked directly.

Usage

ssa.otl(x = stop("missing state vector (x)"),
        a = stop("missing propensity vector (a)"),
       nu = stop("missing state-change matrix (nu)"),
      hor = stop("missing highest order reaction vector (hot)"),
       nc = stop("missing critical reactions threshold parameter (nc)"),
  epsilon = stop("missing error control parameter"),
      dtf = stop("missing direct method threshold factor (dtf)"),
       nd = stop("missing OTL suspension duration parameter (nd)"))

Arguments

x state vector.
a vector of evaluated propensity functions.
nu state-change matrix.
hor highest order reaction vector (one entry per species in x)
nc number of critical reactions threshold parameter.
epsilon error control parameter.
dtf Direct method threshold factor for temporarily suspending the OTL method.
nd number of Direct method steps to perform during an OTL suspension.

Details

Performs one time step using the Explicit tau-leap method. Intended to be invoked by ssa.

Value

A list with three elements, 1) the time leap (tau) and 2) the realized state change vector (nu_j), and 3) a boolean value (suspendedTauLeapMethod) indicating if the simulation should revert to the Direct method for nd time steps.

Note

Third order-reactions (S_1 + S_2 + S_3 —> ...) are not supported currently since they are approximations to sets of coupled first- and second-order reactions). See Cao et al. (2006) for more details.

References

Cao et al. (2006)

See Also

GillespieSSA-package, ssa

Examples

a = function(parms,x){
 b <- parms[1]
 d <- parms[2]
 K <- parms[3]
 N <- x[1]
 return(c(b*N , N*b + (b-d)*N/K))
} 
parms <- c(2,1,1000,500)
x <- 500
nu <- matrix(c(+1, -1),ncol=2)
t <- 0
for (i in seq(100)) {
  out <- ssa.otl(x,a(parms,x),nu,hor=1,nc=10,epsilon=0.03,dtf=10,nd=100)  
  x <- x + out$nu_j
  t <- t + 1
  cat("t:",t,", x:",x,"\n")
}

[Package GillespieSSA version 0.5-3 Index]