Skip to content

Commit ff6aa63

Browse files
committed
Merge branch 'master' into test_expansion
2 parents 853a969 + 031dc1b commit ff6aa63

File tree

56 files changed

+4335
-2284
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

56 files changed

+4335
-2284
lines changed

HISTORY.md

Lines changed: 168 additions & 107 deletions
Large diffs are not rendered by default.

Project.toml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name = "Catalyst"
22
uuid = "479239e8-5488-4da2-87a7-35f2df7eef83"
3-
version = "14.0.0-DEV"
3+
version = "14.0.1"
44

55
[deps]
66
Combinatorics = "861a8166-3701-5b0c-9a16-15d98fcdc6aa"
@@ -76,6 +76,7 @@ SafeTestsets = "1bc83da4-3b8d-516f-aca4-4fe02f6d838f"
7676
SciMLBase = "0bca4576-84f4-4d90-8ffe-ffa030f20462"
7777
SciMLNLSolve = "e9a6253c-8580-4d32-9898-8661bb511710"
7878
StableRNGs = "860ef19b-820b-49d6-a774-d7a799459cd3"
79+
StaticArrays = "90137ffa-7385-5640-81b9-e52037218182"
7980
Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"
8081
SteadyStateDiffEq = "9672c7b4-1e72-59bd-8a11-6ac3964bc41f"
8182
StochasticDiffEq = "789caeaf-c7a9-5a7d-9973-96adeb23e2a0"
@@ -84,4 +85,4 @@ Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
8485
Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d"
8586

8687
[targets]
87-
test = ["BifurcationKit", "DiffEqCallbacks", "DomainSets", "Graphviz_jll", "HomotopyContinuation", "Logging", "NonlinearSolve", "OrdinaryDiffEq", "Plots", "Random", "SafeTestsets", "SciMLBase", "SciMLNLSolve", "StableRNGs", "Statistics", "SteadyStateDiffEq", "StochasticDiffEq", "StructuralIdentifiability", "Test", "Unitful"]
88+
test = ["BifurcationKit", "DiffEqCallbacks", "DomainSets", "Graphviz_jll", "HomotopyContinuation", "Logging", "NonlinearSolve", "OrdinaryDiffEq", "Plots", "Random", "SafeTestsets", "SciMLBase", "SciMLNLSolve", "StableRNGs", "StaticArrays", "Statistics", "SteadyStateDiffEq", "StochasticDiffEq", "StructuralIdentifiability", "Test", "Unitful"]

README.md

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
# Catalyst.jl
22

3-
[![Stable](https://img.shields.io/badge/docs-stable-blue.svg)](https://docs.sciml.ai/Catalyst/stable/)
4-
[![API Stable](https://img.shields.io/badge/API-stable-blue.svg)](https://docs.sciml.ai/Catalyst/stable/api/catalyst_api/)
5-
[![Dev](https://img.shields.io/badge/docs-dev-blue.svg)](https://docs.sciml.ai/Catalyst/dev/)
6-
[![API Dev](https://img.shields.io/badge/API-dev-blue.svg)](https://docs.sciml.ai/Catalyst/dev/api/catalyst_api/)
7-
[![Join the chat at https://julialang.zulipchat.com #sciml-bridged](https://img.shields.io/static/v1?label=Zulip&message=chat&color=9558b2&labelColor=389826)](https://julialang.zulipchat.com/#narrow/stream/279055-sciml-bridged)
3+
[![Latest Release (for users)](https://img.shields.io/badge/docs-latest_release_(for_users)-blue.svg)](https://docs.sciml.ai/Catalyst/stable/)
4+
[![API Latest Release (for users)](https://img.shields.io/badge/API-latest_release_(for_users)-blue.svg)](https://docs.sciml.ai/Catalyst/stable/api/catalyst_api/)
5+
[![Master (for developers)](https://img.shields.io/badge/docs-master_branch_(for_devs)-blue.svg)](https://docs.sciml.ai/Catalyst/dev/)
6+
[![API Master (for developers](https://img.shields.io/badge/API-master_branch_(for_devs)-blue.svg)](https://docs.sciml.ai/Catalyst/dev/api/catalyst_api/)
7+
<!--[![Join the chat at https://julialang.zulipchat.com #sciml-bridged](https://img.shields.io/static/v1?label=Zulip&message=chat&color=9558b2&labelColor=389826)](https://julialang.zulipchat.com/#narrow/stream/279055-sciml-bridged)-->
88

99
[![Build Status](https://github.com/SciML/Catalyst.jl/workflows/CI/badge.svg)](https://github.com/SciML/Catalyst.jl/actions?query=workflow%3ACI)
1010
[![codecov.io](https://codecov.io/gh/SciML/Catalyst.jl/branch/master/graph/badge.svg)](https://codecov.io/gh/SciML/Catalyst.jl)
@@ -25,8 +25,8 @@ large-scale simulations through auto-vectorization and parallelism. Symbolic
2525
`ReactionSystem`s can be used to generate ModelingToolkit-based models, allowing
2626
the easy simulation and parameter estimation of mass action ODE models, Chemical
2727
Langevin SDE models, stochastic chemical kinetics jump process models, and more.
28-
Generated models can be used with solvers throughout the broader
29-
[SciML](https://sciml.ai) ecosystem, including higher-level SciML packages (e.g.
28+
Generated models can be used with solvers throughout the broader Julia and
29+
[SciML](https://sciml.ai) ecosystems, including higher-level SciML packages (e.g.
3030
for sensitivity analysis, parameter estimation, machine learning applications,
3131
etc).
3232

@@ -43,7 +43,7 @@ documentation](https://docs.sciml.ai/Catalyst/stable/). The [in-development
4343
documentation](https://docs.sciml.ai/Catalyst/dev/) describes unreleased features in
4444
the current master branch.
4545

46-
An overview of the package, its features, and comparative benchmarking (as of version 13) can also
46+
An overview of the package, its features, and comparative benchmarking (as of version 13) can also
4747
be found in its corresponding research paper, [Catalyst: Fast and flexible modeling of reaction networks](https://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1011530).
4848

4949
## Features
@@ -69,9 +69,9 @@ be found in its corresponding research paper, [Catalyst: Fast and flexible model
6969
- Support for [parallelization of all simulations](https://docs.sciml.ai/Catalyst/stable/model_simulation/ode_simulation_performance/#ode_simulation_performance_parallelisation), including parallelization of [ODE simulations on GPUs](https://docs.sciml.ai/Catalyst/stable/model_simulation/ode_simulation_performance/#ode_simulation_performance_parallelisation_GPU) using [DiffEqGPU.jl](https://github.com/SciML/DiffEqGPU.jl).
7070
- [Latexify](https://korsbo.github.io/Latexify.jl/stable/) can be used to [generate LaTeX expressions](https://docs.sciml.ai/Catalyst/stable/model_creation/model_visualisation/#visualisation_latex) corresponding to generated mathematical models or the underlying set of reactions.
7171
- [Graphviz](https://graphviz.org/) can be used to generate and [visualize reaction network graphs](https://docs.sciml.ai/Catalyst/stable/model_creation/model_visualisation/#visualisation_graphs) (reusing the Graphviz interface created in [Catlab.jl](https://algebraicjulia.github.io/Catlab.jl/stable/)).
72-
- Model steady states can be computed through homotopy continuation using [HomotopyContinuation.jl](https://github.com/JuliaHomotopyContinuation/HomotopyContinuation.jl) (which can find *all* steady states of systems with multiple ones), by forward ODE simulations using [SteadyStateDiffEq.jl](https://github.com/SciML/SteadyStateDiffEq.jl), or by numerically solving steady-state nonlinear equations using [NonlinearSolve.jl](https://github.com/SciML/NonlinearSolve.jl).
72+
- Model steady states can be [computed through homotopy continuation](https://docs.sciml.ai/Catalyst/stable/steady_state_functionality/homotopy_continuation/) using [HomotopyContinuation.jl](https://github.com/JuliaHomotopyContinuation/HomotopyContinuation.jl) (which can find *all* steady states of systems with multiple ones), by [forward ODE simulations](https://docs.sciml.ai/Catalyst/stable/steady_state_functionality/nonlinear_solve/#steady_state_solving_simulation) using [SteadyStateDiffEq.jl](https://github.com/SciML/SteadyStateDiffEq.jl), or by [numerically solving steady-state nonlinear equations](https://docs.sciml.ai/Catalyst/stable/steady_state_functionality/nonlinear_solve/#steady_state_solving_nonlinear) using [NonlinearSolve.jl](https://github.com/SciML/NonlinearSolve.jl).
7373
- [BifurcationKit.jl](https://github.com/bifurcationkit/BifurcationKit.jl) can be used to [compute bifurcation diagrams](https://docs.sciml.ai/Catalyst/stable/steady_state_functionality/bifurcation_diagrams/) of model steady states (including finding periodic orbits).
74-
- [DynamicalSystems.jl](https://github.com/JuliaDynamics/DynamicalSystems.jl) can be used to compute model [basins of attraction](https://docs.sciml.ai/Catalyst/stable/steady_state_functionality/dynamical_systems/#dynamical_systems_basins_of_attraction) and [Lyapunov spectrums](https://docs.sciml.ai/Catalyst/stable/steady_state_functionality/dynamical_systems/#dynamical_systems_lyapunov_exponents).
74+
- [DynamicalSystems.jl](https://github.com/JuliaDynamics/DynamicalSystems.jl) can be used to compute model [basins of attraction](https://docs.sciml.ai/Catalyst/stable/steady_state_functionality/dynamical_systems/#dynamical_systems_basins_of_attraction), [Lyapunov spectrums](https://docs.sciml.ai/Catalyst/stable/steady_state_functionality/dynamical_systems/#dynamical_systems_lyapunov_exponents), and other dynamical system properties.
7575
- [StructuralIdentifiability.jl](https://github.com/SciML/StructuralIdentifiability.jl) can be used to [perform structural identifiability analysis](https://docs.sciml.ai/Catalyst/stable/inverse_problems/structural_identifiability/).
7676
- [Optimization.jl](https://github.com/SciML/Optimization.jl), [DiffEqParamEstim.jl](https://github.com/SciML/DiffEqParamEstim.jl), and [PEtab.jl](https://github.com/sebapersson/PEtab.jl) can all be used to [fit model parameters to data](https://sebapersson.github.io/PEtab.jl/stable/Define_in_julia/).
7777
- [GlobalSensitivity.jl](https://github.com/SciML/GlobalSensitivity.jl) can be used to perform [global sensitivity analysis](https://docs.sciml.ai/Catalyst/stable/inverse_problems/global_sensitivity_analysis/) of model behaviors.
@@ -88,7 +88,7 @@ be found in its corresponding research paper, [Catalyst: Fast and flexible model
8888
## Illustrative example
8989

9090
#### Deterministic ODE simulation of Michaelis-Menten enzyme kinetics
91-
Here we show a simple example where a model is created using the Catalyst DSL, and then simulated as
91+
Here we show a simple example where a model is created using the Catalyst DSL, and then simulated as
9292
an ordinary differential equation.
9393

9494
```julia
@@ -129,14 +129,15 @@ plot(jump_sol; lw = 2)
129129
![Jump simulation](docs/src/assets/readme_jump_plot.svg)
130130

131131

132-
## Elaborate example
133-
In the above example, we used basic Catalyst-based workflows to simulate a simple model. Here we
134-
instead show how various Catalyst features can compose to create a much more advanced model. Our
135-
model describes how the volume of a cell ($V$) is affected by a growth factor ($G$). The growth
136-
factor only promotes growth while in its phosphorylated form ($Gᴾ$). The phosphorylation of $G$
137-
($G \to Gᴾ$) is promoted by sunlight (modeled as the cyclic sinusoid $kₐ (sin(t) + 1)$), which
138-
phosphorylates the growth factor (producing $Gᴾ$). When the cell reaches a critical volume ($Vₘ$)
139-
it undergoes cell division. First, we declare our model:
132+
## More elaborate example
133+
In the above example, we used basic Catalyst workflows to simulate a simple
134+
model. Here we instead show how various Catalyst features can compose to create
135+
a much more advanced model. Our model describes how the volume of a cell ($V$)
136+
is affected by a growth factor ($G$). The growth factor only promotes growth
137+
while in its phosphorylated form ($G^P$). The phosphorylation of $G$ ($G \to G^P$)
138+
is promoted by sunlight (modeled as the cyclic sinusoid $k_a (\sin(t) + 1)$),
139+
which phosphorylates the growth factor (producing $G^P$). When the cell reaches a
140+
critical volume ($V_m$) it undergoes cell division. First, we declare our model:
140141
```julia
141142
using Catalyst
142143
cell_model = @reaction_network begin
@@ -151,22 +152,22 @@ cell_model = @reaction_network begin
151152
kᵢ/V, Gᴾ --> G
152153
end
153154
```
154-
We now study the system as a Chemical Langevin Dynamics SDE model, which can be generated as follows
155+
We now study the system as a Chemical Langevin Dynamics SDE model, which can be generated as follows
155156
```julia
156157
u0 = [:V => 25.0, :G => 50.0, :Gᴾ => 0.0]
157158
tspan = (0.0, 20.0)
158159
ps = [:Vₘ => 50.0, :g => 0.3, :kₚ => 100.0, :kᵢ => 60.0]
159160
sprob = SDEProblem(cell_model, u0, tspan, ps)
160161
```
161-
This produces the following equations:
162+
This problem encodes the following stochastic differential equation model:
162163
```math
163164
\begin{align*}
164-
dG(t) &= - \left( \frac{kₚ*(sin(t)+1)}{V(t)} G(t) + \frac{kᵢ}{V(t)} Gᴾ(t) \right) dt - \sqrt{\frac{kₚ*(sin(t)+1)}{V(t)} G(t)} dW_1(t) + \sqrt{\frac{kᵢ}{V(t)} Gᴾ(t)} dW_2(t) \\
165-
dGᴾ(t) &= \left( \frac{kₚ*(sin(t)+1)}{V(t)} G(t) - \frac{kᵢ}{V(t)} Gᴾ(t) \right) dt + \sqrt{\frac{kₚ*(sin(t)+1)}{V(t)} G(t)} dW_1(t) - \sqrt{\frac{kᵢ}{V(t)} Gᴾ(t)} dW_2(t) \\
166-
dV(t) &= \left(g \cdot Gᴾ(t)\right) dt
165+
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) \\
166+
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) \\
167+
dV(t) &= \left(g \, G^P(t)\right) dt
167168
\end{align*}
168169
```
169-
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.
170+
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.
170171
```julia
171172
using StochasticDiffEq, Plots
172173
sol = solve(sprob, EM(); dt = 0.05)
@@ -181,15 +182,14 @@ Some features we used here:
181182
- The model simulation was [plotted using Plots.jl](https://docs.sciml.ai/Catalyst/stable/model_simulation/simulation_plotting/).
182183

183184
## Getting help or getting involved
184-
Catalyst developers are active on the [Julia Discourse](https://discourse.julialang.org/),
185-
the [Julia Slack](https://julialang.slack.com) channels \#sciml-bridged and \#sciml-sysbio, and the
186-
[Julia Zulip sciml-bridged channel](https://julialang.zulipchat.com/#narrow/stream/279055-sciml-bridged).
185+
Catalyst developers are active on the [Julia Discourse](https://discourse.julialang.org/) and
186+
the [Julia Slack](https://julialang.slack.com) channels \#sciml-bridged and \#sciml-sysbio.
187187
For bugs or feature requests, [open an issue](https://github.com/SciML/Catalyst.jl/issues).
188188

189189
## Supporting and citing Catalyst.jl
190-
The software in this ecosystem was developed as part of academic research. If you would like to help
191-
support it, please star the repository as such metrics may help us secure funding in the future. If
192-
you use Catalyst as part of your research, teaching, or other activities, we would be grateful if you
190+
The software in this ecosystem was developed as part of academic research. If you would like to help
191+
support it, please star the repository as such metrics may help us secure funding in the future. If
192+
you use Catalyst as part of your research, teaching, or other activities, we would be grateful if you
193193
could cite our work:
194194
```
195195
@article{CatalystPLOSCompBio2023,
@@ -205,4 +205,4 @@ could cite our work:
205205
pages = {1-19},
206206
number = {10},
207207
}
208-
```
208+
```

docs/Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ ModelingToolkit = "9.16.0"
5555
NonlinearSolve = "3.12"
5656
Optim = "1.9"
5757
Optimization = "3.25"
58-
OptimizationBBO = "0.2.1"
58+
OptimizationBBO = "0.3"
5959
OptimizationNLopt = "0.2.1"
6060
OptimizationOptimJL = "0.3.1"
6161
OptimizationOptimisers = "0.2.1"

docs/pages.jl

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@ pages = Any[
22
"Home" => "index.md",
33
"Introduction to Catalyst" => Any[
44
"introduction_to_catalyst/catalyst_for_new_julia_users.md",
5-
"introduction_to_catalyst/introduction_to_catalyst.md"
5+
"introduction_to_catalyst/introduction_to_catalyst.md",
6+
"introduction_to_catalyst/math_models_intro.md"
67
],
78
"Model Creation and Properties" => Any[
89
"model_creation/dsl_basics.md",
@@ -27,7 +28,8 @@ pages = Any[
2728
"model_simulation/simulation_plotting.md",
2829
"model_simulation/simulation_structure_interfacing.md",
2930
"model_simulation/ensemble_simulations.md",
30-
"model_simulation/ode_simulation_performance.md"
31+
"model_simulation/ode_simulation_performance.md",
32+
"model_simulation/sde_simulation_performance.md"
3133
],
3234
"Steady state analysis" => Any[
3335
"steady_state_functionality/homotopy_continuation.md",

docs/src/api.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ plot(p1, p2, p3; layout = (3,1))
7777

7878
```@docs
7979
@reaction_network
80+
@network_component
8081
make_empty_network
8182
@reaction
8283
Reaction

docs/src/assets/Project.toml

Lines changed: 0 additions & 72 deletions
This file was deleted.

0 commit comments

Comments
 (0)