Stochastic chemical network and reaction-diffusion library
Here you can download the C++ source code of the partial-propensity stochastic simulation algorithms library (pSSAlib) to simulate chemical reaction-diffusion networks. These methods are exact stochastic simulation algorithms that sample from the exact solution of the chemical master equation. The computational cost of partial-propensity methods is significantly lower than that of standard SSA algorithms.
pSSAlib library implements the complete family of partial-propensity methods. The library directly reads SBML (Systems Biology Markup Language) files specifying the reaction networks to be simulated and produces results that can be visualized with Paraview, or any other VTK reader. Tutorials and examples are available inside the package and online. pSSAlib provides the following implementations: partial-propensity direct method (PDM), sorting partial-propensity direct method (SPDM), partial-propensity SSA with composition-rejection sampling (PSSA-CR), delay partial-propensity direct method (dPDM), partial-propensity stochastic reaction-diffusion solver (PSRD) in both 2D and 3D.
The first implementation of pSSAlib was done by Oleksandr Ostrenko during his internship at the MOSAIC Group. Spatial reaction-diffusion support was added by Bram Thijssen during his lab rotation at MOSAIC. The code has been further developed and is currently maintained by MOSAIC's software engineer Pietro Incardona.
- PDM is recommended for strongly coupled chemical reaction networks (see publication below for a definition of "strongly coupled").
- SPDM is recommended for multi-scale reaction networks.
- PSSA-CR is recommended for weakly coupled reaction networks.
- dPDM is recommended for reactions with time delays.
- PSRD is recommended for spatiotemporal reaction-diffusion systems.
The source code, tutorial, API, and developer manual are available here:
The following publications describe the method implemented here. Please cite them whenever you use the corresponding method or the software provided here.
This article introduces the general concept of partial propensities and presents PDM and SPDM:
R. Ramaswamy, N. González-Segredo, and I. F. Sbalzarini. A new class of highly efficient exact stochastic simulation algorithms for chemical reaction networks. J. Chem. Phys., 130(24):244104, 2009. (PDF)
Important notice: Unfortunately there has been a typo in Table 1 of the published paper. Please see the Notes and Corrections for a corrected version of the algorithm.
This article combines partial propensities with composition-rejection sampling in order to further reduce the computational cost on weakly coupled networks and introduces PSSA-CR:
R. Ramaswamy and I. F. Sbalzarini. A partial-propensity variant of the composition-rejection stochastic simulation algorithm for chemical reaction networks. J. Chem. Phys., 132(4):044102, 2010. (PDF)
This article extends partial-propensity methods to reaction networks with delays and introduces dPDM:
R. Ramaswamy and I. F. Sbalzarini. A partial-propensity formulation of the stochastic simulation algorithm for chemical reaction networks with delays. J. Chem. Phys., 134(1):014106, 2011. (PDF)
This article presents the PSRD partial-propensity method for stochastic reaction-diffusion simulation in 2D and 3D:
R. Ramaswamy and I. F. Sbalzarini. Exact on-lattice stochastic reaction-diffusion simulations using partial-propensity methods. J. Chem. Phys., 135:244103, 2011. (PDF)
This article gives an overview of the entire family of partial-propensity SSAs and shows how they are modularly composed from different building blocks:
R. Ramaswamy and I. F. Sbalzarini. Fast exact stochastic simulation algorithms using partial propensities. In Proc. ICNAAM, Numerical Analysis and Applied Mathematics, International Conference, pages 1338–1341, Rhodes, Greece. AIP, 2010. (PDF)
For completeness and reproducibility, please find below the source codes of the original simulation programs used for preparing the above publications. These original prototype implementation were written by Rajesh Ramaswamy during his PhD at the MOSAIC Group. pSSAlib is a further development of the below codes. The codes below are not actively maintained or supported any more. Please use the pSSAlib library instead.
In order to ensure financial support for our project and allow further development of this software, please cite above publications in all your documents and manuscripts that made use of this software. Thanks a lot!
IN NO EVENT SHALL THE MOSAIC GROUP BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE MOSAIC GROUP HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE MOSAIC GROUP SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE MOSAIC GROUP HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.