Comparison of full and reduced globus pallidus models (Hendrickson 2010)

 Download zip file 
Help downloading and running models
Accession:127728
In this paper, we studied what features of realistic full model activity patterns can and cannot be preserved by morphologically reduced models. To this end, we reduced the morphological complexity of a full globus pallidus neuron model possessing active dendrites and compared its spontaneous and driven responses to those of the reduced models.
Reference:
1 . Hendrickson EB, Edgerton JR, Jaeger D (2011) The capabilities and limitations of conductance-based compartmental neuron models with reduced branched or unbranched morphologies and active dendrites. J Comput Neurosci 30:301-21 [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:
Cell Type(s): Globus pallidus neuron;
Channel(s): I Na,p; I A; I K; I K,Ca; I Calcium; I A, slow;
Gap Junctions:
Receptor(s): AMPA; NMDA; Gaba;
Gene(s):
Transmitter(s): Gaba; Glutamate;
Simulation Environment: GENESIS;
Model Concept(s): Activity Patterns; Simplified Models; Active Dendrites; Action Potentials; Methods; Rate-coding model neurons; Synaptic Integration;
Implementer(s): Hendrickson, Eric B [eric.b.hendrickson at gmail.com];
Search NeuronDB for information about:  AMPA; NMDA; Gaba; I Na,p; I A; I K; I K,Ca; I Calcium; I A, slow; Gaba; Glutamate;
/
articleCode
commonGPFull
commonGPRedu
parameterSets
scripts
README.txt
commonFunctions.g
                            
function setpulse (cip_pA, delay, width, pulseToUse)
  setfield {pulseToUse}		     	\
	level1          {{cip_pA}*1e-12}\
	width1 		{width}	       	\
	delay1          {delay}		\
	delay2          50      	\
	baselevel       0 		\
	trig_mode       0
end

function setpulse_sine (cip_pA, freq, offset, pulseToUse)
  setfield {pulseToUse}		     	\
	mode 		0		\
	amplitude       {{cip_pA}*1e-12}\
	frequency       {freq}		\
	dc_offset	{{offset}*1e-12}		
end

function injectCurrent (cip_pA, pulseToUse, cellpath)
	if ({pulseToUse} == "/pulseSoma")
 		str filename_v = {basefilename} @ "_soma_" @ cip_pA @ "_pAcip_v.bin"
	elif ({pulseToUse} == "/pulseProx")
		str filename_v = {basefilename} @ "_prox_" @ cip_pA @ "_pAcip_v.bin"
	else
		str filename_v = {basefilename} @ "_dist_" @ cip_pA @ "_pAcip_v.bin"
	end
	
	setfield /out_v filename {filename_v}
	setpulse_sine {cip_pA} {0} {cip_pA} {pulseToUse}
	reset
	step {rundur} -time
	mv {filename_v} {mvDir}
end

function injectMockAP_forCurrentsAnalysis_saveLocally (cellpath, readName)
 	str filename_v = "inject_mockAP_" @ {modelName} @ ".bin"
	setfield /out_v filename {filename_v}

	reset
	step 0.1 -time
	setpulse_sine {5000} {0} {5000} {"/pulseSoma"}
	step 0.0005 -time
	setpulse_sine {0} {0} {0} {"/pulseSoma"}
	step 0.3995 -time
	mv {filename_v} "./genesisFiles"
end


function runSynaptic_GP_saveLocally
	//str filename_v = "this_run_1_STNrate_" @ {STN_rate} @ "_striatumrate_" @ {striatum_rate} @ "_0_pAcip_v.bin"
	str filename_v = "this_run_1_STNrate_" @ {STN_rate} @ "_striatumrate_" @ {striatum_rate} @ "_dendNaF" @ {G_NaF_dend} @ "_" @ {modelName} @ ".bin"
	setfield /out_v filename {filename_v}
	reset
	step {rundur} -time
	mv {filename_v} "./genesisFiles"
end

function runSynaptic_GP_clusteredSynch_saveLocally
	str filename_v = "this_run_1_STNrate_" @ {STN_rate} @ "_striatumrate_" @ {striatum_rate} @ "_clusteredSynch_" @ {clusteredSynch} @ "_dendNaF_" @ {G_NaF_dend} @ "_" @ {modelName} @ ".bin"
	setfield /out_v filename {filename_v}
	setpulse_sine {somaticInjection} {0} {somaticInjection} {"/pulseSoma"}
	reset
	step {rundur} -time
	mv {filename_v} "./genesisFiles"
end

function saveSomaVm (cellpath)
	str hstr = {findsolvefield {cellpath} {cellpath}/soma Vm} 
	addmsg {cellpath} /out_v SAVE {hstr}
end

function saveComptsVm (cellpath, complistfile)
	openfile {complistfile} r
	str readcompartment = {readfile {complistfile}}
	while(!{eof {complistfile}})
		str hstr = {findsolvefield {cellpath} {cellpath}/{readcompartment} Vm} 
		addmsg {cellpath} /out_v SAVE {hstr}
		readcompartment = {readfile {complistfile}}
	end
end

function saveComptsVmAndCurrents (cellpath, complistfile)
	openfile {complistfile} r
	str readcompartment = {readfile {complistfile}}
	while(!{eof {complistfile}})
		str hstr = {findsolvefield {cellpath} {cellpath}/{readcompartment} Vm} 
		addmsg {cellpath} /out_v SAVE {hstr}
		
		str hstr = {findsolvefield {cellpath} {cellpath}/{readcompartment}/Na_fast_GP Ik}
		addmsg {cellpath} /out_v SAVE {hstr}
		hstr = {findsolvefield {cellpath} {cellpath}/{readcompartment}/Na_slow_GP Ik}
		addmsg {cellpath} /out_v SAVE {hstr}
		hstr = {findsolvefield {cellpath} {cellpath}/{readcompartment}/Kv2_GP Ik}
		addmsg {cellpath} /out_v SAVE {hstr}
		hstr = {findsolvefield {cellpath} {cellpath}/{readcompartment}/Kv3_GP Ik}
		addmsg {cellpath} /out_v SAVE {hstr}
		hstr = {findsolvefield {cellpath} {cellpath}/{readcompartment}/Kv4_fast_GP Ik}
		addmsg {cellpath} /out_v SAVE {hstr}
		hstr = {findsolvefield {cellpath} {cellpath}/{readcompartment}/Kv4_slow_GP Ik}
		addmsg {cellpath} /out_v SAVE {hstr}
		hstr = {findsolvefield {cellpath} {cellpath}/{readcompartment}/KCNQ_GP Ik}
		addmsg {cellpath} /out_v SAVE {hstr}
		hstr = {findsolvefield {cellpath} {cellpath}/{readcompartment}/K_ahp_GP Ik}
		addmsg {cellpath} /out_v SAVE {hstr}
		hstr = {findsolvefield {cellpath} {cellpath}/{readcompartment}/Ca_HVA_GP Ik}
		addmsg {cellpath} /out_v SAVE {hstr}
		hstr = {findsolvefield {cellpath} {cellpath}/{readcompartment}/h_HCN_GP Ik}
		addmsg {cellpath} /out_v SAVE {hstr}
		hstr = {findsolvefield {cellpath} {cellpath}/{readcompartment}/h_HCN2_GP Ik}
		addmsg {cellpath} /out_v SAVE {hstr}
		readcompartment = {readfile {complistfile}}
	end
end

function saveComptsVmAndConductances (cellpath, complistfile)
	openfile {complistfile} r
	str readcompartment = {readfile {complistfile}}
	while(!{eof {complistfile}})
		str hstr = {findsolvefield {cellpath} {cellpath}/{readcompartment} Vm} 
		addmsg {cellpath} /out_v SAVE {hstr}
		
		str hstr = {findsolvefield {cellpath} {cellpath}/{readcompartment}/Na_fast_GP Gk}
		addmsg {cellpath} /out_v SAVE {hstr}
		hstr = {findsolvefield {cellpath} {cellpath}/{readcompartment}/Na_slow_GP Gk}
		addmsg {cellpath} /out_v SAVE {hstr}
		hstr = {findsolvefield {cellpath} {cellpath}/{readcompartment}/Kv2_GP Gk}
		addmsg {cellpath} /out_v SAVE {hstr}
		hstr = {findsolvefield {cellpath} {cellpath}/{readcompartment}/Kv3_GP Gk}
		addmsg {cellpath} /out_v SAVE {hstr}
		hstr = {findsolvefield {cellpath} {cellpath}/{readcompartment}/Kv4_fast_GP Gk}
		addmsg {cellpath} /out_v SAVE {hstr}
		hstr = {findsolvefield {cellpath} {cellpath}/{readcompartment}/Kv4_slow_GP Gk}
		addmsg {cellpath} /out_v SAVE {hstr}
		hstr = {findsolvefield {cellpath} {cellpath}/{readcompartment}/KCNQ_GP Gk}
		addmsg {cellpath} /out_v SAVE {hstr}
		hstr = {findsolvefield {cellpath} {cellpath}/{readcompartment}/K_ahp_GP Gk}
		addmsg {cellpath} /out_v SAVE {hstr}
		readcompartment = {readfile {complistfile}}
	end
end

function saveTotalCurrents (cellpath)
	int i
	for(i=0; i<=17; i = i+1)
               addmsg {cellpath} /out_v SAVE itotal[{i}]
        end
end

function saveSomaticCurrents (cellpath)
	str hstr = {findsolvefield {cellpath} {cellpath}/soma/Na_fast_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/soma/Na_slow_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/soma/Kv2_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/soma/Kv3_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/soma/Kv4_fast_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/soma/Kv4_slow_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/soma/KCNQ_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/soma/K_ahp_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
end

function saveSomaAxonSpikeCurrents(cellpath)
	str hstr = {findsolvefield {cellpath} {cellpath}/soma/Na_fast_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/soma/Kv2_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/soma/Kv3_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/soma/Kv4_fast_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/soma/Kv4_slow_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
	str hstr = {findsolvefield {cellpath} {cellpath}/axon/Na_fast_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/axon/Kv2_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/axon/Kv3_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/axon/Kv4_fast_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/axon/Kv4_slow_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
end

function saveAxonSpikeGatingVars(cellpath)
	str hstr = {findsolvefield {cellpath} {cellpath}/axon/Kv4_fast_GP X}
	addmsg {cellpath} /out_v SAVE {hstr}
	str hstr = {findsolvefield {cellpath} {cellpath}/axon/Na_fast_GP Z}
	addmsg {cellpath} /out_v SAVE {hstr}
	str hstr = {findsolvefield {cellpath} {cellpath}/axon/Na_fast_GP X}
	addmsg {cellpath} /out_v SAVE {hstr}
end

function saveSomaticConductances(cellpath)
	str hstr = {findsolvefield {cellpath} {cellpath}/soma/Na_fast_GP Gk}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/soma/Na_slow_GP Gk}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/soma/Kv2_GP Gk}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/soma/Kv3_GP Gk}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/soma/Kv4_fast_GP Gk}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/soma/Kv4_slow_GP Gk}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/soma/KCNQ_GP Gk}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/soma/K_ahp_GP Gk}
	addmsg {cellpath} /out_v SAVE {hstr}
end

function saveAxonalConductances(cellpath)
	str hstr = {findsolvefield {cellpath} {cellpath}/axon/Na_fast_GP Gk}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/axon/Na_slow_GP Gk}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/axon/Kv2_GP Gk}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/axon/Kv3_GP Gk}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/axon/Kv4_fast_GP Gk}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/axon/Kv4_slow_GP Gk}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/axon/KCNQ_GP Gk}
	addmsg {cellpath} /out_v SAVE {hstr}
end

function saveMostProxComptsVmAndCurrents (cellpath)
	str hstr = {findsolvefield {cellpath} {cellpath}/p0b1 Vm}
	addmsg {cellpath} /out_v SAVE {hstr}
	if ({modelName} == "full")
		hstr = {findsolvefield {cellpath} {cellpath}/p1[1] Vm}
		str p1comp = "p1[1]"
	else
		hstr = {findsolvefield {cellpath} {cellpath}/p1 Vm}
		str p1comp = "p1"
	end
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/p2b2 Vm}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/axon Vm}
	addmsg {cellpath} /out_v SAVE {hstr}

	hstr = {findsolvefield {cellpath} {cellpath}/p0b1/Na_fast_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/p0b1/Na_slow_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/p0b1/Kv2_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/p0b1/Kv3_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/p0b1/Kv4_fast_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/p0b1/Kv4_slow_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/p0b1/KCNQ_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/p0b1/K_ahp_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}

	hstr = {findsolvefield {cellpath} {cellpath}/{p1comp}/Na_fast_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/{p1comp}/Na_slow_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/{p1comp}/Kv2_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/{p1comp}/Kv3_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/{p1comp}/Kv4_fast_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/{p1comp}/Kv4_slow_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/{p1comp}/KCNQ_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/{p1comp}/K_ahp_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
	
	hstr = {findsolvefield {cellpath} {cellpath}/p2b2/Na_fast_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/p2b2/Na_slow_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/p2b2/Kv2_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/p2b2/Kv3_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/p2b2/Kv4_fast_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/p2b2/Kv4_slow_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/p2b2/KCNQ_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/p2b2/K_ahp_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}

	hstr = {findsolvefield {cellpath} {cellpath}/axon/Na_fast_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/axon/Na_slow_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/axon/Kv2_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/axon/Kv3_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/axon/Kv4_fast_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/axon/Kv4_slow_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/axon/KCNQ_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
end

function saveDistComptVmAndCurrents (cellpath)
	str distComp
	if ({modelNamePassive} == "5comp")
		distComp = "p2b2"
	elif ({modelNamePassive} == "14comp")
		distComp = "p2b2[3]"		
	elif ({modelNamePassive} == "50comp")
		distComp = "p2b2[15]"
	elif ({modelNamePassive} == "98comp")
		distComp = "p2b2[31]"
	elif ({modelNamePassive} == "41comp" || {modelNamePassive} == "59comp")
		distComp = "p2b2b2b1"
	elif ({modelNamePassive} == "93comp")
		distComp = "p2b2b2b1[1]"
	elif ({modelNamePassive} == "full")
		distComp = "p2b2b2b1[10]"
	end
	str hstr = {findsolvefield {cellpath} {cellpath}/{distComp} Vm}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/{distComp}/Na_fast_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/{distComp}/Na_slow_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/{distComp}/Kv2_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/{distComp}/Kv3_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/{distComp}/Kv4_fast_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/{distComp}/Kv4_slow_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/{distComp}/KCNQ_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/{distComp}/K_ahp_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
end

function saveClustComptVmAndCurrents (cellpath)
	str clustComp //see notes of 3/16/2009 --> DistA cluster
	if ({modelName} == "5comp")
		//clustComp = "p2b2"
		clustComp = "p1"
	elif ({modelName} == "14comp")
		//clustComp = "p2b2[3]"
		clustComp = "p1[1]"
	elif ({modelName} == "50comp")
		//clustComp = "p2b2[12]"
		clustComp = "p1[9]"
	elif ({modelName} == "98comp")
		clustComp = "p2b2[25]"
	elif ({modelName} == "41comp")
		clustComp = "p2b2b2"
	elif ({modelName} == "59comp")
		clustComp = "p2b2b2[3]"
	elif ({modelName} == "93comp")
		clustComp = "p2b2b2[6]"
	elif ({modelName} == "full")
		clustComp = "p2b2b2[46]"
	end
	str hstr = {findsolvefield {cellpath} {cellpath}/{clustComp} Vm}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/{clustComp}/Na_fast_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/{clustComp}/Na_slow_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/{clustComp}/Kv2_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/{clustComp}/Kv3_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/{clustComp}/Kv4_fast_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/{clustComp}/Kv4_slow_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/{clustComp}/KCNQ_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/{clustComp}/K_ahp_GP Ik}
	addmsg {cellpath} /out_v SAVE {hstr}
end

function saveMostProxComptsVm (cellpath)
	str hstr = {findsolvefield {cellpath} {cellpath}/p0b1 Vm}
	addmsg {cellpath} /out_v SAVE {hstr}
	if ({modelName} == "full")
		hstr = {findsolvefield {cellpath} {cellpath}/p1[1] Vm}
		addmsg {cellpath} /out_v SAVE {hstr}
	else
		hstr = {findsolvefield {cellpath} {cellpath}/p1 Vm}
		addmsg {cellpath} /out_v SAVE {hstr}	
	end
	hstr = {findsolvefield {cellpath} {cellpath}/p2b2 Vm}
	addmsg {cellpath} /out_v SAVE {hstr}
	hstr = {findsolvefield {cellpath} {cellpath}/axon Vm}
	addmsg {cellpath} /out_v SAVE {hstr}
end

function saveDistComptVmPassive (cellpath)
	str hstr
	if ({modelNamePassive} == "5comp")
		hstr = {findsolvefield {cellpath} {cellpath}/p2b2 Vm}
		//hstr = {findsolvefield {cellpath} {cellpath}/p1 Vm}
	elif ({modelNamePassive} == "14comp")
		hstr = {findsolvefield {cellpath} {cellpath}/p2b2[3] Vm} //standard string
		//hstr = {findsolvefield {cellpath} {cellpath}/p1[2] Vm}
		//hstr = {findsolvefield {cellpath} {cellpath}/p0b1[0] Vm}
	elif ({modelNamePassive} == "50comp")
		hstr = {findsolvefield {cellpath} {cellpath}/p2b2[15] Vm}
		//hstr = {findsolvefield {cellpath} {cellpath}/p1[9] Vm}
		//hstr = {findsolvefield {cellpath} {cellpath}/p0b1[3] Vm}
	elif ({modelNamePassive} == "98comp")
		hstr = {findsolvefield {cellpath} {cellpath}/p2b2[31] Vm}
	elif ({modelNamePassive} == "41comp" || {modelNamePassive} == "59comp")
		//hstr = {findsolvefield {cellpath} {cellpath}/p2b2b2b1 Vm}
		//hstr = {findsolvefield {cellpath} {cellpath}/p2b2b1b2b1[2] Vm}
		//hstr = {findsolvefield {cellpath} {cellpath}/p2b2b2b2 Vm}
		hstr = {findsolvefield {cellpath} {cellpath}/p2b2b1b1 Vm}
	elif ({modelNamePassive} == "93comp")
		//hstr = {findsolvefield {cellpath} {cellpath}/p2b2b2b1[1] Vm}
		//hstr = {findsolvefield {cellpath} {cellpath}/p2b2b1b2b1[2] Vm}
		//hstr = {findsolvefield {cellpath} {cellpath}/p2b2b2b2 Vm}
		hstr = {findsolvefield {cellpath} {cellpath}/p2b2b1b1[6] Vm}
	elif ({modelNamePassive} == "full")
		//hstr = {findsolvefield {cellpath} {cellpath}/p2b2b2b1[10] Vm}
		//hstr = {findsolvefield {cellpath} {cellpath}/p2b2b1b2b1[40] Vm}
		//hstr = {findsolvefield {cellpath} {cellpath}/p2b2b2b2[9] Vm}
		hstr = {findsolvefield {cellpath} {cellpath}/p2b2b1b1[46] Vm}
	end
	addmsg {cellpath} /out_v SAVE {hstr}
end

function saveDistComptVmPassiveAlt (cellpath,injectCompt)
	str hstr = {findsolvefield {cellpath} {cellpath}/{injectCompt} Vm}
	addmsg {cellpath} /out_v SAVE {hstr}
end

function saveAxonVm (cellpath)
	str hstr = {findsolvefield {cellpath} {cellpath}/axon Vm} 
	addmsg {cellpath} /out_v SAVE {hstr}
end

function calccclamp
  	float Iinj = {{getfield /inputs/soma/cclampt output}}
	setpulse {Iinj} {0} {rundur} {"/pulseSoma"}
end

function doPreparations (cellpath)
	create disk_out /out_v
	useclock /out_v 1
	setfield /out_v flush 0 append 0 leave_open 1
	saveSomaVm {cellpath}	
	//saveComptsVm {cellpath} {compListFilename}
	//saveComptsVmAndCurrents {cellpath} {compListFilename}
	//saveComptsVmAndConductances {cellpath} {midDistACompts}
	//saveTotalCurrents {cellpath}
	//saveSomaticCurrents {cellpath}
	//saveSomaAxonSpikeCurrents {cellpath}
	//saveAxonSpikeGatingVars {cellpath}
	//saveSomaticConductances {cellpath}
	//saveAxonalConductances {cellpath}
	//saveDistComptVmAndCurrents {cellpath}
	//saveClustComptVmAndCurrents {cellpath} //see notes of 2/5/2009
	//saveMostProxComptsVmAndCurrents {cellpath} //see notes of 2/11/2009
	//saveMostProxComptsVm {cellpath}
	//saveDistComptVmPassive {cellpath}
	//saveAxonVm {cellpath}
end

function doPreparations_passive (cellpath,injectCompt)
	echo compt: {injectCompt}
	create disk_out /out_v
	useclock /out_v 1
	setfield /out_v flush 0 append 0 leave_open 1
	saveSomaVm {cellpath}
	//saveComptsVm {cellpath} {compListFilename}
	//saveDistComptVmPassiveAlt {cellpath} {injectCompt}
end

function setupClocks (simDt, outputDt, RUNDUR)
	rundur = RUNDUR
	dt = simDt
	setclock 0 {simDt}	// simulation
	setclock 1 {outputDt} 	// output 
end

function setupHinesSolver (cellpath)
	//silent -1
	setfield {cellpath} 						\
		path {cellpath}/##[][TYPE=compartment] 	\
        	comptmode       1 			\
        	chanmode        4 			\
        	calcmode        0 			\
        	outclock        1 			\
        	storemode       1
		call {cellpath} SETUP
		setmethod 11
end

function setupCurrentInjection_1comp
	create funcgen /pulseSoma
	setpulse_sine {0} {0} {0} {"/pulseSoma"}
	addmsg /pulseSoma {cellpath}/soma INJECT output
end

function setupCurrentInjection_41comp
	create funcgen /pulseSoma
	create funcgen /pulseDist
	setpulse_sine {0} {0} {0} {"/pulseSoma"}
	setpulse_sine {0} {0} {0} {"/pulseDist"}
	addmsg /pulseSoma {cellpath}/soma INJECT output
	addmsg /pulseDist {cellpath}/p2b2b1b1 INJECT output
end

function setupCurrentInjection_59comp
	create funcgen /pulseSoma
	create funcgen /pulseDist
	setpulse_sine {0} {0} {0} {"/pulseSoma"}
	setpulse_sine {0} {0} {0} {"/pulseDist"}
	addmsg /pulseSoma {cellpath}/soma INJECT output
	addmsg /pulseDist {cellpath}/p2b2b2b1 INJECT output
end

function setupCurrentInjection_93comp
	create funcgen /pulseSoma
	create funcgen /pulseDist
	setpulse_sine {0} {0} {0} {"/pulseSoma"}
	setpulse_sine {0} {0} {0} {"/pulseDist"}
	addmsg /pulseSoma {cellpath}/soma INJECT output
	addmsg /pulseDist {cellpath}/p2b2b1b1[6] INJECT output
end

function setupCurrentInjection_5comp
	create funcgen /pulseSoma
	create funcgen /pulseDist
	setpulse_sine {0} {0} {0} {"/pulseSoma"}
	setpulse_sine {0} {0} {0} {"/pulseDist"}
	addmsg /pulseSoma {cellpath}/soma INJECT output
	addmsg /pulseDist {cellpath}/p2b2 INJECT output //standard string
end

function setupCurrentInjection_alt (injectCompt)
	create neutral /pulse
	create funcgen /pulse/soma
	create funcgen /pulse/{injectCompt}
	setpulse_sine {0} {0} {0} {"/pulse/soma"}
	setpulse_sine {0} {0} {0} {"/pulse/" @ {injectCompt}}
	addmsg /pulse/soma {cellpath}/soma INJECT output //standard string
	addmsg /pulse/{injectCompt} {cellpath}/{injectCompt} INJECT output //standard string
end

function setupCurrentInjection_altDendPulses (injectCompt)
	create neutral /pulse
	create funcgen /pulse/soma
	create pulsegen /pulse/{injectCompt}
	setpulse_sine {0} {0} {0} {"/pulse/soma"}
	setpulse {0} {0} {0} {"/pulse/" @ {injectCompt}}
	addmsg /pulse/soma {cellpath}/soma INJECT output
	addmsg /pulse/{injectCompt} {cellpath}/{injectCompt} INJECT output 
end

function setupCurrentInjection_14comp
	create funcgen /pulseSoma
	create funcgen /pulseDist
	setpulse_sine {0} {0} {0} {"/pulseSoma"}
	setpulse_sine {0} {0} {0} {"/pulseDist"}
	addmsg /pulseSoma {cellpath}/soma INJECT output
	addmsg /pulseDist {cellpath}/p2b2[3] INJECT output
end

function setupCurrentInjection_50comp
	create funcgen /pulseSoma
	create funcgen /pulseDist
	setpulse_sine {0} {0} {0} {"/pulseSoma"}
	setpulse_sine {0} {0} {0} {"/pulseDist"}
	addmsg /pulseSoma {cellpath}/soma INJECT output 
	addmsg /pulseDist {cellpath}/p2b2[15] INJECT output
end

function setupCurrentInjection_98comp
	create funcgen /pulseSoma
	create funcgen /pulseDist
	setpulse_sine {0} {0} {0} {"/pulseSoma"}
	setpulse_sine {0} {0} {0} {"/pulseDist"}
	addmsg /pulseSoma {cellpath}/soma INJECT output
	addmsg /pulseDist {cellpath}/p2b2[31] INJECT output
end

function setupCurrentInjection_GP_full
	create funcgen /pulseSoma
	create funcgen /pulseDist
	setpulse_sine {0} {0} {0} {"/pulseSoma"}
	setpulse_sine {0} {0} {0} {"/pulseDist"}
	addmsg /pulseSoma {cellpath}/soma INJECT output
	addmsg /pulseDist {cellpath}/p2b2b1b1[46] INJECT output
end




Loading data, please wait...