/* * A Single Cell Mathematical Model of the Ion Currents Underlying * Sinoatrial Node Pacemaker Activity * * Model Status * * This CellML model runs in COR and OpenCell to recreate the published * results. The units have been checked and they are consistent. * * Model Structure * * ABSTRACT: The ionic currents underlying autorhythmicity of the * mammalian sinoatrial node and their wider contribution to each * phase of the action potential have been investigated in this * study using a new single cell mathematical model. The new model * provides a review and update of existing formulations of sinoatrial * node membrane currents, derived from a wide range of electrophysiological * data available in the literature. Simulations of spontaneous * activity suggest that the dominant mechanism underlying pacemaker * depolarisation is the inward background Na+ current, ib,Na. * In contrast to previous models, the decay of the delayed rectifying * K+ current, iK, was insignificant during this phase. Despite * the presence of a pseudo-outward background current throughout * the pacemaker range of potentials (Na-K pump+leak currents), * the hyperpolarisation-activated current i(f) was not essential * to pacemaker activity. A closer inspection of the current-voltage * characteristics of the model revealed that the "instantaneous" * time-independent current was inward for holding potentials in * the pacemaker range, which rapidly became outward within 2 ms * due to the inactivation of the L-type Ca2+ current, iCa,L. This * suggests that reports in the literature in which the net background * current is outward throughout the pacemaker range of potentials * may be exaggerated. The magnitudes of the action potential overshoot * and the maximum diastolic potential were determined largely * by the reversal potentials of iCa,L and iK respectively. The * action potential was sustained by the incomplete deactivation * of iCa,L and the Na-Ca exchanger, iNaCa. Despite the incorporation * of "square-root" activation by [K]o of all K+ currents, the * model was unable to correctly simulate the response to elevated * [K]o. * * The original paper reference is cited below: * * Ion Currents Underlying Sinoatrial Node Pacemaker Activity: * A New Single Cell Mathematical Model, Socrates Dokos, Branko * Celler, and Nigel Lovell, 1996, Theoretical Journal of Biology * , 181, 245-272. PubMed ID: 8869126 * * cell diagram * * [[Image file: dokos_1996.png]] * * A schematic diagram of the Dokos et al. 1996 mathematical model * of the SA node cell. Sodium, calcium and potassium ions are * exchanged between the intracellular and extracellular environments * through channels, the sodium-potassium pump and the sodium-calcium * exchanger. Calcium is transferred between the cytosol and the * sarcoplasmic reticulum (SR), and between the local regions of * the SR. */ import nsrunit; unit conversion on; unit per_second=1 second^(-1); unit per_millimolar_second=1 meter^3*second^(-1)*mole^(-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 nanoS=1E-9 kilogram^(-1)*meter^(-2)*second^3*ampere^2; unit nanoF=1E-9 kilogram^(-1)*meter^(-2)*second^4*ampere^2; unit picoA_per_millimolar=1E-12 meter^3*ampere^1*mole^(-1); unit picoA=1E-12 ampere^1; unit mA_pA=1E9 dimensionless; // unit millimolar predefined 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 microlitre predefined unit litre_micrometre3=1E6 dimensionless; math main { realDomain time second; time.min=0; extern time.max; extern time.delta; real R joule_per_kilomole_kelvin; R=8314.472; real T kelvin; T=310; real F coulomb_per_mole; F=96485.3415; real E(time) millivolt; when(time=time.min) E=-64.9; real C nanoF; C=3.2e-5; real i_tot(time) picoA; real i_CaL(time) picoA; real i_CaT(time) picoA; real i_Na(time) picoA; real i_K(time) picoA; real i_f(time) picoA; real i_p(time) picoA; real i_NaCa(time) picoA; real i_bNa(time) picoA; real i_bK(time) picoA; real E_Ca(time) millivolt; real E_Na(time) millivolt; real E_K(time) millivolt; real Cai(time) millimolar; when(time=time.min) Cai=0.000034; real Cao(time) millimolar; when(time=time.min) Cao=2.0004; real Nai(time) millimolar; when(time=time.min) Nai=7.4994; real Nao(time) millimolar; when(time=time.min) Nao=139.9929; real Ki(time) millimolar; when(time=time.min) Ki=140.0073; real Ko(time) millimolar; when(time=time.min) Ko=5.4243; real g_CaL nanoS; g_CaL=0.4; real dL(time) dimensionless; when(time=time.min) dL=0.0001; real fL(time) dimensionless; when(time=time.min) fL=0.1505; real fL2(time) dimensionless; when(time=time.min) fL2=0.219; real dL_infinity(time) dimensionless; real tau_dL second; tau_dL=0.002; real fL_infinity(time) dimensionless; real tau_fL(time) second; real alpha_fL2 per_second; alpha_fL2=3; real beta_fL2 per_millimolar_second; beta_fL2=40000; real g_CaT nanoS; g_CaT=0.085; real dT(time) dimensionless; when(time=time.min) dT=0.001; real fT(time) dimensionless; when(time=time.min) fT=0.1328; real dT_infinity(time) dimensionless; real tau_dT(time) second; real fT_infinity(time) dimensionless; real tau_fT(time) second; real g_Na nanoS; g_Na=0.25; real m(time) dimensionless; when(time=time.min) m=0.0139; real h(time) dimensionless; when(time=time.min) h=0.0087; real alpha_m(time) per_second; real beta_m(time) per_second; real alpha_h(time) per_second; real beta_h(time) per_second; real i_KK(time) picoA; real i_KNa(time) picoA; real Kk picoA_per_millimolar; Kk=0.00026; real P_KNa dimensionless; P_KNa=0.035; real x(time) dimensionless; when(time=time.min) x=0.5682; real x_infinity(time) dimensionless; real tau_x(time) second; real i_fNa(time) picoA; real i_fK(time) picoA; real Kmf millimolar; Kmf=10.3; real g_fNa nanoS; g_fNa=0.0081; real g_fK nanoS; g_fK=0.0135; real y(time) dimensionless; when(time=time.min) y=0.0287; real alpha_y(time) per_second; real beta_y(time) per_second; real KmNa millimolar; KmNa=40; real KmK millimolar; KmK=1; real i_pmax picoA; i_pmax=0.226; real kNaCa picoA; kNaCa=4; real x1(time) dimensionless; real x2(time) dimensionless; real x3(time) dimensionless; real x4(time) dimensionless; real k41(time) dimensionless; real k34(time) dimensionless; real k23(time) dimensionless; real k21(time) dimensionless; real k32(time) dimensionless; real k43(time) dimensionless; real k12(time) dimensionless; real k14(time) dimensionless; real Qci dimensionless; Qci=0.1369; real Qn dimensionless; Qn=0.4315; real Qco dimensionless; Qco=0; real K3ni millimolar; K3ni=26.44; real Kci millimolar; Kci=0.0207; real K1ni millimolar; K1ni=395.3; real K2ni millimolar; K2ni=2.289; real Kcni millimolar; Kcni=26.44; real K3no millimolar; K3no=4.663; real K1no millimolar; K1no=1628; real K2no millimolar; K2no=561.4; real Kco millimolar; Kco=3.663; real do(time) dimensionless; real di(time) dimensionless; real g_Nab nanoS; g_Nab=0.00024; real KbK picoA_per_millimolar; KbK=0.00007; real i_up(time) picoA; real i_tr(time) picoA; real i_rel(time) picoA; real V_i microlitre; V_i=2.5e-6; real V_rel microlitre; real V_up microlitre; real i_up_max picoA; i_up_max=0.0212; real KmCaup millimolar; KmCaup=0.0005; real KmCarel millimolar; KmCarel=0.001; real tau_rel second; tau_rel=0.005; real tau_tr second; tau_tr=0.4; real Caup(time) millimolar; when(time=time.min) Caup=0.5832; real Carel(time) millimolar; when(time=time.min) Carel=0.1101; real V_e microlitre; real tau_b second; tau_b=0.1; real Nab millimolar; Nab=140; real Cab millimolar; Cab=2; real Kb millimolar; Kb=5.4; // // // i_tot=(i_CaL+i_CaT+i_Na+i_K+i_f+i_p+i_NaCa+i_bNa+i_bK); E:time=((-1)*i_tot/C); // E_Ca=(R*T/(2*F)*ln(Cao/Cai)); E_Na=(R*T/F*ln(Nao/Nai)); E_K=(R*T/F*ln(Ko/Ki)); // i_CaL=(g_CaL*dL*fL*fL2*(E-E_Ca+(75 millivolt))); // dL_infinity=(1/(1+exp((E+(6.6 millivolt))/((-1)*(6.6 millivolt))))); dL:time=((dL_infinity-dL)/tau_dL); // fL_infinity=(1/(1+exp((E+(25 millivolt))/(6 millivolt)))); tau_fL=((.031 second)+(1 second)/(1+exp((E+(37.6 millivolt))/(8.1 millivolt)))); fL:time=((fL_infinity-fL)/tau_fL); // fL2:time=(alpha_fL2*(1-fL2)-beta_fL2*Cai*fL2); // i_CaT=(g_CaT*dT*fT*(E-E_Ca+(75 millivolt))); // dT_infinity=(1/(1+exp((E+(23 millivolt))/((-1)*(6.1 millivolt))))); tau_dT=((6E-4 second)+(.0054 second)/(1+exp((.03 per_millivolt)*(E+(100 millivolt))))); dT:time=((dT_infinity-dT)/tau_dT); // fT_infinity=(1/(1+exp((E+(75 millivolt))/(6.6 millivolt)))); tau_fT=((.001 second)+(.04 second)/(1+exp((.08 per_millivolt)*(E+(65 millivolt))))); fT:time=((fT_infinity-fT)/tau_fT); // i_Na=(g_Na*m^3*h*(E-E_Na)); // alpha_m=((200 per_millivolt_second)*(E+(34.3 millivolt))/(1-exp((-1)*(.09 per_millivolt)*(E+(34.3 millivolt))))); beta_m=((8E3 per_second)*exp((-1)*(.15 per_millivolt)*(E+(56.2 millivolt)))); m:time=(alpha_m*(1-m)-beta_m*m); // alpha_h=((32.4 per_second)*exp((-1)*(.14 per_millivolt)*(E+(93.4 millivolt)))); beta_h=((709 per_second)/(1+4.2*exp((-1)*(.06 per_millivolt)*(E+(45.4 millivolt))))); h:time=(alpha_h*(1-h)-beta_h*h); // i_KK=(x*Kk*(Ko/(1 millimolar))^.59*(Ki-Ko*exp((-1)*E*F/(R*T)))); i_KNa=(x*Kk*P_KNa*(Ko/(1 millimolar))^.59*(Nai-Nao*exp((-1)*E*F/(R*T)))); i_K=(i_KK+i_KNa); // x_infinity=(1/(1+exp((E+(25.1 millivolt))/((-1)*(7.4 millivolt))))); tau_x=((1 second)/(17*exp((.0398 per_millivolt)*E)+.211*exp((-1)*(.051 per_millivolt)*E))); x:time=((x_infinity-x)/tau_x); // i_fNa=(y*Ko^1.83/(Ko^1.83+Kmf^1.83)*g_fNa*(E-E_Na)); i_fK=(y*Ko^1.83/(Ko^1.83+Kmf^1.83)*g_fK*(E-E_K)); i_f=(i_fK+i_fNa); // alpha_y=((.36 per_millivolt_second)*(E+(137.8 millivolt))/(exp((.066 per_millivolt)*(E+(137.8 millivolt)))-1)); beta_y=((.1 per_millivolt_second)*(E+(76.3 millivolt))/(1-exp((-1)*(.21 per_millivolt)*(E+(76.3 millivolt))))); y:time=(alpha_y*(1-y)-beta_y*y); // i_p=(i_pmax*Nai/(Nai+KmNa)*Ko/(Ko+KmK)*(1-((E-(40 millivolt))/(211 millivolt))^2)); // do=(1+Cao/Kco+Cao/Kco*exp(Qco*E*F/(R*T))+Nao/K1no+Nao^2/(K1no*K2no)+Nao^3/(K1no*K2no*K3no)); k32=exp(Qn*E*F/(2*R*T)); k23=((Nao^2/(K1no*K2no)+Nao^3/(K1no*K2no*K3no))*exp((-1)*Qn*E*F/(2*R*T))/do); k21=(Cao/Kco*exp((-1)*Qco*E*F/(R*T))/do); k34=(Nao/(K3no+Nao)); di=(1+Cai/Kci+Cai/Kci*exp((-1)*Qci*E*F/(R*T))+Cai*Nai/(Kci*Kcni)+Nai/K1ni+Nai^2/(K1ni*K2ni)+Nai^3/(K1ni*K2ni*K3ni)); k41=exp((-1)*Qn*E*F/(2*R*T)); k14=((Nai^2/(K1ni*K2ni)+Nai^3/(K1ni*K2ni*K3ni))*exp(Qn*E*F/(2*R*T))/di); k12=(Cai/Kci*exp((-1)*Qci*E*F/(R*T))/di); k43=(Nai/(K3ni+Nai)); x1=(k41*k34*(k23+k21)+k21*k32*(k43+k41)); x2=(k32*k43*(k14+k12)+k41*k12*(k34+k32)); x3=(k14*k43*(k23+k21)+k12*k23*(k43+k41)); x4=(k23*k34*(k14+k12)+k14*k21*(k34+k32)); i_NaCa=(kNaCa*(x2*k21-x1*k12)/(x1+x2+x3+x4)); // i_bNa=(g_Nab*(E-E_Na)); // i_bK=(KbK*(Ko/(1 millimolar))^.41*(Ki-Ko*exp((-1)*E*F/(R*T)))); // V_rel=(.006*V_i); V_up=(.014*V_i); i_up=(i_up_max*Cai^2/(Cai^2+KmCaup^2)); i_tr=(2*(1 litre_micrometre3)*V_rel*F/((1 mA_pA)*tau_tr)*Caup); i_rel=(2*(1 litre_micrometre3)*V_rel*F/((1 mA_pA)*tau_rel)*Carel*Cai^2/(Cai^2+KmCarel^2)); // V_e=(.2*V_i); Nai:time=((-1)*(1 mA_pA)*(i_bNa+i_fNa+i_Na+3*i_p+3*i_NaCa+i_KNa)/(F*(1 litre_micrometre3)*V_i)); Nao:time=((1 mA_pA)*(i_bNa+i_fNa+i_Na+3*i_p+3*i_NaCa+i_KNa)/(F*(1 litre_micrometre3)*V_e)+(Nab-Nao)/tau_b); Ki:time=((-1)*(1 mA_pA)*(i_KK+i_fK-2*i_p+i_bK)/(F*(1 litre_micrometre3)*V_i)); Ko:time=((1 mA_pA)*(i_KK+i_fK-2*i_p+i_bK)/(F*(1 litre_micrometre3)*V_e)+(Kb-Ko)/tau_b); Cai:time=((-1)*(1 mA_pA)*(i_CaL+i_CaT-2*i_NaCa+i_up+(-1)*i_rel)/(2*F*(1 litre_micrometre3)*V_i)); Cao:time=((1 mA_pA)*(i_CaL+i_CaT-2*i_NaCa)/(2*F*(1 litre_micrometre3)*V_e)+(Cab-Cao)/tau_b); Caup:time=((1 mA_pA)*(i_up-i_tr)/(2*(1 litre_micrometre3)*V_up*F)); Carel:time=((1 mA_pA)*(i_tr-i_rel)/(2*(1 litre_micrometre3)*V_rel*F)); }