How to solve the calcium summation problem?

Extending NEURON to handle reaction-diffusion problems.

Moderators: hines, wwlytton, ramcdougal

Post Reply
ylzang
Posts: 24
Joined: Sun Mar 08, 2015 3:38 am

How to solve the calcium summation problem?

Post by ylzang » Mon May 16, 2016 4:00 am

When using the detailed calcium handling mechanism including the buffering and diffusion, I met a problem to simulate the repetitive firing of the soma in Purkinje cell. Let's take the example of cdp model in the NEURON BOOK, there will be a long tail part for the decay of the calcium transient. For repetitive firing of the Purkinje cell, if there is a long tail part for the calcium transient, then there will be buildup (or summation) of the resting calcium and finally both the resting and peak calcium concentration will shift as time goes by. Of course this may not be true in reality. I tried to increase the pump density in the cdp model to shorten the tail part and make the calcium concentration reach the resting level (a fixed value) quickly under spontaneously firing condition (about 50 Hz). However, under current injection, the firing rate can reach about 200 Hz. I can't increase the pump density further, because increase the the pump density to some range will reduce the peak amplitude of calcium transient significantly which will affect the calcium sensed by BK current.
Does anyone know some other effective methods to eliminate the summation effect of the calcium during fast firing? Thanks.

ted
Site Admin
Posts: 5372
Joined: Wed May 18, 2005 4:50 pm
Location: Yale University School of Medicine
Contact:

Re: How to solve the calcium summation problem?

Post by ted » Mon May 16, 2016 2:59 pm

The more detail that is included in a model, the more difficulty there is in selecting model parameters and getting desired results. That's why so many computational neuroscience models don't bother with ion accumulation--it is just assumed that concentrations are constant.

Many modelers have used what might be called "a physicist's first order approximation to representing the dynamics of calcium concentration." The conceptual model is very simple. Calcium accumulates in a shell adjacent to the inner surface of the cell membrane, where the concentration is cai. From there it can exchange with calcium in the core of the cell, or be pumped out of the cell. The effect of these processes on cai is described by a first order ordinary differential equation. The very simplest implementation of this model ignores buffering, so, ignoring scale factors needed for dimensional consistency, the ODE is
cai' = -ica/depth/F/2 + (cai0 - cai)/tau
where depth is the shell thickness, F is Faraday's constant, cai0 is the initial value of cai, and tau is the time constant of cai equilibration. Such a mechanism is implemented in the file cacum.mod, which you will find in the nrn/share/examples/nrniv/nmodl subdirectory of the directory tree that results from cloning NEURON's latest development code, or by downloading and expanding the gzipped tar file of NEURON source code from http://www.neuron.yale.edu/neuron/download/getstd.

If you want your calcium accumulation mechanism to include instantaneous buffering, change the ODE to
cai' = -ica/depth/F/2/B + (cai0 - cai)/tau
where B is a dimensionless parameter that specifies the ratio of bound calcium to free calcium. To do this, make a copy of cacum.mod that you call cacumb.mod, then edit cacumb.mod and make these changes:
1. Just before the ENDCOMMENT line, insert these lines:

Based on cacum.mod
Includes instantaneous calcium buffering.
The dimensionless parameter B specifies
the ratio of bound calcium to free calcium.

2. Change
SUFFIX cacum
to
: SUFFIX cacum
SUFFIX cacumb

3. In the PARAMETER block insert these lines just before the line that has the closing curly bracket }.

Code: Select all

B (1) : a dimensionless parameter that specifies
  : the ratio of bound to free calcium
The advantage of cacum and cacumb is that it's simple and you have complete control over the time course of cai equilibration.

If you prefer the more complex model from chapter 9, you'll have more parameters to deal with, such as the pump's rate constants, and the pump's density parameter. And for each section you'll have to tinker with at least the pump's density parameter to make sure you get the desired cai dynamics, because surface to volume ratio, which varies with segment diameter, affects the cai dynamics. And you'll have people asking whether it makes sense to have compartment thickness vary with segment diameter.

ylzang
Posts: 24
Joined: Sun Mar 08, 2015 3:38 am

Re: How to solve the calcium summation problem?

Post by ylzang » Wed May 25, 2016 11:32 pm

Thanks for the reply. Yes, the simple calcium handling mechanism do make the problem more simple.

ylzang
Posts: 24
Joined: Sun Mar 08, 2015 3:38 am

Re: How to solve the calcium summation problem?

Post by ylzang » Sun Jun 12, 2016 10:44 pm

ted wrote:The more detail that is included in a model, the more difficulty there is in selecting model parameters and getting desired results. That's why so many computational neuroscience models don't bother with ion accumulation--it is just assumed that concentrations are constant.

Many modelers have used what might be called "a physicist's first order approximation to representing the dynamics of calcium concentration." The conceptual model is very simple. Calcium accumulates in a shell adjacent to the inner surface of the cell membrane, where the concentration is cai. From there it can exchange with calcium in the core of the cell, or be pumped out of the cell. The effect of these processes on cai is described by a first order ordinary differential equation. The very simplest implementation of this model ignores buffering, so, ignoring scale factors needed for dimensional consistency, the ODE is
cai' = -ica/depth/F/2 + (cai0 - cai)/tau
where depth is the shell thickness, F is Faraday's constant, cai0 is the initial value of cai, and tau is the time constant of cai equilibration. Such a mechanism is implemented in the file cacum.mod, which you will find in the nrn/share/examples/nrniv/nmodl subdirectory of the directory tree that results from cloning NEURON's latest development code, or by downloading and expanding the gzipped tar file of NEURON source code from http://www.neuron.yale.edu/neuron/download/getstd.

If you want your calcium accumulation mechanism to include instantaneous buffering, change the ODE to
cai' = -ica/depth/F/2/B + (cai0 - cai)/tau
where B is a dimensionless parameter that specifies the ratio of bound calcium to free calcium. To do this, make a copy of cacum.mod that you call cacumb.mod, then edit cacumb.mod and make these changes:
1. Just before the ENDCOMMENT line, insert these lines:

Based on cacum.mod
Includes instantaneous calcium buffering.
The dimensionless parameter B specifies
the ratio of bound calcium to free calcium.

2. Change
SUFFIX cacum
to
: SUFFIX cacum
SUFFIX cacumb

3. In the PARAMETER block insert these lines just before the line that has the closing curly bracket }.

Code: Select all

B (1) : a dimensionless parameter that specifies
  : the ratio of bound to free calcium
The advantage of cacum and cacumb is that it's simple and you have complete control over the time course of cai equilibration.

If you prefer the more complex model from chapter 9, you'll have more parameters to deal with, such as the pump's rate constants, and the pump's density parameter. And for each section you'll have to tinker with at least the pump's density parameter to make sure you get the desired cai dynamics, because surface to volume ratio, which varies with segment diameter, affects the cai dynamics. And you'll have people asking whether it makes sense to have compartment thickness vary with segment diameter.
Sorry that I have to come back to this question again. I agree with you it is meaningless to artificially change a lot of parameters to get a fast decay in the Cdp model, but my supervisor insist on using this complex model. So the problem is how to fix it. I add a SERCA pump in the model to make the tail part decay faster. It does work. However, it works when I use finitialize(v_init) to initialise the simulation, but meet the problem 'Convergence not achieved in maximum number of iterations' when using stdinit() method. I guess it is caused by 'negative' calcium concentration during the initialisation due to SERCA pump. Then I add an SR leak current to balance the SERCA to maintain steady state calcium during resting state. However, it sill has the same problem. Do you have any suggestions about this problem? Or can I send the code to your email? Thanks.

ted
Site Admin
Posts: 5372
Joined: Wed May 18, 2005 4:50 pm
Location: Yale University School of Medicine
Contact:

Re: How to solve the calcium summation problem?

Post by ted » Mon Jun 13, 2016 8:15 pm

I am glad to provide whatever advice I can that would help you and your advisor achieve your goals. Much of it I have already provided. However my primary obligations will consume nearly all of my effort for the next three weeks, and even after that I will not have the time to take on a new modeling project that lies outside of my supported research activities. You and your advisor may be nearing the point where it would make sense to enlist a collaborator who specializes in computational modeling. In the meantime, I can only suggest following the KISS principle.

ylzang
Posts: 24
Joined: Sun Mar 08, 2015 3:38 am

Re: How to solve the calcium summation problem?

Post by ylzang » Tue Jun 14, 2016 8:54 am

ted wrote:I am glad to provide whatever advice I can that would help you and your advisor achieve your goals. Much of it I have already provided. However my primary obligations will consume nearly all of my effort for the next three weeks, and even after that I will not have the time to take on a new modeling project that lies outside of my supported research activities. You and your advisor may be nearing the point where it would make sense to enlist a collaborator who specializes in computational modeling. In the meantime, I can only suggest following the KISS principle.
Anyway, thanks all the same. I think it is caused by the inappropriate initialisation in Neuron. Hope I can fix it myself.

Post Reply