StepCLE: Create a function for advancing the state of an SPN by using...

View source: R/StepCLE.R

StepCLER Documentation

Create a function for advancing the state of an SPN by using a simple Euler-Maruyama integration method for the approximating CLE

Description

This function creates a function for advancing the state of an SPN model using a simple Euler-Maruyama integration method for the approximating chemical Langevin equation (CLE). The resulting function (closure) can be used in conjunction with other functions (such as simTs) for simulating realisations of SPN models.

Usage

StepCLE(N,dt=0.01)

Arguments

N

An R list with named components representing a stochastic Petri net. Should contain N$Pre, a matrix representing the LHS stoichiometries, N$Post, a matrix representing the RHS stoichiometries, and N$h, a function representing the rates of the reaction processes. N$h should have first argument x, a vector representing the current state of the system, and second argument t, a scalar representing the current simulation time (in the typical time-homogeneous case, N$h will ignore this argument). N$h may posses additional arguments, representing reaction rates, for example. N does not need to contain an initial marking, N$M. N$M will be ignored by most functions which use the resulting function closure.

dt

Time step to be used by the Euler-Maruyama integration method. Defaults to 0.01.

Value

An R function which can be used to advance the state of the SPN model N by using an Euler-Maruyama method on the approximating CLE with step size dt. The function closure has interface function(x0,t0,deltat,...), where x0 and t0 represent the initial state and time, and deltat represents the amount of time by which the process should be advanced. The function closure returns a vector representing the simulated state of the system at the new time.

See Also

StepGillespie, StepEulerSPN, StepSDE, simTs, simSample

Examples

# load the LV model
data(spnModels)
# create a stepping function
stepLV = StepCLE(LV)
# step the function
print(stepLV(c(x1=50,x2=100),0,1))
# integrate the process and plot it
out = simTs(c(x1=50,x2=100),0,20,0.1,stepLV)
plot(out)
plot(out,plot.type="single",lty=1:2)

smfsb documentation built on Jan. 13, 2024, 3:02 a.m.