Longitudinal location-dependent diffusion

Managing anatomically complex model cells with the CellBuilder. Importing morphometric data with NEURON's Import3D tool or Robert Cannon's CVAPP. Where to find detailed morphometric data.
Post Reply
delarue
Posts: 8
Joined: Tue Jun 24, 2008 12:53 pm

Longitudinal location-dependent diffusion

Post by delarue »

Hi Ted,
Is there any short and convenient way to model longitudinal diffusion with location-dependent diffusion coefficient? In general, how does the NEURON treat situation in which two connected sections each have the same mechanism of longitudinal diffusion, but with different diffusion "constants"? (the "constant" is not really constant here, right?). I am thinking about modeling diffusion of ions through clogged/constricted space, hence the question.
Thank you.
ted
Site Admin
Posts: 6299
Joined: Wed May 18, 2005 4:50 pm
Location: Yale University School of Medicine
Contact:

Re: Longitudinal location-dependent diffusion

Post by ted »

Currently, longitudinal diffusion is implemented by an accumulation mechanism written in NMODL that has a KINETIC block which contains a statement similar to
LONGITUDINAL_DIFFUSION Dx*ax {xi}
where
xi is a STATE variable that represents the intracellular concentration of the diffusing species e.g. nai, ki, cai
Dx is a PARAMETER that specifies the diffusion coefficient of this species
ax is an ASSIGNED that specifies the cross-section area of the diffusion path; its value is calculated in the INITIAL block

By default, a PARAMETER is GLOBAL i.e. has the same value in all instances of the mechanism. If you want Dx to vary, the statement
RANGE Dx
must be present in the NEURON block.

To ensure that a parameter has a particular value in an anatomically restricted part of a neurite, it is a good idea to represent that neurite with two or more sections. That gives you precise control of the length that has the special value, independent of the discretization parameter nseg. Example: suppose a cell has an 80 um long neurite that has a calcium accumulation mechanism called cadp. Also suppose that cadp has a parameter called D that needs to have a different value in the distal 20 um of the neurite than it is in the proximal neurite.

Code: Select all

create dend[2]
connect dend[1](0), dend[0](1)
dend[0] {
  L = 60
  diam = . . .
  insert cadp
  D_cadp = proximal_value
}
dend[1] {
  L = 20
  diam = . . .
  insert cadp
  D_cadp = distal_value
}
delarue
Posts: 8
Joined: Tue Jun 24, 2008 12:53 pm

Re: Longitudinal location-dependent diffusion

Post by delarue »

Thank you! The syntax is clear now, although I still wondering - would the diffusion process be the same if (a point) source is in dend[0] or in dend[1]? Question number 2 (and maybe it's related) - what would be the way to model one way diffusion (I know strictly speaking it should not be called diffusion any more, but it would conceptually be similar to semi-permeable membrane). My first guess is to make D RANGE and make its value grade from D>0 to D=0. But I am not sure.
ted
Site Admin
Posts: 6299
Joined: Wed May 18, 2005 4:50 pm
Location: Yale University School of Medicine
Contact:

Re: Longitudinal location-dependent diffusion

Post by ted »

delarue wrote:would the diffusion process be the same if (a point) source is in dend[0] or in dend[1]?
Should be.
what would be the way to model one way diffusion
That would be a longitudinal transport mechanism, not diffusion. There is no way to do it via NMODL, but it may be possible with RxD (reactive diffusion), which is currently under development.
My first guess is to make D RANGE and make its value grade from D>0 to D=0.
That wouldn't work because it doesn't favor flux between a pair of adjacent compartments in one direction over the opposite direction.
delarue
Posts: 8
Joined: Tue Jun 24, 2008 12:53 pm

Re: Longitudinal location-dependent diffusion

Post by delarue »

Hi,
1) Thank you for pointing out the correct terminology - indeed it's "transport" and not "diffusion", I should have remembered that....
2) Thank you for the answer (even though it says it's impossible to tackle the question I asked) - good to know that these issues are important enough to be under development ...
delarue
Posts: 8
Joined: Tue Jun 24, 2008 12:53 pm

Re: Longitudinal location-dependent diffusion

Post by delarue »

Hi,
I have another question related to the longitudinal diffusion. I would like to monitor the ion concentration change incurred by longitudinal diffusion of specific ion to and from the specific section. If I only had longitudinal diffusion mechanism in this section, I would simply compute this change by taking the difference between ion concentrations at two edges of the section. But, I have some transmembrane ion exchange mechanisms (such as channels, pumps, etc.) in this section as well....How can I see how much ion concentration change is specifically due to the diffusion of ion from one of this section's neighboring sections? Is there any built-in variable that I can access to view the diffusional current?
Thank you.
ted
Site Admin
Posts: 6299
Joined: Wed May 18, 2005 4:50 pm
Location: Yale University School of Medicine
Contact:

Re: Longitudinal location-dependent diffusion

Post by ted »

what would be the way to model one way diffusion
That would be a longitudinal transport mechanism, not diffusion. There is no way to do it via NMODL
Actually, I can imagine a way to do it, but it is too awkward to describe here. Besides, it's physically unrealizable, like Maxwell's demon or a perpetual motion machine.
delarue wrote:I would like to monitor the ion concentration change incurred by longitudinal diffusion of specific ion to and from the specific section.
This raises several important points.

If a section has a mechanism that WRITEs the intracellular concentration of some ionic species, then the concentration of that ionic species in that section is a state variable that is known to hoc with the syntax
sectionname.ionname(rangevalue)
and has units of millimoles/liter.

If a section has one or more mechanisms that generate a transmembrane current that is carried by some ionic species, then the transmembrane current for that ionic species is known to hoc with the syntax
sectionname.i_ionname(rangevalue)
and has units of (mA/cm2) i.e. milliamps/square centimeter.

The hoc function area() returns the surface area of a segment in um2 (i.e. square microns) when called with an argument x that specifies the range value of some point that is contained in the segment. Example:
soma print area(0.5)
prints the area of the section that is centered on the middle of the soma (assuming that soma.nseg is an odd number).

The volume of a segment must be found from its length and diameter. Its length is sectionname.L/nseg (in um), and its diameter is sectionname.diam(x) (also in um), where x is the range value for a point that is contained in the section. Example:
soma vol = PI*L*(diam(0.5)/2)^2 // calculates volume of the soma segment that contains 0.5

Chapters 8 and 9 of The NEURON Book contain several examples of the use of ionic concentrations as variables.
Post Reply