Catalyst.jl icon indicating copy to clipboard operation
Catalyst.jl copied to clipboard

[v14 ready] New stability computation

Open TorkelE opened this issue 2 years ago • 1 comments

New version of: https://github.com/SciML/Catalyst.jl/pull/730 (rebasing was a mess)

Enables computation of stability of steady states. Conservation laws should be accounted for.

Simple example:

using Catalyst
import HomotopyContinuation

rs = @reaction_network begin
    (v/10.0 + hill(X, v, K, n), d), 0 <--> X
end
p = [:v => 2.0, :K => 1.0, :n => 3, :d => 1.0]
steady_states = hc_steady_states(rs, p)

steady_state_stability(steady_states[1], rs, p) # true
steady_state_stability(steady_states[2], rs, p) # false
steady_state_stability(steady_states[3], rs, p) # true

steady_state_stability(steady_states, rs, p) # [1, 0, 1]

ss_jac = steady_state_jac(rs) # [1, 0, 1]
steady_state_stability(steady_states, rs, p; ss_jac=ss_jac) # [1, 0, 1]

Also add a function is_autnomous that checks whether a system is autonomous. Add this as an error check when creating BifurcationProblems, NonlinearSystems, and computing steady states using hc_steady_states.

TorkelE avatar Dec 04 '23 16:12 TorkelE

Remove autonomy check for NonlinearSystems for now, however, it is probably something we will have to think about at some point (at least the user will get an error quite soon right now anyway).

TorkelE avatar Feb 02 '24 19:02 TorkelE