Finding Steady states

Contents

Finding Steady states#

Searching steady states in RTG model rtgMTK using find_steady_states() in RetroSignalModel.jl module.

using RetroSignalModel
using ModelingToolkit
paramsets = load_parameters("solution_rtgM4.csv")
294-element Vector{Dict{Num, Real}}:
 Dict(k2I => 4.947912368, k2M => 1604.150283, kn2M => 0.042542555, k13ID => 25.1353459, kn13_c => 220.9151423, k1out => 5967.990312, k3outI => 0.123308493, knBM => 2.412620893, kn13_n => 0.595848762, k3inI => 0.037957422…)
 Dict(k2I => 4.947912368, k2M => 1604.150283, kn2M => 0.042542555, k13ID => 25.1353459, kn13_c => 220.9151423, k1out => 5967.990312, k3outI => 0.123308493, knBM => 2.412620893, kn13_n => 0.595848762, k3inI => 0.037957422…)
 Dict(k2I => 0.079918201, k2M => 3536.520938, kn2M => 0.051692649, k13ID => 1089.874983, kn13_c => 283.3309843, k1out => 1.094658408, k3outI => 284.2623728, knBM => 176.0981546, kn13_n => 35.22621262, k3inI => 0.524908227…)
 Dict(k2I => 0.026595458, k2M => 8.632839458, kn2M => 0.175586325, k13ID => 0.027794041, kn13_c => 67.17413824, k1out => 1351.592282, k3outI => 3.4955471, knBM => 7959.439873, kn13_n => 0.031057969, k3inI => 0.023745964…)
 Dict(k2I => 0.141257236, k2M => 391.1488665, kn2M => 0.016170859, k13ID => 0.016691568, kn13_c => 4405.068044, k1out => 238.8216558, k3outI => 132.7357204, knBM => 96.81958071, kn13_n => 1269.963738, k3inI => 0.277018895…)
 Dict(k2I => 0.029718546, k2M => 884.433567, kn2M => 5.022392745, k13ID => 122.517806, kn13_c => 428.1327797, k1out => 13.18098427, k3outI => 59.23950563, knBM => 7192.410754, kn13_n => 1.370945404, k3inI => 5.883332464…)
 Dict(k2I => 60.65465819, k2M => 5.25966468, kn2M => 0.43438862, k13ID => 50.00640728, kn13_c => 4413.177514, k1out => 2.440598232, k3outI => 2.17280625, knBM => 278.0674462, kn13_n => 0.123073776, k3inI => 0.010395965…)
 Dict(k2I => 0.233290878, k2M => 946.988882, kn2M => 0.071235526, k13ID => 31.77958758, kn13_c => 3998.302465, k1out => 2634.221334, k3outI => 1015.338625, knBM => 1085.245724, kn13_n => 1.188595202, k3inI => 125.3169213…)
 Dict(k2I => 2.251167256, k2M => 334.3592763, kn2M => 0.040325037, k13ID => 797.4290214, kn13_c => 95.59055661, k1out => 1.442478568, k3outI => 93.09095486, knBM => 0.214891735, kn13_n => 0.160565201, k3inI => 2.298122829…)
 Dict(k2I => 27.18886063, k2M => 1256.350468, kn2M => 31.67299546, k13ID => 2774.411861, kn13_c => 724.3251961, k1out => 50.71115388, k3outI => 4861.133838, knBM => 5.962908877, kn13_n => 2.70507947, k3inI => 0.035388626…)
 Dict(k2I => 0.034928658, k2M => 5779.226662, kn2M => 0.014594357, k13ID => 12.1918231, kn13_c => 166.5919322, k1out => 16.62403969, k3outI => 47.98142988, knBM => 22.73073841, kn13_n => 0.984178964, k3inI => 7.909322472…)
 Dict(k2I => 504.0142442, k2M => 26.01596398, kn2M => 6.462989584, k13ID => 260.4823122, kn13_c => 4261.181351, k1out => 962.1408682, k3outI => 52.99570132, knBM => 1612.104855, kn13_n => 10.38962969, k3inI => 5.206711882…)
 Dict(k2I => 1.462217267, k2M => 3526.018423, kn2M => 240.2010477, k13ID => 58.4249983, kn13_c => 17.05960613, k1out => 1652.490999, k3outI => 60.05693513, knBM => 3600.811137, kn13_n => 0.13983356, k3inI => 53.27530918…)
 ⋮
 Dict(k2I => 153.9971742, k2M => 977.8056755, kn2M => 0.260287245, k13ID => 270.694273, kn13_c => 700.2863659, k1out => 38.2637966, k3outI => 1.1169849, knBM => 62.03965596, kn13_n => 1.468144611, k3inI => 0.068492964…)
 Dict(k2I => 58.48526399, k2M => 8.433033225, kn2M => 0.719815452, k13ID => 330.7909187, kn13_c => 1038.778202, k1out => 693.1857819, k3outI => 29.23255671, knBM => 2744.558593, kn13_n => 0.08741809, k3inI => 0.22802634…)
 Dict(k2I => 21.21325123, k2M => 0.285636389, kn2M => 0.629019761, k13ID => 157.6659015, kn13_c => 1276.792121, k1out => 9.241961973, k3outI => 0.021730763, knBM => 936.2859017, kn13_n => 1.513968727, k3inI => 0.014064121…)
 Dict(k2I => 1.619371817, k2M => 2861.041619, kn2M => 0.443696815, k13ID => 74.11304582, kn13_c => 100.9993306, k1out => 58.56958956, k3outI => 0.461638945, knBM => 698.0854459, kn13_n => 6.58227391, k3inI => 0.345011724…)
 Dict(k2I => 1584.573735, k2M => 3745.087092, kn2M => 0.123946301, k13ID => 52.4852966, kn13_c => 291.6043731, k1out => 70.11081481, k3outI => 13.55986611, knBM => 75.85600297, kn13_n => 0.203983955, k3inI => 0.016916634…)
 Dict(k2I => 2.583399109, k2M => 6926.430771, kn2M => 0.018479883, k13ID => 15.10580802, kn13_c => 301.3612826, k1out => 3122.10801, k3outI => 2.733756588, knBM => 11.31351407, kn13_n => 0.505257682, k3inI => 0.013518928…)
 Dict(k2I => 0.690260797, k2M => 352.5097878, kn2M => 0.016235965, k13ID => 0.223704693, kn13_c => 8751.501552, k1out => 43.64821989, k3outI => 9435.028567, knBM => 25.95825868, kn13_n => 0.021004692, k3inI => 6141.392773…)
 Dict(k2I => 15.79784182, k2M => 337.4950589, kn2M => 0.010821092, k13ID => 0.246808435, kn13_c => 8679.359754, k1out => 116.070289, k3outI => 8273.921397, knBM => 140.38311, kn13_n => 0.270217977, k3inI => 9.784399252…)
 Dict(k2I => 48.77862217, k2M => 1.036637452, kn2M => 0.02706056, k13ID => 0.251260759, kn13_c => 4457.609722, k1out => 2.247540509, k3outI => 0.826386393, knBM => 3693.340501, kn13_n => 0.028888515, k3inI => 0.119330233…)
 Dict(k2I => 1.060979658, k2M => 0.063853189, kn2M => 0.015708179, k13ID => 492.8041662, kn13_c => 1458.814216, k1out => 1160.198201, k3outI => 1406.396093, knBM => 706.4092444, kn13_n => 6.912427036, k3inI => 0.52880171…)
 Dict(k2I => 0.013162591, k2M => 4380.417266, kn2M => 0.849722303, k13ID => 80.82806586, kn13_c => 3328.022037, k1out => 5075.920947, k3outI => 1.21311598, knBM => 193.4131663, kn13_n => 1292.892064, k3inI => 0.017709754…)
 Dict(k2I => 1.416077821, k2M => 5467.82189, kn2M => 0.032108141, k13ID => 113.5951812, kn13_c => 1016.943774, k1out => 0.328084432, k3outI => 1753.79785, knBM => 308.1333171, kn13_n => 5.598408021, k3inI => 1.324724597…)
srange = 0.0:0.05:1.0
nsols = 100
paramidx = 1
1
sols = map(srange) do s
    find_steady_states(;S = t -> s, params=paramsets[paramidx], trajectories=nsols)
end;
count(length.(sols) .!= 1)
5

The system (mostly) has one steady-state for each signal strength.

Visualization#

using Plots
import RetroSignalModel as rs

sts = states(rs.RtgMTK(;name=:sys))

pls = map(keys(sts)) do i
    xs = srange
    ys = getindex.(first.(sols), i)
    plot(xs, ys, lab=string(sts[i]))
end

plot(pls..., size=(1280, 1280))