Functional structure of mitral cell dendritic tuft (Djurisic et al. 2008)

 Download zip file   Auto-launch 
Help downloading and running models
The computational modeling component of Djurisic et al. 2008 addressed two primary questions: whether amplification by active currents is necessary to explain the relatively mild attenuation suffered by tuft EPSPs spreading along the primary dendrite to the soma; what accounts for the relatively uniform peak EPSP amplitude throughout the tuft. These simulations show that passive spread from tuft to soma is sufficient to yield the low attenuation of tuft EPSPs, and that random distribution of a biologically plausible number of excitatory synapses throughout the tuft can produce the experimentally observed uniformity of depolarization.
1 . Djurisic M, Popovic M, Carnevale N, Zecevic D (2008) Functional structure of the mitral cell dendritic tuft in the rat olfactory bulb. J Neurosci 28:4057-68 [PubMed]
Citations  Citation Browser
Model Information (Click on a link to find other models with that property)
Model Type: Neuron or other electrically excitable cell;
Brain Region(s)/Organism: Olfactory bulb;
Cell Type(s): Olfactory bulb main mitral GLU cell;
Channel(s): I K; I Sodium;
Gap Junctions:
Simulation Environment: NEURON;
Model Concept(s): Dendritic Action Potentials; Active Dendrites; Synaptic Integration; Olfaction;
Implementer(s): Carnevale, Ted [Ted.Carnevale at];
Search NeuronDB for information about:  Olfactory bulb main mitral GLU cell; I K; I Sodium;
: $Id: monx.mod,v 1.3 2007/03/09 03:45:56 ted Exp ted $

Does 3 things:
1. Has storage that can be used for various things, 
   e.g. distance from soma.
2. At initialization, stores local area in a variable
3. Monitors peak v during a simulation and stores in another variable.

Beware of one drawback of this approach to storing values of range variables:
attempts to access values at 0 or 1 will instead return or set the values at 
the first or last internal nodes!  For example, in a section with nseg = 1,
  for (x) dist_monx(x) = distance(x)
will result in dist_monx(0.5) actually storing the value for distance(1), 
and subsequently invoking
  for (x) print dist_monx(x)
will print the same number 3 times!

If monx is to track currents, a custom initialization is needed 
so that the initialization reaches a stable point.

According to Michael Hines, 
"The problem is that ina is not set until just before return from 
finitialize when the equivalent of an fcurrent() call is executed 
(cvode will also end up calling the statements in the BREAKPOINT's 
SOLVE block)."

If one is using the GUI, the simple solution would be to just do 
an Init followed by Init & Run, since that is how many times 
finitialize() must be called to reach a fixed point.

A solution that is less prone to user error is to replace the 
run time system's init() with a custom init() that executes a 
pair of finitialize() calls.

For example, this will do:

proc init() {
	if ( {
	} else {


	SUFFIX monx
:	USEION na READ ina
:	RANGE inamin, tinamin, inamax, tinamax, qna
	RANGE vmax, dist, surf, temp, zin, gesyn, gisyn

:	ina (milliamp/cm2)
:	inamin (milliamp/cm2)
:	inamax (milliamp/cm2)
:	tinamin (ms)
:	tinamax (ms)
	area (micron2)
	surf (micron2)
	v (millivolt)
	vmax (millivolt)
	tvmax (ms)
	dist (micron)
	gesyn (microsiemens)
	gisyn (microsiemens)
	zin (megohm)
	temp (1) : for temporary/intermediate variables!

: STATE { qna (picocoulomb) }

:	inamin = ina
:	inamax = ina
: printf("ina = %f\n", ina) 
:	qna = 0
	vmax = 0
	tvmax = 0
	surf = area
	: dist must be initialized at the hoc level

:	SOLVE integrate METHOD cnexp
: }

: DERIVATIVE integrate {
: 	qna' = (0.01)*ina*area
: }

:	if (ina<inamin) {
:		inamin = ina
:		tinamin = t
:	}
:	if (ina>inamax) {
:		inamax = ina
:		tinamax = t
:	}
	if (v>vmax) {
		vmax = v
		tvmax = t