You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
# Breaking updates and feature summaries across releases
2
2
3
3
## Catalyst unreleased (master branch)
4
+
5
+
## Catalyst 15.0
4
6
- The Catalyst release process is changing; certain core dependencies of
5
7
Catalyst will now be capped to ensure Catalyst releases are only installed
6
8
with versions of dependencies for which Catalyst CI and doc build tests pass
7
9
(at the time the release is made). If you need a dependency version increased,
8
10
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_networkbegin
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_networkbegin
26
-
@equationsD(V) + V ~1
27
-
end
28
-
@reaction_networkbegin
29
-
@equationsD(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_networkbegin
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.
37
54
```julia
38
55
@parameters k[1:4]
39
56
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
42
59
*not* to do this as it has signifcant performance costs with ModelingToolkit
43
60
v9. Note, scalarized parameter arrays passed to the two-argument
44
61
`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
- Scoped species/variables/parameters are now treated similar to the latest MTK
46
136
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.
49
137
- A tutorial on making interactive plot displays using Makie has been added.
50
138
- 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:
52
142
```julia
53
143
rn = @reaction_network begin
54
144
@require_declaration
@@ -64,18 +154,7 @@ Please note that this cannot be used at the same time as `D` is used to represen
64
154
(k1, k2), A <--> B
65
155
end
66
156
```
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_networkbegin
71
-
A, ∅ --> X
72
-
1, 2X + Y -->3X
73
-
B, X --> Y
74
-
1, X --> ∅
75
-
end
76
-
plot_network(brusselator)
77
-
```
78
-
157
+
79
158
## Catalyst 14.4.1
80
159
- Support for user-defined functions on the RHS when providing coupled equations
81
160
for CRNs using the @equationsmacro. For example, the following now works:
0 commit comments