/* * A Mathematical Model Of A Rabbit Sinoatrial Node Cell, 1994 * * Model Status * * This version of the model has been curated by Penny Noble and * is known to run in COR and PCEnv to replicate the published * results. Units have been checked and they are balanced. * * Model Structure * * ABSTRACT: A mathematical model for the electrophysiological * responses of a rabbit sinoatrial node cell that is based on * whole cell recordings from enzymatically isolated single pacemaker * cells at 37 degrees C has been developed. The ion channels, * Na(+)-K+ and Ca2+ pumps, and Na(+)-Ca2+ exchanger in the surface * membrane (sarcolemma) are described using equations for these * known currents in mammalian pacemaker cells. The extracellular * environment is treated as a diffusion-limited space, and the * myoplasm contains Ca(2+)-binding proteins (calmodulin and troponin). * Original features of this model include 1) new equations for * the hyperpolarization-activated inward current, 2) assessment * of the role of the transient-type Ca2+ current during pacemaker * depolarization, 3) inclusion of an Na+ current based on recent * experimental data, and 4) demonstration of the possible influence * of pump and exchanger currents and background currents on the * pacemaker rate. This model provides acceptable fits to voltage-clamp * and action potential data and can be used to seek biophysically * based explanations of the electrophysiological activity in the * rabbit sinoatrial node cell. * * The original paper reference is cited below: * * A mathematical model of a rabbit sinoatrial node cell, S.S. * Demir, J.W. Clark, C.R. Murphey and W.R. Giles, 1994, American * Journal of Physiology, 266, C832-C852. PubMed ID: 8166247 * * cell diagram of the Demir et al SAN model showing ionic currents, * pumps and exchangers within the sarcolemma * * [[Image file: demir_1994.png]] * * A schematic diagram describing the current flows across the * cell membrane that are captured in the Demir et al 1994 model * of the electrophysiological activity in a SA node cell. */ import nsrunit; unit conversion on; unit per_second=1 second^(-1); // unit millivolt predefined unit per_millivolt=1E3 kilogram^(-1)*meter^(-2)*second^3*ampere^1; unit per_millivolt_second=1E3 kilogram^(-1)*meter^(-2)*second^2*ampere^1; unit microS=1E-6 kilogram^(-1)*meter^(-2)*second^3*ampere^2; unit microF=1E-6 kilogram^(-1)*meter^(-2)*second^4*ampere^2; unit nanoA=1E-9 ampere^1; // unit millimolar predefined unit per_millimolar=1 meter^3*mole^(-1); unit per_millimolar_second=1 meter^3*second^(-1)*mole^(-1); unit millimolar_per_second=1 meter^(-3)*second^(-1)*mole^1; unit microS_per_millimolar=1E-6 kilogram^(-1)*meter^1*second^3*ampere^2*mole^(-1); unit nanoA_per_millimolar=1E-9 meter^3*ampere^1*mole^(-1); unit millimolar4=1 meter^(-12)*mole^4; unit joule_per_kilomole_kelvin=.001 kilogram^1*meter^2*second^(-2)*kelvin^(-1)*mole^(-1); unit coulomb_per_mole=1 second^1*ampere^1*mole^(-1); unit mul_per_second=1E-9 meter^3*second^(-1); unit microLitre=1E-9 meter^3; math main { realDomain time second; time.min=0; extern time.max; extern time.delta; real V(time) millivolt; when(time=time.min) V=-49.54105; real R joule_per_kilomole_kelvin; R=8314.472; real T kelvin; T=310; real F coulomb_per_mole; F=96485.3415; real Cm microF; Cm=5.5e-5; real i_Na(time) nanoA; real i_Ca_T(time) nanoA; real i_Ca_L(time) nanoA; real i_K(time) nanoA; real i_f(time) nanoA; real i_B(time) nanoA; real i_NaK(time) nanoA; real i_NaCa(time) nanoA; real i_Ca_P(time) nanoA; real P_Na mul_per_second; P_Na=0.00344; real E_Na(time) millivolt; real Na_c(time) millimolar; when(time=time.min) Na_c=139.9988; real m(time) dimensionless; when(time=time.min) m=0.250113; real h1(time) dimensionless; when(time=time.min) h1=0.001386897; real h2(time) dimensionless; when(time=time.min) h2=0.002065463; real m_infinity(time) dimensionless; real tau_m(time) second; real alpha_m(time) per_second; real beta_m(time) per_second; real h1_infinity(time) dimensionless; real h2_infinity(time) dimensionless; real tau_h1(time) second; real tau_h2(time) second; real alpha_h1(time) per_second; real beta_h1(time) per_second; real g_Ca_L microS; g_Ca_L=0.02115; real E_Ca_L millivolt; E_Ca_L=46.4; real d_L(time) dimensionless; when(time=time.min) d_L=0.002572773; real d_L_infinity(time) dimensionless; real f_L(time) dimensionless; when(time=time.min) f_L=0.98651; real alpha_d_L(time) per_second; real beta_d_L(time) per_second; real tau_d_L(time) second; real alpha_f_L(time) per_second; real beta_f_L(time) per_second; real f_L_infinity(time) dimensionless; real tau_f_L(time) second; real g_Ca_T microS; g_Ca_T=0.02521; real E_Ca_T millivolt; E_Ca_T=45; real d_T(time) dimensionless; when(time=time.min) d_T=0.02012114; real f_T(time) dimensionless; when(time=time.min) f_T=0.1945111; real alpha_d_T(time) per_second; real beta_d_T(time) per_second; real d_T_infinity(time) dimensionless; real tau_d_T(time) second; real alpha_f_T(time) per_second; real beta_f_T(time) per_second; real f_T_infinity(time) dimensionless; real tau_f_T(time) second; real g_K microS; real E_K(time) millivolt; real K_b millimolar; K_b=5.4; real P_a(time) dimensionless; when(time=time.min) P_a=0.02302278; real P_i(time) dimensionless; when(time=time.min) P_i=0.3777728; real tau_P_a(time) second; real P_a_infinity(time) dimensionless; real alpha_P_i(time) per_second; real beta_P_i(time) per_second; real i_B_Na(time) nanoA; real i_B_Ca(time) nanoA; real i_B_K(time) nanoA; real g_B_Na microS; g_B_Na=0.00016; real g_B_Ca microS; g_B_Ca=0.0000364; real g_B_K microS; g_B_K=0.0000694; real E_Ca(time) millivolt; real i_f_Na(time) nanoA; real i_f_K(time) nanoA; real g_f_Na microS; g_f_Na=0.0067478; real g_f_K microS; g_f_K=0.0128821; real y(time) dimensionless; when(time=time.min) y=0.09227776; real y_infinity(time) dimensionless; real tau_y(time) second; real K_m_Na millimolar; K_m_Na=5.46; real K_m_K millimolar; K_m_K=0.621; real i_NaK_max nanoA; i_NaK_max=0.2192; real Na_i(time) millimolar; when(time=time.min) Na_i=9.701621; real K_c(time) millimolar; when(time=time.min) K_c=5.389014; real i_Ca_P_max nanoA; i_Ca_P_max=0.02869; real Ca_i(time) millimolar; when(time=time.min) Ca_i=3.787018e-4; real K_NaCa nanoA; K_NaCa=0.00001248; real d_NaCa dimensionless; d_NaCa=0.0001; real gamma dimensionless; gamma=0.5; real Ca_c(time) millimolar; when(time=time.min) Ca_c=2.00474; real K_i(time) millimolar; when(time=time.min) K_i=1.407347e2; real Ca_Calmod(time) dimensionless; when(time=time.min) Ca_Calmod=0.1411678; real Ca_Trop(time) dimensionless; when(time=time.min) Ca_Trop=0.07331396; real Ca_Mg_Trop(time) dimensionless; when(time=time.min) Ca_Mg_Trop=0.7618549; real Mg_Mg_Trop(time) dimensionless; when(time=time.min) Mg_Mg_Trop=0.2097049; real phi_C(time) per_second; real phi_TC(time) per_second; real phi_TMgC(time) per_second; real phi_TMgM(time) per_second; real phi_B(time) millimolar_per_second; real Mg_i millimolar; Mg_i=2.5; real F_C(time) millimolar_per_second; real F_TC(time) millimolar_per_second; real F_TMgC(time) millimolar_per_second; real Vol microLitre; Vol=3.497e-6; real V_i microLitre; real i_up(time) nanoA; real i_rel(time) nanoA; real Na_b millimolar; Na_b=140; real Ca_b millimolar; Ca_b=2; real V_c microLitre; real tau_p second; tau_p=0.01; real i_tr(time) nanoA; real Ca_up(time) millimolar; when(time=time.min) Ca_up=16.95311; real Ca_rel(time) millimolar; when(time=time.min) Ca_rel=16.85024; real alpha_up nanoA; alpha_up=0.08; real beta_up nanoA; beta_up=0.072; real alpha_rel nanoA_per_millimolar; alpha_rel=0.5; real K1 dimensionless; real K2(time) millimolar; real k_cyca millimolar; k_cyca=0.00005; real k_xcs dimensionless; k_xcs=0.9; real k_SRCa millimolar; k_SRCa=22; real k_rel millimolar; k_rel=0.004; real r_act(time) per_second; real r_inact(time) per_second; real Ca_Calse(time) dimensionless; when(time=time.min) Ca_Calse=0.9528726; real phi_Calse(time) per_second; real F1(time) dimensionless; when(time=time.min) F1=0.1133251; real F2(time) dimensionless; when(time=time.min) F2=0.0007594214; real F3(time) dimensionless; when(time=time.min) F3=0.8859153; real V_up microLitre; real V_rel microLitre; // // V:time=((-1)*(i_Na+i_Ca_T+i_Ca_L+i_K+i_f+i_B+i_NaK+i_NaCa+i_Ca_P)/Cm); // i_Na=(P_Na*m^3*h1*h2*Na_c*V*F^2/(R*T)*(exp((V-E_Na)*F/(R*T))-1)/(exp(V*F/(R*T))-1)); // alpha_m=((-1)*(824 per_millivolt_second)*(V+(51.9 millivolt))/(exp((V+(51.9 millivolt))/((-1)*(8.9 millivolt)))-1)); beta_m=((32960 per_second)*exp((V+(51.9 millivolt))/((-1)*(8.9 millivolt)))); m_infinity=(alpha_m/(alpha_m+beta_m)); tau_m=(1/(alpha_m+beta_m)+(1.5E-5 second)); m:time=((m_infinity-m)/tau_m); // alpha_h1=((165 per_second)*exp((V+(101.3 millivolt))/((-1)*(12.6 millivolt)))); beta_h1=((12360 per_second)/(320*exp((V+(101.3 millivolt))/((-1)*(12.6 millivolt)))+1)); h1_infinity=(alpha_h1/(alpha_h1+beta_h1)); tau_h1=(1/(alpha_h1+beta_h1)); h2_infinity=h1_infinity; tau_h2=(20*tau_h1); h1:time=((h1_infinity-h1)/tau_h1); h2:time=((h2_infinity-h2)/tau_h2); // i_Ca_L=(g_Ca_L*(f_L*d_L+.095*d_L_infinity)*(V-E_Ca_L)); // alpha_d_L=((-1)*(28.39 per_millivolt_second)*(V+(35 millivolt))/(exp((V+(35 millivolt))/((-1)*(2.5 millivolt)))-1)+(-1)*(84.9 per_millivolt_second)*V/(exp((-1)*(.208 per_millivolt)*V)-1)); beta_d_L=((11.43 per_millivolt_second)*(V-(5 millivolt))/(exp((.4 per_millivolt)*(V-(5 millivolt)))-1)); tau_d_L=(1/(alpha_d_L+beta_d_L)); d_L_infinity=(1/(1+exp((V+(14.1 millivolt))/((-1)*(6 millivolt))))); d_L:time=((d_L_infinity-d_L)/tau_d_L); // alpha_f_L=((3.75 per_millivolt_second)*(V+(28 millivolt))/(exp((V+(28 millivolt))/(4 millivolt))-1)); beta_f_L=((30 per_second)/(1+exp((V+(28 millivolt))/((-1)*(4 millivolt))))); tau_f_L=(1/(alpha_f_L+beta_f_L)); f_L_infinity=(1/(1+exp((V+(30 millivolt))/(5 millivolt)))); f_L:time=((f_L_infinity-f_L)/tau_f_L); // i_Ca_T=(g_Ca_T*d_T*f_T*(V-E_Ca_T)); // alpha_d_T=((1068 per_second)*exp((V+(26.3 millivolt))/(30 millivolt))); beta_d_T=((1068 per_second)*exp((V+(26.3 millivolt))/((-1)*(30 millivolt)))); tau_d_T=(1/(alpha_d_T+beta_d_T)); d_T_infinity=(1/(1+exp((V+(26.3 millivolt))/((-1)*(6 millivolt))))); d_T:time=((d_T_infinity-d_T)/tau_d_T); // alpha_f_T=((15.3 per_second)*exp((V+(61.7 millivolt))/((-1)*(83.3 millivolt)))); beta_f_T=((15 per_second)*exp((V+(61.7 millivolt))/(15.38 millivolt))); tau_f_T=(1/(alpha_f_T+beta_f_T)); f_T_infinity=(1/(1+exp((V+(61.7 millivolt))/(5.6 millivolt)))); f_T:time=((f_T_infinity-f_T)/tau_f_T); // g_K=((.00693 microS)*(K_b/(1 millimolar))^.59); i_K=(g_K*P_a*P_i*(V-E_K)); // P_a_infinity=(1/(1+exp((V+(5.1 millivolt))/((-1)*(7.4 millivolt))))); tau_P_a=((1 second)/(17*exp((.0398 per_millivolt)*V)+2.11*exp((-1)*(.051 per_millivolt)*V))); P_a:time=((P_a_infinity-P_a)/tau_P_a); // alpha_P_i=((100 per_second)*exp((-1)*(.0183 per_millivolt)*V)); beta_P_i=((656 per_second)*exp((.00942 per_millivolt)*V)); P_i:time=(alpha_P_i*(1-P_i)-beta_P_i*P_i); // i_B_Na=(g_B_Na*(V-E_Na)); i_B_Ca=(g_B_Ca*(V-E_Ca)); i_B_K=(g_B_K*(V-E_K)); i_B=(i_B_Na+i_B_Ca+i_B_K); // i_f_Na=(g_f_Na*y^2*(V-(75 millivolt))); i_f_K=(g_f_K*y^2*(V+(85 millivolt))); i_f=(i_f_Na+i_f_K); // y_infinity=(1/(1+exp((V+(72.2 millivolt))/(9 millivolt)))); tau_y=((1 second)/(1.6483*exp((V+(54.06 millivolt))/((-1)*(24.33 millivolt)))+14.01055/(.7+exp((V+(60 millivolt))/((-1)*(5.5 millivolt)))))); y:time=((y_infinity-y)/tau_y); // i_NaK=(i_NaK_max*(Na_i/(K_m_Na+Na_i))^3*(K_c/(K_m_K+K_c))^2*1.6/(1.5+exp((V+(60 millivolt))/((-1)*(40 millivolt))))); // i_Ca_P=(i_Ca_P_max*Ca_i/(Ca_i+(4E-4 millimolar))); // i_NaCa=(K_NaCa*(Na_i^3*Ca_c*exp((.03743 per_millivolt)*V*gamma)-Na_c^3*Ca_i*exp((.03743 per_millivolt)*V*(gamma-1)))/((1 millimolar4)+d_NaCa*(Ca_i*Na_c^3+Ca_c*Na_i^3))); // V_i=(.465*Vol); phi_C=((129000 per_millimolar_second)*Ca_i*(1-Ca_Calmod)-(307 per_second)*Ca_Calmod); Ca_Calmod:time=phi_C; phi_TC=((50500 per_millimolar_second)*Ca_i*(1-Ca_Trop)-(252 per_second)*Ca_Trop); Ca_Trop:time=phi_TC; phi_TMgC=((129000 per_millimolar_second)*Ca_i*(1-(Ca_Mg_Trop+Mg_Mg_Trop))-(4.25 per_second)*Ca_Mg_Trop); Ca_Mg_Trop:time=phi_TMgC; phi_TMgM=((1290 per_millimolar_second)*Mg_i*(1-(Ca_Mg_Trop+Mg_Mg_Trop))-(429 per_second)*Mg_Mg_Trop); Mg_Mg_Trop:time=phi_TMgM; F_C=((.09 millimolar)*phi_C); F_TC=((.031 millimolar)*phi_TC); F_TMgC=((.062 millimolar)*phi_TMgC); phi_B=(F_C+F_TC+F_TMgC); Na_i:time=((-1)*(3*i_NaK+3*i_NaCa+i_B_Na+i_f_Na+i_Na)/(F*V_i)); K_i:time=((2*i_NaK-(i_K+i_f_K+i_B_K))/(F*V_i)); Ca_i:time=((2*i_NaCa+i_rel-(i_Ca_L+i_Ca_T+i_Ca_P+i_B_Ca+i_up))/(2*V_i*F)-phi_B); // V_c=(.136*Vol); Na_c:time=((Na_b-Na_c)/tau_p+(i_Na+3*i_NaCa+3*i_NaK+i_B_Na+i_f_Na)/(F*V_c)); K_c:time=((K_b-K_c)/tau_p+((-1)*2*i_NaK+i_K+i_B_K+i_f_K)/(F*V_c)); Ca_c:time=((Ca_b-Ca_c)/tau_p+((-1)*2*i_NaCa+i_Ca_L+i_Ca_T+i_Ca_P+i_B_Ca)/(2*F*V_c)); // V_up=(.01166*V_i); V_rel=(.001296*V_i); r_act=((240 per_second)*exp((V-(40 millivolt))*(.08 per_millivolt))+(240 per_second)*(Ca_i/(Ca_i+k_rel))^4); r_inact=((40 per_second)+(240 per_second)*(Ca_i/(Ca_i+k_rel))^4); phi_Calse=((770 per_millimolar_second)*Ca_rel*(1-Ca_Calse)-(641 per_second)*Ca_Calse); Ca_Calse:time=phi_Calse; F1:time=((.96 per_second)*F3-r_act*F1); F2:time=(r_act*F1-r_inact*F2); F3:time=(r_inact*F2-(.96 per_second)*F3); K1=(k_cyca*k_xcs/k_SRCa); K2=(Ca_i+Ca_up*K1+k_cyca*k_xcs+k_cyca); i_up=((alpha_up*Ca_i-beta_up*Ca_up*K1)/K2); i_rel=(alpha_rel*(F2/(F2+.25))^2*Ca_rel); i_tr=((Ca_up-Ca_rel)*2*F*V_up/(.06418 second)); Ca_up:time=((i_up-i_tr)/(2*V_up*F)); Ca_rel:time=((i_tr-i_rel)/(2*V_rel*F)-(11.48 millimolar)*phi_Calse); // E_Na=(R*T/F*ln(Na_c/Na_i)); E_K=(R*T/F*ln(K_c/K_i)); E_Ca=(.5*R*T/F*ln(Ca_c/Ca_i)); }