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

 Download zip file   Auto-launch 
Help downloading and running models
Accession:136026
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.
Reference:
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]
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:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: NEURON;
Model Concept(s): Dendritic Action Potentials; Active Dendrites; Synaptic Integration; Olfaction;
Implementer(s): Carnevale, Ted [Ted.Carnevale at Yale.edu];
Search NeuronDB for information about:  Olfactory bulb main mitral GLU cell; I K; I Sodium;
// $Id: control_active.hoc,v 1.1 2007/04/19 17:01:52 ted Exp ted $

// based on control_spiketuft.hoc

// doit() runs a simulation, then plots max v in tuft vs. distance from soma


objref paramfil, areafil, resultfil, vpeakfil
strdef paramfilname, areafilname, resultfilname, vpeakfilname
paramfilname="parameters.dat"
areafilname="areas.dat"
resultfilname="results.dat"
vpeakfilname="vpeak.dat"

proc write_paramfil() {  local tally
  // open, write, and close paramfil
  paramfil = new File()
  paramfil.wopen(paramfilname)

  paramfil.printf("Parameters\n")
  paramfil.printf("Model cell\n")
  paramfil.printf("Ra\t cm\t e_pas\t g_pas\n")
  paramfil.printf("%5.1f\t %5.3g\t %5.1g\t %g\n", Ra, cm, e_pas, g_pas)
  tally = 0
  forsec tuft tally+=nseg
  paramfil.printf("%d segments in tuft\n", tally)

  paramfil.printf("Biophysical properties as per Shen et al. 1999.\n")
  paramfil = new File()
}

proc write_areafil() { local ii
  // open, write, and close areafil
  areafil = new File()
  areafil.wopen(areafilname)
  areafil.printf("Segment areas are tab separated in same order as segments in tuft SectionList\n")
  areavec.printf(areafil, "\t %9.4f")
  areafil = new File()
}


proc output_to_files() { local ii, jj
print "in output_to_files"

  write_paramfil()
  write_areafil()
  resultfil = new File()
  resultfil.wopen(resultfilname)
  resultfil.printf("Simulation results\n")
  resultfil.printf("\t  mean\t  min\t  max\t  var\t  stdev\n")
  vpeakfil = new File()
  vpeakfil.wopen(vpeakfilname)
  vpeakfil.printf("Peak depolarization\n")
  vpeakfil.printf("Values are tab separated in same sequence as segments in tuft SectionList\n")

// we have already analyzed the results!  no need to do it again!
//  analyze()

  resultvec.printf(resultfil, "\t %7.4f")
  // no point printing run number as first item on the line
  vpeakvec.printf(vpeakfil, "\t %7.4f")

  resultfil = new File()
  vpeakfil = new File()
}

///////////////////////////

/* don't bother with this
// nice controls

BOTHCONTROL = 0
CMx2 = 1
RAx2 = 2
BOTHx2 = 3

status = BOTHCONTROL

proc restoreRa() {
  forall Ra/=2
}

proc restorecm() {
  forall for (x,0) cm(x)/=2
}

proc doubleRa() {
  forall Ra*=2
}

proc doublecm() {
  forall for (x,0) cm(x)*=2
}


proc setparams() {
  if ($1==BOTHCONTROL) {
    // if (status==BOTHCONTROL) 
    if (status==CMx2) restorecm()
    if (status==RAx2) restoreRa()
    if (status==BOTHx2) { restorecm()  restoreRa() }
  }
  if ($1==CMx2) {
    if (status==BOTHCONTROL) doublecm()
    // if (status==CMx2)
    if (status==RAx2) { doublecm()  restoreRa() }
    if (status==BOTHx2) restoreRa()
  }
  if ($1==RAx2) {
    if (status==BOTHCONTROL) doubleRa()
    if (status==CMx2) { doubleRa()  restorecm() }
    // if (status==RAx2)
    if (status==BOTHx2) restorecm()
  }
  if ($1==BOTHx2) {
    if (status==BOTHCONTROL) { doublecm()  doubleRa() }
    if (status==CMx2) doubleRa()
    if (status==RAx2) doublecm()
    // if (status==BOTHx2)
  }
  status = $1
}
*/

proc doit() {
  run()
//  plotvmax()
//  plotvmaxnorm(1)
  plotsp()
  plotspnorm()

  analyze()
  plotpercentiles()

  output_to_files()
}


{
xpanel("Simulation control", 0)
/* don't bother with this
xlabel("Parameters (default is control)")
xradiobutton("control", "setparams(BOTHCONTROL)")
xradiobutton("cm = 2*control", "setparams(CMx2)")
xradiobutton("Ra = 2*control", "setparams(RAx2)")
xradiobutton("both cm and Ra = 2*control", "setparams(BOTHx2)")
*/
xbutton("Execute a run","doit()")
xpanel(2,507)
}

Loading data, please wait...