Table 3 |
|
• Initialize all species and rate constants |
|
• Compute all reaction rates |
|
• Loop: |
|
* Set μ = sum of rates for the discrete reactions |
|
* if (pt = μΔt > ε), use Gillespie algorithm: |
|
* R = a uniform random number in (0,1) |
|
* Set timeStep = -log(R)/μ |
|
* Find which reaction occurred, update the species involved |
|
* else, use small Δt approximation: |
|
* R = a uniform random number in [0,1] |
|
* timeStep = continuousTimeStep |
|
* if (R <pt = μ × timeStep), discrete transition has occurred: |
|
• Determine which discrete transition occurred: |
|
• Find the first value of k for which |
|
• If |
|
* else, no discrete transition: |
|
• No discrete reaction occurs, update is entirely due to continuous reactions (below) |
|
* end if (small Δt method, determination if discrete transition occurred) |
|
* end if (selection of Gillespie or small Δt method for discrete reactions) |
|
* Update the continuous species using the Langevin equation, with step size timeStep (where timeStep is either equal to continuousTimeStep or to the step size found by the Gillespie algorithm), using a semi-implicit numerical method |
|
* Update any rates that have been changed by the continuous reactions and the single discrete reaction |
|
* Break when user-defined total simulation time is reached |
|
• end loop |
|
|
|
Adalsteinsson et al. BMC Bioinformatics 2004 5:24 doi:10.1186/1471-2105-5-24 |