Rhesus Monkey Layer 3 Pyramidal Neurons: V1 vs PFC (Amatrudo, Weaver et al. 2012)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:144553
Whole-cell patch-clamp recordings and high-resolution 3D morphometric analyses of layer 3 pyramidal neurons in in vitro slices of monkey primary visual cortex (V1) and dorsolateral granular prefrontal cortex (dlPFC) revealed that neurons in these two brain areas possess highly distinctive structural and functional properties. ... Three-dimensional reconstructions of V1 and dlPFC neurons were incorporated into computational models containing Hodgkin-Huxley and AMPA- and GABAA-receptor gated channels. Morphology alone largely accounted for observed passive physiological properties, but led to AP firing rates that differed more than observed empirically, and to synaptic responses that opposed empirical results. Accordingly, modeling predicts that active channel conductances differ between V1 and dlPFC neurons. The unique features of V1 and dlPFC neurons are likely fundamental determinants of area-specific network behavior. The compact electrotonic arbor and increased excitability of V1 neurons support the rapid signal integration required for early processing of visual information. The greater connectivity and dendritic complexity of dlPFC neurons likely support higher level cognitive functions including working memory and planning.
Reference:
1 . Amatrudo JM, Weaver CM, Crimins JL, Hof PR, Rosene DL, Luebke JI (2012) Influence of highly distinctive structural properties on the excitability of pyramidal neurons in monkey visual and prefrontal cortices. J Neurosci 32:13644-60 [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: Neocortex; Prefrontal cortex (PFC);
Cell Type(s): Neocortex V1 L2/6 pyramidal intratelencephalic GLU cell;
Channel(s): I N; I K;
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: NEURON;
Model Concept(s): Activity Patterns; Influence of Dendritic Geometry; Detailed Neuronal Models; Electrotonus; Conductance distributions; Vision;
Implementer(s): Weaver, Christina [christina.weaver at fandm.edu];
Search NeuronDB for information about:  Neocortex V1 L2/6 pyramidal intratelencephalic GLU cell; I N; I K;
/
V1_PFC_ModelDB
README
kvz_nature.mod *
naz_nature.mod *
vsource.mod *
actionPotentialPlayer.hoc *
add_axon.hoc
analyticFunctions.hoc *
analyze_EPSC.m
aux_procs.hoc
batchrun.hoc
custominit.hoc
define_PFC.hoc
electro_procs.hoc *
figOptions.hoc
fixnseg.hoc *
init_model.hoc
init_PFC.hoc
Jul16IR3f_fromSWCthenManual_Nov22-11.hoc
load_scripts.hoc *
main_fig10_pfc.hoc
main_fig10_v1baseline.hoc
main_fig10_v1tuned.hoc
main_fig9_pfcElec.hoc
main_fig9_v1Elec.hoc
main_PFC-ApBas_fig11epsc.hoc
main_PFC-ApBas_fig12ipsc.hoc
main_V1-ApBas_fig11epsc.hoc
main_V1-ApBas_fig12ipsc.hoc
May3IR2t_ImportFromSWCthenManual_Aug19-11.hoc
measureMeanAtten.hoc
mosinit.hoc
PFC-V1_AddSynapses.hoc
plot_seClamp_i.ses
plot_seClamp_IPSC.ses
read_EPSCsims_mdb.m
read_IPSCsims_mdb.m
readcell.hoc
readNRNbin_Vclamp.m
rigPFCmod.ses
synTweak.hoc
vsrc.ses
                            
/*
 * Prints to stdout a table containing the voltage at all points in a
 * dendritic tree, after 10 ms of simulation in response to a recorded somatic
 * action potential.
 *
 * globals:
 *   voltage_vec
 *   time_vec
 *   which_secs
 *
 * Arguments:
 *   $o1: soma -> A SectionRef pointing to the soma.
 *   $o2: voltage_vec -> A vector containing an experimentally measured somatic
 *                       action potential.
 *   $o3: time_vec -> A vector containing the time points for voltage_vec
 *   $s4: which_secs -> A regular expression that specifies all the dendritic
 *                      sections over which the function should iterate.
 *
 */
objref graphs
proc BAPvalues() { local real_diam, real_L, rt, rtstart, ts localobj voltage_vec, time_vec, distances, voltages,\
                   output_matrix, soma
  soma = $o1
  soma.sec {
    nseg = 1
    real_diam = diam(0.5)
    real_L = L
    diam = 2.0 * STD_SOMA
    L = 2.0 * STD_SOMA
  }
  voltage_vec = $o2
  time_vec = $o3
  strdef which_secs
  which_secs = $s4

  access soma.sec

  // Set up the attenuation values by playing an action potential into the
  // soma for ten seconds.  The action potential itself only lasts 2.
  v_init = E_PAS
  finitialize(v_init)
  tstop = 10
  dt = 0.025
//  voltage_vec.play(&soma.sec.v(0.5), time_vec)
  voltage_vec.play(&soma.sec.v(0.5), .025)

  run()
  /*
  // Replace run() with its implementation, for debugging
	running_ = 1
	stdinit()
	realtime = 0  rt = screen_update_invl  rtstart = startsw()
	eventcount=0
	eventslow=1
	stoprun = 0
	if (using_cvode_) {
		cvode.event(tstop)
		ts = tstop
		if (cvode.use_local_dt) {
			cvode.solve(ts)
			flushPlot()
			realtime = startsw() - rtstart
			return
		}
	}else{
		ts = tstop - dt/2
	}

  soma {
    print "soma stats:"
    print nseg
    print L
    print diam(0)
    print diam(0.5)
    print diam(1)
    print area(0)
    print area(0.5)
    print area(1)
  }
	while(t < ts && stoprun == 0) {
	  soma print v(0.5)
		step()
		realtime = startsw() - rtstart
		if (realtime >= rt) {
			screen_update()
			//really compute for at least screen_update_invl
			realtime = startsw() - rtstart
			rt = realtime + screen_update_invl
		}
	}
	if (using_cvode_ && stoprun == 0) { // handle the "tstop" event
		step() // so all recordings take place at tstop
	}
	flushPlot()
	realtime = startsw() - rtstart
  // Done with replacement of run with its implementation
  */

  distances = new Vector()
  voltages = new Vector()

  // Baseline for distance is set at the midpoint of the soma, where both of
  // the dendritic trees are attached.
  distance(0, 0.5)

  // Iterate over the dendritic tree.
  forsec which_secs {
    for(x) {
      distances.append(distance(x))
      voltages.append(val_max(x) - v_init)  // Assumes the "max" mechanism is
                                            // installed in the neuron.
    }
  }

  // Output the data
  output_matrix = new Matrix(voltages.size(), 2)
  output_matrix.setcol(0, distances)
  output_matrix.setcol(1, voltages)

  output_matrix.printf()

  soma.sec {
    diam = real_diam
    L = real_L
  }
}

/*
 * Calculates the steady-state voltage in response to current steps of
 * ranging from -120 pA to 80 pA, in 20 pA increments, for a duration of 200
 * ms each.  These should fall along a line, the slope of which is the input
 * resistance.  The values are printed in a single line, tab-delimited.
 *
 * $o1: a SectionRef pointing to the section into which the current should
 *      be injected.
 */
proc inputResistance() { local equilibrium_value, i localobj stim, stim_target
  $o1.sec stim_target = new SectionRef()
  tstop = 250		//200
  dt = 0.025

  stim_target.sec { stim = new IClamp(0) }

  stim.del = 150			//0  //cmw 8/25/11:  allow some delay for 'initialization'
  stim.dur = 200
  tstop=stim.del+200		// cmw 8/25/11
  
  for (i = -.120; i <= 0.080; i += 0.02) {
    v_init = E_PAS
    stim.amp = i
    finitialize(v_init)
    run()
    equilibrium_value = stim_target.sec.v(0.5)
    printf("%f\t", equilibrium_value)
  }
}