CA1 pyramidal neuron: as a 2-layer NN and subthreshold synaptic summation (Poirazi et al 2003)

 Download zip file   Auto-launch 
Help downloading and running models
We developed a CA1 pyramidal cell model calibrated with a broad spectrum of in vitro data. Using simultaneous dendritic and somatic recordings, and combining results for two different response measures (peak vs. mean EPSP), two different stimulus formats (single shock vs. 50 Hz trains), and two different spatial integration conditions (within vs. between-branch summation), we found the cell's subthreshold responses to paired inputs are best described as a sum of nonlinear subunit responses, where the subunits correspond to different dendritic branches. In addition to suggesting a new type of experiment and providing testable predictions, our model shows how conclusions regarding synaptic arithmetic can be influenced by an array of seemingly innocuous experimental design choices.
1 . Poirazi P, Brannon T, Mel BW (2003) Arithmetic of subthreshold synaptic summation in a model CA1 pyramidal cell. Neuron 37:977-87 [PubMed]
2 . Poirazi P, Brannon T, Mel BW (2003) Pyramidal neuron as two-layer neural network. Neuron 37:989-99 [PubMed]
3 . Poirazi P, Brannon T, Mel BW (2003ab-sup) Online Supplement: About the Model Neuron 37 Online:1-20
4 . Polsky A, Mel BW, Schiller J (2004) Computational subunits in thin dendrites of pyramidal cells. Nat Neurosci 7:621-7 [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:
Cell Type(s): Hippocampus CA1 pyramidal GLU cell;
Channel(s): I Na,p; I Na,t; I L high threshold; I T low threshold; I A; I K; I M; I h; I K,Ca; I Calcium;
Gap Junctions:
Receptor(s): GabaA; GabaB; NMDA; Glutamate;
Simulation Environment: NEURON;
Model Concept(s): Action Potential Initiation; Activity Patterns; Dendritic Action Potentials; Active Dendrites; Influence of Dendritic Geometry; Detailed Neuronal Models; Action Potentials; Depression; Delay;
Implementer(s): Poirazi, Panayiota [poirazi at];
Search NeuronDB for information about:  Hippocampus CA1 pyramidal GLU cell; GabaA; GabaB; NMDA; Glutamate; I Na,p; I Na,t; I L high threshold; I T low threshold; I A; I K; I M; I h; I K,Ca; I Calcium;
basic_graphics.hoc *
basic-graphics.hoc *
choose-secs.hoc *
current-balance.hoc *
cut-sections.hoc *
deduce-ratio.hoc *
find-gmax.hoc *
GABA_shiftsyn.hoc *
GABA_shiftsyn_bg.hoc *
ken.h *
map-segments-to-3d.hoc *
maxmin.hoc *
mod_func.c *
newshiftsyn.c *
newshiftsyn.exe *
num-rec.h *
salloc.hoc *
shiftsyn-init_bg.hoc *
shiftsyn-initA.hoc *
shiftsyn-initA.hoc~ *
spikecount.hoc *
tune-epsps.hoc *
vector-distance.hoc *
verbose-system.hoc *
// This function is used to calculate the AMPA coductance values 
// such that a single pulse stimulus gives rise to a 5mV local depolarization 
// at every synapse location along the cell (each synapse has both an AMPA and an NMDA mechanism).
// AMPA values for each location tested, along the sections tested are saved in the tune_epsp_list
// written by Terrence Brannon, last modified by Yiota Poirazi, July 2001,

strdef fast_file
strdef sec_str, recstr, tuning_code
objref epsp_glu, epsp_nmda, vmvec, epsp_ic, tmpvec

proc tune_epsp_fast () { 
//  printf("proc tune_epsp_fast (%s.v(%g))\n", secname(), $2)

  R = $2                 //  synapse location
  epsp_glu  = new GLU(R)
  epsp_nmda = new NMDA(R)
  tuned = 0             //  initial values before tuning
  old_GMAX = 0
  while (!tuned) {

   epsp_glu.gmax  = GMAX     // previously calculated maximum AMPA conductance
   epsp_nmda.gmax = GMAX*NMDA_AMPA_RATIO  // maximum NMDA conductance 

   fakecell {                            // single shock current injection to a fake cell
     epsp_ic = new IClamp(0.5)           
     epsp_ic.amp = 1
     epsp_ic.dur = 1
     epsp_ic.del = 0.1*tstop

   setpointer epsp_glu.pre,  epsp_ic.i
   setpointer epsp_nmda.pre, epsp_ic.i

   tmpvec = new Vector(tstop/dt)
   sprint(recstr, "tmpvec.record(&%s.v(%g))", secname(), R) // record depolarization at synapse

   vmvec = tmpvec.c
   // test if resulting depolarization is closed to the desired value (5mV)

   if (epsilon_equal(vmvec.max(),desired_voltage,$3)) {
     tuned = 1  // if yes, stop         

   } else {     // if no, update the GMAX value and test again

     diffa = desired_voltage-BASELINE
     diffb = vmvec.max()-BASELINE
     ratio = diffa/diffb
     GMAX = GMAX*ratio

     print "\t\tnew GMAX: ", GMAX

 sprint(tuning_code,"%s tune_epsp_list.append(new EPSPTuning(\"%s\",%f,%f,1))", secname(), secname(), x, GMAX)
 $o4.printf("%s\n", tuning_code)


// test if difference between desired and actual voltage is smaller than epsilon

func epsilon_equal() {
  printf("epsilon_equal(%f,%f,%f)\n", $1,$2,$3)
  diff = ($1-$2)
  if (abs(diff) < $3) {
  } else {