|
1 | 1 | # Breaking updates and feature summaries across releases
|
2 | 2 |
|
3 | 3 | ## Catalyst unreleased (master branch)
|
| 4 | +- The Catalyst release process is changing; certain core dependencies of |
| 5 | + Catalyst will now be capped to ensure Catalyst releases are only installed |
| 6 | + with versions of dependencies for which Catalyst CI and doc build tests pass |
| 7 | + (at the time the release is made). If you need a dependency version increased, |
| 8 | + 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 | +- Array symbolics support is more consistent with ModelingToolkit v9. Parameter |
| 11 | + arrays are no longer scalarized by Catalyst, while species and variables |
| 12 | + arrays still are (as in ModelingToolkit). As such, parameter arrays should now |
| 13 | + be specified as arrays in value mappings, i.e. |
| 14 | + ```julia |
| 15 | + @parameters k[1:4] |
| 16 | + pmap = [k => rand(4)] |
| 17 | + ``` |
| 18 | + While one can still manually scalarize a parameter array, it is recommended |
| 19 | + *not* to do this as it has signifcant performance costs with ModelingToolkit |
| 20 | + v9. Note, scalarized parameter arrays passed to the two-argument |
| 21 | + `ReactionSystem` constructor may become unscalarized. |
| 22 | +- Scoped species/variables/parameters are now treated similar to the latest MTK |
| 23 | + releases (≥ 9.49). |
| 24 | +- The structural identifiability extension is currently disabled due to issues |
| 25 | + StructuralIdentifiability has with Julia 1.10.5 and 1.11. |
| 26 | +- A tutorial on making interactive plot displays using Makie has been added. |
| 27 | +- The BifurcationKit extension has been updated to v.4. |
| 28 | + |
| 29 | +## Catalyst 14.4.1 |
| 30 | +- Support for user-defined functions on the RHS when providing coupled equations |
| 31 | + for CRNs using the @equations macro. For example, the following now works: |
| 32 | + ```julia |
| 33 | + using Catalyst |
| 34 | + f(A, t) = 2*A*t |
| 35 | + rn = @reaction_network begin |
| 36 | + @equations D(A) ~ f(A,t) |
| 37 | + end |
| 38 | + ``` |
| 39 | + Note that user-defined functions will not work on the LHS of equations. |
| 40 | + |
| 41 | +## Catalyst 14.4 |
| 42 | +- Symbolics 6 support. |
| 43 | + |
| 44 | + |
| 45 | + |
| 46 | +## Catalyst 14.3 |
| 47 | +- Support for simulating stochastic chemical kinetics models with explicitly |
| 48 | + time-dependent propensities (i.e. where the resulting `JumpSystem` contains |
| 49 | + `VariableRateJump`s). As such `JumpProblem`s need to be defined over |
| 50 | + `ODEProblem`s or `SDEProblem`s instead of `DiscreteProblem`s we have |
| 51 | + introduced a new input struct, `JumpInputs`, that handles selecting via |
| 52 | + analysis of the generated `JumpSystem`, i.e. one can now say |
| 53 | + ```julia |
| 54 | + using Catalyst, OrdinaryDiffEq, JumpProcesses, Plots |
| 55 | + rn = @reaction_network begin |
| 56 | + k*(1 + sin(t)), 0 --> A |
| 57 | + end |
| 58 | + jinput = JumpInputs(rn, [:A => 0], (0.0, 10.0), [:k => .5]) |
| 59 | + # note that jinput.prob isa ODEProblem |
| 60 | + jprob = JumpProblem(jinput) |
| 61 | + sol = solve(jprob, Tsit5()) |
| 62 | + plot(sol, idxs = :A) |
4 | 63 |
|
| 64 | + rn = @reaction_network begin |
| 65 | + k, 0 --> A |
| 66 | + end |
| 67 | + jinput = JumpInputs(rn, [:A => 0], (0.0, 10.0), [:k => .5]) |
| 68 | + # note that jinput.prob isa DiscreteProblem |
| 69 | + jprob = JumpProblem(jinput) |
| 70 | + sol = solve(jprob) |
| 71 | + plot(sol, idxs = :A) |
| 72 | + ``` |
| 73 | + When calling solve for problems with explicit time-dependent propensities, |
| 74 | + i.e. where `jinput.prob isa ODEProblem`, note that one must currently |
| 75 | + explicitly select an ODE solver to handle time-stepping and integrating the |
| 76 | + time-dependent propensities. |
| 77 | +- Note that solutions to jump problems with explicit time-dependent |
| 78 | + propensities, i.e. a `JumpProblem` over an `ODEProblem`, require manual |
| 79 | + selection of the variables to plot. That is, currently `plot(sol)` will error |
| 80 | + in this case due to limitations in the SciMLBase plot recipe. |
| 81 | + |
| 82 | +## Catalyst 14.2 |
| 83 | +- Support for auto-algorithm selection in `JumpProblem`s. For systems with only |
| 84 | + propensities that do not have an explicit time-dependence (i.e. that are not |
| 85 | + `VariableRateJump`s in JumpProcesses), one can now run model simulations via |
| 86 | + ```julia |
| 87 | + using Catalyst, JumpProcesses |
| 88 | + model = @reaction_network begin |
| 89 | + kB, S + E --> SE |
| 90 | + kD, SE --> S + E |
| 91 | + kP, SE --> P + E |
| 92 | + end |
| 93 | + u0 = [:S => 50, :E => 10, :SE => 0, :P => 0] |
| 94 | + tspan = (0., 200.) |
| 95 | + ps = [:kB => 0.01, :kD => 0.1, :kP => 0.1] |
| 96 | + dprob = DiscreteProblem(model, u0, tspan, ps) |
| 97 | + jprob = JumpProblem(model, dprob) |
| 98 | + sol = solve(jprob) |
| 99 | + ``` |
| 100 | + For small systems this will just use Gillespie's `Direct` method, transitioning to using `RSSA` and `RSSACR` as system size increase. Once can still manually select a given SSA, but no longer needs to specify `SSAStepper` when calling `solve`, i.e. |
| 101 | + ```julia |
| 102 | + # use the SortingDirect method instead |
| 103 | + jprob = JumpProblem(model, dprob, SortingDirect()) |
| 104 | + sol = solve(jprob) |
| 105 | + ``` |
| 106 | +- Latexify recipe improvements including display fixes for array symbolics. |
| 107 | +- Deficiency one and concentration robustness checks. |
5 | 108 |
|
6 | 109 | ## Catalyst 14.1.1
|
7 |
| -The expansion of `ReactionSystem` models to spatial lattices has been enabled. Here follows a |
| 110 | +The expansion of `ReactionSystem` models to spatial lattices has been enabled. Here follows a |
8 | 111 | simple example where a Brusselator model is expanded to a 20x20 grid of compartments, with diffusion
|
9 | 112 | for species X, and then simulated using ODEs. Finally, an animation of the simulation is created.
|
10 | 113 | ```julia
|
@@ -35,8 +138,8 @@ The addition of spatial modelling in Catalyst contains a large number of new fea
|
35 | 138 | described in the [corresponding documentation](https://docs.sciml.ai/Catalyst/stable/spatial_modelling/lattice_reaction_systems/).
|
36 | 139 |
|
37 | 140 | ## Catalyst 14.0.1
|
38 |
| -Bug fix to address that independent variables, like time, should now be `@parameters` |
39 |
| -according to MTKv9. Converted internal time variables to consistently use `default_t()` |
| 141 | +Bug fix to address that independent variables, like time, should now be `@parameters` |
| 142 | +according to MTKv9. Converted internal time variables to consistently use `default_t()` |
40 | 143 | to hopefully avoid such issues going forward.
|
41 | 144 |
|
42 | 145 | ## Catalyst 14.0
|
|
0 commit comments