Caffeine Effects#
Caffeine increase RyR opening sensitivity to luminal and subspace calcium In this model, we decrease the mid saturation sub-SR calcium concentration for the opening rate
using ModelingToolkit
using OrdinaryDiffEq, SteadyStateDiffEq, DiffEqCallbacks
using Plots
using CSV
using DataFrames
using Dates
using CaMKIIModel
using CaMKIIModel: second
Plots.default(lw=1.5)
sys = build_neonatal_ecc_sys(simplify=true, reduce_iso=true, reduce_camk=true)
tend = 500second
prob = ODEProblem(sys, [], tend)
stimstart = 100second
stimend = 300second
alg = KenCarp47()
function add_coffee_affect!(integrator)
integrator.ps[sys.RyRsensitivity] = 10
end
@unpack Istim = sys
callback = build_stim_callbacks(Istim, stimend; period=1second, starttime=stimstart)
SciMLBase.CallbackSet{Tuple{}, Tuple{SciMLBase.DiscreteCallback{DiffEqCallbacks.PresetTimeFunction{StepRange{Int64, Int64}, typeof(SciMLBase.INITIALIZE_DEFAULT), CaMKIIModel.var"#13#15"{Float64, Int64, Symbolics.Num}}, CaMKIIModel.var"#13#15"{Float64, Int64, Symbolics.Num}, DiffEqCallbacks.PresetTimeFunction{StepRange{Int64, Int64}, typeof(SciMLBase.INITIALIZE_DEFAULT), CaMKIIModel.var"#13#15"{Float64, Int64, Symbolics.Num}}, typeof(SciMLBase.FINALIZE_DEFAULT), Nothing}, SciMLBase.DiscreteCallback{DiffEqCallbacks.PresetTimeFunction{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}, Int64}, typeof(SciMLBase.INITIALIZE_DEFAULT), CaMKIIModel.var"#14#16"{Float64, Int64, Symbolics.Num}}, CaMKIIModel.var"#14#16"{Float64, Int64, Symbolics.Num}, DiffEqCallbacks.PresetTimeFunction{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}, Int64}, typeof(SciMLBase.INITIALIZE_DEFAULT), CaMKIIModel.var"#14#16"{Float64, Int64, Symbolics.Num}}, typeof(SciMLBase.FINALIZE_DEFAULT), Nothing}}}((), (SciMLBase.DiscreteCallback{DiffEqCallbacks.PresetTimeFunction{StepRange{Int64, Int64}, typeof(SciMLBase.INITIALIZE_DEFAULT), CaMKIIModel.var"#13#15"{Float64, Int64, Symbolics.Num}}, CaMKIIModel.var"#13#15"{Float64, Int64, Symbolics.Num}, DiffEqCallbacks.PresetTimeFunction{StepRange{Int64, Int64}, typeof(SciMLBase.INITIALIZE_DEFAULT), CaMKIIModel.var"#13#15"{Float64, Int64, Symbolics.Num}}, typeof(SciMLBase.FINALIZE_DEFAULT), Nothing}(DiffEqCallbacks.PresetTimeFunction{StepRange{Int64, Int64}, typeof(SciMLBase.INITIALIZE_DEFAULT), CaMKIIModel.var"#13#15"{Float64, Int64, Symbolics.Num}}(100000:1000:300000, true, SciMLBase.INITIALIZE_DEFAULT, CaMKIIModel.var"#13#15"{Float64, Int64, Symbolics.Num}(-80.0, 1, Istim)), CaMKIIModel.var"#13#15"{Float64, Int64, Symbolics.Num}(-80.0, 1, Istim), DiffEqCallbacks.PresetTimeFunction{StepRange{Int64, Int64}, typeof(SciMLBase.INITIALIZE_DEFAULT), CaMKIIModel.var"#13#15"{Float64, Int64, Symbolics.Num}}(100000:1000:300000, true, SciMLBase.INITIALIZE_DEFAULT, CaMKIIModel.var"#13#15"{Float64, Int64, Symbolics.Num}(-80.0, 1, Istim)), SciMLBase.FINALIZE_DEFAULT, Bool[1, 1], nothing), SciMLBase.DiscreteCallback{DiffEqCallbacks.PresetTimeFunction{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}, Int64}, typeof(SciMLBase.INITIALIZE_DEFAULT), CaMKIIModel.var"#14#16"{Float64, Int64, Symbolics.Num}}, CaMKIIModel.var"#14#16"{Float64, Int64, Symbolics.Num}, DiffEqCallbacks.PresetTimeFunction{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}, Int64}, typeof(SciMLBase.INITIALIZE_DEFAULT), CaMKIIModel.var"#14#16"{Float64, Int64, Symbolics.Num}}, typeof(SciMLBase.FINALIZE_DEFAULT), Nothing}(DiffEqCallbacks.PresetTimeFunction{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}, Int64}, typeof(SciMLBase.INITIALIZE_DEFAULT), CaMKIIModel.var"#14#16"{Float64, Int64, Symbolics.Num}}(100000.5:1000.0:300000.5, true, SciMLBase.INITIALIZE_DEFAULT, CaMKIIModel.var"#14#16"{Float64, Int64, Symbolics.Num}(0.0, 1, Istim)), CaMKIIModel.var"#14#16"{Float64, Int64, Symbolics.Num}(0.0, 1, Istim), DiffEqCallbacks.PresetTimeFunction{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}, Int64}, typeof(SciMLBase.INITIALIZE_DEFAULT), CaMKIIModel.var"#14#16"{Float64, Int64, Symbolics.Num}}(100000.5:1000.0:300000.5, true, SciMLBase.INITIALIZE_DEFAULT, CaMKIIModel.var"#14#16"{Float64, Int64, Symbolics.Num}(0.0, 1, Istim)), SciMLBase.FINALIZE_DEFAULT, Bool[1, 1], nothing)))
Add caffeine at t = 200 econd
callback_caf = CallbackSet(build_stim_callbacks(Istim, stimend; period=1second, starttime=stimstart), PresetTimeCallback(200.0second, add_coffee_affect!))
SciMLBase.CallbackSet{Tuple{}, Tuple{SciMLBase.DiscreteCallback{DiffEqCallbacks.PresetTimeFunction{StepRange{Int64, Int64}, typeof(SciMLBase.INITIALIZE_DEFAULT), CaMKIIModel.var"#13#15"{Float64, Int64, Symbolics.Num}}, CaMKIIModel.var"#13#15"{Float64, Int64, Symbolics.Num}, DiffEqCallbacks.PresetTimeFunction{StepRange{Int64, Int64}, typeof(SciMLBase.INITIALIZE_DEFAULT), CaMKIIModel.var"#13#15"{Float64, Int64, Symbolics.Num}}, typeof(SciMLBase.FINALIZE_DEFAULT), Nothing}, SciMLBase.DiscreteCallback{DiffEqCallbacks.PresetTimeFunction{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}, Int64}, typeof(SciMLBase.INITIALIZE_DEFAULT), CaMKIIModel.var"#14#16"{Float64, Int64, Symbolics.Num}}, CaMKIIModel.var"#14#16"{Float64, Int64, Symbolics.Num}, DiffEqCallbacks.PresetTimeFunction{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}, Int64}, typeof(SciMLBase.INITIALIZE_DEFAULT), CaMKIIModel.var"#14#16"{Float64, Int64, Symbolics.Num}}, typeof(SciMLBase.FINALIZE_DEFAULT), Nothing}, SciMLBase.DiscreteCallback{DiffEqCallbacks.PresetTimeFunction{Vector{Float64}, typeof(SciMLBase.INITIALIZE_DEFAULT), typeof(Main.var"##230".add_coffee_affect!)}, typeof(Main.var"##230".add_coffee_affect!), DiffEqCallbacks.PresetTimeFunction{Vector{Float64}, typeof(SciMLBase.INITIALIZE_DEFAULT), typeof(Main.var"##230".add_coffee_affect!)}, typeof(SciMLBase.FINALIZE_DEFAULT), Nothing}}}((), (SciMLBase.DiscreteCallback{DiffEqCallbacks.PresetTimeFunction{StepRange{Int64, Int64}, typeof(SciMLBase.INITIALIZE_DEFAULT), CaMKIIModel.var"#13#15"{Float64, Int64, Symbolics.Num}}, CaMKIIModel.var"#13#15"{Float64, Int64, Symbolics.Num}, DiffEqCallbacks.PresetTimeFunction{StepRange{Int64, Int64}, typeof(SciMLBase.INITIALIZE_DEFAULT), CaMKIIModel.var"#13#15"{Float64, Int64, Symbolics.Num}}, typeof(SciMLBase.FINALIZE_DEFAULT), Nothing}(DiffEqCallbacks.PresetTimeFunction{StepRange{Int64, Int64}, typeof(SciMLBase.INITIALIZE_DEFAULT), CaMKIIModel.var"#13#15"{Float64, Int64, Symbolics.Num}}(100000:1000:300000, true, SciMLBase.INITIALIZE_DEFAULT, CaMKIIModel.var"#13#15"{Float64, Int64, Symbolics.Num}(-80.0, 1, Istim)), CaMKIIModel.var"#13#15"{Float64, Int64, Symbolics.Num}(-80.0, 1, Istim), DiffEqCallbacks.PresetTimeFunction{StepRange{Int64, Int64}, typeof(SciMLBase.INITIALIZE_DEFAULT), CaMKIIModel.var"#13#15"{Float64, Int64, Symbolics.Num}}(100000:1000:300000, true, SciMLBase.INITIALIZE_DEFAULT, CaMKIIModel.var"#13#15"{Float64, Int64, Symbolics.Num}(-80.0, 1, Istim)), SciMLBase.FINALIZE_DEFAULT, Bool[1, 1], nothing), SciMLBase.DiscreteCallback{DiffEqCallbacks.PresetTimeFunction{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}, Int64}, typeof(SciMLBase.INITIALIZE_DEFAULT), CaMKIIModel.var"#14#16"{Float64, Int64, Symbolics.Num}}, CaMKIIModel.var"#14#16"{Float64, Int64, Symbolics.Num}, DiffEqCallbacks.PresetTimeFunction{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}, Int64}, typeof(SciMLBase.INITIALIZE_DEFAULT), CaMKIIModel.var"#14#16"{Float64, Int64, Symbolics.Num}}, typeof(SciMLBase.FINALIZE_DEFAULT), Nothing}(DiffEqCallbacks.PresetTimeFunction{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}, Int64}, typeof(SciMLBase.INITIALIZE_DEFAULT), CaMKIIModel.var"#14#16"{Float64, Int64, Symbolics.Num}}(100000.5:1000.0:300000.5, true, SciMLBase.INITIALIZE_DEFAULT, CaMKIIModel.var"#14#16"{Float64, Int64, Symbolics.Num}(0.0, 1, Istim)), CaMKIIModel.var"#14#16"{Float64, Int64, Symbolics.Num}(0.0, 1, Istim), DiffEqCallbacks.PresetTimeFunction{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}, Int64}, typeof(SciMLBase.INITIALIZE_DEFAULT), CaMKIIModel.var"#14#16"{Float64, Int64, Symbolics.Num}}(100000.5:1000.0:300000.5, true, SciMLBase.INITIALIZE_DEFAULT, CaMKIIModel.var"#14#16"{Float64, Int64, Symbolics.Num}(0.0, 1, Istim)), SciMLBase.FINALIZE_DEFAULT, Bool[1, 1], nothing), SciMLBase.DiscreteCallback{DiffEqCallbacks.PresetTimeFunction{Vector{Float64}, typeof(SciMLBase.INITIALIZE_DEFAULT), typeof(Main.var"##230".add_coffee_affect!)}, typeof(Main.var"##230".add_coffee_affect!), DiffEqCallbacks.PresetTimeFunction{Vector{Float64}, typeof(SciMLBase.INITIALIZE_DEFAULT), typeof(Main.var"##230".add_coffee_affect!)}, typeof(SciMLBase.FINALIZE_DEFAULT), Nothing}(DiffEqCallbacks.PresetTimeFunction{Vector{Float64}, typeof(SciMLBase.INITIALIZE_DEFAULT), typeof(Main.var"##230".add_coffee_affect!)}([200000.0], true, SciMLBase.INITIALIZE_DEFAULT, Main.var"##230".add_coffee_affect!), Main.var"##230".add_coffee_affect!, DiffEqCallbacks.PresetTimeFunction{Vector{Float64}, typeof(SciMLBase.INITIALIZE_DEFAULT), typeof(Main.var"##230".add_coffee_affect!)}([200000.0], true, SciMLBase.INITIALIZE_DEFAULT, Main.var"##230".add_coffee_affect!), SciMLBase.FINALIZE_DEFAULT, Bool[1, 1], nothing)))
@time sol = solve(prob, alg; callback)
@time sol_caf = solve(prob, alg; callback=callback_caf)
12.045266 seconds (19.66 M allocations: 957.480 MiB, 2.41% gc time, 80.88% compilation time)
6.614130 seconds (4.31 M allocations: 242.831 MiB, 1.37% gc time, 55.57% compilation time)
retcode: Success
Interpolation: 3rd order Hermite
t: 8895-element Vector{Float64}:
0.0
0.019333123284849308
0.09098129546757994
0.20735582943983855
0.45611910276862533
1.0472562928406122
2.0342667657223696
3.451776641148454
6.733792423912806
12.450117081023194
⋮
404642.83277566
414876.95827256143
425667.56049853395
437210.42549690785
449697.91880315664
462185.41210940544
477837.27041839424
495715.4106147184
500000.0
u: 8895-element Vector{Vector{Float64}}:
[150952.75035000002, 13838.37602, -68.79268, 0.12113, 0.12113, 0.12113, 0.12113, 0.12113, 0.12113, 0.12113 … 0.26081, 0.00977, 0.00188, 0.09243, 0.22156, 0.966, 0.00702, 830.0, 830.0, 0.0026]
[150952.7504077194, 13838.375711519551, -68.79732946186226, 0.1211319185255175, 0.1211301421535992, 0.12113000811850358, 0.12113000037367234, 0.12113000001389383, 0.12113000000038378, 0.12113000000000405 … 0.2608055799112056, 0.009769882842069916, 0.001879826176081169, 0.09242766669618695, 0.2215639938807744, 0.9660018276402699, 0.007020208561323646, 829.9999654017583, 829.9994975880693, 0.0025985659590295374]
[150952.75062244057, 13838.374513299192, -68.81607005265552, 0.12115248970210647, 0.12113624253259858, 0.12113143375871602, 0.12113027926811751, 0.12113004704056851, 0.12113000693481112, 0.12113000089551408 … 0.26078941009382306, 0.009769459049732313, 0.0018789042446514422, 0.09241901973901424, 0.2215787945110049, 0.9660085993318799, 0.00702008986027517, 829.9998348635061, 829.9976422525165, 0.002593310524681686]
[150952.7509740238, 13838.372555328333, -68.84681913285226, 0.12118951551963696, 0.12115723910142134, 0.12114109135582982, 0.12113403405679991, 0.12113131833063846, 0.12113038966346883, 0.12113010483012127 … 0.2607638707001999, 0.009768805322556195, 0.0018766436937193197, 0.09240497563401104, 0.22160283236040595, 0.9660195931792828, 0.007017234889558555, 829.9996133960318, 829.9946506157202, 0.0025849478335103777]
[150952.7517373371, 13838.368384399068, -68.91207316777846, 0.12125418995384041, 0.12120713813483534, 0.12117519662647316, 0.12115494411090462, 0.12114295934422187, 0.12113633873395535, 0.12113292110288301 … 0.2607122383588733, 0.00976754294689657, 0.0018699196262940568, 0.0923749578279845, 0.2216542075240971, 0.9660430731013478, 0.0070030143052343926, 829.9990964774663, 829.9883445519497, 0.00256770780104998]
[150952.75361533565, 13838.358559292059, -69.06429960994137, 0.12136450208851983, 0.1213063255235844, 0.12125925929399752, 0.12122229800810434, 0.12119414515426227, 0.1211733598588045, 0.12115849269665879 … 0.26060507831375035, 0.009765228548607825, 0.001850533769446942, 0.09230364339951613, 0.22177624785138977, 0.9660987611411453, 0.006946470397388757, 829.9976227528975, 829.9738229154025, 0.0025298083713907005]
[150952.75694915713, 13838.34240329337, -69.31024285744343, 0.1214919651325424, 0.12142927821043338, 0.12137426379919636, 0.12132672249013034, 0.12128628091507473, 0.12125242557826561, 0.12122454121844703 … 0.26047114911179464, 0.009763403076884485, 0.0018178174419014683, 0.09218462776986637, 0.2219798989175973, 0.9661914345949096, 0.0068337541728754475, 829.9944193668179, 829.9509077855928, 0.0024748079782158957]
[150952.76215620188, 13838.319723120678, -69.64637448767432, 0.12162015426876954, 0.12155743299711902, 0.12149988983034497, 0.1214475947100359, 0.12140052118634262, 0.12135855488207907, 0.12132150441596071 … 0.2603648729749554, 0.009765046552800477, 0.001773815690753224, 0.09201383579531924, 0.22227216398019892, 0.9663239343003682, 0.006675512062656749, 829.9883533251192, 829.9205247545176, 0.0024106893964811324]
[150952.77598869594, 13838.2694938995, -70.35063788657428, 0.12180447948880577, 0.12174768443532356, 0.12169340184085964, 0.12164180995533558, 0.12159304920072024, 0.12154722283384184, 0.12150439833798556 … 0.26041507667541997, 0.009786689200123853, 0.0016855899094922325, 0.09161908329520764, 0.22294828828976576, 0.9666286957812559, 0.006355039713677859, 829.9689941817725, 829.8589858006806, 0.002310655727734339]
[150952.80529264064, 13838.18882346682, -71.35304509818071, 0.12196378364408175, 0.12191937753328333, 0.12187579038290348, 0.1218331857334074, 0.12179171693004406, 0.12175152667167365, 0.12171274673876366 … 0.26104417804603025, 0.009873892913308327, 0.0015688568862426045, 0.09093422465365385, 0.22412560303273427, 0.9671554512230358, 0.005926150085676071, 829.923524981244, 829.7704141396295, 0.002228995040224517]
⋮
[151635.85176429944, 13242.93290911983, -69.75660133663081, 0.1323052431604603, 0.1323052491659879, 0.13230525092224868, 0.1323052483449216, 0.13230524134626945, 0.13230522983496432, 0.13230521371590276 … 0.0012386633269871113, 0.0016480795536742165, 0.002551091017092877, 0.0016646983815690808, 0.9997100452130585, 0.9997081294533995, 0.0065806001941526426, 51.467761138564185, 50.16579994707515, 0.11477296407787577]
[151681.00196419843, 13197.792180049086, -69.66737703562241, 0.1317713164606981, 0.13177132081508106, 0.13177132115727913, 0.13177131740742773, 0.1317713094824167, 0.1317712972957247, 0.1317712807572436 … 0.0012559449991439173, 0.0016590421657152923, 0.002568053731028792, 0.0016861437195106973, 0.9997043491012538, 0.999702461562226, 0.00662063625626303, 51.76049209794444, 50.46845571490005, 0.11321979104363912]
[151726.401808974, 13152.401386595258, -69.57660462496514, 0.13124195616864637, 0.13124195905626085, 0.13124195813924658, 0.13124195334158997, 0.13124194458418523, 0.13124193178467689, 0.13124191485729206 … 0.0012737005631565238, 0.0016702674070904766, 0.00258542543116853, 0.0017082448122871419, 0.9996984372138299, 0.9996965815013198, 0.006661615302732422, 52.05396582856956, 50.771746411447765, 0.11169163279728839]
[151772.58197647537, 13106.229735704705, -69.48314949688141, 0.1307114418324522, 0.13071144366389242, 0.13071144191645817, 0.1307114365184691, 0.13071142739532635, 0.13071141446936363, 0.1307113976596893 … 0.0012922421019095553, 0.001681902546897505, 0.0026034317249038087, 0.0017312934486811548, 0.9996922269409796, 0.999690406371902, 0.00670406867966653, 52.35244455492253, 51.080031505005195, 0.11017245049506694]
[151819.908437489, 13058.911138469914, -69.38616925314116, 0.13017615609525357, 0.13017615718010073, 0.13017615491840445, 0.1301761492429984, 0.1301761400839755, 0.13017612736854828, 0.13017611102090046 … 0.0013118104615431325, 0.0016940624936115979, 0.002622247951946617, 0.0017555295550832563, 0.9996856471003632, 0.9996838655867536, 0.006748407523602141, 52.65834944020229, 51.39580020391751, 0.10865189832377864]
[151864.64616886838, 13014.18073779394, -69.29337825572408, 0.12967760703746928, 0.1296776067492984, 0.1296776033043511, 0.12967759663903997, 0.1296775866871963, 0.12967757337993835, 0.1296775566455316 … 0.0013307157880281964, 0.0017057757332160778, 0.002640377375522222, 0.0017790381092312759, 0.9996792154158324, 0.9996774770878921, 0.006791103721883313, 52.945702751994254, 51.69232188361747, 0.10724649841765853]
[151917.2833238038, 12961.551304573723, -69.18273023936962, 0.12910108566500839, 0.12910108425771977, 0.1291010799389312, 0.12910107264983153, 0.12910106232923396, 0.1291010489134549, 0.1291010323361852 … 0.0013537053312534966, 0.001719849540724145, 0.0026621569055723564, 0.001807466530183618, 0.9996713746213068, 0.9996696908730698, 0.006842367223718228, 53.283854216053385, 52.041037269481265, 0.1056350614605816]
[151973.07403530102, 12905.76796035786, -69.06367777548652, 0.12850192425073634, 0.1285019219178369, 0.1285019169308164, 0.12850190923588783, 0.1285018987770974, 0.12850188549621464, 0.12850186933261448 … 0.001378884991854547, 0.0017351204909917606, 0.0026857883118157964, 0.0018385490659201323, 0.9996627216038702, 0.9996611034767264, 0.006897952773594027, 53.640725672757874, 52.408851758283994, 0.10397555001212004]
[151985.78419648137, 12893.059355697369, -69.03628984930381, 0.12836718789466353, 0.12836718540536693, 0.12836718032278038, 0.12836717259428765, 0.12836716216514898, 0.12836714897839252, 0.12836713297469937 … 0.0013847446293864484, 0.001738652687590342, 0.0026912541619053187, 0.0018457731212756401, 0.9996606997486418, 0.9996590963966433, 0.006910803734863728, 53.721793944996094, 52.49237572281546, 0.10360449293849433]
i = (sys.t / 1000, sys.vm)
plot(sol, idxs=i, title="Action potential", lab="Ctl", tspan=(198second, 205second))
plot!(sol_caf, idxs=i, lab="Caf", tspan=(198second, 205second), ylabel="Voltage (mV)", xlabel="Time (s)")

i = (sys.t / 1000, sys.Cai_sub_SR * 1000)
plot(sol, idxs=i, title="Calcium transient (During caffeine addition)", lab="Ctl", tspan=(198second, 205second))
plot!(sol_caf, idxs=i, tspan=(198second, 205second), lab="Caf", ylabel="Subspace calcium (nM)", xlabel="Time (s)")

i = (sys.t / 1000, sys.PO1RyR)
plot(sol, idxs=i, title="RyR open (During caffeine addition)", lab="Ctl", tspan=(198second, 205second))
plot!(sol_caf, idxs=i, tspan=(198second, 205second), lab="Caf", ylabel="Open probability", ylims=(0, 1), xlabel="Time (s)")

i = (sys.t / 1000, sys.Cai_sub_SR * 1000)
plot(sol, idxs=i, title="Calcium transient (After caffeine addition)", lab="Ctl", ylabel="Subspace calcium (nM)", tspan=(198second, 205second))
plot!(sol_caf, idxs=i, lab="Caf", xlabel="Time (s)", tspan=(198second, 205second))

i = (sys.t / 1000, sys.CaJSR)
plot(sol, idxs=i, title="SR Calcium (During caffeine addition)", lab="Ctl", ylabel="SR calcium (μM)", tspan=(198second, 205second))
plot!(sol_caf, idxs=i, tspan=(198second, 205second), lab="Caf", ylims=(0, 850), xlabel="Time (s)")

i = (sys.t / 1000, sys.Jrel)
plot(sol, idxs=sys.Jrel, title="Ca flux", lab="Ctl (Jrel)", tspan=(198second, 205second))
plot!(sol_caf, idxs=sys.Jrel, lab="Caf (Jrel)", tspan=(198second, 205second), ylabel="μM/ms", xlabel="Time (s)")

i = (sys.t / 1000, sys.CaMKAct * 100)
plot(sol, idxs=i, title="Active CaMKII", lab="Ctl")
plot!(sol_caf, idxs=i, lab="Caf", ylabel="CaMKII activity (%)", xlabel="Time (s)")

Simulation vs experimental data#
Add caffeine in the beginning of the simulation Add caffeine and nifedipine in the beginning of the simulation (nifedipine blocks 90% of L-type calcium channel)
sys = build_neonatal_ecc_sys(simplify=true, reduce_iso=true, reduce_camk=true)
tend = 205second
stimstart = 30second
stimend = 120second
alg = KenCarp47()
@unpack Istim = sys
callback = build_stim_callbacks(Istim, stimend; period=1second, starttime=stimstart)
prob = ODEProblem(sys, [], tend)
prob_caf = ODEProblem(sys, [sys.RyRsensitivity => 10], tend)
gCaL = prob.ps[sys.GCaL]
prob_nif_caf = ODEProblem(sys, [sys.RyRsensitivity => 10, sys.GCaL => 0.1 * gCaL], tend)
ssalg = DynamicSS(alg)
sprob_caf = SteadyStateProblem(prob_caf)
sssol = solve(sprob_caf, ssalg; abstol=1e-10, reltol=1e-10)
@time sol = solve(prob, alg; callback)
@time sol_caf = solve(remake(prob_caf, u0=sssol.u), alg; callback)
@time sol_nif_caf = solve(remake(prob_nif_caf, u0=sssol.u), alg; callback)
0.730185 seconds (40.85 k allocations: 9.849 MiB)
0.852191 seconds (337.81 k allocations: 25.702 MiB, 14.84% compilation time)
0.473989 seconds (34.42 k allocations: 7.250 MiB)
retcode: Success
Interpolation: 3rd order Hermite
t: 2868-element Vector{Float64}:
0.0
0.18425148407926553
0.9881950665374242
4.071260448353045
11.46885300288632
25.16302218753249
49.5859953649923
83.3634077881533
137.50297755825105
206.1820764930618
⋮
144682.28015035207
149346.639018909
154990.215984555
161142.37076584628
169120.24756298968
177098.12436013308
185076.00115727648
197686.21703808644
205000.0
u: 2868-element Vector{Vector{Float64}}:
[152640.0395377282, 12238.850833325141, -67.47372040159463, 0.12238747835176766, 0.12238747830749795, 0.12238747825305116, 0.12238747818821409, 0.12238747811276493, 0.12238747802647282, 0.1223874779290974 … 0.0017638852676494488, 0.00195235995907376, 0.0030219231358496, 0.0023071989358525186, 0.9995225455933286, 0.9995225316305805, 0.007684742308626676, 57.61927086093778, 56.49694775328056, 0.0879371864350263]
[152640.0395405472, 12238.850830585116, -67.47610104146462, 0.122381551549053, 0.12238492805752427, 0.12238651132016903, 0.1223871529953923, 0.12238737999849227, 0.1223874512044269, 0.12238747125221419 … 0.001763885638697757, 0.0019523597886226677, 0.00302178759156701, 0.0023071988424142914, 0.9995225455985933, 0.9995225316945777, 0.007684547215786633, 57.6192708754156, 56.496947768120954, 0.08793718638375797]
[152640.03955509985, 12238.850821718062, -67.48635907718625, 0.12236158763328084, 0.12236825301175036, 0.12237357346915105, 0.12237769677068892, 0.12238079192496683, 0.1223830396134499, 0.12238461798661364 … 0.0017638955847068712, 0.0019523420719864772, 0.003019909983789736, 0.002307196212943339, 0.9995225457611676, 0.9995225334735349, 0.007681100498844016, 57.61927093858645, 56.49694783287382, 0.08793718616005967]
[152640.03964507356, 12238.850855009943, -67.52377428645376, 0.12231883026984908, 0.12232730996346552, 0.12233504897671203, 0.12234206662860919, 0.12234838751725717, 0.12235404171247671, 0.12235906409059212 … 0.0017640412375281025, 0.001951921210563683, 0.0030115108406792235, 0.002307153907432258, 0.999522548409259, 0.9995225619554432, 0.007661866596606846, 57.61927118088082, 56.49694808117413, 0.08793718530962812]
[152640.0400644581, 12238.851376785515, -67.60268392660717, 0.1222491569497957, 0.12225910889943806, 0.12226856925671875, 0.12227754399655896, 0.1222860402399582, 0.12229406630753446, 0.12230163170989096 … 0.0017648318732662906, 0.0019490696613717526, 0.002993798166648852, 0.0023068645920329483, 0.9995225665709301, 0.9995227551108022, 0.0076203716352641745, 57.61926964823602, 56.49694891248504, 0.08793624854954671]
[152640.041465256, 12238.853729483326, -67.7148954625096, 0.12214348847531684, 0.12215497443146052, 0.12216609235022717, 0.12217684455799875, 0.12218723376593076, 0.12219726306651636, 0.12220693592858665 … 0.001766719819772315, 0.0019399724853125335, 0.002968742613171565, 0.0023057684141154474, 0.9995226355786365, 0.9995234760952348, 0.007561722787016873, 57.61917226957465, 56.49697711086534, 0.08790136721053145]
[152640.0453391757, 12238.860883244159, -67.83681953931087, 0.12197768272847391, 0.12199045442187229, 0.12200294332750446, 0.12201514886968154, 0.12202707056613835, 0.12203870801985205, 0.12205006091092324 … 0.0017687996923607609, 0.0019217375007379816, 0.0029416846196284136, 0.0023026397366133692, 0.9995228341085926, 0.9995254830309012, 0.007498481353056957, 57.61841601414818, 56.49739301415228, 0.08768495550040005]
[152640.05224542343, 12238.873667955535, -67.91455067259844, 0.12176801503353978, 0.12178117450720323, 0.12179409341837541, 0.12180676954043056, 0.12181920061251435, 0.12183138433325391, 0.12184331835414575 … 0.0017684286596829236, 0.0019036014072623538, 0.00292452167654868, 0.00229711915773291, 0.9995231908330416, 0.9995288968131739, 0.0074584525753807205, 57.61686493707028, 56.49913620922534, 0.08722117367708118]
[152640.0647346662, 12238.895344170582, -67.95944846568695, 0.1214526761248695, 0.1214654153786108, 0.12147793294123495, 0.12149022592330076, 0.12150229135110209, 0.12151412616137698, 0.12152572719568873 … 0.001764194478889578, 0.00189058616239926, 0.0029146680559983843, 0.002287494379591114, 0.9995238356147762, 0.9995345179839491, 0.0074355050161555875, 57.61578664424061, 56.504761902575815, 0.08638389624736525]
[152640.0814017801, 12238.920791592554, -67.98526234218282, 0.12107348443584993, 0.12108537717814245, 0.12109705513665947, 0.12110851530306987, 0.12111975457451121, 0.12113076974837136, 0.12114155751676264 … 0.001757298697409229, 0.0018848870130364352, 0.002909066735580768, 0.0022753817516241144, 0.9995246942222072, 0.9995410331600026, 0.00742242874810314, 57.61886036191315, 56.516504522110914, 0.08533613188623287]
⋮
[152692.68151937076, 12186.068063853312, -68.0824760687335, 0.11570181363696547, 0.11570180891741963, 0.11570180422666797, 0.1157017995647811, 0.11570179493181403, 0.11570179032780527, 0.11570178575277637 … 0.00160601081010331, 0.0018662231865347913, 0.002888592942302168, 0.0021160296153310562, 0.9990203749380999, 0.9995813007504196, 0.007373487867104943, 62.64838884843398, 61.64188216972152, 0.07225717324758162]
[152692.40610484802, 12186.343011268606, -68.08313586742452, 0.1157055969362262, 0.11570559620465905, 0.11570559548454296, 0.11570559477587325, 0.11570559407864349, 0.11570559339284522, 0.11570559271846774 … 0.001605801790939947, 0.0018661305872678376, 0.002888453089221339, 0.002115832001078608, 0.9994192354959972, 0.9995810094936313, 0.00737321297112604, 62.64856094790828, 61.64198291567371, 0.07226575878183737]
[152692.08066519073, 12186.668402931353, -68.08384559074652, 0.11570932529922967, 0.11570932563880112, 0.11570932603942442, 0.11570932650201728, 0.11570932702755622, 0.11570932761707882, 0.11570932827168683 … 0.0016056643526202227, 0.0018660334904277171, 0.0028883009166378168, 0.002115617479557489, 0.9995452412437126, 0.9995809839382638, 0.007372794158878781, 62.64625541346612, 61.63959854097329, 0.07227540154433623]
[152691.7345901374, 12187.014567359472, -68.08460977980306, 0.11571293729541932, 0.11571293794101749, 0.11571293864090781, 0.11571293939617874, 0.11571294020797103, 0.11571294107748023, 0.11571294200595951 … 0.0016054400605056013, 0.0018659274483044954, 0.0028881379870485126, 0.002115381139209486, 0.9995742650568522, 0.9995812538002417, 0.007372394315758033, 62.64315401704383, 61.636435420714434, 0.0722833024913155]
[152691.29981659807, 12187.449467715438, -68.0855997222855, 0.11571714167970114, 0.11571714221301134, 0.11571714282493, 0.1157171435169686, 0.11571714429070586, 0.11571714514779168, 0.11571714608995083 … 0.0016051788382227083, 0.001865788719517138, 0.0028879308503592426, 0.0021150859885738144, 0.999580476933718, 0.9995820155468448, 0.007371958104896254, 62.639251270616334, 61.632456808006246, 0.07229345040715784]
[152690.87990121733, 12187.869359633023, -68.08651806771402, 0.1157217007444502, 0.11572170191008915, 0.11572170312859653, 0.1157217044008237, 0.11572170572766374, 0.11572170711005328, 0.1157217085489745 … 0.001605015398881663, 0.0018656639471762429, 0.0028877274865243613, 0.0021148116003462123, 0.99958155751597, 0.9995812913430082, 0.007371437503156575, 62.636229684236696, 61.629361494394445, 0.07230265702572379]
[152690.4743721784, 12188.275024752398, -68.0874473337374, 0.11572540791478014, 0.11572540827773056, 0.115725408691507, 0.11572540915724026, 0.1157254096761045, 0.11572541024931947, 0.11572541087815316 … 0.001604757470575895, 0.0018655349858716342, 0.002887529767130211, 0.0021145293466093475, 0.999581571783471, 0.9995817441591336, 0.0073710114016427705, 62.632817067180866, 61.62588782253242, 0.07231076667698398]
[152689.86149829053, 12188.888049515386, -68.08882259325618, 0.11573155321104947, 0.11573155360973116, 0.11573155405569774, 0.11573155454999488, 0.1157315550937109, 0.11573155568797891, 0.11573155633397918 … 0.0016044164745797763, 0.0018653446307867786, 0.002887234872157271, 0.0021141146435964446, 0.9995816619556598, 0.9995817912233405, 0.007370337454576404, 62.62766164355429, 61.62062876722007, 0.07232416813643477]
[152689.52121632267, 12189.228399637737, -68.08958297161358, 0.11573498669378841, 0.11573498711988031, 0.11573498759111712, 0.11573498810849754, 0.1157349886730606, 0.11573498928588755, 0.11573498994810423 … 0.0016042174681365582, 0.0018652390748610922, 0.0028870720301817487, 0.002113884433140763, 0.999581726843381, 0.999581878162048, 0.007369918908332458, 62.62485106605331, 61.61775999588088, 0.07233177205956874]
i = (sys.t / 1000, sys.vm)
tspan = (100second, 102second)
plot(sol, idxs=i, title="Action potential", lab="Ctl"; tspan)
plot!(sol_caf, idxs=i, lab="Caf"; tspan)
plot!(sol_nif_caf, idxs=i, lab="Caf + Nif", tspan=tspan, ylabel="Voltage (mV)", xlabel="Time (s)")

savefig("caf-ap.pdf")
savefig("caf-ap.png")
"/home/github/actions-runner-2/_work/camkii-cardiomyocyte-model/camkii-cardiomyocyte-model/.cache/docs/caf-ap.png"
i = (sys.t / 1000, sys.Cai_sub_SR * 1000)
tspan = (100second, 102second)
plot(sol, idxs=i, title="Calcium transient", lab="Ctl"; tspan)
plot!(sol_caf, idxs=i, lab="Caf"; tspan)
plot!(sol_nif_caf, idxs=i, lab="Caf + Nif", ylabel="Subspace calcium (nM)", xlabel="Time (s)"; tspan)
savefig("caf-cat.pdf")
savefig("caf-cat.png")
"/home/github/actions-runner-2/_work/camkii-cardiomyocyte-model/camkii-cardiomyocyte-model/.cache/docs/caf-cat.png"
i = (sys.t / 1000, sys.CaJSR)
tspan = (100second, 102second)
plot(sol, idxs=i, title="SR Calcium", lab="Ctl", ylabel="SR calcium (μM)"; tspan)
plot!(sol_caf, idxs=i, lab="Caf"; tspan)
plot!(sol_nif_caf, idxs=i, lab="Caf + Nif", ylims=(0, 850), xlabel="Time (s)"; tspan)

i = (sys.t / 1000, sys.CaMKAct * 100)
plot(sol, idxs=i, title="Simulation", lab="Ctl")
plot!(sol_caf, idxs=i, lab="Caf")
plot!(sol_nif_caf, idxs=i, lab="Caf + Nif", ylabel="CaMKII active fraction (%)", xlabel="Time (s)")

savefig("caf-camkact.pdf")
savefig("caf-camkact.png")
"/home/github/actions-runner-2/_work/camkii-cardiomyocyte-model/camkii-cardiomyocyte-model/.cache/docs/caf-camkact.png"
experiments
chemicaldf = CSV.read(joinpath(@__DIR__, "data/CaMKAR-chemical.csv"), DataFrame)
ts = Dates.value.(chemicaldf[!, "Time"]) ./ 10^9
ctl = chemicaldf[!, "Ctrl Mean"]
ctl_error = chemicaldf[!, "Ctrl SD"] ./ sqrt.(chemicaldf[!, "Ctrl N"])
caf = chemicaldf[!, "caffeine 20mM Mean"]
caf_error = chemicaldf[!, "caffeine 20mM SD"] ./ sqrt.(chemicaldf[!, "caffeine 20mM N"])
plot(ts, ctl, yerr=ctl_error, lab="Control", color=:blue, markerstrokecolor=:blue)
plot!(ts, caf, yerr=caf_error, lab="Caffeine 20mM", color=:red, markerstrokecolor=:red)
plot!(xlabel="Time (s)", ylabel="CaMKII activity (A.U.)", title= "Experiment")

savefig("caf-exp.pdf")
"/home/github/actions-runner-2/_work/camkii-cardiomyocyte-model/camkii-cardiomyocyte-model/.cache/docs/caf-exp.pdf"
This notebook was generated using Literate.jl.