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"##237".add_coffee_affect!)}, typeof(Main.var"##237".add_coffee_affect!), DiffEqCallbacks.PresetTimeFunction{Vector{Float64}, typeof(SciMLBase.INITIALIZE_DEFAULT), typeof(Main.var"##237".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"##237".add_coffee_affect!)}, typeof(Main.var"##237".add_coffee_affect!), DiffEqCallbacks.PresetTimeFunction{Vector{Float64}, typeof(SciMLBase.INITIALIZE_DEFAULT), typeof(Main.var"##237".add_coffee_affect!)}, typeof(SciMLBase.FINALIZE_DEFAULT), Nothing}(DiffEqCallbacks.PresetTimeFunction{Vector{Float64}, typeof(SciMLBase.INITIALIZE_DEFAULT), typeof(Main.var"##237".add_coffee_affect!)}([200000.0], true, SciMLBase.INITIALIZE_DEFAULT, Main.var"##237".add_coffee_affect!), Main.var"##237".add_coffee_affect!, DiffEqCallbacks.PresetTimeFunction{Vector{Float64}, typeof(SciMLBase.INITIALIZE_DEFAULT), typeof(Main.var"##237".add_coffee_affect!)}([200000.0], true, SciMLBase.INITIALIZE_DEFAULT, Main.var"##237".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)
1.790825 seconds (132.74 k allocations: 459.683 MiB, 4.12% gc time)
5.352794 seconds (5.04 M allocations: 745.463 MiB, 2.57% gc time, 64.61% 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.27149518696
495715.4129214641
500000.0
u: 8895-element Vector{Vector{Float64}}:
[0.12113, 0.12113, 0.12113, 0.12113, 0.12113, 0.12113, 0.12113, 0.12113, 0.12113, 0.12113 … 0.9911, 0.61179, 0.09243, 0.00702, 0.966, 0.22156, 0.07192, 150952.75035000002, 13838.37602, -68.79268]
[0.12112999999999999, 0.12113, 0.12113, 0.12113, 0.12113, 0.12113, 0.12113, 0.12113, 0.12113, 0.12113 … 0.9911240298625772, 0.61179209692054, 0.09242766669618695, 0.007020208561323646, 0.9660018276402699, 0.2215639938807744, 0.07192100954852718, 150952.7504077194, 13838.375711519551, -68.79732946186226]
[0.12113000000531939, 0.12113000000024629, 0.12112999999996936, 0.12112999999998814, 0.12112999999999756, 0.12112999999999959, 0.12112999999999993, 0.12112999999999999, 0.12112999999999999, 0.12113 … 0.9912126672514168, 0.6118012235185329, 0.09241901973901424, 0.00702008986027517, 0.9660085993318799, 0.2215787945110049, 0.0719247622956487, 150952.75062244057, 13838.374513299192, -68.81607005265552]
[0.12113000352486501, 0.12113000071464508, 0.12113000013259279, 0.12113000002221791, 0.12113000000324825, 0.12113000000037327, 0.12113000000001811, 0.12112999999999313, 0.12112999999999685, 0.12112999999999911 … 0.9913552605900093, 0.6118207061207029, 0.09240497563401104, 0.007017234889558555, 0.9660195931792828, 0.22160283236040595, 0.07193089713793946, 150952.7509740238, 13838.372555328333, -68.84681913285226]
[0.12113031246875829, 0.12113011855881943, 0.12113004261415268, 0.1211300145224514, 0.1211300046922744, 0.12113000143526587, 0.12113000041393686, 0.12113000011158663, 0.12113000002760377, 0.12113000000599933 … 0.9916544804172969, 0.6118814305717646, 0.0923749578279845, 0.0070030143052343926, 0.9660430731013478, 0.2216542075240971, 0.07194417536281429, 150952.7517373371, 13838.368384399068, -68.91207316777846]
[0.12113664606535107, 0.12113391404700644, 0.12113223891788369, 0.12113124406405289, 0.12113067160353039, 0.12113035232069681, 0.12113017964115647, 0.12113008904213221, 0.12113004292180056, 0.12113002016884632 … 0.9923360674037417, 0.6121262615921059, 0.09230364339951613, 0.006946470397388757, 0.9660987611411453, 0.22177624785138977, 0.07197662797870664, 150952.75361533565, 13838.358559292059, -69.06429960994137]
[0.12116110329207945, 0.12115245907382813, 0.12114597183088456, 0.12114118504637392, 0.12113771307938385, 0.12113523852752958, 0.12113350680291797, 0.1211323190247843, 0.12113152423329539, 0.1211310117677002 … 0.9933874251519441, 0.6128292434834117, 0.09218462776986637, 0.0068337541728754475, 0.9661914345949096, 0.2219798989175973, 0.07203363801526848, 150952.75694915713, 13838.34240329337, -69.31024285744343]
[0.12120423665656944, 0.12118928168345969, 0.12117695409406527, 0.12116690224321353, 0.12115880345210753, 0.12115236793976296, 0.12114734156698287, 0.12114350756515986, 0.12114068746411359, 0.12113874145120666 … 0.9947260029718878, 0.61441610851668, 0.09201383579531924, 0.006675512062656749, 0.9663239343003682, 0.22227216398019892, 0.0721216517759309, 150952.76215620188, 13838.319723120678, -69.64637448767432]
[0.1212995420290433, 0.12127783468666772, 0.1212589040374779, 0.1212425879351912, 0.12122873583441052, 0.12121721111566237, 0.12120789316717222, 0.12120067917599112, 0.12119548558727024, 0.1211922491964778 … 0.9971828595843288, 0.6201838932607627, 0.09161908329520764, 0.006355039713677859, 0.9666286957812559, 0.22294828828976576, 0.07235305497134359, 150952.77598869594, 13838.2694938995, -70.35063788657428]
[0.1214553971027536, 0.12143259661681072, 0.12141268299068807, 0.12139558631643757, 0.12138124198529929, 0.12136959056512987, 0.12136057763401646, 0.12135415355743052, 0.1213502731984364, 0.12134889555279481 … 0.9999327439121073, 0.6347673874618533, 0.09093422465365385, 0.005926150085676071, 0.9671554512230358, 0.22412560303273427, 0.07284451729172227, 150952.80529264064, 13838.18882346682, -71.35304509818071]
⋮
[0.13230253996101826, 0.13230273816801472, 0.13230292659367762, 0.13230310558126085, 0.1323032754554494, 0.13230343652359774, 0.13230358907686976, 0.13230373339129042, 0.13230386972871644, 0.13230399833773276 … 1.002944345386089, 0.6516129661193587, 0.0016646983815692801, 0.006580600194152512, 0.9997081294533996, 0.9997100452130583, 0.19745030028537736, 151635.85176429956, 13242.93290911982, -69.75660133663108]
[0.13176871816275915, 0.1317689069015036, 0.13176908638030396, 0.131769256924982, 0.13176941884372176, 0.13176957242824536, 0.1317697179548963, 0.13176985568563807, 0.1317699858689761, 0.13177010874080958 … 1.002973525166985, 0.6482292507639522, 0.0016861437195107762, 0.006620636256263728, 0.9997024615622259, 0.9997043491012538, 0.19521428913251113, 151681.0019641985, 13197.792180049079, -69.66737703562086]
[0.13123944894651923, 0.13123962941428202, 0.1312398010800073, 0.1312399642540523, 0.13124011922996826, 0.13124026628562105, 0.13124040568422315, 0.13124053767528554, 0.13124066249549615, 0.13124078036953163 … 1.0030023909115091, 0.6447714643607224, 0.0017082448122875819, 0.006661615302732723, 0.9996965815013198, 0.9996984372138297, 0.19295802740081244, 151726.4018089741, 13152.4013865953, -69.57660462496446]
[0.13070905263720778, 0.13070922344674485, 0.13070938596242332, 0.13070954047713584, 0.13070968726790952, 0.13070982659696392, 0.13070995871268545, 0.13071008385052604, 0.13071020223383245, 0.13071031407461284 … 1.0030312547188769, 0.6411956362427048, 0.0017312934486810522, 0.0067040686796661685, 0.9996904063719019, 0.9996922269409797, 0.19065582662169026, 151772.58197647546, 13106.229735704763, -69.4831494968822]
[0.130173899868798, 0.13017406037397658, 0.1301742131098183, 0.13017435835118074, 0.13017449635802672, 0.13017462737641747, 0.13017475163942746, 0.1301748693679879, 0.1301749807716654, 0.1301750860493814 … 1.0030603104147524, 0.6374682612491688, 0.0017555295550836388, 0.006748407523602339, 0.9996838655867535, 0.999685647100363, 0.18828932309571023, 151819.90843748907, 13058.911138469968, -69.3861692531407]
[0.12967543443279292, 0.1296755872334186, 0.1296757327012847, 0.129675871095613, 0.12967600266159562, 0.12967612763133088, 0.12967624622468446, 0.12967635865008414, 0.12967646510525294, 0.12967656577788678 … 1.0030873159739828, 0.633886345255617, 0.0017790381092313405, 0.0067911037218831806, 0.9996774770878921, 0.9996792154158324, 0.18604437954184003, 151864.64616886844, 13014.180737794004, -69.29337825572438]
[0.129099043560525, 0.1290991856719102, 0.12909932101965577, 0.12909944984259794, 0.12909957236666467, 0.1290996888057362, 0.12909979936243746, 0.12909990422886908, 0.12910000358728174, 0.12910009761069963 … 1.003118471860971, 0.6295957283134835, 0.0018074665321006207, 0.006842367227161771, 0.9996696908725424, 0.999671374620776, 0.1833950736928509, 151917.28332729914, 12961.55130107898, -69.18273023196485]
[0.1285000269706695, 0.1285001576635081, 0.12850028218437473, 0.12850040075123842, 0.12850051357029676, 0.12850062083676, 0.1285007227355737, 0.12850081944208552, 0.12850091112266, 0.12850099793524744 … 1.0031507722265691, 0.6249562948797135, 0.0018385490698334065, 0.006897952780560491, 0.9996611034756407, 0.9996627216027754, 0.18057689264680477, 151973.07404221184, 12905.767953448014, -69.06367776062568]
[0.1283653265014929, 0.1283654544944815, 0.1283655764488252, 0.1283656925781329, 0.1283658030844674, 0.12836590815911514, 0.1283660079832955, 0.12836610272881455, 0.12836619255866857, 0.1283662776276018 … 1.0031580247983174, 0.6238856889173915, 0.0018457731212769503, 0.006910803734865474, 0.9996590963966429, 0.9996606997486412, 0.17993347582736016, 151985.78419648315, 12893.059355695705, -69.03628984930079]
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.849882 seconds (62.38 k allocations: 215.018 MiB, 5.26% gc time)
0.796574 seconds (63.04 k allocations: 220.361 MiB, 2.60% gc time, 1.34% compilation time)
0.793442 seconds (46.35 k allocations: 148.538 MiB, 2.01% gc time)
retcode: Success
Interpolation: 3rd order Hermite
t: 2868-element Vector{Float64}:
0.0
0.18425139527478848
0.9881940796459161
4.071256017362852
11.468832187792005
25.162966825599597
49.58587839022985
83.36319012003779
137.50264344533196
206.18151029038174
⋮
144682.34715339995
149346.8761972228
154991.36767138157
161143.70394410985
169121.91852735105
177100.13311059226
185078.34769383346
197689.40033937484
205000.0
u: 2868-element Vector{Vector{Float64}}:
[0.12238733167270603, 0.12238733221197831, 0.12238733272724227, 0.12238733321935895, 0.12238733368914284, 0.12238733413736505, 0.12238733456475603, 0.12238733497200831, 0.12238733535977889, 0.12238733572869155 … 1.0034759747556823, 0.561096202818949, 0.0023072148842124274, 0.007684767636822426, 0.9995225266338769, 0.9995225405201699, 0.14609038459579196, 152640.0578278563, 12238.83254347433, -67.47367186574421]
[0.12238733165222836, 0.12238733219150018, 0.12238733270676372, 0.12238733319888004, 0.12238733366866354, 0.12238733411688536, 0.12238733454427599, 0.12238733495152793, 0.12238733533929816, 0.12238733570821056 … 1.0034759814713825, 0.5610965935701008, 0.002307214790760048, 0.007684572543147688, 0.9995225266978792, 0.9995225405254387, 0.14609038655427123, 152640.0578306603, 12238.832540749278, -67.47605251892988]
[0.1223873315629591, 0.12238733210229981, 0.12238733261768986, 0.12238733311003108, 0.12238733358019983, 0.12238733402904992, 0.12238733445739194, 0.12238733486590683, 0.12238733525488807, 0.12238733562357636 … 1.0034760804403486, 0.5611072427622734, 0.0023072121612038644, 0.007681125807797031, 0.9995225284768817, 0.9995225406880335, 0.14609044391072148, 152640.0578451476, 12238.832531947546, -67.48631060627581]
[0.12238731004325584, 0.12238730114252364, 0.12238728839312016, 0.12238727039591668, 0.12238724529939186, 0.12238721067743402, 0.12238716338311624, 0.12238709937695279, 0.12238701352921472, 0.12238689939732801 … 1.0034768755007826, 0.561270604650486, 0.0023071698550189276, 0.007661891748759978, 0.9995225569593011, 0.9995225433362335, 0.14609137645118755, 152640.05793487077, 12238.832565489933, -67.52372601542784]
[0.12238359487594734, 0.12238302199102875, 0.12238236343446476, 0.12238161061222315, 0.12238075411931214, 0.12237978375471872, 0.12237868853992576, 0.12237745674199535, 0.12237607590208212, 0.12237453287010613 … 1.0034796801417414, 0.5622675069459114, 0.0023068805363223896, 0.007620396438019491, 0.9995227501175904, 0.9995225614983173, 0.1460978397714653, 152640.05835365388, 12238.833087866316, -67.60263606447346]
[0.12235262102909561, 0.1223505061887389, 0.12234818027412997, 0.12234564032934107, 0.12234288283027242, 0.12233990374019298, 0.12233669856327517, 0.12233326239628643, 0.1223295899785786, 0.12232567574049184 … 1.0034853566060795, 0.5652920194886493, 0.00230578434678232, 0.00756174700195705, 0.9995234711126995, 0.9995226305072725, 0.1461228514322879, 152640.05975333837, 12238.835441676905, -67.71484836504314]
[0.12224768065803422, 0.12224421986740436, 0.12224044090454088, 0.12223634849747257, 0.12223194684350289, 0.12222723965196412, 0.12222223018444886, 0.12221692129272536, 0.12221131545452076, 0.1222054148073345 … 1.00349461738332, 0.5710550878943647, 0.0023026556336594953, 0.0074985047316384855, 0.9995254780798671, 0.999522829040684, 0.14619637458951876, 152640.0636252763, 12238.842597433308, -67.8367736701131]
[0.12205954889570506, 0.12205569011082192, 0.1220514602109072, 0.12204686770783249, 0.12204192058919949, 0.12203662635564257, 0.12203099205543959, 0.1220250243166698, 0.1220187293771315, 0.12201211311221109 … 1.0035059736437004, 0.5764573560099102, 0.0022971349878566217, 0.007458475265389554, 0.9995288919184037, 0.9995231857713638, 0.1463304777909497, 152640.07052879035, 12238.855384925153, -67.91450590058889]
[0.12173493093367777, 0.1217314196609422, 0.1217275183776644, 0.12172323713085627, 0.12171858543860864, 0.12171357232597577, 0.12170820635806362, 0.12170249567057527, 0.12169644799804033, 0.12169007069993196 … 1.0035226949710132, 0.5800829486605268, 0.002287510074190084, 0.007435527224834682, 0.9995345131932374, 0.9995238305653655, 0.146573802312664, 152640.08301367864, 12238.877065652541, -67.95940449801374]
[0.12133040242466495, 0.12132762337909783, 0.12132445313692856, 0.1213209021442985, 0.12131698030815043, 0.12131269703249513, 0.12130806125181635, 0.12130308146187388, 0.12129776574813804, 0.12129212181206553 … 1.003542653550216, 0.5816158836512224, 0.00227539728287464, 0.007422450753897355, 0.999541028486866, 0.999524689188347, 0.14689596042242734, 152640.09967526072, 12238.90251878437, -67.98521869700394]
⋮
[0.11570157469381276, 0.11570157857788242, 0.11570158247925415, 0.1157015863991012, 0.11570159033850397, 0.1157015942984567, 0.11570159827987357, 0.11570160228359407, 0.11570160631038823, 0.11570161036096109 … 1.003822951502743, 0.5859080968648788, 0.0021160362549558598, 0.007373498872505528, 0.9995812989050218, 0.9990203837225287, 0.15849723454794576, 152692.6913143602, 12186.05826673025, -68.08245408961771]
[0.11570548316055033, 0.11570548354944851, 0.11570548394672078, 0.11570548435267716, 0.1157054847676015, 0.11570548519175393, 0.11570548562537263, 0.11570548606867516, 0.11570548652186062, 0.11570548698511013 … 1.0038227545886, 0.5859348068064407, 0.0021158385041036448, 0.007373223783360072, 0.9995810074525405, 0.9994192445109599, 0.15850691570272984, 152692.4156913224, 12186.333422679514, -68.08311434730263]
[0.11570928411680412, 0.11570928093100091, 0.11570927788240758, 0.11570927496593246, 0.1157092721767786, 0.11570926951042446, 0.11570926696260568, 0.11570926452929865, 0.11570926220670523, 0.11570925999123852 … 1.0038225634535716, 0.5859637036554985, 0.002115623778432234, 0.007372804596170483, 0.9995809818466276, 0.9995452505784503, 0.15852218932461068, 152692.0899660807, 12186.659100015748, -68.08382472257246]
[0.11571290577526114, 0.11571290245053577, 0.11571289925799577, 0.11571289619265081, 0.11571289324978973, 0.11571289042496181, 0.11571288771395975, 0.11571288511280368, 0.1157128826177267, 0.11571288022516125 … 1.0038223783574196, 0.5859945172097851, 0.0021153872671605184, 0.007372404422837147, 0.9995812520242215, 0.9995742656069727, 0.1585386296776153, 152691.74363530107, 12187.005520232442, -68.08458948678185]
[0.1157171258033431, 0.11571712146640603, 0.11571711731465478, 0.1157171133412441, 0.11571710953971392, 0.1157171059039637, 0.11571710242822887, 0.11571709910705874, 0.11571709593529647, 0.11571709290806044 … 1.0038221585647649, 0.586034759403473, 0.00211509189899938, 0.007371968100154295, 0.9995820143714245, 0.9995804756002032, 0.15855982627537119, 152691.3085338657, 12187.440748549287, -68.08558017442597]
[0.11572169022706906, 0.11572168663711974, 0.11572168316012961, 0.11572167979231363, 0.11572167653009223, 0.11572167337007767, 0.11572167030906182, 0.11572166734400464, 0.11572166447202373, 0.11572166169038446 … 1.0038219284294474, 0.586071786969813, 0.0021148172940791583, 0.007371446784124117, 0.9995812895297641, 0.999581556007581, 0.1585796645027409, 152690.88830240598, 12187.860956642113, -68.08649922107871]
[0.1157253745250583, 0.11572537163022813, 0.11572536885941385, 0.11572536620807754, 0.11572536367192825, 0.11572536124690547, 0.11572535892916383, 0.11572535671505889, 0.11572535460113421, 0.11572535258410926 … 1.0038217377058587, 0.5861093172800101, 0.0021145348275201257, 0.00737102051507276, 0.9995817424815623, 0.999581570148838, 0.15859912115613667, 152690.48246872867, 12188.266926488974, -68.08742917422042]
[0.11573152328052567, 0.11573152051862035, 0.1157315178729057, 0.11573151533910139, 0.11573151291315914, 0.11573151059124726, 0.11573150836973636, 0.11573150624518627, 0.11573150421433386, 0.11573150227408177 … 1.003821422862468, 0.5861649700763885, 0.0021141198023521077, 0.007370346110320382, 0.9995817896550815, 0.9995816603414815, 0.1586281559527884, 152689.8691212533, 12188.880424950856, -68.08880550176323]
[0.11573495711197798, 0.1157349544327682, 0.11573495186411627, 0.11573494940197104, 0.11573494704250019, 0.11573494478207545, 0.11573494261725942, 0.11573494054479304, 0.11573493856158422, 0.11573493666469731 … 1.003821246482322, 0.5861957164355727, 0.0021138895265808643, 0.007369927278281768, 0.9995818765625492, 0.9995817253017426, 0.1586443831216739, 152689.52874543268, 12189.220868933515, -68.08956608800719]
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/runner/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/runner/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/runner/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/runner/work/camkii-cardiomyocyte-model/camkii-cardiomyocyte-model/.cache/docs/caf-exp.pdf"
This notebook was generated using Literate.jl.