diff --git a/Manifest.toml b/Manifest.toml index 63dd872..a69cd1d 100644 --- a/Manifest.toml +++ b/Manifest.toml @@ -854,9 +854,9 @@ version = "1.0.2" [[deps.HTTP]] deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "PrecompileTools", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] -git-tree-sha1 = "6c22309e9a356ac1ebc5c8a217045f9bae6f8d9a" +git-tree-sha1 = "627fcacdb7cb51dc67f557e1598cdffe4dda386d" uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" -version = "1.10.13" +version = "1.10.14" [[deps.HarfBuzz_jll]] deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "Graphite2_jll", "JLLWrappers", "Libdl", "Libffi_jll"] @@ -937,9 +937,9 @@ weakdeps = ["Dates", "Test"] InverseFunctionsTestExt = "Test" [[deps.InvertedIndices]] -git-tree-sha1 = "0dc7b50b8d436461be01300fd8cd45aa0274b038" +git-tree-sha1 = "6da3c4316095de0f5ee2ebd875df8721e7e0bdbe" uuid = "41ab1584-1d38-5bbf-9106-f11c6c58b48f" -version = "1.3.0" +version = "1.3.1" [[deps.IrrationalConstants]] git-tree-sha1 = "630b497eafcc20001bba38a4651b327dcfc491d2" @@ -1210,9 +1210,9 @@ version = "2.38.0" [[deps.LogExpFunctions]] deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"] -git-tree-sha1 = "a2d09619db4e765091ee5c6ffe8872849de0feea" +git-tree-sha1 = "13ca9e2586b89836fd20cccf56e57e2b9ae7f38f" uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" -version = "0.3.28" +version = "0.3.29" [deps.LogExpFunctions.extensions] LogExpFunctionsChainRulesCoreExt = "ChainRulesCore" @@ -1316,9 +1316,9 @@ version = "1.11.0" [[deps.ModelingToolkit]] deps = ["AbstractTrees", "ArrayInterface", "BlockArrays", "Combinatorics", "CommonSolve", "Compat", "ConstructionBase", "DataStructures", "DiffEqBase", "DiffEqCallbacks", "DiffEqNoiseProcess", "DiffRules", "Distributed", "Distributions", "DocStringExtensions", "DomainSets", "DynamicQuantities", "EnumX", "ExprTools", "Expronicon", "FindFirstFunctions", "ForwardDiff", "FunctionWrappers", "FunctionWrappersWrappers", "Graphs", "InteractiveUtils", "JuliaFormatter", "JumpProcesses", "Latexify", "Libdl", "LinearAlgebra", "MLStyle", "NaNMath", "NonlinearSolve", "OffsetArrays", "OrderedCollections", "PrecompileTools", "RecursiveArrayTools", "Reexport", "RuntimeGeneratedFunctions", "SCCNonlinearSolve", "SciMLBase", "SciMLStructures", "Serialization", "Setfield", "SimpleNonlinearSolve", "SparseArrays", "SpecialFunctions", "StaticArrays", "SymbolicIndexingInterface", "SymbolicUtils", "Symbolics", "URIs", "UnPack", "Unitful"] -git-tree-sha1 = "4194c3e88a4dd91526150a8b0fb8456eb4056279" +git-tree-sha1 = "d3fd8c745a20d1548652c3cdb1e2f0f03541cde0" uuid = "961ee093-0014-501f-94e3-6117800e7a78" -version = "9.56.0" +version = "9.58.0" [deps.ModelingToolkit.extensions] MTKBifurcationKitExt = "BifurcationKit" @@ -2094,9 +2094,9 @@ version = "1.2.1" [[deps.SentinelArrays]] deps = ["Dates", "Random"] -git-tree-sha1 = "d0553ce4031a081cc42387a9b9c8441b7d99f32d" +git-tree-sha1 = "712fb0231ee6f9120e005ccd56297abbc053e7e0" uuid = "91c51154-3ec4-41a3-a24f-3f23e20d615c" -version = "1.4.7" +version = "1.4.8" [[deps.Serialization]] uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" @@ -2206,9 +2206,9 @@ version = "0.3.9" [[deps.SpecialFunctions]] deps = ["IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] -git-tree-sha1 = "2f5d4697f21388cbe1ff299430dd169ef97d7e14" +git-tree-sha1 = "64cca0c26b4f31ba18f13f6c12af7c85f478cfde" uuid = "276daf66-3868-5448-9aa4-cd146d93841b" -version = "2.4.0" +version = "2.5.0" weakdeps = ["ChainRulesCore"] [deps.SpecialFunctions.extensions] diff --git a/docs/iso-sens.jl b/docs/iso-sens.jl index 385d237..15bb8ce 100644 --- a/docs/iso-sens.jl +++ b/docs/iso-sens.jl @@ -1,7 +1,7 @@ # # Sensitivity to ISO using ModelingToolkit using OrdinaryDiffEq -using SteadyStateDiffEq +using DiffEqCallbacks using Plots using LsqFit using CaMKIIModel @@ -13,23 +13,25 @@ Plots.default(lw=1.5) sys = get_bar_sys(ATP, ISO; simplify=true) #--- -prob = SteadyStateProblem(sys, []) -alg = DynamicSS(Rodas5P()) +tend = 5000second +prob = ODEProblem(sys, [], tend) +alg = Rodas5P() # Log scale for ISO concentration -iso = logrange(1e-4μM, 1μM, length=101) +iso = logrange(1e-4μM, 3μM, length=1001) #--- prob_func = (prob, i, repeat) -> begin remake(prob, p=[ISO => iso[i]]) end trajectories = length(iso) -sol = solve(prob, alg, abstol=1e-10, reltol=1e-10) ## warmup -sim = solve(EnsembleProblem(prob; prob_func, safetycopy=false), alg; trajectories, abstol=1e-10, reltol=1e-10) +callback = TerminateSteadyState(1e-10, 1e-10) +sol = solve(prob, alg; callback) ## warmup +sim = solve(EnsembleProblem(prob; prob_func, safetycopy=false), alg; trajectories, callback) #--- """Extract values from ensemble simulations by a symbol""" -extract(sim, k) = map(s -> s[k], sim) +extract(sim, k) = map(s -> s[k][end], sim) """Calculate Root Mean Square Error (RMSE)""" rmse(fit) = sqrt(sum(abs2, fit.resid) / length(fit.resid)) @@ -37,9 +39,16 @@ rmse(fit) = sqrt(sum(abs2, fit.resid) / length(fit.resid)) xopts = (xlims=(iso[begin], iso[end]), minorgrid=true, xscale=:log10, xlabel="ISO (μM)",) plot(iso, extract(sim, sys.cAMP); lab="cAMP", ylabel="Conc. (μM)", legend=:topleft, xopts...) +#--- +plot(iso, [extract(sim, sys.PKACI) extract(sim, sys.PKACII)], legend=:topleft, lab=["PKACI" "PKACII"]; xopts...) + +#--- +plot(iso, [extract(sim, sys.I1) extract(sim, sys.I1p) extract(sim, sys.I1p_PP1)], legend=:topleft, lab=["I1" "I1p" "I1p_PP1"]; xopts...) + #--- plot(iso, extract(sim, sys.PKACI / sys.RItot); lab="PKACI", ylabel="Activation fraction") -plot!(iso, extract(sim, sys.PKACII / sys.RIItot), lab="PKACII", legend=:topleft; xopts...) +plot!(iso, extract(sim, sys.PKACII / sys.RIItot), lab="PKACII") +plot!(iso, extract(sim, sys.PP1 / sys.PP1totBA), lab="PP1", legend=:topleft; xopts...) # ## Least-square fitting of PKACI activity @. model(x, p) = p[1] * x / (x + p[2]) + p[3] @@ -53,7 +62,7 @@ pkac1_coef = coef(pkac1_fit) #--- println("PKACI") println("Basal activity: ", pkac1_coef[3]) -println("Maximal activity: ", pkac1_coef[1] + pkac1_coef[3]) +println("Activated activity: ", pkac1_coef[1]) println("Michaelis constant: ", pkac1_coef[2], " μM") println("RMSE: ", rmse(pkac1_fit)) @@ -74,7 +83,7 @@ pkac2_coef = coef(pkac2_fit) #--- println("PKACII") println("Basal activity: ", pkac2_coef[3]) -println("Maximal activity: ", pkac2_coef[1] + pkac2_coef[3]) +println("Activated activity: ", pkac2_coef[1]) println("Michaelis constant: ", pkac2_coef[2], " μM") println("RMSE: ", rmse(pkac2_fit)) @@ -95,7 +104,7 @@ pp1_coef = coef(pp1_fit) #--- println("PP1") -println("Basal activity: ", pp1_coef[1] + pp1_coef[3]) +println("Repressible activity: ", pp1_coef[1]) println("Minimal activity: ", pp1_coef[3]) println("Repressive Michaelis constant: ", pp1_coef[2], " μM") println("RMSE: ", rmse(pp1_fit)) @@ -109,7 +118,7 @@ plot(p1, p2, layout=(2, 1), size=(600, 600)) # ## Least-square fitting of PLBp xdata = iso ydata = extract(sim, sys.PLBp / sys.PLBtotBA) -plot(xdata, ydata, title="PLBp activity", lab=false; xopts...) +plot(xdata, ydata, title="PLBp fraction", lab=false; xopts...) # First try: Hill function @. model_plb(x, p) = p[1] * hil(x, p[2], p[3]) + p[4] @@ -132,16 +141,16 @@ function plbp_analytic(iso) PLBtot = 106μM PKACItot = 1.18μM PP1tot = 0.89μM - k_PKA_PLB = 54Hz + k_PKA_PLB = 54Hz / μM Km_PKA_PLB = 21μM - k_PP1_PLB = 8.5Hz + k_PP1_PLB = 8.5Hz / μM Km_PP1_PLB = 7.0μM - PKACI_basal = 0.0831 ## basal activity - PKACI_activated = 0.25603 - PKACI_KM = 0.0144μM - PP1_basal = 0.82365 - PP1_activated = 0.1025 - PP1_KI = 0.008465μM + PKACI_basal = 0.0734 ## basal activity + PKACI_activated = 0.1995 + PKACI_KM = 0.0139μM + PP1_basal = 0.8927 + PP1_activated = 0.0492 + PP1_KI = 0.00637μM ## Solve for Vf * x / (x + k1) = Vr * (1 - x) / (1 - x + k2) PKACI = PKACItot * (PKACI_basal + PKACI_activated * hil(iso, PKACI_KM)) diff --git a/src/isoproterenol.jl b/src/isoproterenol.jl index 1170cc2..b2f8d12 100644 --- a/src/isoproterenol.jl +++ b/src/isoproterenol.jl @@ -1,32 +1,32 @@ "Beta-adrenergic system activated by isoproterenol" function get_bar_sys(ATP=5000μM, ISO=0μM; name=:bar_sys, simplify=false) @parameters begin - b1ARtot = 5.28e-3μM + b1ARtot = 5.28nM Gstot = 3.83μM - PDEtot = 22.85e-3μM - PKItot = 0.18μM - I1tot = 0.3μM - PP1totBA = 0.89μM - RItot = 1.18μM - RIItot = 0.118μM - ACtot = 70.57e-3μM - PKACII_LCCtotBA = 0.025μM - PKAIItot = 0.059μM - PKAII_KURtot = 0.025μM - PP1_KURtot = 0.025μM - LCCtotBA = 0.025μM + PDEtot = 22.85nM + PKItot = 180nM + I1tot = 300nM + PP1totBA = 890nM + RItot = 1180nM + RIItot = 118nM + ACtot = 70.57nM + PKACII_LCCtotBA = 25nM + PKAIItot = 59nM + PKAII_KURtot = 25nM + PP1_KURtot = 25nM + LCCtotBA = 25nM PLBtotBA = 106μM PLMtotBA = 48μM TnItotBA = 70μM - IKurtotBA = 0.025μM - RyRtotBA = 0.135μM # Total RyR content for the BAR module - PKAII_RyRtot = 0.034μM + IKurtotBA = 25nM + RyRtotBA = 135nM # Total RyR content for the BAR module + PKAII_RyRtot = 34nM kf_LR = 1 / μM / ms # forward rate for ISO binding to b1AR kr_LR = 285Hz # reverse rate for ISO binding to b1AR kf_LRG = 1 / μM / ms # forward rate for ISO:b1AR association with Gs kr_LRG = 62Hz # reverse rate for ISO:b1AR association with Gs kf_RG = 1 / μM / ms # forward rate for b1AR association with Gs - kr_RG = 33000Hz # reverse rate for b1AR association with Gs + kr_RG = 33/ms # reverse rate for b1AR association with Gs k_G_act = 16Hz # rate constant for Gs activation k_G_hyd = 0.8Hz # rate constant for G-protein hydrolysis k_G_reassoc = 1.21 / μM / ms # rate constant for G-protein reassociation @@ -54,44 +54,44 @@ function get_bar_sys(ATP=5000μM, ISO=0μM; name=:bar_sys, simplify=false) kr_RcAMPcAMP_C = 1 / μM / ms # rate constant for PKA R:cAMPcAMP binding to C kr_PKA_PKI = 0.2Hz # reverse rate for PKA inhibition by PKI epsilon = 10 # AKAP-mediated scaling factor - k_PKA_I1 = 60Hz # rate constant for I-1 phosphorylation by type 1 PKA + k_PKA_I1 = 60Hz / μM # rate constant for I-1 phosphorylation by type 1 PKA Km_PKA_I1 = 1.0μM # Km for I-1 phosphorylation by type 1 PKA Vmax_PP2A_I1 = 14Hz # Vmax for I-1 dephosphorylation by PP2A - Km_PP2A_I1 = 1.0μM # Km for I-1 dephosphorylation by PP2A - kr_PP1_I1 = 1.0Hz #Ki for PP1 inhibition by I-1 + Km_PP2A_I1 = 1μM # Km for I-1 dephosphorylation by PP2A + kr_PP1_I1 = 1 / ms # Ki for PP1 inhibition by I-1 kf_PP1_I1 = 1 / μM / ms # kf for PP1 inhibition by I-1 - k_PKA_PLB = 54Hz + k_PKA_PLB = 54Hz / μM Km_PKA_PLB = 21μM - k_PP1_PLB = 8.5Hz + k_PP1_PLB = 8.5Hz / μM Km_PP1_PLB = 7.0μM - k_PKA_PLM = 54Hz + k_PKA_PLM = 54Hz / μM Km_PKA_PLM = 21μM - k_PP1_PLM = 8.5Hz + k_PP1_PLM = 8.5Hz / μM Km_PP1_PLM = 7.0μM PP1_LCC = 0.025μM PP2A_LCC = 0.025μM - k_PKA_LCC = 54Hz + k_PKA_LCC = 54Hz / μM Km_PKA_LCC = 21μM - k_PP1_LCC = 8.52Hz + k_PP1_LCC = 8.52Hz / μM Km_PP1_LCC = 3μM - k_PP2A_LCC = 10.1Hz + k_PP2A_LCC = 10.1Hz / μM Km_PP2A_LCC = 3μM PP2A_TnI = 0.67μM - k_PKA_TnI = 54Hz + k_PKA_TnI = 54Hz / μM Km_PKA_TnI = 21μM - k_PP2A_TnI = 10.1Hz + k_PP2A_TnI = 10.1Hz / μM Km_PP2A_TnI = 4.1μM - k_pka_KUR = 54Hz + k_pka_KUR = 54Hz / μM Km_pka_KUR = 21μM - k_pp1_KUR = 8.52Hz + k_pp1_KUR = 8.52Hz / μM Km_pp1_KUR = 7μM - PP1_RyR = 0.034μM - PP2A_RyR = 0.034μM - kcat_pka_RyR = 54Hz + PP1_RyR = 34nM + PP2A_RyR = 34nM + kcat_pka_RyR = 54Hz / μM Km_pka_RyR = 21μM - kcat_pp1_RyR = 8.52Hz + kcat_pp1_RyR = 8.52Hz / μM Km_pp1_RyR = 7μM - kcat_pp2a_RyR = 10.1Hz + kcat_pp2a_RyR = 10.1Hz / μM Km_pp2a_RyR = 4.1μM end @@ -223,23 +223,31 @@ function get_bar_sys(ATP=5000μM, ISO=0μM; name=:bar_sys, simplify=false) add_rate!(rates, kf_PKA_PKI, [PKACI, PKI], kr_PKA_PKI, [PKACI_PKI]) # PKACI + PKI <--> PKACI_PKI add_rate!(rates, kf_PKA_PKI, [PKACII, PKI], kr_PKA_PKI, [PKACII_PKI]) # PKACII + PKI <--> PKACII_PKI # PKA modifications - v = k_PKA_I1 * PKACI * hil(I1, Km_PKA_I1) - Vmax_PP2A_I1 * hil(I1p, Km_PP2A_I1) - add_raw_rate!(rates, v, [I1], [I1p]) # I1 <=> I1p + vf = k_PKA_I1 * PKACI * hil(I1, Km_PKA_I1) + vr = Vmax_PP2A_I1 * hil(I1p, Km_PP2A_I1) + add_raw_rate!(rates, vf - vr, [I1], [I1p]) # I1 <=> I1p add_rate!(rates, kf_PP1_I1, [I1p, PP1], kr_PP1_I1, [I1p_PP1]) # I1p + PP1 <--> I1p_PP1 - v = k_PKA_PLB * PKACI * hil(PLB, Km_PKA_PLB) - k_PP1_PLB * PP1 * hil(PLBp, Km_PP1_PLB) - add_raw_rate!(rates, v, [PLB], [PLBp]) # PLB <=> PLBp - v = k_PKA_PLM * PKACI * hil(PLM, Km_PKA_PLM) - k_PP1_PLM * PP1 * hil(PLMp, Km_PP1_PLM) - add_raw_rate!(rates, v, [PLM], [PLMp]) # PLM <=> PLMp - v = k_PKA_TnI * PKACI * hil(TnI, Km_PKA_TnI) - k_PP2A_TnI * PP2A_TnI * hil(TnIp, Km_PP2A_TnI) - add_raw_rate!(rates, v, [TnI], [TnIp]) # TnI <=> TnIp - v = k_PKA_LCC * (PKACII_LCCtotBA / PKAIItot) * PKACII * hil(LCCa * epsilon, Km_PKA_LCC) - k_PP2A_LCC * PP2A_LCC * hil(LCCap * epsilon, Km_PP2A_LCC) - add_raw_rate!(rates, v, [LCCa], [LCCap]) # LCCa <=> LCCap - v = k_PKA_LCC * (PKACII_LCCtotBA / PKAIItot) * PKACII * hil(LCCb * epsilon, Km_PKA_LCC) - k_PP1_LCC * PP1_LCC * hil(LCCbp * epsilon, Km_PP1_LCC) - add_raw_rate!(rates, v, [LCCb], [LCCbp]) # LCCb <=> LCCbp - v = k_pka_KUR * (PKAII_KURtot / PKAIItot) * PKACII * hil(KURn * epsilon, Km_pka_KUR) - PP1_KURtot * k_pp1_KUR * hil(KURp * epsilon, Km_pp1_KUR) - add_raw_rate!(rates, v, [KURn], [KURp]) # KURn <=> KURp - v = kcat_pka_RyR * (PKAII_RyRtot / PKAIItot) * PKACII * hil(RyRn * epsilon, Km_pka_RyR) - kcat_pp1_RyR * PP1_RyR * hil(RyRp * epsilon, Km_pp1_RyR) - kcat_pp2a_RyR * PP2A_RyR * hil(RyRp * epsilon, Km_pp2a_RyR) - add_raw_rate!(rates, v, [RyRn], [RyRp]) # RyRn <=> RyRp + vf = k_PKA_PLB * PKACI * hil(PLB, Km_PKA_PLB) + vr = k_PP1_PLB * PP1 * hil(PLBp, Km_PP1_PLB) + add_raw_rate!(rates, vf - vr, [PLB], [PLBp]) # PLB <=> PLBp + vf = k_PKA_PLM * PKACI * hil(PLM, Km_PKA_PLM) + vr = k_PP1_PLM * PP1 * hil(PLMp, Km_PP1_PLM) + add_raw_rate!(rates, vf - vr, [PLM], [PLMp]) # PLM <=> PLMp + vf = k_PKA_TnI * PKACI * hil(TnI, Km_PKA_TnI) + vr = k_PP2A_TnI * PP2A_TnI * hil(TnIp, Km_PP2A_TnI) + add_raw_rate!(rates, vf - vr, [TnI], [TnIp]) # TnI <=> TnIp + vf = k_PKA_LCC * (PKACII_LCCtotBA / PKAIItot) * PKACII * hil(LCCa * epsilon, Km_PKA_LCC) + vr = k_PP2A_LCC * PP2A_LCC * hil(LCCap * epsilon, Km_PP2A_LCC) + add_raw_rate!(rates, vf - vr, [LCCa], [LCCap]) # LCCa <=> LCCap + vf = k_PKA_LCC * (PKACII_LCCtotBA / PKAIItot) * PKACII * hil(LCCb * epsilon, Km_PKA_LCC) + vr = k_PP1_LCC * PP1_LCC * hil(LCCbp * epsilon, Km_PP1_LCC) + add_raw_rate!(rates, vf - vr, [LCCb], [LCCbp]) # LCCb <=> LCCbp + vf = k_pka_KUR * (PKAII_KURtot / PKAIItot) * PKACII * hil(KURn * epsilon, Km_pka_KUR) + vr = k_pp1_KUR * PP1_KURtot * hil(KURp * epsilon, Km_pp1_KUR) + add_raw_rate!(rates, vf - vr, [KURn], [KURp]) # KURn <=> KURp + vf = kcat_pka_RyR * (PKAII_RyRtot / PKAIItot) * PKACII * hil(RyRn * epsilon, Km_pka_RyR) + vr = kcat_pp1_RyR * PP1_RyR * hil(RyRp * epsilon, Km_pp1_RyR) + kcat_pp2a_RyR * PP2A_RyR * hil(RyRp * epsilon, Km_pp2a_RyR) + add_raw_rate!(rates, vf - vr, [RyRn], [RyRp]) # RyRn <=> RyRp rateeqs = [D(s) ~ rates[s] for s in sts] @@ -253,64 +261,64 @@ end "Algebraic beta-adrenergic system." function get_bar_sys_reduced(ISO=0μM; name=:bar_sys) @parameters begin - PP1totBA = 0.89μM + PP1totBA = 890nM PKACItot = 1.18μM - PKACIItot = 0.118μM - PKACII_LCCtotBA = 0.025μM - PKAIItot = 0.059μM - PKAII_KURtot = 0.025μM - PP1_KURtot = 0.025μM - LCCtotBA = 0.025μM + PKACIItot = 118nM + PKACII_LCCtotBA = 25nM + PKAIItot = 59nM + PKAII_KURtot = 25nM + PP1_KURtot = 25nM + LCCtotBA = 25nM PLBtotBA = 106μM PLMtotBA = 48μM TnItotBA = 70μM - IKurtotBA = 0.025μM - RyRtotBA = 0.135μM # Total RyR content for the BAR module - PKAII_RyRtot = 0.034μM + IKurtotBA = 25nM + RyRtotBA = 135nM # Total RyR content for the BAR module + PKAII_RyRtot = 34nM epsilon = 10 - k_PKA_PLB = 54Hz + k_PKA_PLB = 54Hz / μM Km_PKA_PLB = 21μM - k_PP1_PLB = 8.5Hz + k_PP1_PLB = 8.5Hz / μM Km_PP1_PLB = 7.0μM - k_PKA_PLM = 54Hz + k_PKA_PLM = 54Hz / μM Km_PKA_PLM = 21μM - k_PP1_PLM = 8.5Hz + k_PP1_PLM = 8.5Hz / μM Km_PP1_PLM = 7.0μM PP1_LCC = 0.025μM PP2A_LCC = 0.025μM - k_PKA_LCC = 54Hz + k_PKA_LCC = 54Hz / μM Km_PKA_LCC = 21μM - k_PP1_LCC = 8.52Hz + k_PP1_LCC = 8.52Hz / μM Km_PP1_LCC = 3μM - k_PP2A_LCC = 10.1Hz + k_PP2A_LCC = 10.1Hz / μM Km_PP2A_LCC = 3μM PP2A_TnI = 0.67μM - k_PKA_TnI = 54Hz + k_PKA_TnI = 54Hz / μM Km_PKA_TnI = 21μM - k_PP2A_TnI = 10.1Hz + k_PP2A_TnI = 10.1Hz / μM Km_PP2A_TnI = 4.1μM - k_pka_KUR = 54Hz + k_pka_KUR = 54Hz / μM Km_pka_KUR = 21μM - k_pp1_KUR = 8.52Hz + k_pp1_KUR = 8.52Hz / μM Km_pp1_KUR = 7μM - PP1_RyR = 0.034μM - PP2A_RyR = 0.034μM - kcat_pka_RyR = 54Hz + PP1_RyR = 34nM + PP2A_RyR = 34nM + kcat_pka_RyR = 54Hz / μM Km_pka_RyR = 21μM - kcat_pp1_RyR = 8.52Hz + kcat_pp1_RyR = 8.52Hz / μM Km_pp1_RyR = 7μM - kcat_pp2a_RyR = 10.1Hz + kcat_pp2a_RyR = 10.1Hz / μM Km_pp2a_RyR = 4.1μM - ## Fitted PKACI, CII, and PP1 parameters - PKACI_basal = 0.0831 ## basal activity - PKACI_activated = 0.25603 - PKACI_KM = 0.0144μM - PKACII_basal = 0.2063 ## basal activity - PKACII_activated = 0.397 - PKACII_KM = 0.009755μM - PP1_basal = 0.82365 - PP1_activated = 0.1025 - PP1_KI = 0.008465μM + ## Fitted PKACI, PKACII, and PP1 parameters + PKACI_basal = 0.0734 ## basal activity + PKACI_activated = 0.1995 + PKACI_KM = 0.0139μM + PKACII_basal = 0.1840 ## basal activity + PKACII_activated = 0.3444 + PKACII_KM = 0.0103μM + PP1_basal = 0.8927 + PP1_activated = 0.0492 + PP1_KI = 0.00637μM end vs = @variables begin