Please discard your custom initialization. Put aside all consideration of custom initialization
for the moment. Focus just on making a correct implementation of the anatomical and
biophysical specification of the model.
The first step in creating a NEURON implementation of the calcium accumulation
mechanism described by the authors is to determine the volumes and surface areas of the
compartments that contain this mechanism. Let us focus on the soma of the AB cell; you
will then be able to deal with the soma of the PD cell in a similar manner.
Surface area is easy. Start by assuming that specific membrane capacitance is 1 uf/cm2,
which means that 100 um2 of membrane has total capacitance 1 pf = 1e-3 nf.
AB soma has total capacitance = 9 nf, i.e. 9000 times larger.
Therefore AB soma surface area is 9e5 um2.
Volume is easy too.
In the absence of buffering or transport, 1 A of Ca current into a volume of 1 liter makes
[Ca] change at a rate of (1/2/FARADAY)) Molar/s = (1/2/FARADAY) mM/ms.
So if Ca current is 1 nA and volume is 1 um3, the rate is (1/2/FARADAY)*(1e6) mM/ms
(note that 1 liter = 1e15 um3).
And if the volume in um3 is vol, the rate of change is 1e6/(2*FARADAY*vol) mM/ms.
In the authors' formula tauca Cai' = -F*ICa - Cai + C0
the 2nd and 3rd terms on the RHS represent the effects of buffering and transport.
Ignoring those, tauca Cai' = -F*ICa
where tauca is in ms, F is in uM/nA, and ICa is in nA
A net Ca current of 1 nA makes Cai change at a rate of F/tauca (uM/ms)
= (1e-3) F/tauca (mM/ms)
so
1e6/(2*FARADAY*vol) = (1e-3) F/tauca
and vol = (1e9)*tauca/(2*F*FARADAY)
For a cylinder, volume = PI*L(diam/2)^2 and surface area = PI*L*diam so diam = 4*volume/area
Plugging in numbers we get AB soma area = 900000 um2, volume = 3756428.8 um3,
diam = 16.695239 um, and L = 17159.317 um.
So now we have the physical dimensions of the soma compartment.
What about the details of the Ca accumulation mechanism itself? This will do:
Code: Select all
COMMENT
NEURON implementation of calcium accumulation mechanism described in
Soto-Trevino et al.
J Neurophysiol 94: 590 – 604, 2005.
ENDCOMMENT
NEURON {
SUFFIX cacumst
USEION ca READ ica WRITE cai
RANGE tau, C0
}
UNITS {
(mA) = (milliamp)
(mol) = (1)
(molar) = (mol/liter)
(mM) = (millimolar)
(uM) = (micromolar)
(um) = (micrometer)
FARADAY = (faraday) (coulombs)
}
PARAMETER {
tau = 303 (ms) : AB soma; 300 ms for PD soma
C0 = 0.5 (uM)
}
ASSIGNED {
ica (mA/cm2)
diam (um)
}
STATE {
cai (mM)
}
INITIAL {
cai = (1e-3)*C0
}
BREAKPOINT {
SOLVE states METHOD cnexp
}
COMMENT
Surface area of a cyl of length len is PI*len*diam
so net ca influx is -(ica/(2*FARADAY))*PI*len*diam
Volume is PI*len*diam^2/4
so in the absence of buffering or transport
rate of change of conc is -(ica/(2*FARADAY))*4/diam
ENDCOMMENT
DERIVATIVE states {
cai' = -(1e4)*2*ica/(FARADAY*diam) + (1e-3)*(C0 - (1e3)*cai)/tau
}
Note the numerous scale factors (constant multipliers inside paired parentheses)
which are needed to reconcile the authors' units with NEURON's preferred units.
Also note carefully the form of the first expression on the RHS of the statement in the
DERIVATIVE block, and its explanation in the preceding COMMENT block.
The following program, which I call testAB.hoc, tests this mechanism:
Code: Select all
load_file("nrngui.hoc")
create soma
access soma
soma {
diam = 16.695
L = 17159
insert cacumst
tau_cacumst = 1e9 // eliminate transport and buffer for this test
}
/*
F = 0.418 uM/nA
tauca = 303 ms
so 1 nA Ca influx x 303 ms should make cai increase by 0.418 uM
ditto for 303 nA Ca influx x 1 ms
*/
objref capp
capp = new CaPP(0.5) // delivers specified Ca current
capp.del = 1 // ms
capp.dur = 1 // ms
capp.amp = -303 // nA
finitialize(-65)
c0 = cai
print "Initial cai ", c0, "mM"
run()
print "Final cai ", cai, "mM"
print "Difference is ", 1e3*(cai-c0), "uM"
print "Soma capacitance is ", area(0.5)*cm*1e-5, "nF"
The physical dimensions of the soma compartment are those that were derived above
from the authors' model description, rounded off to 4 place precision. Making
tau_cacumst very large reduces the effect of buffer and transport to a negligible value.
CaPP is a custom point process that delivers a specified calcium current over a
specified time interval. It is patterned after the code in stim.mod, which defines the
IClamp class (see nrn/src/nrnoc/stim.mod).
Code: Select all
NEURON {
POINT_PROCESS CaPP
USEION ca WRITE ica
RANGE del, dur, amp
}
UNITS {
(nA) = (nanoamp)
}
PARAMETER {
del (ms)
dur (ms)
amp (nA) : negative is inward
}
ASSIGNED {
ica (nA)
}
BREAKPOINT {
at_time(del)
at_time(del + dur)
if (t > del && t < del + dur) {
ica = amp
}else{
ica = 0
}
}
Executing testAB.hoc generates this output:
Initial cai 0.0005 mM
Final cai 0.00091801976 mM
Difference is 0.41801976 uM
Soma capacitance is 8.9997049 nF
Note that total soma capacitance and the change of cai are both as expected.