/* * Model Status * * This model is known to run in OpenCell and COR to reproduce * the output shown in the publication. * * Model Structure * * ABSTRACT: Calcium (Ca2+)-induced Ca2+ release (CICR) in cardiac * myocytes exhibits high gain and is graded. These properties * result from local control of Ca2+ release. Existing local control * models of Ca2+ release in which interactions between L-Type * Ca2+ channels (LCCs) and ryanodine-sensitive Ca2+ release channels * (RyRs) are simulated stochastically are able to reconstruct * these properties, but only at high computational cost. Here * we present a general analytical approach for deriving simplified * models of local control of CICR, consisting of low-dimensional * systems of coupled ordinary differential equations, from these * more complex local control models in which LCC-RyR interactions * are simulated stochastically. The resulting model, referred * to as the coupled LCC-RyR gating model, successfully reproduces * a range of experimental data, including L-Type Ca2+ current * in response to voltage-clamp stimuli, inactivation of LCC current * with and without Ca2+ release from the sarcoplasmic reticulum, * voltage-dependence of excitation-contraction coupling gain, * graded release, and the force-frequency relationship. The model * does so with low computational cost. * * The original publication reference is cited below: * * A Simplified Local Control Model of Calcium-Induced Calcium * Release in Cardiac Ventricular Myocytes, R. Hinch, J.R. Greenstein, * A.J. Tanskanen, L. Xu, R.L. Winslow, 2004 Biophysical Journal, * 87, 3723-3736, PubMed ID: 15465866 * * state diagram * * [[Image file: hinch_2004.png]] * * Schematic diagram of the currents and the ion exchanges described * by the cardiac ventricular myocyte model. * * state diagram * * [[Image file: hinch_2004b.png]] * * The nine-state Markov model of the calcium release unit (CaRU). * In state yij, the LCC is in the state i and the RyR is in the * state j. */ import nsrunit; unit conversion on; unit per_ms=1E3 second^(-1); unit ms=.001 second^1; unit mV=.001 kilogram^1*meter^2*second^(-3)*ampere^(-1); unit mM=1 meter^(-3)*mole^1; unit mM_per_ms=1E3 meter^(-3)*second^(-1)*mole^1; unit per_mM_ms=1E3 meter^3*second^(-1)*mole^(-1); unit mM_per_mV_ms=1E6 kilogram^(-1)*meter^(-5)*second^2*ampere^1*mole^1; unit per_ms3=1E9 second^(-3); unit um2=1E-12 meter^2; unit um3=1E-18 meter^3; unit um3_per_ms=1E-15 meter^3*second^(-1); unit um3_mM_per_ms=1E-15 second^(-1)*mole^1; unit mJ_per_mole_K=.001 kilogram^1*meter^2*second^(-2)*kelvin^(-1)*mole^(-1); unit C_per_mole=1 second^1*ampere^1*mole^(-1); math main { realDomain time ms; time.min=0; extern time.max; extern time.delta; real V_myo um3; V_myo=25.84e3; real V_SR um3; V_SR=2.098e3; real A_cap um2; A_cap=1.534e4; real V(time) mV; real R mJ_per_mole_K; R=8314.5; real T kelvin; T=295; real F C_per_mole; F=96487; real FVRT(time) dimensionless; real FVRT_Ca(time) dimensionless; real g_D um3_per_ms; g_D=0.065; real J_R um3_per_ms; J_R=0.02; real J_L um3_per_ms; J_L=9.13e-4; real N dimensionless; N=50000; real Ca_i(time) mM; when(time=time.min) Ca_i=0.0001; real Ca_o mM; Ca_o=1; real Ca_SR(time) mM; when(time=time.min) Ca_SR=700e-3; real I_RyR(time) mM_per_ms; real I_LCC(time) mM_per_ms; real C_oc(time) mM; real C_co(time) mM; real V_L mV; V_L=-2; real del_VL mV; del_VL=7; real phi_L dimensionless; phi_L=2.35; real t_L ms; t_L=1; real tau_L ms; tau_L=650; real t_R ms; real tau_R ms; tau_R=2.43; real phi_R dimensionless; phi_R=0.05; real theta_R dimensionless; theta_R=0.012; real K_RyR mM; K_RyR=41e-3; real K_L mM; K_L=0.22e-3; real a dimensionless; a=0.0625; real b dimensionless; b=14; real c dimensionless; c=0.01; real d dimensionless; d=100; real expVL(time) dimensionless; real alpha_p(time) per_ms; real alpha_m per_ms; real beta_poc(time) per_ms; real beta_pcc(time) per_ms; real beta_m per_ms; real epsilon_pco(time) per_ms; real epsilon_pcc(time) per_ms; real epsilon_m(time) per_ms; real mu_poc(time) per_ms; real mu_pcc(time) per_ms; real mu_moc(time) per_ms; real mu_mcc(time) per_ms; real C_cc(time) mM; real C_oo(time) mM; real J_Loo(time) um3_mM_per_ms; real J_Loc(time) um3_mM_per_ms; real J_Rco(time) um3_mM_per_ms; real J_Roo(time) um3_mM_per_ms; real denom(time) per_ms3; real y_oc(time) dimensionless; real y_co(time) dimensionless; real y_oo(time) dimensionless; real y_cc(time) dimensionless; real y_ci(time) dimensionless; real y_oi(time) dimensionless; real y_ic(time) dimensionless; real y_io(time) dimensionless; real y_ii(time) dimensionless; real r_1(time) per_ms; real r_2(time) per_ms; real r_3(time) per_ms; real r_4(time) per_ms; real r_5(time) per_ms; real r_6(time) per_ms; real r_7(time) per_ms; real r_8(time) per_ms; real z_1(time) dimensionless; when(time=time.min) z_1=0.98859; real z_2(time) dimensionless; when(time=time.min) z_2=0.0087302; real z_3(time) dimensionless; when(time=time.min) z_3=0.0026566; real z_4(time) dimensionless; real J_R1(time) um3_mM_per_ms; real J_R3(time) um3_mM_per_ms; real J_L1(time) um3_mM_per_ms; real J_L2(time) um3_mM_per_ms; real K_mNa mM; K_mNa=87.5; real K_mCa mM; K_mCa=1.38; real eta dimensionless; eta=0.35; real k_sat dimensionless; k_sat=0.1; real g_NCX mM_per_ms; g_NCX=38.5e-3; real Na_i mM; Na_i=10; real Na_o mM; Na_o=140; real I_NaCa(time) mM_per_ms; real g_SERCA mM_per_ms; g_SERCA=0.45e-3; real K_SERCA mM; K_SERCA=0.5e-3; real I_SERCA(time) mM_per_ms; real g_pCa mM_per_ms; g_pCa=0.0035e-3; real K_mpCa mM; K_mpCa=0.5e-3; real I_pCa(time) mM_per_ms; real E_Ca(time) mV; real g_CaB mM_per_mV_ms; g_CaB=2.6875e-8; real I_CaB(time) mM_per_ms; real g_SRl per_ms; g_SRl=1.8951e-5; real I_SR(time) mM_per_ms; real k_m_TRPN per_ms; k_m_TRPN=0.04; real k_p_TRPN per_mM_ms; k_p_TRPN=0.04e3; real B_TRPN mM; B_TRPN=70e-3; real TRPN(time) mM; when(time=time.min) TRPN=0.0636364; real I_TRPN(time) mM_per_ms; real k_CMDN mM; k_CMDN=2.382e-3; real B_CMDN mM; B_CMDN=50e-3; real beta_CMDN(time) dimensionless; real CaSR_plot(time) mM; // // // FVRT=(F*V/(R*T)); FVRT_Ca=(2*FVRT); V=(if ((time>=(0 ms)) and (time<=(200 ms))) (0 mV) else (-1)*(80 mV)); // // expVL=exp((V-V_L)/del_VL); t_R=(1.17*t_L); alpha_p=(expVL/(t_L*(expVL+1))); alpha_m=(phi_L/t_L); beta_poc=(C_oc^2/(t_R*(C_oc^2+K_RyR^2))); beta_pcc=(Ca_i^2/(t_R*(Ca_i^2+K_RyR^2))); beta_m=(phi_R/t_R); epsilon_pco=(C_co*(expVL+a)/(tau_L*K_L*(expVL+1))); epsilon_pcc=(Ca_i*(expVL+a)/(tau_L*K_L*(expVL+1))); epsilon_m=(b*(expVL+a)/(tau_L*(b*expVL+a))); mu_poc=((C_oc^2+c*K_RyR^2)/(tau_R*(C_oc^2+K_RyR^2))); mu_pcc=((Ca_i^2+c*K_RyR^2)/(tau_R*(Ca_i^2+K_RyR^2))); mu_moc=(theta_R*d*(C_oc^2+c*K_RyR^2)/(tau_R*(d*C_oc^2+c*K_RyR^2))); mu_mcc=(theta_R*d*(Ca_i^2+c*K_RyR^2)/(tau_R*(d*Ca_i^2+c*K_RyR^2))); // C_cc=Ca_i; C_co=((Ca_i+J_R/g_D*Ca_SR)/(1+J_R/g_D)); C_oc=(if (abs(FVRT_Ca)>1E-9) (Ca_i+J_L/g_D*Ca_o*FVRT_Ca*exp((-1)*FVRT_Ca)/(1-exp((-1)*FVRT_Ca)))/(1+J_L/g_D*FVRT_Ca/(1-exp((-1)*FVRT_Ca))) else (Ca_i+J_L/g_D*Ca_o)/(1+J_L/g_D)); C_oo=(if (abs(FVRT_Ca)>1E-9) (Ca_i+J_R/g_D*Ca_SR+J_L/g_D*Ca_o*FVRT_Ca*exp((-1)*FVRT_Ca)/(1-exp((-1)*FVRT_Ca)))/(1+J_R/g_D+J_L/g_D*FVRT_Ca/(1-exp((-1)*FVRT_Ca))) else (Ca_i+J_R/g_D*Ca_SR+J_L/g_D*Ca_o)/(1+J_R/g_D+J_L/g_D)); // J_Rco=(J_R*(Ca_SR-Ca_i)/(1+J_R/g_D)); J_Roo=(if (abs(FVRT_Ca)>1E-5) J_R*(Ca_SR-Ca_i+J_L/g_D*FVRT_Ca/(1-exp((-1)*FVRT_Ca))*(Ca_SR-Ca_o*exp((-1)*FVRT_Ca)))/(1+J_R/g_D+J_L/g_D*FVRT_Ca/(1-exp((-1)*FVRT_Ca))) else J_R*(Ca_SR-Ca_i+J_L/g_D*1E-5/(1-exp((-1)*1E-5))*(Ca_SR-Ca_o*exp((-1)*1E-5)))/(1+J_R/g_D+J_L/g_D*1E-5/(1-exp((-1)*1E-5)))); J_Loc=(if (abs(FVRT_Ca)>1E-5) J_L*FVRT_Ca/(1-exp((-1)*FVRT_Ca))*(Ca_o*exp((-1)*FVRT_Ca)-Ca_i)/(1+J_L/g_D*FVRT_Ca/(1-exp((-1)*FVRT_Ca))) else J_L*1E-5/(1-exp((-1)*1E-5))*(Ca_o*exp((-1)*1E-5)-Ca_i)/(1+J_L/g_D*1E-5/(1-exp((-1)*1E-5)))); J_Loo=(if (abs(FVRT_Ca)>1E-5) J_L*FVRT_Ca/(1-exp((-1)*FVRT_Ca))*(Ca_o*exp((-1)*FVRT_Ca)-Ca_i+J_R/g_D*(Ca_o*exp((-1)*FVRT_Ca)-Ca_SR))/(1+J_R/g_D+J_L/g_D*FVRT_Ca/(1-exp(FVRT_Ca))) else J_L*1E-5/(1-exp((-1)*1E-5))*(Ca_o*exp((-1)*1E-5)-Ca_i+J_R/g_D*(Ca_o*exp((-1)*1E-5)-Ca_SR))/(1+J_R/g_D+J_L/g_D*1E-5/(1-exp((-1)*1E-5)))); // denom=((alpha_p+alpha_m)*((alpha_m+beta_m+beta_poc)*(beta_m+beta_pcc)+alpha_p*(beta_m+beta_poc))); y_oc=(alpha_p*beta_m*(alpha_p+alpha_m+beta_m+beta_pcc)/denom); y_co=(alpha_m*(beta_pcc*(alpha_m+beta_m+beta_poc)+beta_poc*alpha_p)/denom); y_oo=(alpha_p*(beta_poc*(alpha_p+beta_m+beta_pcc)+beta_pcc*alpha_m)/denom); y_cc=(alpha_m*beta_m*(alpha_m+alpha_p+beta_m+beta_poc)/denom); y_ci=(alpha_m/(alpha_p+alpha_m)); y_oi=(alpha_p/(alpha_p+alpha_m)); y_ic=(beta_m/(beta_pcc+beta_m)); y_io=(beta_pcc/(beta_pcc+beta_m)); y_ii=(1-y_oc-y_co-y_oo-y_cc-y_ci-y_ic-y_oi-y_io); // r_1=(y_oc*mu_poc+y_cc*mu_pcc); r_2=((alpha_p*mu_moc+alpha_m*mu_mcc)/(alpha_p+alpha_m)); r_3=(beta_m*mu_pcc/(beta_m+beta_pcc)); r_4=mu_mcc; r_5=(y_co*epsilon_pco+y_cc*epsilon_pcc); r_6=epsilon_m; r_7=(alpha_m*epsilon_pcc/(alpha_p+alpha_m)); r_8=epsilon_m; z_4=(1-z_1-z_2-z_3); z_1:time=((-1)*(r_1+r_5)*z_1+r_2*z_2+r_6*z_3); z_2:time=(r_1*z_1-(r_2+r_7)*z_2+r_8*z_4); z_3:time=(r_5*z_1-(r_6+r_3)*z_3+r_4*z_4); // J_R1=(y_oo*J_Roo+J_Rco*y_co); J_R3=(J_Rco*beta_pcc/(beta_m+beta_pcc)); I_RyR=((z_1*J_R1+z_3*J_R3)*N/V_myo); // J_L1=(J_Loo*y_oo+J_Loc*y_oc); J_L2=(J_Loc*alpha_p/(alpha_p+alpha_m)); I_LCC=((z_1*J_L1+z_2*J_L2)*N/V_myo); // I_NaCa=(g_NCX*(exp(eta*FVRT)*Na_i^3*Ca_o-exp((eta-1)*FVRT)*Na_o^3*Ca_i)/((Na_o^3+K_mNa^3)*(Ca_o+K_mCa)*(1+k_sat*exp((eta-1)*FVRT)))); // I_SERCA=(g_SERCA*Ca_i^2/(K_SERCA^2+Ca_i^2)); // I_pCa=(g_pCa*Ca_i/(K_mpCa+Ca_i)); // E_Ca=(R*T/(2*F)*ln(Ca_o/Ca_i)); I_CaB=(g_CaB*(E_Ca-V)); // I_SR=(g_SRl*(Ca_SR-Ca_i)); // I_TRPN=(k_m_TRPN*(B_TRPN-TRPN)-k_p_TRPN*TRPN*Ca_i); // beta_CMDN=((1+k_CMDN*B_CMDN/(k_CMDN+Ca_i)^2)^((-1)*1)); // TRPN:time=I_TRPN; Ca_i:time=(beta_CMDN*(I_LCC+I_RyR-I_SERCA+I_SR+I_NaCa-I_pCa+I_CaB+I_TRPN)); Ca_SR:time=(V_myo/V_SR*((-1)*I_RyR+I_SERCA-I_SR)); CaSR_plot=(Ca_SR*V_SR/V_myo); // }