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];
// FILE IN USE 10/12/2004 -- present

Script to add synapses to GP model but not add channel clusters. Clusters
are handled separately by the read_clusters.g file. Clusters are added to
the compartments listed in {clusterfname}, while STN synapses are added to the
compartments listed in {STNfilename}. GP$1_defaults has these two set to the same,
so the default is to have clusters at all STN synapse locations. Users can
overwrite either or both file names to change the locations of syns & clusters.
STN synapse amplitudes are scaled according to the values in {STN_scale}

//The 2000 used below is only to keep the random numbers for STN and striatum different.

if ({snapgate} == 0)
    if ({synBack_synch}==0)
        randseed {({rseed_STN_postsnap}+{spikeIdx}+2000)}
        echo post snapshot random seed is {({rseed_STN_postsnap}+{spikeIdx}+2000)}
    randseed {rseed_STN}
        echo snapshot random seed is {rseed_STN}

int i, num
float d,l,surf, scalefac, totscale, meanscale
str stncompartment

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

num_STN = 0
int num_compart = 0

// Get mean value of scale factors
openfile {STN_scale} r
scalefac = {readfile {STN_scale}}
totscale = 0
num = 0

while (! {eof {STN_scale}})
	totscale = {totscale} + {scalefac}
	num = {num} + 1
	num_compart = {num_compart} + 1
        scalefac = {readfile {STN_scale}}
//        echo "num is: " {num}

closefile {STN_scale}

meanscale = {totscale} / {num}

echo "totscale: " {totscale}
echo "num: " {num}
echo "meanscale: " {meanscale}
echo "num_compart: " {num_compart}

//clear and open file to list compartment names of all excitatory synapses
//	File MUST NOT have any blank lines at the end, or function will fail.

echo STNfilename is {STNfilename}
openfile {STNfilename} r
stncompartment = {readfile {STNfilename}}
openfile {STN_scale} r
scalefac = {readfile {STN_scale}}

//cycle through STN input compartments
while (! {eof {STNfilename}})

	num_STN = {num_STN} + 1
	//Add AMPA synapses
	copy /library/AMPA {cellpath}/{stncompartment}/AMPA
	addmsg  {cellpath}/{stncompartment}/AMPA \
		{cellpath}/{stncompartment} CHANNEL Gk Ek
	addmsg  {cellpath}/{stncompartment} \
		{cellpath}/{stncompartment}/AMPA VOLTAGE Vm
//        echo "num_STN is " {num_STN}
	//get compartment parameters 
	d = {getfield {cellpath}/{stncompartment} dia}
	l = {getfield {cellpath}/{stncompartment} len}
	surf = {d}*{l}*{PI}

	// scale synapse amplitude
        setfield {cellpath}/{stncompartment}/AMPA gmax {{G_AMPA}*{scalefac}/{meanscale}}
//echo before {getfield {cellpath}/{stncompartment}/AMPA gmax}
	setfield {cellpath}/{stncompartment}/AMPA gmax {{{G_AMPA}*{scalefac}/{meanscale}}*{syngain}}
//echo after {getfield {cellpath}/{stncompartment}/AMPA gmax}
//	echo "synapse " {stncompartment} ": " {getfield {cellpath}/{stncompartment}/AMPA gmax}
	//set up timetables
	create neutral /inputs/STN/{stncompartment}
	create timetable /inputs/STN/{stncompartment}/timetable
	if ({STN_rate} > 0)
		setfield /inputs/STN/{stncompartment}/timetable		\
			maxtime 20 act_val 1.0 method 2 		\
			meth_desc1 {1/{STN_rate}} meth_desc2 0.005 meth_desc3 3	
		call /inputs/STN/{stncompartment}/timetable TABFILL
	//set up spikegen
	create spikegen /inputs/STN/{stncompartment}/spikegen
        setfield /inputs/STN/{stncompartment}/spikegen 			\
		output_amp 1 thresh 0.5
        //connect timetables to AMPA synapses
	if ({STN_rate} > 0)
        	addmsg /inputs/STN/{stncompartment}/timetable \
        		/inputs/STN/{stncompartment}/spikegen INPUT activation
        	addmsg /inputs/STN/{stncompartment}/spikegen \
        		{cellpath}/{stncompartment}/AMPA SPIKE
	// get next compartment name
	stncompartment = {readfile {STNfilename}}
	scalefac = {readfile {STN_scale}}
	if ({eof {STN_scale}})
		echo "eof scale"
closefile {STNfilename}
closefile {STN_scale}

if ({num_STN} != {num})
	echo "ERROR: number of scale factors doesn't match number of synapses."

Loading data, please wait...