/* * McAllister-Noble-Tsien Purkinje Fibre Model 1975 * * Model Status * * This is a code and units checked version of the model including * two variants - A and B - with different formulations for the * transient chloride current r gate. The kinetics for this gate * in Model B come from an extensive study by Fozzard and Hiraoka. * Results using model A are very dependent on initial conditions. * Model B has a notch which is less frequency labile than that * of model A. This is model B. The model runs in both OpenCell * and COR to replicate the published results. The units have been * checked and are consistent. * * Model Structure * * Following Denis Noble's 1962 model of cardiac action potentials * in Purkinje fibres, the next significant development in cardiac * membrane modelling occurred when R.E. McAllister, D. Noble and * R.W. Tsien (1975) published a paper which formulated new ionic * current equations based on new experimental data. The description * of the kinetics of the currents is still based on the Hodgkin-Huxley * formalism, but the currents themselves incorporate some significant * new changes, and the total ionic current is broken down into * nine discrete, individual ionic fluxes (see the figure below). * * The complete original paper reference is cited below: * * Reconstruction of the Electrical Activity of Cardiac Purkinje * Fibres, McAllister, R.E. Noble, D. and Tsien, R.W. 1975, Journal * of Physiology, 251, 1-59. PubMed ID: 1185607 * * cell diagram of the MNT model showing ionic currents across * the sarcoplasmic reticulum * * [[Image file: mcallister_noble_tsien_1975.png]] * * A schematic diagram describing the current flows across the * cell membrane that are captured in the MNT model. */ import nsrunit; unit conversion on; // unit millisecond predefined unit per_millisecond=1E3 second^(-1); // unit millivolt predefined unit per_millivolt=1E3 kilogram^(-1)*meter^(-2)*second^3*ampere^1; unit per_millivolt_millisecond=1E6 kilogram^(-1)*meter^(-2)*second^2*ampere^1; unit milliS_per_cm2=10 kilogram^(-1)*meter^(-4)*second^3*ampere^2; unit microF_per_cm2=.01 kilogram^(-1)*meter^(-4)*second^4*ampere^2; unit microA_per_cm2=.01 meter^(-2)*ampere^1; unit concentration_units=1 meter^(-3)*mole^1; math main { realDomain time millisecond; time.min=0; extern time.max; extern time.delta; real V(time) millivolt; when(time=time.min) V=-78.041367; real C microF_per_cm2; C=10; real i_Na(time) microA_per_cm2; real i_si(time) microA_per_cm2; real i_K2(time) microA_per_cm2; real i_x1(time) microA_per_cm2; real i_x2(time) microA_per_cm2; real i_qr(time) microA_per_cm2; real i_K1(time) microA_per_cm2; real i_Na_b(time) microA_per_cm2; real i_Cl_b(time) microA_per_cm2; real E_Na millivolt; E_Na=40; real g_Na milliS_per_cm2; g_Na=150; real m(time) dimensionless; when(time=time.min) m=0.02566853; real h(time) dimensionless; when(time=time.min) h=0.78656359; real alpha_m(time) per_millisecond; real beta_m(time) per_millisecond; real alpha_h(time) per_millisecond; real beta_h(time) per_millisecond; real g_si milliS_per_cm2; g_si=0.8; real g_si_ milliS_per_cm2; g_si_=0.04; real E_si millivolt; E_si=70; real d(time) dimensionless; when(time=time.min) d=0.00293135; real f(time) dimensionless; when(time=time.min) f=0.80873917; real d1(time) dimensionless; real alpha_d(time) per_millisecond; real beta_d(time) per_millisecond; real alpha_f(time) per_millisecond; real beta_f(time) per_millisecond; real I_K2(time) microA_per_cm2; real E_K millivolt; E_K=-110; real s(time) dimensionless; when(time=time.min) s=0.75473994; real alpha_s(time) per_millisecond; real beta_s(time) per_millisecond; real E_s millivolt; E_s=-52; real I_x1(time) microA_per_cm2; real x1(time) dimensionless; when(time=time.min) x1=0.02030289; real alpha_x1(time) per_millisecond; real beta_x1(time) per_millisecond; real I_x2(time) microA_per_cm2; real x2(time) dimensionless; when(time=time.min) x2=0.0176854; real alpha_x2(time) per_millisecond; real beta_x2(time) per_millisecond; real E_Cl millivolt; E_Cl=-70; real g_qr milliS_per_cm2; g_qr=2.5; real q(time) dimensionless; when(time=time.min) q=3.11285794; real r(time) dimensionless; when(time=time.min) r=0.13500116; real alpha_q(time) per_millisecond; real beta_q(time) per_millisecond; real alpha_r(time) per_millisecond; real beta_r(time) per_millisecond; real E_K1 millivolt; E_K1=-30; real g_Nab milliS_per_cm2; g_Nab=0.105; real g_Clb milliS_per_cm2; g_Clb=0.01; // // V:time=((-1)*(i_Na+i_si+i_K2+i_x1+i_x2+i_qr+i_K1+i_Na_b+i_Cl_b)/C); // i_Na=(g_Na*m^3*h*(V-E_Na)); // alpha_m=((1 per_millivolt_millisecond)*(V+(47 millivolt))/(1-exp((-1)*(V+(47 millivolt))/(10 millivolt)))); beta_m=((40 per_millisecond)*exp((-1)*(.056 per_millivolt)*(V+(72 millivolt)))); m:time=(alpha_m*(1-m)-beta_m*m); // alpha_h=((.0085 per_millisecond)*exp((-1)*(.184 per_millivolt)*(V+(71 millivolt)))); beta_h=((2.5 per_millisecond)/(exp((-1)*(.082 per_millivolt)*(V+(10 millivolt)))+1)); h:time=(alpha_h*(1-h)-beta_h*h); // i_si=(g_si*d*f*(V-E_si)+g_si_*d1*(V-E_si)); // alpha_d=((.002 per_millivolt_millisecond)*(V+(40 millivolt))/(1-exp((-1)*(.1 per_millivolt)*(V+(40 millivolt))))); beta_d=((.02 per_millisecond)*exp((-1)*(.0888 per_millivolt)*(V+(40 millivolt)))); d:time=(alpha_d*(1-d)-beta_d*d); // alpha_f=((9.87E-4 per_millisecond)*exp((-1)*(.04 per_millivolt)*(V+(60 millivolt)))); beta_f=((.02 per_millisecond)/(exp((-1)*(.087 per_millivolt)*(V+(26 millivolt)))+1)); f:time=(alpha_f*(1-f)-beta_f*f); // d1=(1/(1+exp((-1)*(.15 per_millivolt)*(V+(40 millivolt))))); // i_K2=(I_K2*s); I_K2=((2.8 microA_per_cm2)*(exp((V-E_K)/(25 millivolt))-1)/(exp((V+(60 millivolt))/(12.5 millivolt))+exp((V+(60 millivolt))/(25 millivolt)))); // alpha_s=((.001 per_millivolt_millisecond)*(V-E_s)/(1-exp((-1)*(.2 per_millivolt)*(V-E_s)))); beta_s=((5E-5 per_millisecond)*exp((-1)*(.067 per_millivolt)*(V-E_s))); s:time=(alpha_s*(1-s)-beta_s*s); // i_x1=(x1*I_x1); I_x1=((1.2 microA_per_cm2)*(exp((V+(95 millivolt))/(25 millivolt))-1)/exp((V+(45 millivolt))/(25 millivolt))); // alpha_x1=((5E-4 per_millisecond)*exp((V+(50 millivolt))/(12.1 millivolt))/(1+exp((V+(50 millivolt))/(17.5 millivolt)))); beta_x1=((.0013 per_millisecond)*exp((-1)*(V+(20 millivolt))/(16.67 millivolt))/(1+exp((-1)*(V+(20 millivolt))/(25 millivolt)))); x1:time=(alpha_x1*(1-x1)-beta_x1*x1); // i_x2=(x2*I_x2); I_x2=((25 microA_per_cm2)+(1 microA_per_cm2)*(.385 per_millivolt)*V); // alpha_x2=((1.27E-4 per_millisecond)*1/(1+exp((-1)*(V+(19 millivolt))/(5 millivolt)))); beta_x2=((3E-4 per_millisecond)*exp((-1)*(V+(20 millivolt))/(16.67 millivolt))/(1+exp((-1)*(V+(20 millivolt))/(25 millivolt)))); x2:time=(alpha_x2*(1-x2)-beta_x2*x2); // i_qr=(g_qr*q*r*(V-E_Cl)); // alpha_q=((.008 per_millivolt_millisecond)*V/(1-exp((-1)*(.1 per_millivolt)*V))); beta_q=((.08 per_millisecond)*exp((-1)*(.0888 per_millivolt)*V)); q:time=(alpha_q*(1-q)-beta_q*q); // alpha_r=((3.3E-5 per_millisecond)*exp((-1)*V/(17 millivolt))); beta_r=((.033 per_millisecond)/(exp((-1)*(V+(30 millivolt))/(8 millivolt))+1)); r:time=(alpha_r*(1-r)-beta_r*r); // i_K1=(I_K2/2.8+(.2 milliS_per_cm2)*(V-E_K1)/(1-exp((-1)*(V-E_K1)/(25 millivolt)))); // i_Na_b=(g_Nab*(V-E_Na)); // i_Cl_b=(g_Clb*(V-E_Cl)); }