Globus pallidus multi-compartmental model neuron with realistic morphology (Gunay et al. 2008)

 Download zip file 
Help downloading and running models
Accession:114639
"Globus pallidus (GP) neurons recorded in brain slices show significant variability in intrinsic electrophysiological properties. To investigate how this variability arises, we manipulated the biophysical properties of GP neurons using computer simulations. ... Our results indicated that most of the experimental variability could be matched by varying conductance densities, which we confirmed with additional partial block experiments. Further analysis resulted in two key observations: (1) each voltage-gated conductance had effects on multiple measures such as action potential waveform and spontaneous or stimulated spike rates; and (2) the effect of each conductance was highly dependent on the background context of other conductances present. In some cases, such interactions could reverse the effect of the density of one conductance on important excitability measures. ..."
Reference:
1 . Günay C, Edgerton JR, Jaeger D (2008) Channel density distributions explain spiking variability in the globus pallidus: a combined physiology and computer simulation database approach. J Neurosci 28:7476-91 [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): Globus pallidus neuron;
Channel(s): I Na,p; I Na,t; I L high threshold; I A; I K,leak; I K,Ca; KCNQ1;
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s): Ions;
Simulation Environment: GENESIS;
Model Concept(s): Dendritic Action Potentials; Parameter Fitting; Active Dendrites; Detailed Neuronal Models; Methods; Parkinson's;
Implementer(s): Gunay, Cengiz [cgunay at emory.edu]; Edgerton, Jeremy R. [jedgert at emory.edu]; Hanson, Jesse E.;
Search NeuronDB for information about:  I Na,p; I Na,t; I L high threshold; I A; I K,leak; I K,Ca; KCNQ1; Ions;
/
GunayEdgertonJaeger2008
common
CVS
gp1_stn
gp2_stn
gp3_stn
gp4_stn
gp5_stn
actpars.g
add_pallidum_syns.g
add_STN_syns_soma.g
calc_syn_integ.g
CIPfuncs.g
dump_chans.g
fileioGP.g
GP1.p
GP1_defaults.g
gp1_STNinputcomps.asc *
gp1allcompnames.asc *
gp1dendritenames.asc *
gp1outputnames.asc
GP2.p
GP2_defaults.g
GP2_sd.p
gp2allcompnames.asc
gp2dendritenames.asc
gp2outputnames.asc
GP3.p
GP3_defaults.g
gp3allcompnames.asc
gp3dendritenames.asc
gp3outputnames.asc
GP4.p
GP4_defaults.g
gp4allcompnames.asc
gp4dendritenames.asc
gp4outputnames.asc
GP5.p
GP5_defaults.g
gp5allcompnames.asc
gp5dendritenames.asc
gp5outputnames.asc
GPchans.g
GPcomps.g
GPcomps_nochans.g
GPsyns.g *
jitter_syns.g
make_GP_library.g
make_GP_library_nochans.g
modify.par
paspars.g
random_complist.g
randseeds.asc *
read_clusters.g
read_STN_nocluster_scaled.g
read_STN_nocluster_scaled_const.g
read_STN_nocluster_scaled_nottab.g
read_STN_nocluster_scaled_ttabfile.g
read_STN_syns.g
read_STN_syns_nocluster.g
read_STN_syns_times_nocluster.g
read_striatum_syns.g
read_striatum_syns_const.g
read_striatum_syns_const_scaled.g
read_striatum_syns_scaled.g
read_striatum_syns_soma.g
runbatch_nice
semantic.cache
simdefaults.g
snapshotGP.g
write_ttab.g
write_ttabs_separatefiles.g
                            
// 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}
*/

randseed 78923456 
int i, num
float d,l,surf 
float scalefac, totscale, meanscale
float Rmemb, Ememb, nspikes, ginteg, gsyn, gcompt
str stncompartment

include ../../common/calc_syn_integ.g

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

num_STN = 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
	scalefac = {readfile {STN_scale}}
end

closefile {STN_scale}

meanscale = {totscale} / {num}

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

//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.
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

	//get compartment parameters 
	d = {getfield {cellpath}/{stncompartment} dia}
	l = {getfield {cellpath}/{stncompartment} len}
	surf = {d}*{l}*{PI}
	Rmemb = {getfield {cellpath}/{stncompartment} Rm}
	Ememb = {getfield {cellpath}/{stncompartment} Em}
	
	//set up timetable
	create neutral /inputs/STN/{stncompartment}
	create timetable /inputs/STN/{stncompartment}/timetable
	if ({STN_rate} > 0)
		setfield /inputs/STN/{stncompartment}/timetable		\
			maxtime {rundur} act_val 1.0 method 2 		\
			meth_desc1 {1/{STN_rate}} meth_desc2 0.005 meth_desc3 3	
		call /inputs/STN/{stncompartment}/timetable TABFILL
	end

	// count # synaptic events in timetable
	// NOTE that the duration of the run must be set by the parameter {rundur}
	//	or else the # of events will be incorrect and the conductance won't
	//	be set correctly.
	nspikes = {getfield /inputs/STN/{stncompartment}/timetable maxpos}

	// calculate total synaptic conductance integral for run, scaled.
	ginteg = {nspikes}*{calc_syn_integ \
		{{G_AMPA}*{scalefac}/{meanscale}} {tauRise_AMPA} {tauFall_AMPA}}

	// calculate mean invariant conductance level using run duration
	gsyn = {{ginteg}/{rundur}}

	// determine new values for compartment Rm and Em
	gcompt = 1/{Rmemb}
	setfield {cellpath}/{stncompartment} Rm {1/({gcompt} + {gsyn})}
	setfield {cellpath}/{stncompartment} Em	\
		{{Ememb} + ({E_AMPA} - {Ememb})*({gsyn}/({gcompt} + {gsyn}))}

	// diagnostic
	echo {stncompartment} "Rm was: " {Rmemb}
	echo "Rm is now: " {getfield {cellpath}/{stncompartment} Rm}
	echo "Em was: " {Ememb}
	echo "Em is now: " {getfield {cellpath}/{stncompartment} Em}

	// get next compartment name
	stncompartment = {readfile {STNfilename}}
	scalefac = {readfile {STN_scale}}
	if ({eof {STN_scale}})
		echo "eof scale"
	end
end
closefile {STNfilename}
closefile {STN_scale}

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