/* * Regulation of Ca2+ and electrical alternans in cardiac myocytes: * role of CAMKII and repolarizing currents * * Model Status * * This CellML model is known to run in COR to recreate the results * in the published paper. The units have been checked and are * consistent. The model will also open in PCEnv but currently * will not run as the model produces NaNs. * * Model Structure * * ABSTRACT: Alternans of cardiac repolarization is associated * with arrhythmias and sudden death. At the cellular level, alternans * involves beat-to-beat oscillation of the action potential (AP) * and possibly Ca2+ transient (CaT). Because of experimental difficulty * in independently controlling the Ca2+ and electrical subsystems, * mathematical modeling provides additional insights into mechanisms * and causality. Pacing protocols were conducted in a canine ventricular * myocyte model with the following results: 1) CaT alternans results * from refractoriness of the sarcoplasmic reticulum Ca2+ release * system; alternation of the L-type calcium current has a negligible * effect; 2) CaT-AP coupling during late AP occurs through the * sodium-calcium exchanger and underlies AP duration (APD) alternans; * 3) increased Ca2+/calmodulin-dependent protein kinase II (CaMKII) * activity extends the range of CaT and APD alternans to slower * frequencies and increases alternans magnitude; its decrease * suppresses CaT and APD alternans, exerting an antiarrhythmic * effect; and 4) increase of the rapid delayed rectifier current * (IKr) also suppresses APD alternans but without suppressing * CaT alternans. Thus CaMKII inhibition eliminates APD alternans * by eliminating its cause (CaT alternans) while IKr enhancement * does so by weakening CaT-APD coupling. The simulations identify * combined CaMKII inhibition and IKr enhancement as a possible * antiarrhythmic intervention. * * The complete original paper reference is cited below: * * Regulation of Ca2+ and electrical alternans in cardiac myocytes: * role of CAMKII and repolarizing currents, Leonid M. Livshitz * and Yoram Rudy, 2007, American Journal of Physiology: Heart * and Circulatory Physiology, 292, H2854-H2866. (Full text and * PDF versions of this article are available to subscribers on * the American Journal of Physiology: Heart and Circulatory Physiology * website). PubMed ID: 17277017 * * state diagram * * [[Image file: livshitz_rudy_2007.png]] * * Schematic diagram of the currents and the ion exchanges described * by the ventricular myocyte model. */ import nsrunit; unit conversion on; unit m2u=.001 dimensionless; unit ms=.001 second^1; unit per_ms=1E3 second^(-1); unit uA_per_uF=1 kilogram^1*meter^2*second^(-4)*ampere^(-1); unit mS_per_uF=1E3 second^(-1); unit uL=1E-9 meter^3; unit mV=.001 kilogram^1*meter^2*second^(-3)*ampere^(-1); unit per_mV=1E3 kilogram^(-1)*meter^(-2)*second^3*ampere^1; unit uF=1E-6 kilogram^(-1)*meter^(-2)*second^4*ampere^2; unit cm=.01 meter^1; unit cm2=1E-4 meter^2; unit mJ_per_mole_K=.001 kilogram^1*meter^2*second^(-2)*kelvin^(-1)*mole^(-1); unit C_per_mole=1 second^1*ampere^1*mole^(-1); unit mM=1 meter^(-3)*mole^1; unit mM2=1 meter^(-6)*mole^2; unit mM3=1 meter^(-9)*mole^3; unit mM4=1 meter^(-12)*mole^4; unit mM_per_ms=1E3 meter^(-3)*second^(-1)*mole^1; unit mM_per_mV=1E3 kilogram^(-1)*meter^(-5)*second^3*ampere^1*mole^1; unit mM_per_mV_ms=1E6 kilogram^(-1)*meter^(-5)*second^2*ampere^1*mole^1; unit uF_per_cm2=.01 kilogram^(-1)*meter^(-4)*second^4*ampere^2; unit uF_mole_per_C=1E-6 kilogram^(-1)*meter^(-2)*second^3*ampere^1*mole^1; unit L_per_F_ms=1 kilogram^1*meter^5*second^(-5)*ampere^(-2); math main { realDomain time ms; time.min=0; extern time.max; extern time.delta; real F C_per_mole; F=96485; real R mJ_per_mole_K; R=8314; real Temp kelvin; Temp=310; real FonRT per_mV; real K_o mM; K_o=4.5; real Na_o mM; Na_o=140; real Ca_o mM; Ca_o=1.8; real V(time) mV; when(time=time.min) V=-89.4356034692784; real ilca(time) uA_per_uF; real icab(time) uA_per_uF; real ipca(time) uA_per_uF; real inaca(time) uA_per_uF; real icat(time) uA_per_uF; real ina(time) uA_per_uF; real inab(time) uA_per_uF; real ilcana(time) uA_per_uF; real inak(time) uA_per_uF; real ikr(time) uA_per_uF; real iks(time) uA_per_uF; real IK1(time) uA_per_uF; real ikp(time) uA_per_uF; real ilcak(time) uA_per_uF; real caiont(time) uA_per_uF; real naiont(time) uA_per_uF; real kiont(time) uA_per_uF; real l cm; l=0.01; real ra cm; ra=0.0011; real vcell uL; real ageo cm2; real Acap uF; real AF uF_mole_per_C; real vmyo uL; real vmito uL; real vsr uL; real vnsr uL; real vjsr uL; real vss uL; real i_Stim(time) uA_per_uF; real stim_offset ms; stim_offset=0; real stim_period ms; stim_period=400; real stim_duration ms; stim_duration=3; real stim_amplitude uA_per_uF; stim_amplitude=-15; real past(time) ms; real ENa(time) mV; real H(time) dimensionless; when(time=time.min) H=0.994401369032678; real m(time) dimensionless; when(time=time.min) m=0.000734780346592185; real J(time) dimensionless; when(time=time.min) J=0.996100688673679; real GNa mS_per_uF; GNa=16; real a(time) per_ms; real aH(time) per_ms; real bH(time) per_ms; real aj(time) per_ms; real bj(time) per_ms; real am(time) per_ms; real bm(time) per_ms; real Ca_i(time) mM; real Na_i(time) mM; when(time=time.min) Na_i=16.612739313555; real K_i(time) mM; when(time=time.min) K_i=139.730914103161; real d(time) dimensionless; when(time=time.min) d=3.2514786721066e-27; real f(time) dimensionless; when(time=time.min) f=0.997404948824816; real dss0(time) dimensionless; real taud(time) ms; real dss1(time) dimensionless; real dss(time) dimensionless; real fss(time) dimensionless; real tauf(time) ms; real gacai dimensionless; gacai=1; real gacao dimensionless; gacao=0.341; real kmca mM; kmca=0.0006; real pca L_per_F_ms; pca=0.00054; real pna L_per_F_ms; pna=6.75e-7; real ganai dimensionless; ganai=0.75; real ganao dimensionless; ganao=0.75; real pk L_per_F_ms; pk=1.93e-7; real gaki dimensionless; gaki=0.75; real gako dimensionless; gako=0.75; real ibarca(time) uA_per_uF; real ibarna(time) uA_per_uF; real ibark(time) uA_per_uF; real fca(time) dimensionless; real EK(time) mV; real GK1max mS_per_uF; GK1max=0.75; real GK1_ mS_per_uF; real ak1(time) per_ms; real bk1(time) per_ms; real gK1(time) mS_per_uF; real gkrmax mS_per_uF; gkrmax=0.02614; real xr(time) dimensionless; when(time=time.min) xr=0.000162194715543637; real r(time) dimensionless; real xrss(time) dimensionless; real tauxr(time) ms; real EKs(time) mV; real GKsmax mS_per_uF; GKsmax=0.433; real xs1(time) dimensionless; when(time=time.min) xs1=0.0285147332973946; real xs2(time) dimensionless; when(time=time.min) xs2=0.0764114040188678; real gks(time) mS_per_uF; real xss(time) dimensionless; real tauxs(time) ms; real kmnai mM; kmnai=10; real kmko mM; kmko=1.5; real ibarnak uA_per_uF; ibarnak=2.25; real fnak(time) dimensionless; real sigma dimensionless; real c1 uA_per_uF; c1=0.00025; real c2 dimensionless; c2=0.0001; real gammas dimensionless; gammas=0.15; real GKpmax mS_per_uF; GKpmax=0.00552; real ibarpca uA_per_uF; ibarpca=1.15; real kmpca mM; kmpca=0.0005; real gcab mS_per_uF; gcab=0.003016; real GNab mS_per_uF; GNab=0.004; real ECa(time) mV; real b(time) dimensionless; when(time=time.min) b=0.000927461915392873; real g(time) dimensionless; when(time=time.min) g=0.952834331760863; real gcat mS_per_uF; gcat=0.05; real bss(time) dimensionless; real taub(time) ms; real gss(time) dimensionless; real aa(time) dimensionless; real taug(time) ms; real prnak dimensionless; prnak=0.01833; real Ca_JSR_T(time) mM; when(time=time.min) Ca_JSR_T=7.87371650296567; real Rel(time) mM_per_ms; when(time=time.min) Rel=1.06874246141923e-23; real Rel_ss(time) mM_per_ms; real tau_Rel(time) ms; real K_Relss mM; K_Relss=1; real alpha_Rel mM_per_mV; real tau ms; tau=4.75; real kappa mM_per_mV_ms; kappa=0.125; real qn dimensionless; qn=9; real Ca_JSR_free(time) mM; real bbb(time) mM; real c(time) mM2; real kmcsqn mM; kmcsqn=0.8; real csqnbar mM; csqnbar=10; real Ca_NSR(time) mM; when(time=time.min) Ca_NSR=2.71518235696672; real kmup mM; kmup=0.00092; real iupbar mM_per_ms; iupbar=0.00875; real nsrbar mM; nsrbar=15; real iup(time) mM_per_ms; real ileak(time) mM_per_ms; real tautr ms; tautr=120; real itr(time) mM_per_ms; real Ca_T(time) mM; when(time=time.min) Ca_T=0.0257059808595638; real Over(time) dimensionless; when(time=time.min) Over=1e-12; real cmdnbar mM; cmdnbar=0.05; real trpnbar mM; trpnbar=0.07; real kmcmdn mM; kmcmdn=0.00238; real kmtrpn mM; kmtrpn=0.0005; real bmyo(time) mM; real cmyo(time) mM2; real dmyo(time) mM3; // FonRT=(F/Temp/R); // vcell=((1E3 m2u)*3.141592653589793*ra*ra*l); ageo=(2*3.141592653589793*ra*ra+2*3.141592653589793*ra*l); Acap=(ageo*(2 uF_per_cm2)); vmyo=(vcell*.68); vmito=(vcell*.24); vsr=(vcell*.06); vnsr=(vcell*.0552); vjsr=(vcell*.0048); vss=(vcell*.02); AF=(Acap/F); past=(floor(time/stim_period)*stim_period); i_Stim=(if (((time-past)>=stim_offset) and ((time-past)<=(stim_offset+stim_duration))) stim_amplitude else (0 uA_per_uF)); caiont=(ilca+icab+ipca-2*inaca+icat); naiont=(ina+inab+3*inaca+ilcana+3*inak); kiont=(ikr+iks+IK1+ikp+ilcak-2*inak+i_Stim); V:time=((-1)*(naiont+kiont+caiont)); // ina=(GNa*m*m*m*H*J*(V-ENa)); a=((1 per_ms)-(1 per_ms)/(1+exp((-1)*(V+(40 mV))/(.024 mV)))); aH=(a*.135*exp(((80 mV)+V)/((-1)*(6.8 mV)))); bH=(((1 per_ms)-a)/(.13*(1+exp((V+(10.66 mV))/((-1)*(11.1 mV)))))+a*(3.56*exp((.079 per_mV)*V)+3.1*1E5*exp((.35 per_mV)*V))); aj=(a*((-1)*127140.00000000001*exp((.2444 per_mV)*V)-3.4739999999999996E-5*exp((-1)*(.04391 per_mV)*V))*(1 per_mV)*(V+(37.78 mV))/(1+exp((.311 per_mV)*(V+(79.23 mV))))); bj=(((1 per_ms)-a)*.3*exp((-1)*(2.535E-7 per_mV)*V)/(1+exp((-1)*(.1 per_mV)*(V+(32 mV))))+a*.1212*exp((-1)*(.01052 per_mV)*V)/(1+exp((-1)*(.1378 per_mV)*(V+(40.14 mV))))); am=((.32 per_ms)*(1 per_mV)*(V+(47.13 mV))/(1-exp((-1)*(.1 per_mV)*(V+(47.13 mV))))); bm=((.08 per_ms)*exp((-1)*V/(11 mV))); H:time=(aH*(1-H)-bH*H); m:time=(am*(1-m)-bm*m); J:time=(aj*(1-J)-bj*J); // dss0=(1/(1+exp((-1)*(V+(10 mV))/(6.24 mV)))); taud=(dss0*(1 ms)*(1-exp((-1)*(V+(10 mV))/(6.24 mV)))/((.035 per_mV)*(V+(10 mV)))); dss1=(1/(1+exp((-1)*(V+(60 mV))/(.024 mV)))); dss=(dss0*dss1); fss=(1/(1+exp((V+(32 mV))/(8 mV)))+.6/(1+exp(((50 mV)-V)/(20 mV)))); tauf=((1 ms)/(.0197*exp((-1)*((.0337 per_mV)*(V+(10 mV)))^2)+.02)); ibarca=(pca*4*V*F*FonRT*(gacai*Ca_i*exp(2*V*FonRT)-gacao*Ca_o)/(exp(2*V*FonRT)-1)); ibarna=(pna*V*F*FonRT*(ganai*Na_i*exp(V*FonRT)-ganao*Na_o)/(exp(V*FonRT)-1)); ibark=(pk*V*F*FonRT*(gaki*K_i*exp(V*FonRT)-gako*K_o)/(exp(V*FonRT)-1)); fca=(1/(1+Ca_i/kmca)); ilca=(d*f*fca*ibarca); ilcana=(d*f*fca*ibarna); ilcak=(d*f*fca*ibark); d:time=((dss-d)/taud); f:time=((fss-f)/tauf); // GK1_=(GK1max*sqrt(K_o/(5.4 mM))); ak1=((1.02 per_ms)/(1+exp((.2385 per_mV)*(V-EK-(59.215 mV))))); bk1=(((.49124 per_ms)*exp((.08032 per_mV)*(V-EK+(5.476 mV)))+(1 per_ms)*exp((.06175 per_mV)*(V-EK-(594.31 mV))))/(1+exp((-1)*(.5143 per_mV)*(V-EK+(4.753 mV))))); gK1=(GK1_*ak1/(ak1+bk1)); IK1=(gK1*(V-EK)); // r=(1/(1+exp((V+(9 mV))/(22.4 mV)))); ikr=(gkrmax*sqrt(K_o/(5.4 mM))*xr*r*(V-EK)); xrss=(1/(1+exp((-1)*(V+(10.085 mV))/(4.25 mV)))); tauxr=((1 ms)/((.00138 per_mV)*(V+(14.2 mV))/(1-exp((-1)*(.123 per_mV)*(V+(14.2 mV))))+(6.1E-4 per_mV)*(V+(38.9 mV))/(exp((.145 per_mV)*(V+(38.9 mV)))-1))); xr:time=((xrss-xr)/tauxr); // gks=(GKsmax*(1+.6/(1+((3.7999999999999995E-5 mM)/Ca_i)^1.4))); xss=(1/(1+exp((-1)*(V-(1.5 mV))/(16.7 mV)))); tauxs=((1 ms)/((7.19E-5 per_mV)*(V+(30 mV))/(1-exp((-1)*(.148 per_mV)*(V+(30 mV))))+(1.31E-4 per_mV)*(V+(30 mV))/(exp((.0687 per_mV)*(V+(30 mV)))-1))); iks=(gks*xs1*xs2*(V-EKs)); xs1:time=((xss-xs1)/tauxs); xs2:time=((xss-xs2)/tauxs/4); // sigma=((exp(Na_o/(67.3 mM))-1)/7); fnak=(1/(1+.1245*exp((-1)*.1*V*FonRT)+.0365*sigma*exp((-1)*V*FonRT))); inak=(ibarnak*fnak/(1+(kmnai/Na_i)^2)/(1+kmko/K_o)); // inaca=(c1*exp((gammas-1)*V*FonRT)*(exp(V*FonRT)*Na_i^3*Ca_o-Na_o^3*Ca_i)/((1 mM4)+c2*exp((gammas-1)*V*FonRT)*(exp(V*FonRT)*Na_i^3*Ca_o+Na_o^3*Ca_i))); // ikp=(GKpmax*(V-EK)/(1+exp(((7.488 mV)-V)/(5.98 mV)))); // ipca=(ibarpca*Ca_i/(kmpca+Ca_i)); // icab=(gcab*(V-ln(Ca_o/Ca_i)/(2*FonRT))); // inab=(GNab*(V-ENa)); // icat=(gcat*b*b*g*(V-ECa)); bss=(1/(1+exp((-1)*(V+(14 mV))/(10.8 mV)))); taub=((3.7 ms)+(6.1 ms)/(1+exp((V+(25 mV))/(4.5 mV)))); gss=(1/(1+exp((V+(60 mV))/(5.6 mV)))); aa=(1-1/(1+exp((-1)*V/(.0024 mV)))); taug=(aa*(1 ms)*((-1)*(.875 per_mV)*V+12)+(12 ms)*(1-aa)); b:time=((bss-b)/taub); g:time=((gss-g)/taug); // ENa=(ln(Na_o/Na_i)/FonRT); ECa=(ln(Ca_o/Ca_i)/2/FonRT); EK=(ln(K_o/K_i)/FonRT); EKs=(ln((K_o+prnak*Na_o)/(K_i+prnak*Na_i))/FonRT); // alpha_Rel=(tau*kappa); bbb=(csqnbar+kmcsqn-Ca_JSR_T); c=(Ca_JSR_T*kmcsqn); Ca_JSR_free=((-1)*bbb/2+sqrt(bbb^2+4*c)/2); Rel_ss=(ilca*alpha_Rel/(1+(K_Relss/Ca_JSR_free)^qn)); tau_Rel=(tau/(1+(.0123 mM)/Ca_JSR_free)); Rel:time=((-1)*(Rel_ss+Rel)/tau_Rel); // iup=(iupbar*Ca_i/(Ca_i+kmup)); ileak=(iupbar*Ca_NSR/nsrbar); // itr=((Ca_NSR-Ca_JSR_free)/tautr); // Na_i:time=((-1)*naiont*AF/vmyo); // K_i:time=((-1)*kiont*AF/vmyo); // bmyo=(cmdnbar+trpnbar-Ca_T+kmtrpn+kmcmdn); cmyo=(kmcmdn*kmtrpn-Ca_T*(kmtrpn+kmcmdn)+trpnbar*kmcmdn+cmdnbar*kmtrpn); dmyo=((-1)*kmtrpn*kmcmdn*Ca_T); Ca_i=(2*sqrt(bmyo*bmyo-3*cmyo)/3*cos(acos((9*bmyo*cmyo-2*bmyo*bmyo*bmyo-27*dmyo)/(2*(bmyo*bmyo-3*cmyo)^1.5))/3)-bmyo/3); Over:time=(0 per_ms); Ca_T:time=((-1)*caiont*AF/(vmyo*2)+(ileak-iup)*vnsr/vmyo+Rel*vjsr/vmyo); Ca_NSR:time=(iup-itr*vjsr/vnsr-ileak); Ca_JSR_T:time=(itr-Rel); // // // }