TITLE Calcium ion accumulation without diffusion and buffering and calcium induced calcium release
NEURON {
SUFFIX cabalstore
USEION ca READ cai, ica WRITE cai
THREADSAFE :but we make it so (this SHOULD not be a problem so long as each neuron or compartment is handled by one thread)
RANGE cainit, fCa , icapump,icapumpmax,km, TotalBuffer, k1buf, k2buf, SCALE, shellfrac, DCa, vrat, frat, basal, cac, cast, tog
:POINTER ju_p, jcicr_p
}
DEFINE Nannuli 2 : thin shell and option
UNITS {
(molar) = (1/liter)
(mM) = (millimolar)
(um) = (micron)
(mA) = (milliamp)
FARADAY = (faraday) (coulomb)
PI = (pi) (1)
}
PARAMETER {
fCa = 0.05 (1)
cainit = 0.0001 (mM)
dt (ms)
celsius = 35 (degC)
icapumpmax = 0.00191 (mA/cm2) : 191
km = 0.000500 (mM)
DCa = 0.6 (um2/ms) : diffusion constant for calcium, set to 0 to remove radial diffusion
k1buf = 100 (/mM-ms) : Yamada et al
k2buf = 0.1 (/ms)
TotalBuffer = 0.03 (mM)
basal = 0 (mM)
shellfrac = 0.25 : fraction of compartment diameter in outer shell
SCALE = 1
tog = 1
}
ASSIGNED {
diam (um)
ica (mA/cm2)
icapump (mA/cm2)
vrat[Nannuli]
Kd (/mM)
B0 (mM)
cai (mM)
:cast (mM)
:cac (mM)
}
STATE {
ca (mM) <1e-10>
CaBuffer (mM) <1e-10>
Buffer (mM) <1e-10>
castore (mM) <1e-10>
}
BREAKPOINT {
SOLVE states METHOD sparse
}
INITIAL{
factors()
cai=cainit
Kd = k1buf
B0 = TotalBuffer/(1+Kd*cainit)
ca = cai
Buffer = B0
CaBuffer = TotalBuffer - B0
castore = 0.2 : 200 uM
}
LOCAL frat[Nannuli]
PROCEDURE factors() {
LOCAL r, dr2, shsq
if(Nannuli > 1) {
r = 1/2 : starts at edge (half diam)
dr2 = r/(Nannuli-1)/2 : full thickness of outermost annulus,
: half thickness of all other annuli
vrat[0] = 0
frat[0] = 2*r*PI
FROM i=0 TO Nannuli-2 {
vrat[i] = vrat[i] + PI*(r-dr2/2)*2*dr2 : interior half
r = r - dr2
frat[i+1] = 2*PI*r/(2*dr2) : outer radius of annulus
: div by distance between centers
r = r - dr2
vrat[i+1] = PI*(r+dr2/2)*2*dr2 : outer half of annulus
}
} else { : for 1 compartment buffering
frat[0] = 1
vrat[0] = 1
}
if(Nannuli == 2){
frat[1] = PI*(1.0-shellfrac)
vrat[1] = 0.25*PI*(1.0-shellfrac)*(1.0-shellfrac)
vrat[0] = 0.25*PI-vrat[1]
}
}
LOCAL dsq, dsqvol, casq
KINETIC states {
COMPARTMENT diam*diam*vrat[0] {ca CaBuffer Buffer castore}
icapump = icapumpmax*(1/(1 + km/ca)) :calcium only exits from outer layer
dsq = diam*diam
if(ca < 0){ca = 1e-9}
if(Buffer < 0){Buffer = 1e-9}
if(CaBuffer < 0){CaBuffer = 1e-9}
dsqvol = dsq*vrat[0]
~ ca + Buffer <-> CaBuffer (k1buf*dsqvol, k2buf*dsqvol)
~ ca << (-SCALE*(ica +icapump)*PI*diam*(1e4)/(2*FARADAY))
if(ca < 0){ca = 1e-9}
if(Buffer < 0){Buffer = 1e-9}
if(CaBuffer < 0){CaBuffer = 1e-9}
cai = ca
}