Note for pre-version 5 users: Version 5 is a breaking release, with the DSL
ModelingToolkit.ReactionSystems and DiffEqBiological being
renamed to Catalyst. As such, the
@reaction_network macro no longer allows
the generation of custom types. Please see the updated documentation to
understand changes to the API and functionality. In particular, the earlier
bifurcation functionality has not yet been updated to the new system. If you
rely on this functionality please do not update at this time, or consider using
Catalyst.jl is a domain specific language (DSL) for high performance simulation
and modeling of chemical reaction networks. Catalyst utilizes
ReactionSystems, leveraging ModelingToolkit to enable large-scale simulations
through auto-vectorization and parallelism.
ReactionSystems 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 SciML ecosystem,
including higher level SciML packages (e.g. for sensitivity analysis, parameter
estimation, machine learning applications, etc).
ReactionSystems generated by the DSL can be converted to a variety of
ModelingToolkit.AbstractSystems, including ODE, SDE and jump process representations.
EnsembleProblems for carrying out GPU-parallelized parameter sweeps and statistical sampling. Plot recipes are available for visualizing the solutions.
Exprs can be obtained for all rate laws and functions determining the deterministic and stochastic terms within resulting ODE, SDE or jump models.
rs = @reaction_network begin c1, S + E --> SE c2, SE --> S + E c3, SE --> P + E end c1 c2 c3 p = (0.00166,0.0001,0.1) # [c1,c2,c3] tspan = (0., 100.) u0 = [301., 100., 0., 0.] # [S,E,SE,P] # solve JumpProblem dprob = DiscreteProblem(rs, u0, tspan, p) jprob = JumpProblem(rs, dprob, Direct()) jsol = solve(jprob, SSAStepper()) plot(jsol,lw=2,title="Gillespie: Michaelis-Menten Enzyme Kinetics")
using Catalyst, Plots, StochasticDiffEq, DiffEqJump rs = @reaction_network begin c1, X --> 2X c2, X --> 0 c3, 0 --> X end c1 c2 c3 p = (1.0,2.0,50.) # [c1,c2,c3] tspan = (0.,10.) u0 = [5.] # [X] sprob = SDEProblem(rs, u0, tspan, p) ssol = solve(sprob, LambaEM(), reltol=1e-3) plot(ssol,lw=2,title="Adaptive SDE: Birth-Death Process")
1 day ago