/********************************************************************/
/* calcium units are mmole */
function cytpumpcomp (cytcomp, extracell,pumptype, ncyl, vmax, km, power, unit)
float vmax, km, unit
str cytcomp, pumptype, extracell
int ncyl
float area, pumprate
int cyl
for (cyl=1; cyl<=ncyl; cyl=cyl+1)
/* compute value of cytosolic pump from area */
area = {getfield {cytcomp}[{cyl}] SAout}
pumprate = vmax * area
/* create cytosolic mmpump */
create mmpump {cytcomp}[{cyl}]/{pumptype}
setfield ^ \
power {power} \
half_conc {km} \
max_rate {pumprate} \
units {unit}
addmsg {cytcomp}[{cyl}] {cytcomp}[{cyl}]/{pumptype} CONC Conc
addmsg {cytcomp}[{cyl}]/{pumptype} {cytcomp}[{cyl}] RXN0MOLES moles_out
/* create leak from extracellular space to cytoplasm, if not already created */
if (!{exists {cytcomp}[{cyl}]/cytleak})
create cicrflux {cytcomp}[{cyl}]/cytleak
setfield ^ power 1 maxflux 1 units {unit}
addmsg {cytcomp}[{cyl}] {cytcomp}[{cyl}]/cytleak CONC1 Conc
addmsg {extracell} {cytcomp}[{cyl}]/cytleak CONC2 Conc
addmsg {cytcomp}[{cyl}] {cytcomp}[{cyl}]/cytleak IP3R 1
addmsg {cytcomp}[{cyl}]/cytleak {cytcomp}[{cyl}] RXN0MOLES deltaflux1
end
end
end
/********************************************************************/
/* calcium units are mmole */
function ncxcomp (cacomp, vcomp, extracell, startcyl, endcyl, vmax, kmca)
str cacomp, vcomp, extracell
int startcyl, endcyl
float vmax, kmca
float pumprate, area
int cyl
for (cyl=startcyl; cyl<=endcyl; cyl=cyl+1)
/* compute value of cytosolic pump from area */
area = {getfield {cacomp}[{cyl}] SAout}
pumprate = {vmax} * area
/* create cytosolic ncx */
create ncx {cacomp}[{cyl}]/ncx
setfield ^ \
T 293 \
ncxtype 0 \
Na_msg 0 \
stoich 4 \
hill 1 \
Vunits 1e-3 \
Na_int 40 \
Na_ext 440 \
Kmca {kmca} \
Gbar {pumprate}
addmsg {cacomp}[{cyl}] {cacomp}[{cyl}]/ncx CAINT Conc
addmsg {extracell} {cacomp}[{cyl}]/ncx CAEXT Conc
addmsg {vcomp} {cacomp}[{cyl}]/ncx VM Vm
addmsg {cacomp}[{cyl}]/ncx {cacomp}[{cyl}] CURRENT valence I
addmsg {cacomp}[{cyl}]/ncx {vcomp} CHANNEL Gcurrent Vnaca
end
end
/********************************************************************/
function setcytpumpleak(cytpath, excell, ncyls, Vpmca, Kpmca, Vncx, Kncx)
str cytpath, excell
float Vpmca, Kpmca, Vncx, Kncx
int ncyls
float ncxrate, pmcarate
float pca, tca, Iflux
float leak1, leak2, leak, leakrate
float unit
float area, Ceq, Caext
int cyl
for (cyl=1; cyl<= ncyls; cyl=cyl+1)
/* first area and equilibrium calcium of compartment.*/
area = {getfield {cytpath}[{cyl}] SAout}
Ceq = {getfield {cytpath}[{cyl}] Cinit}
Caext = {getfield {excell} Cinit}
leak1 = 0
leak2 = 0
/* next, set value of pmca pump and ncx exchange */
pmcarate = Vpmca*{area}
if ({exists {cytpath}[{cyl}]/pmca})
setfield {cytpath}[{cyl}]/pmca max_rate {pmcarate} half_conc {Kpmca}
end
ncxrate = Vncx*{area}
if ({exists {cytpath}[{cyl}]/ncx})
setfield {cytpath}[{cyl}]/ncx Gbar {ncxrate} Kmca {Kncx}
end
if (cyl==1)
echo "IN setcytpumpleak" "Ceq=" {Ceq} "kpmca=" {Kpmca} "kncx=" {Kncx}
echo {cytpath}[{cyl}] "area="{area} "Vpmca="{pmcarate} "Vncx="{ncxrate}
end
/* reset will compute the resting values of the pump */
call {cytpath}[{cyl}]/pmca RESET
call {cytpath}[{cyl}]/ncx RESET
/* compute the molecules of calcium pumped out at rest */
leak1 = {getfield {cytpath}[{cyl}]/pmca moles_out}
leak2 = -1.02*{getfield {cytpath}[{cyl}]/ncx I}*1e-12*6.023e23/(-2*96485)
/* next, compute flux from calcium currents */
if ({exists {cytpath}[{cyl}]/persist_ghk_ica})
pca = {getfield {cytpath}[{cyl}]/persist_ghk_ica I}
else
pca = 0
end
if ({exists {cytpath}[{cyl}]/trans_ghk_ica})
tca = {getfield {cytpath}[{cyl}]/trans_ghk_ica I}
else
tca = 0
end
Iflux = -(pca+tca) *1e-12*6.023e23/(2*96495)
if (cyl==1)
echo "pca=" {pca} "tca=" {tca} "flux=" {Iflux}
end
/* compute Leak value s.t. when C = Ceq = Cinit, leak + Ica = total pump value */
unit = {getfield {cytpath}[{cyl}]/cytleak units}
leak = -(leak1 + leak2 + Iflux)/(Caext - Ceq)/({unit}*6.023e23)
if (leak < 0); leak=0; end
leakrate = {leak} / {area}
if (cyl==1)
echo "leak1="{leak1} "leak2="{leak2} "maxflux="{leak} "leakrate="{leakrate}
end
setfield {cytpath}[{cyl}]/cytleak maxflux {leak}
end
end