Skip to content

Commit e6c3857

Browse files
committed
Merge branch 'master' into add_nullcline_example
2 parents 8f2aa08 + 732c935 commit e6c3857

File tree

100 files changed

+4973
-1857
lines changed

Some content is hidden

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

100 files changed

+4973
-1857
lines changed

.github/workflows/Test.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ jobs:
3030
- "pre"
3131
group:
3232
- Core
33+
- Hybrid
3334
- IO
3435
- Spatial
3536
- Extensions

HISTORY.md

Lines changed: 113 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,41 @@
11
# Breaking updates and feature summaries across releases
22

33
## Catalyst unreleased (master branch)
4+
5+
## Catalyst 15.0
46
- The Catalyst release process is changing; certain core dependencies of
57
Catalyst will now be capped to ensure Catalyst releases are only installed
68
with versions of dependencies for which Catalyst CI and doc build tests pass
79
(at the time the release is made). If you need a dependency version increased,
810
please open an issue and we can update it and make a new Catalyst release once
911
testing against the newer dependency version is complete.
10-
- It is no longer recommended to install and use the full OrdinaryDiffEq library to access specific ODE solvers.
11-
Instead, only install the specific OrdinaryDiffEq sub-libraries that contain the desired
12-
solver. This significantly reduces installation and package loading times. I.e. to use the default
13-
solver that auto-switches between explicit and implicit methods, install `OrdinaryDiffEqDefault`. To
14-
use `Tsit5` install `OrdinaryDiffEqTsit5`, etc. The possible sub-libraries, each containing different solvers,
15-
can be viewed [here](https://github.com/SciML/OrdinaryDiffEq.jl/tree/master/lib).
16-
- New formula for inferring variables from equations (declared using the `@equations` options) in the DSL. The order of inference of species/variables/parameters is now:
17-
(1) Every symbol explicitly declared using `@species`, `@variables`, and `@parameters` are assigned to the correct category.
18-
(2) Every symbol used as a reaction reactant is inferred as a species.
19-
(3) Every symbol not declared in (1) or (2) that occurs in an expression provided after `@equations` is inferred as a variable.
20-
(4) Every symbol not declared in (1), (2), or (3) that occurs either as a reaction rate or stoichiometric coefficient is inferred to be a parameter.
21-
E.g. in
22-
```julia
23-
@reaction_network begin
24-
@equations V1 + S ~ V2^2
25-
(p + S + V1), S --> 0
26-
end
27-
```
28-
`S` is inferred as a species, `V1` and `V2` as variables, and `p` as a parameter. The previous special cases for the `@observables`, `@compounds`, and `@differentials` options still hold. Finally, the `@require_declaration` options (described in more detail below) can now be used to require everything to be explicitly declared.
29-
- New formula for determining whether the default differentials have been used within an `@equations` option. Now, if any expression `D(...)` is encountered (where `...` can be anything), this is inferred as usage of the default differential D. E.g. in the following equations `D` is inferred as a differential with respect to the default independent variable:
12+
- **BREAKING:** New formula for inferring variables from equations (declared
13+
using the `@equations` options) in the DSL. The order of inference of
14+
species/variables/parameters is now:
15+
1. Every symbol explicitly declared using `@species`, `@variables`, and
16+
`@parameters` are assigned to the correct category.
17+
2. Every symbol used as a reaction reactant is inferred as a species.
18+
3. Every symbol not declared in (1) or (2) that occurs in an expression
19+
provided after `@equations` is inferred as a variable.
20+
4. Every symbol not declared in (1), (2), or (3) that occurs either as a
21+
reaction rate or stoichiometric coefficient is inferred to be a
22+
parameter. E.g. in
23+
```julia
24+
@reaction_network begin
25+
@equations V1 + S ~ V2^2
26+
(p + S + V1), S --> 0
27+
end
28+
```
29+
`S` is inferred as a species, `V1` and `V2` as variables, and `p` as a
30+
parameter. The previous special cases for the `@observables`, `@compounds`,
31+
and `@differentials` options still hold. Finally, the `@require_declaration`
32+
options (described in more detail below) can now be used to require everything
33+
to be explicitly declared.
34+
- **BREAKING:** New formula for determining whether the default differentials
35+
have been used within an `@equations` option. Now, if any expression `D(...)`
36+
is encountered (where `...` can be anything), this is inferred as usage of the
37+
default differential D. E.g. in the following equations `D` is inferred as a
38+
differential with respect to the default independent variable:
3039
```julia
3140
@reaction_network begin
3241
@equations D(V) + V ~ 1
@@ -35,11 +44,13 @@
3544
@equations D(D(V)) ~ 1
3645
end
3746
```
38-
Please note that this cannot be used at the same time as `D` is used to represent a species, variable, or parameter (including if these are implicitly designated as such by e.g. appearing as a reaction reactant).
39-
- Array symbolics support is more consistent with ModelingToolkit v9. Parameter
40-
arrays are no longer scalarized by Catalyst, while species and variables
41-
arrays still are (as in ModelingToolkit). As such, parameter arrays should now
42-
be specified as arrays in value mappings, i.e.
47+
Please note that this cannot be used at the same time as `D` is used to
48+
represent a species, variable, or parameter (including if these are implicitly
49+
designated as such by e.g. appearing as a reaction reactant).
50+
- **BREAKING:** Array symbolics support is more consistent with ModelingToolkit
51+
v9. Parameter arrays are no longer scalarized by Catalyst, while species and
52+
variables arrays still are (as in ModelingToolkit). As such, parameter arrays
53+
should now be specified as arrays in value mappings, i.e.
4354
```julia
4455
@parameters k[1:4]
4556
pmap = [k => rand(4)]
@@ -48,13 +59,86 @@
4859
*not* to do this as it has signifcant performance costs with ModelingToolkit
4960
v9. Note, scalarized parameter arrays passed to the two-argument
5061
`ReactionSystem` constructor may become unscalarized.
62+
- **BREAKING:** We have introduced a restriction on bundling of reactions in the
63+
DSL. Now, bundling is not permitted if multiple rates are provided but only
64+
one set each of substrates/products. E.g. this model:
65+
```julia
66+
@reaction_network begin
67+
(k1,k2), X --> Y
68+
end
69+
```
70+
will now throw an error. The reason that users attempting to write
71+
bi-directional reactions but typing `-->` instead of `<-->` would get a wrong
72+
model. We decided that this kind of bundling was unlikely to be used, and
73+
throwing errors for people who made the typo was more important. If you use
74+
this type of bundling and it indeed is useful to you, please raise and issue
75+
and we will see if we can sort something out.
76+
- **BREAKING:** Catalyst's network visualization capability has shifted from
77+
using Graphviz to [GraphMakie.jl](https://graph.makie.org/stable/). To use
78+
this functionality, load the GraphMakie extension by installing `Catalyst` and
79+
`GraphMakie`, along with a Makie backend like `CairoMakie` or `GLMakie`. There
80+
are two new methods for visualizing graphs: `plot_network` and
81+
`plot_complexes`, which respectively display the species-reaction graph and
82+
complex graph.
83+
```julia
84+
using Catalyst, GraphMakie, GLMakie
85+
brusselator = @reaction_network begin
86+
A, ∅ --> X
87+
1, 2X + Y --> 3X
88+
B, X --> Y
89+
1, X --> ∅
90+
end
91+
plot_network(brusselator)
92+
```
93+
- **BREAKING:** The letter Ø (used in Danish/Norwegian alphabet) is now
94+
considered the same as ∅ (empty set). It can no longer be used as a
95+
species/parameter.
96+
- **BREAKING:** When converting a Catalyst `ReactionSystem` to a ModelingToolkit
97+
system, for example an `ODESystem`, Catalyst defined functions like
98+
`hill(A,B,C,D)` are now replaced with the explicit rational function they
99+
represent in the equations of the generated system. For example `mm(X,v,K)`
100+
will be replaced with `v*X / (X + K)`. This can be disabled by passing the
101+
keyword argument `expand_catalyst_funs = false`. e.g.
102+
```julia
103+
using Catalyst
104+
rn = @reaction_network begin
105+
hill(X,v,K,n), A --> 0
106+
end
107+
osys = convert(ODESystem, rn)
108+
```
109+
generates an ODE system with `D(A) ~ -((v*A(t)*(X^n)) / (K^n + X^n))`, while
110+
```julia
111+
osys = convert(ODESystem, rn; expand_catalyst_funs = false)
112+
```
113+
generates an ODE system with `D(A) ~ -A(t)*hill(X, v, K, n)`. This keyword
114+
argument can also be passed to problems defined over `ReactionSystem`s, i.e.
115+
when calling `ODEProblem(rn, u0, tspan, p; expand_catalyst_funs = false)`.
116+
- It is no longer recommended to install and use the full OrdinaryDiffEq library
117+
to access specific ODE solvers. Instead, only install the specific
118+
OrdinaryDiffEq sub-libraries that contain the desired solver. This
119+
significantly reduces installation and package loading times. I.e. to use the
120+
default solver that auto-switches between explicit and implicit methods,
121+
install `OrdinaryDiffEqDefault`. To use `Tsit5` install `OrdinaryDiffEqTsit5`,
122+
etc. The possible sub-libraries, each containing different solvers, can be
123+
viewed [here](https://github.com/SciML/OrdinaryDiffEq.jl/tree/master/lib).
124+
- It should now be safe to use `remake` on problems which have had conservation
125+
laws removed with the exception of `NonlinearProblem`s or `NonlinearSystem`s.
126+
For NonlinearProblems it is safe to use `remake` if only updating `u0` values,
127+
but it is not safe to update the value of the conserved constant, `Γ`. See
128+
[the FAQ](https://docs.sciml.ai/Catalyst/stable/faqs/#faq_remake_nonlinprob)
129+
for details.
130+
- Functional (e.g. time-dependent) parameters can now be used in Catalyst
131+
models. These can e.g. be used to incorporate arbitrary time-dependent
132+
functions (as a parameter) in a model. For more details on how to use these,
133+
please read:
134+
https://docs.sciml.ai/Catalyst/stable/model_creation/functional_parameters/.
51135
- Scoped species/variables/parameters are now treated similar to the latest MTK
52136
releases ( 9.49).
53-
- The structural identifiability extension is currently disabled due to issues
54-
StructuralIdentifiability has with Julia 1.10.5 and 1.11.
55137
- A tutorial on making interactive plot displays using Makie has been added.
56138
- The BifurcationKit extension has been updated to v.4.
57-
- There is a new DSL option `@require_declaration` that will turn off automatic inferring for species, parameters, and variables in the DSL. For example, the following will now error:
139+
- There is a new DSL option `@require_declaration` that will turn off automatic
140+
inferring for species, parameters, and variables in the DSL. For example, the
141+
following will now error:
58142
```julia
59143
rn = @reaction_network begin
60144
@require_declaration
@@ -70,19 +154,7 @@
70154
(k1, k2), A <--> B
71155
end
72156
```
73-
- Catalyst's network visualization capability has shifted from using Graphviz to [GraphMakie.jl](https://graph.makie.org/stable/). To use this functionality, load the GraphMakie extension by installing `Catalyst` and `GraphMakie`, along with a Makie backend like `GLMakie`. There are two new methods for visualizing graphs: `plot_network` and `plot_complexes`, which respectively display the species-reaction graph and complex graph.
74-
```julia
75-
using Catalyst, GraphMakie, GLMakie
76-
brusselator = @reaction_network begin
77-
A, ∅ --> X
78-
1, 2X + Y --> 3X
79-
B, X --> Y
80-
1, X -->
81-
end
82-
plot_network(brusselator)
83-
```
84-
- The letter Ø (used in Danish/Norwegian alphabet) is now conisdred the same as ∅ (empty set). It can no longer be used as a species/parameter.
85-
157+
86158
## Catalyst 14.4.1
87159
- Support for user-defined functions on the RHS when providing coupled equations
88160
for CRNs using the @equations macro. For example, the following now works:

Project.toml

Lines changed: 16 additions & 13 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.4.1"
3+
version = "15.0.5"
44

55
[deps]
66
Combinatorics = "861a8166-3701-5b0c-9a16-15d98fcdc6aa"
@@ -9,6 +9,7 @@ DiffEqBase = "2b5f629d-d688-5b77-993f-72d75c75574e"
99
DocStringExtensions = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae"
1010
DynamicPolynomials = "7c1d4256-1411-5781-91ec-d7bc3513ac07"
1111
DynamicQuantities = "06fc5a27-2a28-4c7c-a15d-362465fb6821"
12+
EnumX = "4e289a0a-7415-4d19-859d-a7e5c4648b56"
1213
Graphs = "86223c79-3864-5bf0-83f7-82e725a168b6"
1314
JumpProcesses = "ccbc3e58-028d-4f4c-8cd5-9ae44345cda5"
1415
LaTeXStrings = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f"
@@ -34,22 +35,25 @@ GraphMakie = "1ecd5474-83a3-4783-bb4f-06765db800d2"
3435
HomotopyContinuation = "f213a82b-91d6-5c5d-acf7-10f1c761b327"
3536
Makie = "ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a"
3637
NetworkLayout = "46757867-2c16-5918-afeb-47bfcb05e46a"
38+
StructuralIdentifiability = "220ca800-aa68-49bb-acd8-6037fa93a544"
3739

3840
[extensions]
3941
CatalystBifurcationKitExtension = "BifurcationKit"
4042
CatalystCairoMakieExtension = "CairoMakie"
4143
CatalystGraphMakieExtension = ["GraphMakie", "NetworkLayout", "Makie"]
4244
CatalystHomotopyContinuationExtension = "HomotopyContinuation"
45+
CatalystStructuralIdentifiabilityExtension = "StructuralIdentifiability"
4346

4447
[compat]
4548
BifurcationKit = "0.4.4"
4649
CairoMakie = "0.12, 0.13"
4750
Combinatorics = "1.0.2"
4851
DataStructures = "0.18"
49-
DiffEqBase = "6.159.0"
52+
DiffEqBase = "6.165.0"
5053
DocStringExtensions = "0.8, 0.9"
51-
DynamicPolynomials = "0.5, 0.6"
52-
DynamicQuantities = "0.13.2, 1"
54+
DynamicPolynomials = "0.6"
55+
DynamicQuantities = "1"
56+
EnumX = "1"
5357
GraphMakie = "0.5"
5458
Graphs = "1.4"
5559
HomotopyContinuation = "2.9"
@@ -58,20 +62,22 @@ LaTeXStrings = "1.3.0"
5862
Latexify = "0.16.6"
5963
MacroTools = "0.5.5"
6064
Makie = "0.22.1"
61-
ModelingToolkit = "< 9.60"
65+
ModelingToolkit = "9.73"
6266
NetworkLayout = "0.4.7"
6367
Parameters = "0.12"
64-
Reexport = "0.2, 1.0"
68+
Reexport = "1.0"
6569
Requires = "1.0"
6670
RuntimeGeneratedFunctions = "0.5.12"
67-
SciMLBase = "2.57.2"
71+
SciMLBase = "2.77"
6872
Setfield = "1"
69-
SymbolicUtils = "3.8.1"
70-
Symbolics = "6.22"
73+
StructuralIdentifiability = "0.5.11"
74+
SymbolicUtils = "3.20"
75+
Symbolics = "6.31.1"
7176
Unitful = "1.12.4"
7277
julia = "1.10"
7378

7479
[extras]
80+
DataInterpolations = "82cc6244-b520-54b8-b5a6-8a565e85f1d0"
7581
DiffEqCallbacks = "459566f4-90b8-5000-8ac3-15dfb0a30def"
7682
DomainSets = "5b8099bc-c8ec-5219-889f-1d9e522a28bf"
7783
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
@@ -86,15 +92,12 @@ Pkg = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f"
8692
Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80"
8793
Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
8894
SafeTestsets = "1bc83da4-3b8d-516f-aca4-4fe02f6d838f"
89-
SciMLBase = "0bca4576-84f4-4d90-8ffe-ffa030f20462"
90-
SciMLNLSolve = "e9a6253c-8580-4d32-9898-8661bb511710"
9195
StableRNGs = "860ef19b-820b-49d6-a774-d7a799459cd3"
9296
StaticArrays = "90137ffa-7385-5640-81b9-e52037218182"
9397
Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"
9498
SteadyStateDiffEq = "9672c7b4-1e72-59bd-8a11-6ac3964bc41f"
9599
StochasticDiffEq = "789caeaf-c7a9-5a7d-9973-96adeb23e2a0"
96100
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
97-
Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d"
98101

99102
[targets]
100-
test = ["DiffEqCallbacks", "DomainSets", "Logging", "NonlinearSolve", "OrdinaryDiffEqBDF", "OrdinaryDiffEqDefault", "OrdinaryDiffEqRosenbrock", "OrdinaryDiffEqTsit5", "OrdinaryDiffEqVerner", "Pkg", "Plots", "Random", "SafeTestsets", "SciMLBase", "SciMLNLSolve", "StableRNGs", "StaticArrays", "Statistics", "SteadyStateDiffEq", "StochasticDiffEq", "Test", "Unitful"]
103+
test = ["DataInterpolations", "DiffEqCallbacks", "DomainSets", "Logging", "NonlinearSolve", "OrdinaryDiffEqBDF", "OrdinaryDiffEqDefault", "OrdinaryDiffEqRosenbrock", "OrdinaryDiffEqTsit5", "OrdinaryDiffEqVerner", "Pkg", "Plots", "Random", "SafeTestsets", "StableRNGs", "StaticArrays", "Statistics", "SteadyStateDiffEq", "StochasticDiffEq", "Test"]

0 commit comments

Comments
 (0)