Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Chemical reaction network and systems biology interface for scientific machine learning (SciML). High performance, GPU-parallelized, and O(1) solvers in open source software.

License

NotificationsYou must be signed in to change notification settings

SciML/Catalyst.jl

Latest Release (for users)API Latest Release (for users)Master (for developers)API Master (for developers

Build Statuscodecov.ioCoverage Status

ColPrac: Contributor's Guide on Collaborative Practices for Community PackagesSciML Code StyleCitation

Catalyst.jl is a symbolic modeling package for analysis and high-performancesimulation of chemical reaction networks. Catalyst defines symbolicReactionSystems,which can be created programmatically or easilyspecified using Catalyst's domain-specific language (DSL). LeveragingModelingToolkit.jl andSymbolics.jl, Catalyst enableslarge-scale simulations through auto-vectorization and parallelism. SymbolicReactionSystems can be used to generate ModelingToolkit-based models, allowingthe easy simulation and parameter estimation of mass action ODE models, ChemicalLangevin SDE models, stochastic chemical kinetics jump process models, and more.Generated models can be used with solvers throughout the broader Julia andSciML ecosystems, including higher-level SciML packages (e.g.for sensitivity analysis, parameter estimation, machine learning applications,etc).

Installation

Catalyst can be installed as follows.

using Pkg# (optional but recommended) create new environment in which to install CatalystPkg.activate("catalyst_environment")# install latest Catalyst releasePkg.add("Catalyst")

Breaking changes and new features

NOTE: Version 15 is a breaking release, though most breaking changes arelikely to only impact libraries being developed on top of Catalyst. Pleasesee theHISTORY.md file for a summary of breaking changes and newfunctionality.

Tutorials and documentation

The latest tutorials and information on using Catalyst are available in thestabledocumentation. Thein-developmentdocumentation describes unreleased features inthe current master branch.

An overview of the package, its features, and comparative benchmarking (as of version 13) can alsobe found in its corresponding research paper,Catalyst: Fast and flexible modeling of reaction networks.

Features

Features of Catalyst

Features of Catalyst composing with other packages

Features of packages built upon Catalyst

Illustrative example

Deterministic ODE simulation of Michaelis-Menten enzyme kinetics

Here we show a simple example where a model is created using the Catalyst DSL, and then simulated asan ordinary differential equation.

# Fetch required packages.using Catalyst, OrdinaryDiffEqDefault, Plots# Create model.model=@reaction_networkbegin    kB, S+ E--> SE    kD, SE--> S+ E    kP, SE--> P+ Eend# 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)

ODE simulation

Stochastic jump simulations

The same model can be used as input to other types of simulations. E.g. here weinstead generate and simulate a stochastic chemical kinetics jump process modelfor the reaction network. An exact realization of the jump process is sampledusing an auto-selected stochastic simulation algorithm (SSA) (which for thesmall 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.using JumpProcessesu0_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)

Jump simulation

More elaborate example

In the above example, we used basic Catalyst workflows to simulate a simplemodel. Here we instead show how various Catalyst features can compose to createa much more advanced model. Our model describes how the volume of a cell ($V$)is affected by a growth factor ($G$). The growth factor only promotes growthwhile in its phosphorylated form ($G^P$). The phosphorylation of$G$ ($G \to G^P$)is promoted by sunlight, which is modeled as the cyclic sinusoid$k_a (\sin(t) + 1)$.When the cell reaches a critical volume ($V_m$) it undergoes cell division. First, wedeclare our model:

using Catalystcell_model=@reaction_networkbegin@parameters Vₘ g@equationsbeginD(V)~ g*Gᴾend@continuous_eventsbegin        [V~ Vₘ]=> [V~ V/2]end    kₚ*(sin(t)+1)/V, G--> Gᴾ    kᵢ/V, Gᴾ--> Gend

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:

$$\begin{align*}dG(t) &= - \left( \frac{k_p(\sin(t)+1)}{V(t)} G(t) + \frac{k_i}{V(t)} G^P(t) \right) dt - \sqrt{\frac{k_p (\sin(t)+1)}{V(t)} G(t)} \, dW_1(t) + \sqrt{\frac{k_i}{V(t)} G^P(t)} \, dW_2(t) \\\dG^P(t) &= \left( \frac{k_p(\sin(t)+1)}{V(t)} G(t) - \frac{k_i}{V(t)} G^P(t) \right) dt + \sqrt{\frac{k_p (\sin(t)+1)}{V(t)} G(t)} \, dW_1(t) - \sqrt{\frac{k_i}{V(t)} G^P(t)} \, dW_2(t) \\\dV(t) &= \left(g \, G^P(t)\right) dt\end{align*}$$

where the$dW_1(t)$ and$dW_2(t)$ terms represent independent Brownian Motions, encoding the noise added by the Chemical Langevin Equation. Finally, we can simulate and plot the results.

using StochasticDiffEq, Plotssol=solve(sprob,EM(); dt=0.05)plot(sol; xguide="Time (au)", lw=2)

Elaborate SDE simulation

Some features we used here:

Getting help or getting involved

Catalyst developers are active on theJulia Discourse andtheJulia Slack channels #sciml-bridged and #sciml-sysbio.For bugs or feature requests,open an issue.

Supporting and citing Catalyst.jl

The software in this ecosystem was developed as part of academic research. If you would like to helpsupport it, please star the repository as such metrics may help us secure funding in the future. Ifyou use Catalyst as part of your research, teaching, or other activities, we would be grateful if youcould 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},}

About

Chemical reaction network and systems biology interface for scientific machine learning (SciML). High performance, GPU-parallelized, and O(1) solvers in open source software.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Sponsor this project

 

Packages

No packages published

Languages


[8]ページ先頭

©2009-2025 Movatter.jp