ylzang wrote:In experiments, calcium imaging data are expressed as normalised relative fluorescence increase and then converted to free intracellular calcium concentration based on a cuvette calibration. Here the fluorescence increase should correspond to the average calcium-bounded dye concentration instead of the calcium-bounded dye concentration in the outermost shell. Is this correct?
The methods I'm familiar with for calibration for the purpose of measuring intracellular calcium are similar to those described in
Neher, E. Quantitative aspects of calcium fluorimetry. Cold Spring Harb Protoc 2013, 918-924
and
Helmchen, F. Calibration of fluorescent calcium indicators. Cold Spring Harb Protoc 2011, 923-930
The calibrated calcium concentration should also be the average free calcium concentration on the condition without dye.
I don't know anything about the dye you're interested in, or whether your experimental methods are such that the dye will or will not affect either the apparent amplitude or the time course of the calcium transient. If you're the experimentalist who generated the data, you'll know whether you're dealing with a high- or low-affinity dye, and whether it will affect free calcium amplitude or time course. If not, I assume you are collaborating with an experimentalist who can advise you about these issues.
To simulate the naive or in vivo situation, dye is not included in the model. Then to compare the calcium signal generated in the model with the experimentally calibrated free calcium concentration by above mentioned methods, the average calcium concentration should be the model output? Is this correct?
Yes, if
1. you know that the dye does not affect the amplitude or time course of the experimentally evokde calcium transient
2. you know what is the region of interest from which the fluorescence signal was measured
3. you know the distribution of dye in whatever membrane or cytoplasm is contained in the region of interest.
The calculation will be easiest if
1. the region of interest spans the entire diameter of the neurite from which measurements are made
and
2. the dye is present only in the cytoplasm, and is distributed uniformly throughout the cytoplasm
Then you can calculate the weighted sum of calcium concentrations over all radial shells.
In theory the weights would be the relative volumes of the shells. For any compartment with normalized inner and outer radii ri and ro, the relative volume is
ro^2 - ri^2
In the models of calcium accumulation with radial diffusion that are described in the NEURON book, the concentration in each radial compartment is a STATE variable, which means that it is automatically a RANGE variable that is visible to hoc. You will probably want to identify the segment in your model that corresponds to the location at which experimental measurements were made, and use Vector.record to capture the time course of calcium in each of the radial compartments. For example, if you're interested in the middle segment of dendx, these hoc statements will set up Vector recording for you.
Code: Select all
// $1 is number of radial shells
// $2 is location of segment
// call with section of interest as the currently accessed section
obfunc mkcaveclist() { local i localobj tmpobj, tmplist
tmplist = new List()
for i=0,$1-1 {
tmpobj = new Vector()
tmpobj.record(&ca[i]_cadifus($2))
tmplist.append(tmpobj)
}
return tmplist
}
objref cavecs, tvec
tvec.record(&t)
tvec = new Vector()
// numshells = number of cylindrical shells in cadifus
dendx cavecs = mkcaveclist(numshells, 0.5)
Then after a simulation, you can calculate the time course of the weighted sum of the concentrations
Code: Select all
// $o1 is a List that holds the Vectors to which the shell ca concentrations were recorded
// $o2 is a Vector that holds the weights
obfunc wtsum() { local i localobj tmpsum, tobj
tmpsum = new Vector($o1.o(0).size, 0) // same size as recorded vecs, filled with 0
for i=0,$o2.size()-1 {
tobj=$o1.o.(i).c // copy of ith Vector in $o1
tobj.mul($o2.x[i]) // scaled by ith element in $o2
tmpsum.add.tobj
}
return tmpsum
}
// assumes weights is a vector with numshells elements
// whose values are the relative volumes of each compartment
// or whatever other weighting scheme turns out to work best for you
objref meanca // with contain the weighted sum of the shell concentrations
meanca = new Vector()
meanca = wtsum(cavecs, weights)