Sainsbury Laboratory, University of Cambridge, Cambridge, United Kingdom.
Computer Science and AI Laboratory (CSAIL), Massachusetts Institute of Technology, Cambridge, Massachusetts, United States of America.
PLoS Comput Biol. 2023 Oct 18;19(10):e1011530. doi: 10.1371/journal.pcbi.1011530. eCollection 2023 Oct.
We introduce Catalyst.jl, a flexible and feature-filled Julia library for modeling and high-performance simulation of chemical reaction networks (CRNs). Catalyst supports simulating stochastic chemical kinetics (jump process), chemical Langevin equation (stochastic differential equation), and reaction rate equation (ordinary differential equation) representations for CRNs. Through comprehensive benchmarks, we demonstrate that Catalyst simulation runtimes are often one to two orders of magnitude faster than other popular tools. More broadly, Catalyst acts as both a domain-specific language and an intermediate representation for symbolically encoding CRN models as Julia-native objects. This enables a pipeline of symbolically specifying, analyzing, and modifying CRNs; converting Catalyst models to symbolic representations of concrete mathematical models; and generating compiled code for numerical solvers. Leveraging ModelingToolkit.jl and Symbolics.jl, Catalyst models can be analyzed, simplified, and compiled into optimized representations for use in numerical solvers. Finally, we demonstrate Catalyst's broad extensibility and composability by highlighting how it can compose with a variety of Julia libraries, and how existing open-source biological modeling projects have extended its intermediate representation.
我们介绍 Catalyst.jl,这是一个灵活且功能丰富的 Julia 库,用于对化学反应网络(CRN)进行建模和高性能模拟。Catalyst 支持模拟随机化学动力学(跳跃过程)、化学 Langevin 方程(随机微分方程)和反应速率方程(常微分方程)表示的 CRN。通过全面的基准测试,我们证明 Catalyst 的模拟运行时间通常比其他流行工具快一到两个数量级。更广泛地说,Catalyst 既是一种特定于领域的语言,也是一种中间表示,可以将 CRN 模型表示为 Julia 原生对象。这使我们能够对 CRN 进行符号指定、分析和修改;将 Catalyst 模型转换为具体数学模型的符号表示;并生成用于数值求解器的编译代码。利用 ModelingToolkit.jl 和 Symbolics.jl,Catalyst 模型可以进行分析、简化和编译为用于数值求解器的优化表示。最后,我们通过突出展示 Catalyst 如何与各种 Julia 库组合以及现有的开源生物建模项目如何扩展其中间表示来展示其广泛的可扩展性和组合性。