fern.simulation.algorithm
Class CompositionRejection

java.lang.Object
  extended by fern.simulation.Simulator
      extended by fern.simulation.algorithm.GillespieEnhanced
          extended by fern.simulation.algorithm.CompositionRejection

public class CompositionRejection
extends GillespieEnhanced

This is an enhanced version of the original Direct method developed by Gillespie. Just like the algorithm of Gibson and Bruck it uses a dependency graph to know what propensities have to be recalculated. Additionally, the composition and rejection method proposed in Slepoy 2008 is used to determine the next firing reaction.

For references see Daniel T. Gillespie., A General Method for Numerically Simulating the Stochastic Time Evolution of Coupled Chemical Reactions, J.Comp.Phys. 22, 403 (1976) and M.A.Gibson and J.Bruck, Efficient Exact Stochastic Simulation of Chemical Systems with Many Species and Many Channels, J.Phys.Chem.A., Vol 104, no 9, 2000 and Alexander Slepoy Aidan P. Thompson and Steven J. Plimpton, A constant-time kinetic Monte Carlo algorithm for simulation of large biochemical reaction networks, J. Chem. Phys. 128, 205101 (2008); DOI:10.1063/1.2919546

Author:
Florian Erhard
See Also:
GillespieEnhanced, DependencyGraph

Nested Class Summary
 
Nested classes/interfaces inherited from class fern.simulation.Simulator
Simulator.FireType
 
Constructor Summary
CompositionRejection(Network net)
           
 
Method Summary
 String getName()
          Gets the name of the algorithm.
 void initialize()
          Initializes the algorithm: set t=0reset the AmountManagerrecalculate the propensities Gets called at the very beginning of start
 boolean isEfficientlyAdaptSum()
           
 void performStep(SimulationController control)
          Performs one simulation step.
 void reinitialize()
          Reset propensities when a event has been executed.
 
Methods inherited from class fern.simulation.algorithm.GillespieEnhanced
setAmount, setEfficientlyAdaptSum, setVolume
 
Methods inherited from class fern.simulation.Simulator
addObserver, getAmount, getNet, getNextThetaEvent, getPropensity, getPropensityCalculator, getTime, getVolume, isInterpolateTheta, registerNewTheta, setInterpolateTheta, start, start
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

CompositionRejection

public CompositionRejection(Network net)
Method Detail

isEfficientlyAdaptSum

public boolean isEfficientlyAdaptSum()
Overrides:
isEfficientlyAdaptSum in class GillespieEnhanced

initialize

public void initialize()
Description copied from class: Simulator
Initializes the algorithm: Gets called at the very beginning of start

Overrides:
initialize in class GillespieEnhanced

reinitialize

public void reinitialize()
Description copied from class: Simulator
Reset propensities when a event has been executed.

Overrides:
reinitialize in class GillespieEnhanced

performStep

public void performStep(SimulationController control)
Description copied from class: Simulator
Performs one simulation step. Between steps the terminating condition is checked. The simulators controller is passed, if an extending class wants to check it within one step. Implementing algorithms cannot be sure that the propensities are correct at the beginning of a step (e.g. if the volume changed). They should override Simulator.setAmount(int, long) and Simulator.setVolume(double) if they need correct values!

Overrides:
performStep in class GillespieEnhanced
Parameters:
control - the simulators controller

getName

public String getName()
Description copied from class: Simulator
Gets the name of the algorithm.

Overrides:
getName in class GillespieEnhanced
Returns:
name of the algorithm