ModelDB is moving. Check out our new site at The corresponding page is

GP Neuron, somatic and dendritic phase response curves (Schultheiss et al. 2011)

 Download zip file 
Help downloading and running models
Phase response analysis of a GP neuron model showing type I PRCs for somatic inputs and type II PRCs for dendritic excitation. Analysis of intrinsic currents underlying type II dendritic PRCs.
1 . Schultheiss NW, Edgerton JR, Jaeger D (2010) Phase response curve analysis of a full morphological globus pallidus neuron model reveals distinct perisomatic and dendritic modes of synaptic integration. J Neurosci 30:2767-82 [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: Basal ganglia;
Cell Type(s): Globus pallidus neuron;
Gap Junctions:
Gene(s): HCN1; HCN2;
Simulation Environment: GENESIS;
Model Concept(s): Oscillations; Synchronization; Active Dendrites; Synaptic Integration; Parkinson's; Phase Response Curves;
Implementer(s): Edgerton, Jeremy R. [jedgert at]; Hanson, Jesse E.; Schultheiss, Nathan W [nwschultheiss at];
// In use 10/10/2004 -- present
// Add striatal synapses, but normalize rate by compartment surface area.
/* The following params must be set prior to calling this file:
	str striatumfname: file name of compartments to get striatal inputs
	int num_striatum_compts: number of compartments to get striatal inputs
	int num_striatum_per_comp: # striatal syns per selected compartment.

   All are currently initialized and set in GP$1_defaults.g, but can be
   overwritten as needed.

   Modified 10/10/2004: made the rate of each compartment's striatal inputs
   normalized by that compartment's surface area relative to the mean surface
   area for all compartments receiving striatal input. So the total number of
   events arriving at the "average" compartment = 
   {striatum_rate} * {num_striatum_per_comp}
   This input rate can be translated to a constant, uniform input in units of
   events / sec / micron2 by dividing {striatum_rate} * {num_striatum_per_comp}
   by the total surface area of the dendritic compartments receiving input. 

if ({snapgate}==0)
    if ({synBack_synch}==0)
        randseed {({rseed_striatum_postsnap}+{spikeIdx})}
        echo post snapshot random seed is {({rseed_striatum_postsnap}+{spikeIdx})}
//    randseed {rseed_striatum}   NWS: I think this is a mistake, there is no rseed_striatum in simdefaults
    randseed {rseed_Str}
        echo snapshot random seed is {rseed_Str}

int i
float d,l,surf
float totsurf, meansurf, thisrate
str striatumcompartment

//create input element tree outside of the cell path
if (!{exists /inputs})
	create neutral /inputs
create neutral /inputs/striatum

// get sum total surface area of all compartments receiving striatal input
totsurf = 0
openfile {striatumfname} r
for (i = 1; i <= {num_striatum_compts}; i = i + 1)
        striatumcompartment = {readfile {striatumfname}}
	// get compt params
	d = {getfield {cellpath}/{striatumcompartment} dia}
	l = {getfield {cellpath}/{striatumcompartment} len}
	surf = {PI}*{l}*{d}
	totsurf = {totsurf} + {surf}
closefile {striatumfname}

meansurf = {totsurf}/{num_striatum_compts}
echo "Total dendritic surface area (microns2): " {{totsurf}*1e12}
echo "Mean surface area of dendritic compartments (microns2): " {{meansurf}*1e12}
echo "Total number of striatal input events per second: " {{striatum_rate}*{num_striatum_per_comp}*{num_striatum_compts}}
echo "Striatal events per second for average compartment: " {{striatum_rate}*{num_striatum_per_comp}}
echo "Striatal events per second per square micron: " {{striatum_rate}*{num_striatum_per_comp}*{num_striatum_compts}/({totsurf}*1e12)}

//cycle through each selected compartment and add synapses
openfile {striatumfname} r
//openfile "rates_GABA.asc" w
echo G_GABA is {G_GABA}
echo syngain is {syngain}

for (i = 1; i <= {num_striatum_compts}; i = i + 1)
        striatumcompartment = {readfile {striatumfname}}
	// get compt params
	d = {getfield {cellpath}/{striatumcompartment} dia}
	l = {getfield {cellpath}/{striatumcompartment} len}
	surf = {PI}*{l}*{d}
        copy /library/GABA {cellpath}/{striatumcompartment}/GABA
        addmsg  {cellpath}/{striatumcompartment}/GABA \
                {cellpath}/{striatumcompartment} CHANNEL Gk Ek
        addmsg  {cellpath}/{striatumcompartment} \
                {cellpath}/{striatumcompartment}/GABA VOLTAGE Vm

//echo striatal gmax before is {getfield {cellpath}/{striatumcompartment}/GABA gmax}
	setfield {cellpath}/{striatumcompartment}/GABA	\
		gmax {{G_GABA}*{syngain}}
//echo striatal gmax after is {getfield {cellpath}/{striatumcompartment}/GABA gmax}

	//set up timetables with rates scaled by compartment surface area  
	create neutral /inputs/striatum/{striatumcompartment}
        create timetable /inputs/striatum/{striatumcompartment}/timetable 
	if ({striatum_rate} > 0)
		thisrate = {striatum_rate} * {surf} / {meansurf}
//		writefile "rates_GABA.asc" {thisrate}
		setfield /inputs/striatum/{striatumcompartment}/timetable \
                     maxtime 20 act_val 1.0 method 2		\
                     meth_desc1 {1/{{thisrate}*{num_striatum_per_comp}}} \
		     meth_desc2 0 meth_desc3 3
        	call /inputs/striatum/{striatumcompartment}/timetable TABFILL
	//set up spikegen
        create spikegen /inputs/striatum/{striatumcompartment}/spikegen
        setfield /inputs/striatum/{striatumcompartment}/spikegen	\
		output_amp 1 thresh 0.5
        //connect timetables to GABA synapses
	if ({striatum_rate} > 0)
           addmsg /inputs/striatum/{striatumcompartment}/timetable	\
		/inputs/striatum/{striatumcompartment}/spikegen INPUT activation
           addmsg /inputs/striatum/{striatumcompartment}/spikegen	\
		{cellpath}/{striatumcompartment}/GABA SPIKE
closefile {striatumfname}
//closefile "rates_GABA.asc"

Loading data, please wait...