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)
jcicr_p
ju_p
}
STATE {
ca[Nannuli] (mM) <1e-10>
CaBuffer[Nannuli] (mM) <1e-10>
Buffer[Nannuli] (mM) <1e-10>
castore[Nannuli] (mM) <1e-10>
}
BREAKPOINT {
SOLVE states METHOD sparse
}
INITIAL{
factors()
cai=cainit
Kd = k1buf
B0 = TotalBuffer/(1+Kd*cainit)
FROM i=0 TO Nannuli-1 {
ca[i] = cai
Buffer[i] = B0
CaBuffer[i] = TotalBuffer - B0
castore[i] = 0.2 : 200 uM
}
:Buffer[0] = 0
:CaBuffer[0] = 0
}
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 i, diam*diam*vrat[i] {ca CaBuffer Buffer castore}
icapump = icapumpmax*(1/(1 + km/ca[0])) :calcium only exits from outer layer
FROM i = 0 TO Nannuli-2 {
~ ca[i] <-> ca[i+1] (DCa*frat[i+1], DCa*frat[i+1]) : turn off/on diffusion
}
dsq = diam*diam
FROM i=0 TO Nannuli-1 {
dsqvol = dsq*vrat[i]
~ca[i] + Buffer[i] <-> CaBuffer[i] (k1buf*dsqvol, k2buf*dsqvol)
}
dsqvol = dsq*vrat[1]
~ ca[Nannuli-1] <-> castore[Nannuli-1] (tog*ju_p*dsqvol,tog*jcicr_p*dsqvol)
~ ca[0] << (-SCALE*(ica +icapump)*PI*diam*(1e4)/(2*FARADAY))
cai = ca[0]
cac = ca[Nannuli-1]
cast = castore[Nannuli-1]
}