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 L2/3 pyramidal 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 L2/3 pyramidal 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
                            
/**********************************************************************

// Taken from dendritica, settings.hoc
//

Copyright (C) 2001  Philipp Vetter, Arnd Roth and Michael Hausser

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
**********************************************************************/

spinescale = 1
dendscale = 1
objref stim, biasStim

proc reset() {  /* set the whole environment to its standard settings */

	active_set()
	passive_set()
}




/**********************************************************************/

proc active_set()  {	/* set active model parameters  */
			/* $1 		gbar_na		*/
			/* $2 		gbar_kv		*/
			/* $3 		gbar_na (node) 	*/
			/* $4 		g_qq	 	*/
			/* $5 		qq_end	 	*/
			/* $6 		qq_steep 	*/
			/* $7 		qq_half	 	*/

		n = numarg()
		if (n>0)  g_na     = $1 else g_na     = G_na
		if (n>1)  g_kv     = $2 else g_kv     = G_kv
		if (n>2)  g_nanode = $3 else g_nanode = G_nanode
		if (n>3)  g_kvnode = $4 else g_kvnode = G_kvnode
		if (n>4)  g_qq      = $5 else g_qq		= G_qq
		if (n>5)  qq_end    = $6 else qq_end		= Qq_end 
		if (n>6)  qq_steep  = $7 else qq_steep 	= Qq_steep
		if (n>7)  qq_half   = $8 else qq_half		= Qq_half

		if (Iq_current)	forsec all \
		gbar_qq=qq_end+(g_qq-qq_end)/(1+exp((distance(0)-qq_half)/qq_steep))
		
		forsec "soma"         { gbar_na	= g_na
					gbar_kv = g_kv  }

		forsec "myelin"         gbar_na = g_na
  
		forsec "node"         {	gbar_na = g_nanode
		               		gbar_kv = g_kvnode}

		forsec "hill"         {	gbar_na = g_nanode
		               		gbar_kv = g_kvnode }

		forsec "iseg"         {	gbar_na = g_nanode
		               		gbar_kv = g_kvnode }
	
		// Vetter et al used different settings here for spines vs. dendrites
		forsec dendritic     {	gbar_kv = g_kv*dendscale 
			  		gbar_na = g_na*dendscale 
					if (Iq_current) gbar_qq *= dendscale 
		}

}

/**********************************************************************/

proc passive_set() { /* set passive properties	*/
		     /* $1 	rm		*/
		     /* $2 	rax		*/
		     /* $3 	c_m 		*/
		     /* $4 	cm_myelin	*/
		     /* $5 	qq_end	 	*/
		     /* $6 	qq_steep 	*/
		     /* $7 	qq_half	 	*/

		n = numarg()
		if (n>0)  rm        = $1      else rm     	= Rm
		if (n>1)  rax       = abs($2) else rax    	= Rax
		if (n>2)  c_m       = $3      else c_m    	= C_m
		if (n>3)  cm_myelin = $4      else cm_myelin	= Cm_myelin
		if (n>4)  rm_node   = $5      else rm_node	= Rm_node
		if (n>5)  rm_end    = $6      else rm_end	= Rm_end 
		if (n>6)  rm_steep  = $7      else rm_steep	= Rm_steep
		if (n>7)  rm_half   = $8      else rm_half	= Rm_half

		if (!nonuniform_Rm) rm_end = rm	 /* only nonuniform distr if nonuniform_Rm==1 */ 
		//origin.sec distance(0,originx)
                forall {if (rm-rm_end==0) g_pas =1/rm else \
			g_pas = 1/(rm+(rm-rm_end)/(1+exp((distance(0)-rm_half)/rm_steep)))
                        cm    = c_m
                        Ra    = rax
                       }
                forsec "myelin"  	cm    = cm_myelin	
               	forsec "node"    	g_pas = 1/rm_node	
               	forsec "iseg"    	g_pas = 1/rm	/* make sure iseg & hill have uniform rm */	
               	forsec "hill"    	g_pas = 1/rm	

            /****
                forsec dendritesI     {	cm     *= spinescale		// spine corrections
                                	g_pas  *= spinescale }

		forsec dendritesII    {	cm     *= spinescaleII		// spine corrections
                                	g_pas  *= spinescaleII }

		forsec dendritesIII   { dendarea = 0			// spine corrections Rapp
					for(x) dendarea+= area(x)
					spinarea        = 10*L
					spinescaleIII   = (spinarea+dendarea)/dendarea
                                	cm     	       *= spinescaleIII
                                	g_pas  	       *= spinescaleIII }
            ****/
			}

/**********************************************************************/



proc get_standard()	{ /* standard settings, implemented substitutively, whenever a neuron is loaded */
		Iq_current 	= 0		/* substitutively no Iq_current */
		Ca_current	= 0		/* substitutively no Ca_current */
		KCa_current	= 0		/* substitutively no KCa_current */
		Km_current	= 0		/* substitutively no Km_current */
		nonuniform_Rm	= 0		/* substitutively no nonuniform Rm */
		electrotonicL	= 0		/* substitutively physical lengths */
		activespine	= 1		/* model spines with active membrane */
		currentdist	= 1		/* status for which distlist to use*/
		currentcell	= 0		/* number of currently active cell */
		simMode 	= 0		/* 0 IClamp 1 Vclamp simulation  */
		celsius    	= 37		/* general settings */
		originx         = 0.5           /* where to add axon */
		Ek         	= -90
		Ena        	= 60
		cells 		= 1
		swc		= 0		/* flag is turned on for Duke Southampton files */
		synthetic       = 0             /* synthetic neurons need longer simulation time */

		St_del         	= 0		/* stimulation (duration,delay,amplitude) */
		St_amp		= 1		
		St_dur		= 9999

		Sim_durI	= 0		/* simulation (duration & dt) */
		Sim_dtI		= 0.25		/* run for Sim_durI with Sim_dtI, 
						   then Sim_dur with Sim_dt */
		Sim_dur		= 15		
		Sim_dt		= 0.025

		Rec_del		= Sim_durI	/* recording options (for display) */
		Rec_dur		= Sim_dur
		Rec_dt		= Sim_dt		

		/* passive membrane properties, which aren't being changed in general */
		Rm_node 	= 50
		Cm_myelin  	= 0.04

		G_ca		= .3		/* 13.8.98 */
		G_kca		= .1
		G_km		= 3
		Rm_end		= Rm_half = Rm_steep = 0
		G_qq		= 0.02		/* Iq settings */
		Qq_end 		= 20
		Qq_steep	= 439
		Qq_half		= 50


			}
			
			
			
proc act0_set() {		/* Zach Nature standard (kvz|naz) */

    Rax		= 150		/* passive membrane properties */
	Rm         	= 12000
	C_m        	= 1
	G_kv		= 30		/* active membrane properties */
	G_kvnode	= 500
	G_na		= 35
	G_nanode	= 35000
  	insert_channels()	
}



proc pass0_set() {		/* Zach Nature standard (kvz|naz) */

    Rax		= 150		/* passive membrane properties */
	Rm         	= 12000
	C_m        	= 1
	G_kv		= 30		/* active membrane properties */
	G_kvnode	= 500
	G_na		= 35
	G_nanode	= 35000
}



proc init_model() {

	get_standard()		// initialize standard settings  (T, activespine ...) 
	act0_set()			// just use the Vetter et al default
	reset()
}

proc init_iclamps() {
	stim = new IClamp(0.5)
	stim.del = 0
	stim.dur = 0
	stim.amp = 0
	
	biasStim = new IClamp(0.5)
	biasStim.del = 0
	biasStim.dur = 1e5
	biasStim.amp = 0
}


proc init_passive_model() {

	get_standard()		// initialize standard settings  (T, activespine ...) 
	pass0_set()
	insert_passive()
	passive_set()
	
}