Skip to content

Commit f466eb9

Browse files
committed
merge master
2 parents 0d8dda1 + 56b17a4 commit f466eb9

File tree

98 files changed

+4754
-2124
lines changed

Some content is hidden

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

98 files changed

+4754
-2124
lines changed

HISTORY.md

Lines changed: 122 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,56 @@
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
9-
testing against the newer dependency version is complete.
10-
- 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:
11-
(1) Every symbol explicitly declared using `@species`, `@variables`, and `@parameters` are assigned to the correct category.
12-
(2) Every symbol used as a reaction reactant is inferred as a species.
13-
(3) Every symbol not declared in (1) or (2) that occurs in an expression provided after `@equations` is inferred as a variable.
14-
(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.
15-
E.g. in
16-
```julia
17-
@reaction_network begin
18-
@equations V1 + S ~ V2^2
19-
(p + S + V1), S --> 0
20-
end
21-
```
22-
`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.
23-
- 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:
24-
```julia
25-
@reaction_network begin
26-
@equations D(V) + V ~ 1
27-
end
28-
@reaction_network begin
29-
@equations D(D(V)) ~ 1
30-
end
31-
```
32-
Please note that this cannot be used at the same time as `D` is used to represent a species, variable, or parameter (including is these are implicitly designated as such by e.g. appearing as a reaction reactant).
33-
- Array symbolics support is more consistent with ModelingToolkit v9. Parameter
34-
arrays are no longer scalarized by Catalyst, while species and variables
35-
arrays still are (as in ModelingToolkit). As such, parameter arrays should now
36-
be specified as arrays in value mappings, i.e.
11+
testing against the newer dependency version is complete.
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:
39+
```julia
40+
@reaction_network begin
41+
@equations D(V) + V ~ 1
42+
end
43+
@reaction_network begin
44+
@equations D(D(V)) ~ 1
45+
end
46+
```
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.
3754
```julia
3855
@parameters k[1:4]
3956
pmap = [k => rand(4)]
@@ -42,13 +59,86 @@ Please note that this cannot be used at the same time as `D` is used to represen
4259
*not* to do this as it has signifcant performance costs with ModelingToolkit
4360
v9. Note, scalarized parameter arrays passed to the two-argument
4461
`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/.
45135
- Scoped species/variables/parameters are now treated similar to the latest MTK
46136
releases ( 9.49).
47-
- The structural identifiability extension is currently disabled due to issues
48-
StructuralIdentifiability has with Julia 1.10.5 and 1.11.
49137
- A tutorial on making interactive plot displays using Makie has been added.
50138
- The BifurcationKit extension has been updated to v.4.
51-
- 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:
52142
```julia
53143
rn = @reaction_network begin
54144
@require_declaration
@@ -64,18 +154,7 @@ Please note that this cannot be used at the same time as `D` is used to represen
64154
(k1, k2), A <--> B
65155
end
66156
```
67-
- 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.
68-
```julia
69-
using Catalyst, GraphMakie, GLMakie
70-
brusselator = @reaction_network begin
71-
A, ∅ --> X
72-
1, 2X + Y --> 3X
73-
B, X --> Y
74-
1, X -->
75-
end
76-
plot_network(brusselator)
77-
```
78-
157+
79158
## Catalyst 14.4.1
80159
- Support for user-defined functions on the RHS when providing coupled equations
81160
for CRNs using the @equations macro. For example, the following now works:

Project.toml

Lines changed: 16 additions & 12 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.0"
44

55
[deps]
66
Combinatorics = "861a8166-3701-5b0c-9a16-15d98fcdc6aa"
@@ -33,20 +33,24 @@ BifurcationKit = "0f109fa4-8a5d-4b75-95aa-f515264e7665"
3333
CairoMakie = "13f3f980-e62b-5c42-98c6-ff1f3baf88f0"
3434
GraphMakie = "1ecd5474-83a3-4783-bb4f-06765db800d2"
3535
HomotopyContinuation = "f213a82b-91d6-5c5d-acf7-10f1c761b327"
36+
Makie = "ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a"
3637
NetworkLayout = "46757867-2c16-5918-afeb-47bfcb05e46a"
38+
StructuralIdentifiability = "220ca800-aa68-49bb-acd8-6037fa93a544"
39+
3740

3841
[extensions]
3942
CatalystBifurcationKitExtension = "BifurcationKit"
4043
CatalystCairoMakieExtension = "CairoMakie"
41-
CatalystGraphMakieExtension = ["GraphMakie", "NetworkLayout"]
44+
CatalystGraphMakieExtension = ["GraphMakie", "NetworkLayout", "Makie"]
4245
CatalystHomotopyContinuationExtension = "HomotopyContinuation"
46+
CatalystStructuralIdentifiabilityExtension = "StructuralIdentifiability"
4347

4448
[compat]
4549
BifurcationKit = "0.4.4"
4650
CairoMakie = "0.12, 0.13"
4751
Combinatorics = "1.0.2"
4852
DataStructures = "0.18"
49-
DiffEqBase = "6.159.0"
53+
DiffEqBase = "6.165.0"
5054
DocStringExtensions = "0.8, 0.9"
5155
DynamicPolynomials = "0.6"
5256
DynamicQuantities = "1"
@@ -55,22 +59,25 @@ Graphs = "1.4"
5559
HomotopyContinuation = "2.9"
5660
JumpProcesses = "9.13.2"
5761
LaTeXStrings = "1.3.0"
58-
Latexify = "0.16.5"
62+
Latexify = "0.16.6"
5963
MacroTools = "0.5.5"
60-
ModelingToolkit = "< 9.60"
64+
Makie = "0.22.1"
65+
ModelingToolkit = "9.69"
6166
NetworkLayout = "0.4.7"
6267
Parameters = "0.12"
6368
Reexport = "1.0"
6469
Requires = "1.0"
6570
RuntimeGeneratedFunctions = "0.5.12"
66-
SciMLBase = "2.57.2"
71+
SciMLBase = "2.77"
6772
Setfield = "1"
68-
SymbolicUtils = "3.8.1"
69-
Symbolics = "6.22"
73+
StructuralIdentifiability = "0.5.11"
74+
SymbolicUtils = "3.20"
75+
Symbolics = "6.31.1"
7076
Unitful = "1.12.4"
7177
julia = "1.10"
7278

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

98102
[targets]
99-
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)