Page **1** of **1**

### Longitudinal location-dependent diffusion

Posted: **Sat Sep 08, 2012 7:21 pm**

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.

### Re: Longitudinal location-dependent diffusion

Posted: **Mon Sep 10, 2012 10:45 am**

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
}
```

### Re: Longitudinal location-dependent diffusion

Posted: **Fri Sep 14, 2012 6:56 pm**

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.

### Re: Longitudinal location-dependent diffusion

Posted: **Sat Sep 15, 2012 3:47 pm**

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.

### Re: Longitudinal location-dependent diffusion

Posted: **Sun Sep 16, 2012 9:39 pm**

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 ...

### Re: Longitudinal location-dependent diffusion

Posted: **Tue Dec 04, 2012 9:53 am**

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.

### Re: Longitudinal location-dependent diffusion

Posted: **Tue Dec 04, 2012 5:54 pm**

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.