/* * Model Status * * This model runs in OpenCell and COR and reproduce the published * results. The units have been checked and they are consistent. * * Model Structure * * ABSTRACT: We have developed a mathematical model of the rabbit * atrial myocyte and have used it in an examination of the ionic * basis of the atrial action potential. Available biophysical * data have been incorporated into the model to quantify the specific * ultrastructural morphology, intracellular ion buffering, and * time- and voltage-dependent currents and transport mechanisms * of the rabbit atrial cell. When possible, mathematical expressions * describing ionic currents identified in rabbit atrium are based * on whole cell voltage-clamp data from enzymatically isolated * rabbit atrial myocytes. This membrane model is coupled to equations * describing Na+, K+, and Ca2+ homeostasis, including the uptake * and release of Ca2+ by the sarcoplasmic reticulum and Ca2+ buffering. * The resulting formulation can accurately simulate the whole * cell voltage-clamp data on which it is based and provides fits * to a family of rabbit atrial cell action potentials obtained * at 35 degrees C over a range of stimulus rates (0.2-3.0 Hz). * The model is utilized to provide a qualitative prediction of * the intracellular Ca2+ concentration transient during the action * potential and to illustrate the interactions between membrane * currents that underlie repolarization in the rabbit atrial myocyte. * * schematic diagram of Linblad et al 1996 model * * [[Image file: linblad_1996.png]] * * A schematic representation of the Linblad et al 1996 model. * * The original paper reference is cited below: * * A model of the action potential and underlying membrane currents * in a rabbit atrial cell, D. S. Lindblad, C. R. Murphey, J. W. * Clark and W. R. Giles, 1996, American Journal of Physiology, * 271, H1666-H1696. PubMed ID: 8897964. */ 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 millimolar predefined unit per_millimolar_second=1 meter^3*second^(-1)*mole^(-1); unit per_millimolar_4=1 meter^12*mole^(-4); unit picoA_per_millimolar=1E-12 meter^3*ampere^1*mole^(-1); unit picoA_per_millimolar_4=1E-12 meter^12*ampere^1*mole^(-4); unit picoA=1E-12 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 nanolitre predefined unit nanolitre_per_second=1E-12 meter^3*second^(-1); unit millijoule_per_mole_kelvin=.001 kilogram^1*meter^2*second^(-2)*kelvin^(-1)*mole^(-1); unit coulomb_per_mole=1 second^1*ampere^1*mole^(-1); math main { realDomain time second; time.min=0; extern time.max; extern time.delta; real V(time) millivolt; when(time=time.min) V=-69.83663; real R millijoule_per_mole_kelvin; R=8314.472; real T kelvin; T=308; real F coulomb_per_mole; F=96485.3415; real Cm nanoF; Cm=0.00005; real i_Na(time) picoA; real i_Ca_L(time) picoA; real i_Ca_T(time) picoA; real i_to(time) picoA; real i_K1(time) picoA; real i_Kr(time) picoA; real i_Ks(time) picoA; real i_B_Na(time) picoA; real i_B_Ca(time) picoA; real i_B_Cl(time) picoA; real i_p(time) picoA; real i_CaP(time) picoA; real i_NaCa(time) picoA; real i_Stim(time) picoA; real stim_start second; stim_start=0.1; real stim_end second; stim_end=100000; real stim_period second; stim_period=1; real stim_duration second; stim_duration=0.0008; real stim_amplitude picoA; stim_amplitude=-2; real E_Na(time) millivolt; real P_Na nanolitre_per_second; P_Na=0.0000014; real Na_c millimolar; Na_c=140; real Na_i(time) millimolar; when(time=time.min) Na_i=8.4; real m(time) dimensionless; when(time=time.min) m=0.01309; real h1(time) dimensionless; when(time=time.min) h1=0.706; real h2(time) dimensionless; when(time=time.min) h2=0.61493; real E0_m(time) millivolt; 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 h_infinity(time) dimensionless; real tau_h1(time) second; real tau_h2(time) second; real g_Ca_L nanoS; g_Ca_L=0.004; real E_Ca_app millivolt; E_Ca_app=60; real d_prime(time) dimensionless; real d_L(time) dimensionless; when(time=time.min) d_L=3e-5; real f_L(time) dimensionless; when(time=time.min) f_L=0.99981; real E0_alpha_d_L(time) millivolt; real E0_beta_d_L(time) millivolt; real alpha_d_L(time) per_second; real beta_d_L(time) per_second; real d_L_infinity(time) dimensionless; real tau_d_L(time) second; real E0_f_L(time) millivolt; real alpha_f_L(time) per_second; real beta_f_L(time) per_second; real f_L_infinity(time) dimensionless; real x_f(time) dimensionless; real tau_f_L(time) second; real g_Ca_T nanoS; g_Ca_T=0.006; real E_Ca_T millivolt; E_Ca_T=38; real d_T(time) dimensionless; when(time=time.min) d_T=4.6e-4; real f_T(time) dimensionless; when(time=time.min) f_T=0.30752; real E0_d_T(time) millivolt; 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 E0_f_T(time) millivolt; 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 E_K(time) millivolt; real g_to nanoS; g_to=0.050002; real K_c millimolar; K_c=5; real K_i(time) millimolar; when(time=time.min) K_i=100; real r(time) dimensionless; when(time=time.min) r=6e-5; real s1(time) dimensionless; when(time=time.min) s1=0.5753; real s2(time) dimensionless; when(time=time.min) s2=0.39871; real s3(time) dimensionless; when(time=time.min) s3=0.57363; real alpha_r(time) per_second; real beta_r(time) per_second; real tau_r(time) second; real r_infinity(time) dimensionless; real tau_s1(time) second; real s1_infinity(time) dimensionless; real tau_s2(time) second; real s2_infinity(time) dimensionless; real tau_s3(time) second; real s3_infinity(time) dimensionless; real g_Ks nanoS; g_Ks=0.0025; real g_Kr nanoS; g_Kr=0.0035; real z(time) dimensionless; when(time=time.min) z=0.02032; real p_a(time) dimensionless; when(time=time.min) p_a=1.6e-4; real p_i(time) dimensionless; when(time=time.min) p_i=0.76898; real alpha_z(time) per_second; real beta_z(time) per_second; real tau_z(time) second; real z_infinity(time) dimensionless; real alpha_p_a(time) per_second; real beta_p_a(time) per_second; 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 tau_p_i(time) second; real p_i_infinity(time) dimensionless; real g_K1 nanoS; g_K1=0.005088; real KmK1 millimolar; KmK1=0.59; real steepK1 dimensionless; steepK1=1.393; real shiftK1 millivolt; shiftK1=-3.6; real g_B_Na nanoS; g_B_Na=6.4e-5; real g_B_Ca nanoS; g_B_Ca=3.1e-5; real g_B_Cl nanoS; g_B_Cl=1.2e-4; real E_Ca(time) millivolt; real E_Cl millivolt; real E_B_Cl millivolt; real Ca_c millimolar; Ca_c=2.5; real Ca_i(time) millimolar; when(time=time.min) Ca_i=7.305e-5; real Cl_c millimolar; Cl_c=132; real Cl_i millimolar; Cl_i=30; real k_NaK_K millimolar; k_NaK_K=1; real k_NaK_Na millimolar; k_NaK_Na=11; real i_NaK_max picoA; i_NaK_max=0.06441; real i_CaP_max picoA; i_CaP_max=0.009509; real k_CaP millimolar; k_CaP=2e-4; real k_NaCa picoA_per_millimolar_4; k_NaCa=2e-5; real d_NaCa per_millimolar_4; d_NaCa=3e-4; real gamma dimensionless; gamma=0.45; real Vol_i nanolitre; Vol_i=1.26e-5; real Vol_Ca nanolitre; Vol_Ca=5.884e-6; real i_up(time) picoA; real i_rel(time) picoA; real dOCdt(time) per_second; real dOTCdt(time) per_second; real dOTMgCdt(time) per_second; real O_C(time) dimensionless; when(time=time.min) O_C=0.02981; real O_TC(time) dimensionless; when(time=time.min) O_TC=0.01442; real O_TMgC(time) dimensionless; when(time=time.min) O_TMgC=0.23532; real O_TMgMg(time) dimensionless; when(time=time.min) O_TMgMg=0.67476; real Mg_i millimolar; Mg_i=2.5; real i_tr(time) picoA; real I_up_max picoA; I_up_max=2.8; real k_cyca millimolar; k_cyca=0.0003; real k_srca millimolar; k_srca=0.5; real k_xcs dimensionless; k_xcs=0.4; real alpha_rel picoA_per_millimolar; alpha_rel=200; real Ca_rel(time) millimolar; when(time=time.min) Ca_rel=0.59984; real Ca_up(time) millimolar; when(time=time.min) Ca_up=0.64913; real Vol_up nanolitre; Vol_up=3.969e-7; real Vol_rel nanolitre; Vol_rel=4.41e-8; real r_act(time) per_second; real r_inact(time) per_second; real O_Calse(time) dimensionless; when(time=time.min) O_Calse=0.41837; real F1(time) dimensionless; when(time=time.min) F1=0.21603; real F2(time) dimensionless; when(time=time.min) F2=0.00205; real F3(time) dimensionless; when(time=time.min) F3=0.68492; real tau_tr second; tau_tr=0.01; real k_rel millimolar; k_rel=0.0003; real k_F3 per_second; k_F3=0.815; // // i_Stim=(if (((time>=stim_start) and (time<=stim_end)) and ((time-stim_start-floor((time-stim_start)/stim_period)*stim_period)<=stim_duration)) stim_amplitude else (0 picoA)); V:time=((-1)*1/Cm*(i_Kr+i_Ks+i_Na+i_Ca_L+i_Ca_T+i_to+i_K1+i_B_Na+i_B_Ca+i_B_Cl+i_p+i_CaP+i_NaCa+i_Stim)); // E_Na=(R*T/F*ln(Na_c/Na_i)); i_Na=(P_Na*m^3*(.635*h1+.365*h2)*Na_c*V*F^2/(R*T)*(exp((V-E_Na)*F/(R*T))-1)/(exp(V*F/(R*T))-1)); // E0_m=(V+(44.4 millivolt)); alpha_m=((-1)*(460 per_millivolt_second)*E0_m/(exp(E0_m/((-1)*(12.673 millivolt)))-1)); beta_m=((18400 per_second)*exp(E0_m/((-1)*(12.673 millivolt)))); m:time=(alpha_m*(1-m)-beta_m*m); // alpha_h=((44.9 per_second)*exp((V+(66.9 millivolt))/((-1)*(5.57 millivolt)))); beta_h=((1491 per_second)/(1+323.3*exp((V+(94.6 millivolt))/((-1)*(12.9 millivolt))))); h_infinity=(alpha_h/(alpha_h+beta_h)); tau_h1=((.03 second)/(1+exp((V+(40 millivolt))/(6 millivolt)))+(3.5E-4 second)); h1:time=((h_infinity-h1)/tau_h1); // tau_h2=((.12 second)/(1+exp((V+(60 millivolt))/(2 millivolt)))+(.00295 second)); h2:time=((h_infinity-h2)/tau_h2); // d_prime=(1/(1+exp((V-(33 millivolt))/((-1)*(12 millivolt))))); i_Ca_L=(g_Ca_L*d_L*f_L*d_prime*(V-E_Ca_app)); // E0_alpha_d_L=(V+(35 millivolt)); E0_beta_d_L=(V-(5 millivolt)); alpha_d_L=((-1)*(16.72 per_millivolt_second)*E0_alpha_d_L/(exp(E0_alpha_d_L/((-1)*(2.5 millivolt)))-1)+(-1)*(50 per_millivolt_second)*V/(exp(V/((-1)*(4.808 millivolt)))-1)); beta_d_L=((4.48 per_millivolt_second)*E0_beta_d_L/(exp(E0_beta_d_L/(2.5 millivolt))-1)); d_L_infinity=(1/(1+exp((V+(.95 millivolt))/((-1)*(6.6 millivolt))))); tau_d_L=(1/(alpha_d_L+beta_d_L)); d_L:time=((d_L_infinity-d_L)/tau_d_L); // E0_f_L=(V+(28 millivolt)); alpha_f_L=((8.49 per_millivolt_second)*E0_f_L/(exp(E0_f_L/(4 millivolt))-1)); beta_f_L=((67.922 per_second)/(1+exp(E0_f_L/((-1)*(4 millivolt))))); f_L_infinity=(alpha_f_L/(alpha_f_L+beta_f_L)); x_f=((V+(37.427 millivolt))/(20.213 millivolt)); tau_f_L=((.211 second)*exp((-1)*x_f*x_f)+(.015 second)); 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)); // E0_d_T=(V+(23 millivolt)); alpha_d_T=((674.173 per_second)*exp(E0_d_T/(30 millivolt))); beta_d_T=((674.173 per_second)*exp(E0_d_T/((-1)*(30 millivolt)))); d_T_infinity=(1/(1+exp(E0_d_T/((-1)*(6.1 millivolt))))); tau_d_T=(1/(alpha_d_T+beta_d_T)); d_T:time=((d_T_infinity-d_T)/tau_d_T); // E0_f_T=(V+(75 millivolt)); alpha_f_T=((9.637 per_second)*exp(E0_f_T/((-1)*(83.333 millivolt)))); beta_f_T=((9.637 per_second)*exp(E0_f_T/(15.385 millivolt))); f_T_infinity=(alpha_f_T/(alpha_f_T+beta_f_T)); tau_f_T=(1/(alpha_f_T+beta_f_T)); f_T:time=((f_T_infinity-f_T)/tau_f_T); // E_K=(R*T/F*ln(K_c/K_i)); i_to=(g_to*r*(.59*s1^3+.41*s2^3)*(.6*s3^6+.4)*(V-E_K)); // alpha_r=((386.6 per_second)*exp(V/(12 millivolt))); beta_r=((8.011 per_second)*exp(V/((-1)*(7.2 millivolt)))); r_infinity=(1/(1+exp((V+(15 millivolt))/((-1)*(5.633 millivolt))))); tau_r=(1/(alpha_r+beta_r)+(4E-4 second)); r:time=((r_infinity-r)/tau_r); // s1_infinity=(1/(1+exp((V+(28.29 millivolt))/(7.06 millivolt)))); tau_s1=((.5466 second)/(1+exp((V+(32.8 millivolt))/(.1 millivolt)))+(.0204 second)); s1:time=((s1_infinity-s1)/tau_s1); // s2_infinity=(1/(1+exp((V+(28.29 millivolt))/(7.06 millivolt)))); tau_s2=((5.75 second)/(1+exp((V+(32.8 millivolt))/(.1 millivolt)))+(.45 second)/(1+exp((V-(13.54 millivolt))/((-1)*(13.97 millivolt))))); s2:time=((s2_infinity-s2)/tau_s2); // s3_infinity=((1/(1+exp((V+(50.67 millivolt))/(27.38 millivolt)))+.666)/1.666); tau_s3=((7.5 second)/(1+exp((V+(23 millivolt))/(.5 millivolt)))+(.5 second)); s3:time=((s3_infinity-s3)/tau_s3); // i_Ks=(g_Ks*z*(V-E_K)); i_Kr=(g_Kr*p_a*p_i*(V-E_K)); // alpha_z=((1.66 per_second)*exp(V/(69.452 millivolt))); beta_z=((.3 per_second)*exp(V/((-1)*(21.826 millivolt)))); z_infinity=(1/(1+exp((V-(.9 millivolt))/((-1)*(13.8 millivolt))))); tau_z=(1/(alpha_z+beta_z)+(.06 second)); z:time=((z_infinity-z)/tau_z); // alpha_p_a=((9 per_second)*exp(V/(25.371 millivolt))); beta_p_a=((1.3 per_second)*exp(V/((-1)*(13.026 millivolt)))); p_a_infinity=(1/(1+exp((V+(5.1 millivolt))/((-1)*(7.4 millivolt))))); tau_p_a=(1/(alpha_p_a+beta_p_a)); p_a:time=((p_a_infinity-p_a)/tau_p_a); // alpha_p_i=((100 per_second)*exp(V/((-1)*(54.645 millivolt)))); beta_p_i=((656 per_second)*exp(V/(106.157 millivolt))); p_i_infinity=(1/(1+exp((V+(47.3921 millivolt))/(18.6603 millivolt)))); tau_p_i=(1/(alpha_p_i+beta_p_i)); p_i:time=((p_i_infinity-p_i)/tau_p_i); // i_K1=(g_K1*(V-E_K)*(K_c/(K_c+KmK1))^3*1/(1+exp(steepK1*F*(V-E_K-shiftK1)/(R*T)))); // E_Ca=(R*T/(2*F)*ln(Ca_c/Ca_i)); E_Cl=(R*T/F*ln(Cl_i/Cl_c)); E_B_Cl=(E_Cl-.49*(E_Cl+(30.59 millivolt))); i_B_Na=(g_B_Na*(V-E_Na)); i_B_Ca=(g_B_Ca*(V-E_Ca)); i_B_Cl=(g_B_Cl*(V-E_B_Cl)*(1+exp((V-(E_Cl+(36.95 millivolt)))/(74.514 millivolt)))); // i_p=(i_NaK_max*K_c/(K_c+k_NaK_K)*Na_i^1.5/(Na_i^1.5+k_NaK_Na^1.5)*1.6/(1.5+exp((V+(60 millivolt))/((-1)*(40 millivolt))))); // i_CaP=(i_CaP_max*Ca_i/(Ca_i+k_CaP)); // i_NaCa=(k_NaCa*(Na_i^3*Ca_c*exp(gamma*F*V/(R*T))-Na_c^3*Ca_i*exp((gamma-1)*V*F/(R*T)))/(1+d_NaCa*(Na_c^3*Ca_i+Na_i^3*Ca_c)*(1+Ca_i/(.0069 millimolar)))); // Na_i:time=((-1)*(i_Na+i_B_Na+3*i_p+3*i_NaCa)/(Vol_i*F)); K_i:time=((-1)*(i_to+i_K1+i_Kr+i_Ks-2*i_p)/(Vol_i*F)); Ca_i:time=((-1)*(i_Ca_L+i_Ca_T+i_B_Ca+i_CaP-2*i_NaCa+i_up-i_rel)/(2*Vol_Ca*F)-((.08 millimolar)*dOTCdt+(.16 millimolar)*dOTMgCdt+(.045 millimolar)*dOCdt)); // dOCdt=((2E5 per_millimolar_second)*Ca_i*(1-O_C)-(476 per_second)*O_C); O_C:time=dOCdt; dOTCdt=((78400 per_millimolar_second)*Ca_i*(1-O_TC)-(392 per_second)*O_TC); O_TC:time=dOTCdt; dOTMgCdt=((2E5 per_millimolar_second)*Ca_i*(1-O_TMgC-O_TMgMg)-(6.6 per_second)*O_TMgC); O_TMgC:time=dOTMgCdt; O_TMgMg:time=((2E3 per_millimolar_second)*Mg_i*(1-O_TMgC-O_TMgMg)-(666 per_second)*O_TMgMg); // // O_Calse:time=((480 per_millimolar_second)*Ca_rel*(1-O_Calse)-(400 per_second)*O_Calse); Ca_rel:time=((i_tr-i_rel)/(2*Vol_rel*F)-(31 millimolar)*O_Calse:time); Ca_up:time=((i_up-i_tr)/(2*Vol_up*F)); F1:time=(k_F3*F3-r_act*F1); F2:time=(r_act*F1-r_inact*F2); F3:time=(F2*r_inact-k_F3*F3); r_act=((203.8 per_second)*exp((.08 per_millivolt)*(V-(40 millivolt)))+(203.8 per_second)*(Ca_i/(Ca_i+k_rel))^4); r_inact=((33.96 per_second)+(339.6 per_second)*(Ca_i/(Ca_i+k_rel))^4); i_up=(I_up_max*(Ca_i/k_cyca-k_xcs^2*Ca_up/k_srca)/((Ca_i+k_cyca)/k_cyca+k_xcs*(Ca_up+k_srca)/k_srca)); i_tr=((Ca_up-Ca_rel)*2*F*Vol_rel/tau_tr); i_rel=(alpha_rel*(F2/(F2+.25))^2*(Ca_rel-Ca_i)); }