GillespieSSA for Matlab

[gillespiessa - release 1 - March 8, 2010]

*********************************************************************
********            GillespieSSA     (release 1)             ********
*********************************************************************

March 8, 2010
Tomas Vejchodsky
www.math.cas.cz/vejchod/gillespiessa.html

Implementation of the Gillespie Stochastic Simulation Algorithm for
Matlab. The code performs simulation of the dynamics of a system
of q chemical reactions of Nchs chemical species.
The i-th, i=1,2,...,q, has the form
  c(1,i) A(1) + c(2,i) A(2) + ... + c(Nchs,i) A(Nchs)
  --->
  p(1,i) A(1) + p(2,i) A(2) + ... + p(Nchs,i) A(Nchs)
where
  c(j,i) is the coefficient at the j-th chemical species at the
         reactant side of the i-th reaction
  p(j,i) is the coefficient at the j-th chemical species at the
         product side of the i-th reaction
  A(j) stands for the j-th chemical species, j=1,2,...,Nchs
The dynamics of this reaction is described by the corresponding rate
constant knu(i).

Quick Start
===========
- Unpack the archive  gillespiessa.tar.gz  with source files.
  Keep everything in the same subdirectory (say gillespiessa).
- Run Matlab.
- In Matlab, change current directory to say gillespiessa.
- Run the test computations.
  >> test1
  >> test2
  >> test5   [this test produces two output files]
  >> test5_gssa_anim    [example of the animation]

User's Guide
============
The Gillespie Stochastic Simulation Algorithm (SSA) follows these
steps:
 (a) Generate two randon numbers r1 and r2 uniformly distributed
     in (0,1).
 (b) Compute alpha0 = \sum_{i=1}^q alpha_i(t), where alpha_i(t)
     stands for the propensity function of i-th reaction.
 (c) The next reaction take place at time t+tau, where
     tau = 1/alpha0 * log(1/r1)   (log is the natural logarithm).
 (d) Determine which reaction occurs. Find j such that
     r2 >= 1/alpha0 \sum_{i=1}^{j-1} alpha_i(t)
     r2 <=  1/alpha0 \sum_{i=1}^j     alpha_i(t)
     Update the number of reactants and products of the j-th reaction.
 (e) Go to (a) with t = t + tau


The main function is "gillespiessa.m". This function performs the
stochastic simulation and returns its complete history. It has five
input parameters:
knu ... 1-by-q row vector; rate constants of the chemical reactions;
      knu = k/nu^(order-1), where nu stands for the volume and order
      for the order of the chemical reaction
c ... Nchs-by-q matrix; c(j,i) is the coefficient at the j-th chemical
      species at the reactant side of the i-th reaction
p ... Nchs-by-q matrix; p(j,i) is the coefficient at the j-th chemical
      species at the product side of the i-th reaction
A0 ... Nchs-by-1 column vector; A0(j) is the number of molecules of
      j-th chemical species at the initial time t=0
tfin ... the final time; the simulation stops if it reaches the time
      tfin

Remark: Nchs is determined as size(A0,1) and q as size(knu,2).

There are two outputs of "gillespiessa.m":
A ... Nchs-by-N matrix; A(j,m) is the number of j-molecules in time
      interval [t(m), t(m+1)]. The initial value is A(:,1) == A0(:).
t ... 1-by-N vector; A number of time values in which the number
      of molecules changes.

The function "gillespiessa_anim.m" does the same as "gillespiessa.m",
but it shows in addition a real time animation of the progress of the
simulation.

The function "mkplotdata.m" modifies the output data from
"gillespiessa.m" such that the modified data (plotted by the standard
Matlab commands) correspond to the proper interpretation of the
results of the Gillespie SSA.

For further information see the description directly in the
particular m-files.

Enjoy computations with GilespieSSA!

Last actualization 2010-03-08.
For e-mail see http://www.math.cas.cz/people.html.

TOPlist