Catalyst.jl
Catalyst.jl copied to clipboard
Structured Representation of Hill Functions
Mass action has a special syntax, and then there's an opt-out for general functions. But by far the most common general function is the Hill function, so can this be supported as a structured form?
If there is a special syntax for this, JumpProcesses.jl could also easily specialize on Hill functions to avoid the full function fallback as well, which would improve performance.
One case that came up is that it may need an asymmetric form:
dS/dt = -1*Hill(S,Emax,EC50,n) + …
dP/dt = +1*(Vd_CompS/Vd_CompP)*Hill(S,Emax,EC50,n) + …
Brainstorming, maybe (Emax,EC50,n), S ==> P
. Then (1,Vd_CompS/Vd_CompP,Emax,EC50,n), S || P ==> P
can be setup as the or gate form, and ``(Emax,EC50,n), S && P ==> P` would be and gate?
We could add something like this, but it would require propagating it throughout JumpProcesses as a new jump type, and updating ModelingToolkit JumpSystems too.
Also, in your example I assume you are working in concentration units? Wouldn't such a scaling go away in number units, which is what one should use with jump process representations?