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
Copy file name to clipboardExpand all lines: HISTORY.md
+16Lines changed: 16 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -25,6 +25,22 @@
25
25
StructuralIdentifiability has with Julia 1.10.5 and 1.11.
26
26
- A tutorial on making interactive plot displays using Makie has been added.
27
27
- The BifurcationKit extension has been updated to v.4.
28
+
- 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:
29
+
```julia
30
+
rn =@reaction_networkbegin
31
+
@require_declaration
32
+
(k1, k2), A <--> B
33
+
end
34
+
```
35
+
When this flag is set, all symbolics must be explicitly declared.
36
+
```julia
37
+
rn =@reaction_networkbegin
38
+
@speciesA(t) B(t)
39
+
@parameters k1 k2
40
+
@require_declaration
41
+
(k1, k2), A <--> B
42
+
end
43
+
```
28
44
29
45
## Catalyst 14.4.1
30
46
- Support for user-defined functions on the RHS when providing coupled equations
## How can I turn off automatic inferring of species and parameters when using the DSL?
314
+
This option can be set using the `@require_declaration` option inside `@reaction_network`. In this case all the species, parameters, and variables in the system must be pre-declared using one of the `@species`, `@parameters`, or `@variables` macros. For more information about what is inferred automatically and not, please see the section on [`@require_declaration`](@ref dsl_advanced_options_require_dec).
### [Designating constant-valued/fixed species parameters](@id dsl_advanced_options_constant_species)
207
207
208
-
Catalyst enables the designation of parameters as `constantspecies`. These parameters can be used as species in reactions, however, their values are not changed by the reaction and remain constant throughout the simulation (unless changed by e.g. the [occurrence of an event]@ref constraint_equations_events). Practically, this is done by setting the parameter's `isconstantspecies` metadata to `true`. Here, we create a simple reaction where the species `X` is converted to `Xᴾ` at rate `k`. By designating `X` as a constant species parameter, we ensure that its quantity is unchanged by the occurrence of the reaction.
208
+
Catalyst enables the designation of parameters as `constantspecies`. These parameters can be used as species in reactions, however, their values are not changed by the reaction and remain constant throughout the simulation (unless changed by e.g. the [occurrence of an event](@ref constraint_equations_events). Practically, this is done by setting the parameter's `isconstantspecies` metadata to `true`. Here, we create a simple reaction where the species `X` is converted to `Xᴾ` at rate `k`. By designating `X` as a constant species parameter, we ensure that its quantity is unchanged by the occurrence of the reaction.
209
209
```@example dsl_advanced_constant_species
210
210
using Catalyst # hide
211
211
rn = @reaction_network begin
@@ -272,6 +272,39 @@ sol = solve(oprob)
272
272
plot(sol)
273
273
```
274
274
275
+
### [Turning off species, parameter, and variable inferring](@id dsl_advanced_options_require_dec)
276
+
In some cases it may be desirable for Catalyst to not infer species and parameters from the DSL, as in the case of reaction networks with very many variables, or as a sanity check that variable names are written correctly. To turn off inferring, simply add the `@require_declaration` macro to one of the lines of the `@reaction_network` declaration. Having this macro means that every single variable, species, or parameter will have to be explicitly declared using the `@variable`, `@species`, or `@parameter` macro. In the case that the DSL parser encounters an undeclared symbolic, it will error with an `UndeclaredSymbolicError` and print the reaction or equation that the undeclared symbolic was found in.
277
+
278
+
```@example dsl_advanced_no_infer
279
+
using Catalyst
280
+
# The following case will throw an UndeclaredSymbolicError.
281
+
try @macroexpand @reaction_network begin
282
+
@require_declaration
283
+
(k1, k2), A <--> B
284
+
end
285
+
catch e
286
+
println(e.msg)
287
+
end
288
+
```
289
+
In order to avoid an error in this case all the relevant species and parameters will have to be declared.
290
+
```
291
+
# The following case will not error.
292
+
t = default_t()
293
+
rn = @reaction_network begin
294
+
@require_declaration
295
+
@species A(t) B(t)
296
+
@parameters k1 k2
297
+
(k1, k2), A <--> B
298
+
end
299
+
```
300
+
301
+
The following cases in which the DSL would normally infer variables will all throw errors if `@require_declaration` is set and the variables are not explicitly declared.
302
+
- Inferring a species in a reaction, as in the example above
303
+
- Inferring a parameter in a reaction rate expression, as in the reaction line `k*n, A --> B`
304
+
- Inferring a parameter in the stoichiometry of a species, as in the reaction line `k, n*A --> B`
305
+
- Inferring a differential variable on the LHS of a coupled differential equation, as in `A` in `@equations D(A) ~ A^2`
306
+
- Inferring an [observable](@ref dsl_advanced_options_observables) that is declared using `@observables`
0 commit comments