Tools to generate and study moment equations for any chemical reaction network using various moment closure approximations
41 Stars
Updated Last
5 Months Ago
Started In
February 2021


Dev Build Status Coverage

MomentClosure.jl is a tool to automatically obtain time-evolution equations of moments up to an arbitrary order for virtually any chemical reaction network or system of stochastic differential equations (SDEs), implementing a wide array of moment closure approximations commonly used in stochastic biochemical kinetics [1]. MomentClosure is (attempted to be) fairly well-integrated within the broader Julia ecosystem utilising a number of familiar packages:

Tutorials and documentation

Please see the documentation for information on using the package, theory behind it and in-depth examples.


  • Chemical reaction networks containing any number of molecular species and reactions with any type of smooth propensity functions are supported. Models can be defined using Catalyst as ModelingToolkit.ReactionSystem. Alternatively, built-in functionality (heavily based on Catalyst) can be used for model initialisation.
  • Added support for reaction networks involving reaction products that are geometrically distributed random variables. An example of such network is an autoregulatory gene network with bursty protein production where the burst size follows a geometric distribution.
  • Equations describing the time evolution of means and central moments of the number of molecules of each species in the system can be generated up to arbitrary order [2, 3]. Note that non-polynomial propensity functions are Taylor expanded to a specified order. Raw moment equations can also be generated for mass-action systems (where all propensity functions are polynomials).
  • SDE systems defined as ModelingToolkit.SDESystem are supported (big thanks to @FHoltorf). Similarly to reaction networks with non-polynomial propensities, non-polynomial drift and diffusion coefficients are Taylor expanded.


If you use MomentClosure in your work, please cite our paper:

    author = {Sukys, Augustinas and Grima, Ramon},
    title = "{MomentClosure.jl: automated moment closure approximations in Julia}",
    journal = {Bioinformatics},
    volume = {38},
    number = {1},
    pages = {289-290},
    year = {2021},
    month = {06},
    issn = {1367-4803},
    doi = {10.1093/bioinformatics/btab469},
    url = {},
    eprint = {},


[1] D. Schnoerr, G. Sanguinetti, and R. Grima, "Approximation and inference methods for stochastic biochemical kinetics - a tutorial review", Journal of Physics A: Mathematical and Theoretical 50, 093001 (2017).

[2]: A. Ale, P. Kirk, and M. P. H. Stumpf, "A general moment expansion method for stochastic kinetic models", The Journal of Chemical Physics 138, 174101 (2013).

[3]: C. H. Lee, "A Moment Closure Method for Stochastic Chemical Reaction Networks with General Kinetics", MATCH Communications in Mathematical and in Computer Chemistry 70, 785-800 (2013).

[4]: D. Schnoerr, G. Sanguinetti, and R. Grima, "Comparison of different moment-closure approximations for stochastic chemical kinetics", The Journal of Chemical Physics 143, 185101 (2015).

[5]: E. Lakatos, A. Ale, P. D. W. Kirk, and M. P. H. Stumpf, "Multivariate moment closure techniques for stochastic kinetic models", The Journal of Chemical Physics 143, 094107 (2015).

[6]: A. Singh and J. P. Hespanha, "Lognormal Moment Closures for Biochemical Reactions", in Proceedings of the 45th IEEE Conference on Decision and Control, ISSN: 0191-2216 (Dec. 2006), pp. 2063-2068.

[7]: M. Soltani, C. A. Vargas-Garcia, and A. Singh, "Conditional Moment Closure Schemes for Studying Stochastic Dynamics of Genetic Circuits", IEEE Transactions on Biomedical Circuits and Systems 9, 518-526 (2015).

[8]: Z. Cao and R. Grima, "Linear mapping approximation of gene regulatory networks with stochastic dynamics", Nature Communications 9, 3305 (2018).