/* * Optimal velocity and safety of discontinuous conduction through * the heterogeneous Purkinje-ventricular junction * * Model Status * * This CellML version of the model has been checked in both PCEnv * and COR and it runs to recreate the published results. The units * have been checked and they balance. We would like to thank the * original model author Oleg Aslanidi for his help in the final * stages of model curation. * * Model Structure * * ABSTRACT: Experimental evidence suggests that regional differences * in action potential (AP) morphology can provide a substrate * for initiation and maintenance of reentrant arrhythmias in the * right atrium (RA), but the relationships between the complex * electrophysiological and anatomical organization of the RA and * the genesis of reentry are unclear. In this study, a biophysically * detailed three-dimensional computer model of the right atrial * tissue was constructed to study the role of tissue heterogeneity * and anisotropy in arrhythmogenesis. The model of Lindblad et * al. for a rabbit atrial cell was modified to incorporate experimental * data on regional differences in several ionic currents (primarily, * I(Na), I(CaL), I(K1), I(to), and I(sus)) between the crista * terminalis and pectinate muscle cells. The modified model was * validated by its ability to reproduce the AP properties measured * experimentally. The anatomical model of the rabbit RA (including * tissue geometry and fiber orientation) was based on a recent * histological reconstruction. Simulations with the resultant * electrophysiologically and anatomically detailed three-dimensional * model show that complex organization of the RA tissue causes * breakdown of regular AP conduction patterns at high pacing rates * (>11.75 Hz): as the AP in the crista terminalis cells is longer, * and electrotonic coupling transverse to fibers of the crista * terminalis is weak, high-frequency pacing at the border between * the crista terminalis and pectinate muscles results in a unidirectional * conduction block toward the crista terminalis and generation * of reentry. Contributions of the tissue heterogeneity and anisotropy * to reentry initiation mechanisms are quantified by measuring * action potential duration (APD) gradients at the border between * the crista terminalis and pectinate muscles: the APD gradients * are high in areas where both heterogeneity and anisotropy are * high, such that intrinsic APD differences are not diminished * by electrotonic interactions. Thus, our detailed computer model * reconstructs complex electrical activity in the RA, and provides * new insights into the mechanisms of transition from focal atrial * tachycardia into reentry. * * The original paper reference is cited below: * * Mechanisms of transition from normal to reentrant electrical * activity in a model of rabbit atrial tissue: interaction of * tissue heterogeneity and anisotropy, Oleg V. Aslanidi, Mark * R. Boyett, Halina Dobrzynski, and Henggui Zhang, 2009, Biophysical * Journal, 96, 798-817. PubMed ID: 19186122 * * schematic diagram * * [[Image file: aslanidi_2009b.png]] * * A schematic diagram describing the atrial cell model. */ 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 CT dimensionless; CT=1; real PM dimensionless; PM=0; real V(time) millivolt; when(time=time.min) V=-80; real R millijoule_per_mole_kelvin; R=8314; real T kelvin; T=308; real F coulomb_per_mole; F=96487; 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_sus(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_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.01; real stim_end second; stim_end=100; real stim_period second; stim_period=0.5; real stim_duration second; stim_duration=0.0002; real stim_amplitude picoA; stim_amplitude=-20; 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=50; real d_prime(time) dimensionless; real d_L(time) dimensionless; when(time=time.min) d_L=0.00003; 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 E10(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 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=0.00046; 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(time) millimolar; when(time=time.min) K_c=5; real K_i(time) millimolar; when(time=time.min) K_i=100; real r(time) dimensionless; when(time=time.min) r=0.00006; 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=0.00016; 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.00508; 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 E_Ca(time) millivolt; real Ca_c millimolar; Ca_c=2.5; real Ca_i(time) millimolar; when(time=time.min) Ca_i=0.000071; 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.029108; real O_TC(time) dimensionless; when(time=time.min) O_TC=0.014071; real O_TMgC(time) dimensionless; when(time=time.min) O_TMgC=0.214036; real O_TMgMg(time) dimensionless; when(time=time.min) O_TMgMg=0.693565; real Mg_i millimolar; Mg_i=2.5; real Vol_c nanolitre; Vol_c=0.0000025; 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.726776; real Ca_up(time) millimolar; when(time=time.min) Ca_up=0.730866; real Vol_up nanolitre; Vol_up=3.969e-7; real Vol_rel nanolitre; Vol_rel=4.4e-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.465921; real F1(time) dimensionless; when(time=time.min) F1=0.288039; real F2(time) dimensionless; when(time=time.min) F2=0.002262; real F3(time) dimensionless; when(time=time.min) F3=0.612697; 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_sus+i_K1+i_B_Na+i_B_Ca+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)))+(1.5E-4 second)); h1:time=((h_infinity-h1)/tau_h1); // tau_h2=((.12 second)/(1+exp((V+(60 millivolt))/(2 millivolt)))+(4.5E-4 second)); h2:time=((h_infinity-h2)/tau_h2); // d_prime=(1/(1+exp((V-(23 millivolt))/((-1)*(12 millivolt))))); i_Ca_L=(if ((CT=1) and (PM=0)) 1.8*g_Ca_L*(d_L*f_L+d_prime)*(V-E_Ca_app) else if ((CT=0) and (PM=1)) 2.1*g_Ca_L*(d_L*f_L+d_prime)*(V-E_Ca_app) else g_Ca_L*(d_L*f_L+d_prime)*(V-E_Ca_app)); // E0_alpha_d_L=(V+(45 millivolt)); E0_beta_d_L=(V+(5 millivolt)); E10=(V+(10 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)*E10/(exp(E10/((-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((E10+(.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+(18 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)); tau_f_L=(1/(alpha_f_L+beta_f_L)); 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.3 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-(.3 millivolt))/((-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.3 millivolt)))); beta_f_T=((9.637 per_second)*exp(E0_f_T/(15.38 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=(if ((CT=1) and (PM=0)) .2*g_to*r*(.59*s1^3+.41*s2^3)*(.6*s3^6+.4)*(V-E_K) else if ((CT=0) and (PM=1)) .35*g_to*r*(.59*s1^3+.41*s2^3)*(.6*s3^6+.4)*(V-E_K) else g_to*r*(.59*s1^3+.41*s2^3)*(.6*s3^6+.4)*(V-E_K)); i_sus=(if ((CT=1) and (PM=0)) (.0014 nanoS)*(V+(70 millivolt)) else if ((CT=0) and (PM=1)) (.0024 nanoS)*(V+(70 millivolt)) else (.001 nanoS)*(V+(70 millivolt))); // 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=(if ((CT=1) and (PM=0)) 2*g_K1*(V-E_K)*(K_c/(K_c+KmK1))^3*1/(1+exp(steepK1*F*(V-E_K-shiftK1)/(R*T))) else if ((CT=0) and (PM=1)) 2.5*g_K1*(V-E_K)*(K_c/(K_c+KmK1))^3*1/(1+exp(steepK1*F*(V-E_K-shiftK1)/(R*T))) else 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)); i_B_Na=(if ((CT=1) and (PM=0)) (2E-5 nanoS)*(V-E_Na) else if ((CT=0) and (PM=1)) (3E-5 nanoS)*(V-E_Na) else g_B_Na*(V-E_Na)); i_B_Ca=(if ((CT=1) and (PM=0)) (2E-5 nanoS)*(V-E_Ca) else if ((CT=0) and (PM=1)) (3E-5 nanoS)*(V-E_Ca) else g_B_Ca*(V-E_Ca)); // 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))); // 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_sus+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); // K_c:time=((i_to+i_sus+i_K1+i_Kr+i_Ks-2*i_p)/(Vol_c*F)); // 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=((240 per_second)*exp((.08 per_millivolt)*(V-(20 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)); }