Catalyst.jl is a symbolic modeling package for analysis and high-performance
simulation of chemical reaction networks. Catalyst defines symbolic
ReactionSystem
s,
which can be created programmatically or easily
specified using Catalyst's domain-specific language (DSL). Leveraging
ModelingToolkit.jland
Symbolics.jl,Catalyst enables
large-scale simulations through auto-vectorization and parallelism. Symbolic
ReactionSystem
s can be used to generate ModelingToolkit-based models, allowing
the easy simulation and parameter estimation of mass action ODE models, Chemical
Langevin SDE models, stochastic chemical kinetics jump process models, and more.
Generated models can be used with solvers throughout the broader Julia and
SciMLecosystems, including higher-level SciML packages (e.g.
for sensitivity analysis, parameter estimation, machine learning applications,
etc).
NOTE:Version 14 is a breaking release, prompted by the release of ModelingToolkit.jl version 9. This caused several breaking changes in how Catalyst models are represented and interfaced with.
Breaking changes and new functionality are summarized in theHISTORY.mdfile. Furthermore, a migration guide on how to adapt your workflows to the new v14 update can be foundhere.
The latest tutorials and information on using Catalyst are available in thestable documentation.Thein-development documentationdescribes unreleased features in the current master branch.
An overview of the package, its features, and comparative benchmarking (as of version 13) can also be found in its corresponding research paper,Catalyst: Fast and flexible modeling of reaction networks.
- The Catalyst DSLprovides a simple and readable format for manually specifying reaction network models using chemical reaction notation.
- Catalyst
ReactionSystem
s provides a symbolic representation of reaction networks, built onModelingToolkit.jlandSymbolics.jl. - TheCatalyst.jl APIprovides functionality for building networks programmatically and for composing multiple networks together.
- Leveraging ModelingToolkit, generated models can be converted to symbolic reaction rate equation ODE models, symbolic Chemical Langevin Equation models, and symbolic stochastic chemical kinetics (jump process) models. These can be simulated using anyDifferentialEquations.jlODE/SDE/jump solver,and can be used within
EnsembleProblem
s for carrying outparallelized parameter sweeps and statistical sampling.Plot recipes are available forvisualization of all solutions. - Non-integer (e.g.
Float64
) stoichiometric coefficientsare supportedfor generating ODE models, and symbolic expressions for stoichiometric coefficientsare supportedfor all system types. - Anetwork analysis suitepermits the computation of linkage classes, deficiencies, reversibility, and other network properties.
- Conservation laws can be detected and utilizedto reduce system sizes, and to generate non-singular Jacobians (e.g. during conversion to ODEs, SDEs, and steady state equations).
- Catalyst reaction network models can becoupled with differential and algebraic equations(which are then incorporated during conversion to ODEs, SDEs, and steady state equations).
- Models can becoupled with eventsthat affect the system and its state during simulations.
- By leveraging ModelingToolkit, users have a variety of options for generating optimized system representations to use in solvers. These include construction ofdense or sparse Jacobians,multithreading or parallelization of generated derivative functions,automatic classification of reactions into optimized jump types for Gillespie type simulations,automatic construction of dependency graphs for jump systems,and more.
- Symbolics.jlsymbolic expressions and Julia
Expr
s can be obtained for all rate laws and functions determining the deterministic and stochastic terms within resulting ODE, SDE, or jump models. - Steady states(and theirstabilities) can be computed for model ODE representations.
- OrdinaryDiffEq.jlCan be used to numerically solver generated reaction rate equation ODE models.
- StochasticDiffEq.jlcan be used to numerically solve generated Chemical Langevin Equation SDE models.
- JumpProcesses.jlcan be used to numerically sample generated Stochastic Chemical Kinetics Jump Process models.
- Support forparallelization of all simulations,including parallelization ofODE simulations on GPUsusingDiffEqGPU.jl.
- Latexifycan be used togenerate LaTeX expressionscorresponding to generated mathematical models or the underlying set of reactions.
- Graphvizcan be used to generate andvisualize reaction network graphs(reusing the Graphviz interface created inCatlab.jl).
- Model steady states can becomputed through homotopy continuationusingHomotopyContinuation.jl(which can findallsteady states of systems with multiple ones), byforward ODE simulationsusingSteadyStateDiffEq.jl,or bynumerically solving steady-state nonlinear equationsusingNonlinearSolve.jl.
- BifurcationKit.jlcan be used tocompute bifurcation diagramsof model steady states (including finding periodic orbits).
- DynamicalSystems.jlcan be used to compute modelbasins of attraction,Lyapunov spectrums,and other dynamical system properties.
- StructuralIdentifiability.jlcan be used toperform structural identifiability analysis.
- Optimization.jl,DiffEqParamEstim.jl,andPEtab.jlcan all be used tofit model parameters to data.
- GlobalSensitivity.jlcan be used to performglobal sensitivity analysisof model behaviors.
- SciMLSensitivity.jlcan be used to compute local sensitivities of functions containing forward model simulations.
- Catalyst
ReactionSystem
s can beimported from SBML filesviaSBMLImporter.jlandSBMLToolkit.jl,andfrom BioNetGen.net filesand various stoichiometric matrix network representations usingReactionNetworkImporters.jl. - MomentClosure.jlallows generation of symbolic ModelingToolkit
ODESystem
s that represent moment closure approximations to moments of the Chemical Master Equation, from reaction networks defined in Catalyst. - FiniteStateProjection.jlallows the construction and numerical solution of Chemical Master Equation models from reaction networks defined in Catalyst.
- DelaySSAToolkit.jlcan augment Catalyst reaction network models with delays, and can simulate the resulting stochastic chemical kinetics with delays models.
Here we show a simple example where a model is created using the Catalyst DSL, and then simulated as an ordinary differential equation.
#Fetch required packages.
usingCatalyst, OrdinaryDiffEq, Plots
#Create model.
model=@reaction_networkbegin
kB, S+E-->SE
kD, SE-->S+E
kP, SE-->P+E
end
#Create an ODE that can be simulated.
u0=[:S=>50.0,:E=>10.0,:SE=>0.0,:P=>0.0]
tspan=(0.,200.)
ps=[:kB=>0.01,:kD=>0.1,:kP=>0.1]
ode=ODEProblem(model, u0, tspan, ps)
#Simulate ODE and plot results.
sol=solve(ode)
plot(sol; lw=5)
The same model can be used as input to other types of simulations. E.g. here we instead generate and simulate a stochastic chemical kinetics jump process model for the reaction network. An exact realization of the jump process is sampled using an auto-selected stochastic simulation algorithm (SSA) (which for the small network in the current example ends up being Gillespie's Direct method):
#The initial conditions are now integers as we track exact populations for each species.
usingJumpProcesses
u0_integers=[:S=>50,:E=>10,:SE=>0,:P=>0]
jinput=JumpInputs(model, u0_integers, tspan, ps)
jprob=JumpProblem(jinput)
jump_sol=solve(jprob)
plot(jump_sol; lw=2)
In the above example, we used basic Catalyst workflows to simulate a simple
model. Here we instead show how various Catalyst features can compose to create
a much more advanced model. Our model describes how the volume of a cell (
usingCatalyst
cell_model=@reaction_networkbegin
@parametersVₘ g
@equationsbegin
D(V)~g*Gᴾ
end
@continuous_eventsbegin
[V~Vₘ]=>[V~V/2]
end
kₚ*(sin(t)+1)/V, G-->Gᴾ
kᵢ/V, Gᴾ-->G
end
We now study the system as a Chemical Langevin Dynamics SDE model, which can be generated as follows
u0=[:V=>25.0,:G=>50.0,:Gᴾ=>0.0]
tspan=(0.0,20.0)
ps=[:Vₘ=>50.0,:g=>0.3,:kₚ=>100.0,:kᵢ=>60.0]
sprob=SDEProblem(cell_model, u0, tspan, ps)
This problem encodes the following stochastic differential equation model:
where the
usingStochasticDiffEq, Plots
sol=solve(sprob,EM(); dt=0.05)
plot(sol; xguide="Time (au)",lw=2)
Some features we used here:
- The cell volume wasmodeled as a differential equation, which was coupled to the reaction network model.
- The cell divisions were created byincorporating events into the model.
- We designated a specific numericsolver and corresponding solver options.
- The model simulation wasplotted using Plots.jl.
Catalyst developers are active on theJulia Discourseand theJulia Slackchannels #sciml-bridged and #sciml-sysbio. For bugs or feature requests,open an issue.
The software in this ecosystem was developed as part of academic research. If you would like to help support it, please star the repository as such metrics may help us secure funding in the future. If you use Catalyst as part of your research, teaching, or other activities, we would be grateful if you could cite our work:
@article{CatalystPLOSCompBio2023,
doi = {10.1371/journal.pcbi.1011530},
author = {Loman, Torkel E. AND Ma, Yingbo AND Ilin, Vasily AND Gowda, Shashi AND Korsbo, Niklas AND Yewale, Nikhil AND Rackauckas, Chris AND Isaacson, Samuel A.},
journal = {PLOS Computational Biology},
publisher = {Public Library of Science},
title = {Catalyst: Fast and flexible modeling of reaction networks},
year = {2023},
month = {10},
volume = {19},
url = {https://doi.org/10.1371/journal.pcbi.1011530},
pages = {1-19},
number = {10},
}