Open isaacsas opened 2 years ago
I guess where this would get tricky is something like 2A + B --> C
with A
constant and a rate k
. Should this be rewritten to B --> C
with rate k*A^2/2
or k*A*(A-1)/2
, or something else. This would be dependent on whether the reaction is being interpreted deterministically or stochastically.
Using metadata to tag it as constant would let us keep A
around as a species until model conversion, when we could resolve this, but as I mentioned above would complicate some stuff (like network analysis).
Also need to consider boundary condition species (which do not get ODEs from reactions, but may have constraint equations or events).
Reopening as I realized this won't work beyond ODESystems and NonlinearSystems until if/when events and/or constraints can be supported with SDESystems and/or JumpSystems.
Needed components in MT:
As these are added in MT we can add support for this in Catalyst.
We've had several requests in the past for constant species, and my general advice was if one wanted
A
to be constant don't writeA --> B
but writeA --> A + B
or0 --> B
with ratek*A
. The problem with the first is thatA
is treated as a variable internally. SBML includes an explicit "constant" tag for species, so this is something commonly used in models. Along those lines we couldA
in a DSL reaction as a constant species. The Antimony DSL would have one write$A --> B
to indicate it is constant. If we had something like that in the DSL we could then move it to being a parameter before actually generating the correspondingReaction
.