Cerebellar Nucleus Neuron (Steuber, Schultheiss, Silver, De Schutter & Jaeger, 2010)

 Download zip file 
Help downloading and running models
Accession:136175
This is the GENESIS 2.3 implementation of a multi-compartmental deep cerebellar nucleus (DCN) neuron model with a full dendritic morphology and appropriate active conductances. We generated a good match of our simulations with DCN current clamp data we recorded in acute slices, including the heterogeneity in the rebound responses. We then examined how inhibitory and excitatory synaptic input interacted with these intrinsic conductances to control DCN firing. We found that the output spiking of the model reflected the ongoing balance of excitatory and inhibitory input rates and that changing the level of inhibition performed an additive operation. Rebound firing following strong Purkinje cell input bursts was also possible, but only if the chloride reversal potential was more negative than -70 mV to allow de-inactivation of rebound currents. Fast rebound bursts due to T-type calcium current and slow rebounds due to persistent sodium current could be differentially regulated by synaptic input, and the pattern of these rebounds was further influenced by HCN current. Our findings suggest that active properties of DCN neurons could play a crucial role for signal processing in the cerebellum.
Reference:
1 . Steuber V, Schultheiss NW, Silver RA, De Schutter E, Jaeger D (2011) Determinants of synaptic integration and heterogeneity in rebound firing explored with data-driven models of deep cerebellar nucleus cells. J Comput Neurosci 30:633-58 [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: Cerebellum;
Cell Type(s): Cerebellum deep nucleus neuron;
Channel(s): I Na,p; I T low threshold; I h;
Gap Junctions:
Receptor(s): GabaA; AMPA; NMDA;
Gene(s):
Transmitter(s): Gaba; Glutamate;
Simulation Environment: GENESIS;
Model Concept(s): Bursting; Ion Channel Kinetics; Active Dendrites; Detailed Neuronal Models; Intrinsic plasticity; Rate-coding model neurons; Synaptic Integration; Rebound firing;
Implementer(s): Steuber, Volker [v.steuber at herts.ac.uk]; Jaeger, Dieter [djaeger at emory.edu];
Search NeuronDB for information about:  GabaA; AMPA; NMDA; I Na,p; I T low threshold; I h; Gaba; Glutamate;
// genesis

// create synapses (based on Gauck and Jaeger 2003)
function make_cn_syns

	if (!({exists AMPA}))
		create synchan AMPA
	end
	setfield AMPA Ek {E_AMPA} tau1 {tauRise_AMPA} tau2 {tauFall_AMPA} \
		gmax 0 frequency 0 

	if (!({exists fNMDA}))
                create synchan fNMDA
        end
	setfield fNMDA Ek {E_NMDA} tau1 {tauRise_fNMDA} tau2 {tauFall_fNMDA} \
		gmax 0 frequency 0
	
	if (!({exists Mg_fblock}))
                create Mg_block Mg_fblock 
        end
	setfield Mg_fblock		\
		CMg    0.002		\
		KMg_A  1		\
		KMg_B  {1.0/{0.109*1000}}

	if (!({exists sNMDA}))
                create synchan sNMDA
        end
	setfield sNMDA Ek {E_NMDA} tau1 {tauRise_sNMDA} tau2 {tauFall_sNMDA} \
		gmax 0 frequency 0
	
	if (!({exists Mg_sblock}))
                create Mg_block Mg_sblock 
        end
	setfield Mg_sblock		\
		CMg    0.25		\
		KMg_A  1		\
		KMg_B  {1/{0.057*1000}}

	if (!({exists GABA}))
	       	create synchan GABA
	end
	setfield GABA Ek {E_GABA} tau1 {tauRise_GABA} tau2 {tauFall_GABA}  \
		gmax 0 frequency 0

end


// add synapses to soma
function add_soma_syns

  	copy /library/GABA soma/GABAs
  	setfield soma/GABAs gmax {G_GABAs}
  	addmsg soma/GABAs soma CHANNEL Gk Ek
  	addmsg soma soma/GABAs VOLTAGE Vm
	
  	copy /library/AMPA soma/AMPAs
  	setfield soma/AMPAs gmax {G_AMPAs}
  	addmsg soma/AMPAs soma CHANNEL Gk Ek
 	addmsg soma soma/AMPAs VOLTAGE Vm
	
  	copy /library/fNMDA soma/fNMDAs
  	setfield soma/fNMDAs gmax {G_fNMDAs}
  	copy /library/Mg_fblock soma/Mg_fblocks
  	addmsg soma/fNMDAs soma/Mg_fblocks CHANNEL Gk Ek
  	addmsg soma/Mg_fblocks soma CHANNEL Gk Ek
  	addmsg soma soma/Mg_fblocks VOLTAGE Vm	
  	addmsg soma soma/fNMDAs VOLTAGE Vm
	
  	copy /library/sNMDA soma/sNMDAs
  	setfield soma/sNMDAs gmax {G_sNMDAs}
  	copy /library/Mg_sblock soma/Mg_sblocks
  	addmsg soma/sNMDAs soma/Mg_sblocks CHANNEL Gk Ek
  	addmsg soma/Mg_sblocks soma CHANNEL Gk Ek
  	addmsg soma soma/Mg_sblocks VOLTAGE Vm	
  	addmsg soma soma/sNMDAs VOLTAGE Vm	

  	//set up timetables and input to soma
  	if (!{exists /inputs})
    		create neutral /inputs
  	end
  	create neutral /inputs/soma

  	if ({ex_rate_s} > 0)
    		create timetable /inputs/soma/ex_tt
    		setfield /inputs/soma/ex_tt \
      			maxtime {synmaxtime} act_val 1.0 method 2 \
      			meth_desc1 {1/{ex_rate_s}} \
      			meth_desc2 0 meth_desc3 3
      		call /inputs/soma/ex_tt TABFILL

      		create spikegen /inputs/soma/ex_spikegen
      		setfield /inputs/soma/ex_spikegen output_amp 1 thresh 0.5
      		addmsg /inputs/soma/ex_tt /inputs/soma/ex_spikegen INPUT activation
      		addmsg /inputs/soma/ex_spikegen soma/AMPAs SPIKE
      		addmsg /inputs/soma/ex_spikegen soma/fNMDAs SPIKE
      		addmsg /inputs/soma/ex_spikegen soma/sNMDAs SPIKE
  	end

  	if ({inhib_rate_s} > 0)
    		create timetable /inputs/soma/inhib_tt
    		setfield /inputs/soma/inhib_tt \
      			maxtime {synmaxtime} act_val 1.0 method 2 \
      			meth_desc1 {1/{inhib_rate_s}} \
      			meth_desc2 0 meth_desc3 3
      		call /inputs/soma/inhib_tt TABFILL
      
		create spikegen /inputs/soma/inhib_spikegen
      		setfield /inputs/soma/inhib_spikegen output_amp 1 thresh 0.5
      		addmsg /inputs/soma/inhib_tt /inputs/soma/inhib_spikegen INPUT activation
      		addmsg /inputs/soma/inhib_spikegen soma/GABAs SPIKE
  	end
end


// add synapses to dendritic compartments
function add_dend_syns

	int i
	str mfincomp, pcincomp

	if (!{exists /inputs})
 	 create neutral /inputs
	end 
	
	// add excitory synapses to set of compartments (read in from file)
	openfile {MF_infile} r
	randseed {MF_seed}

	for (i = 1; i <= {no_MF}; i = i + 1)
		mfincomp = {readfile {MF_infile}}

		copy /library/AMPA {mfincomp}/AMPAd
  		setfield {mfincomp}/AMPAd gmax {G_AMPAd}
        	addmsg  {mfincomp}/AMPAd {mfincomp}  CHANNEL Gk Ek
        	addmsg  {mfincomp} {mfincomp}/AMPAd VOLTAGE Vm

		copy /library/fNMDA {mfincomp}/fNMDAd
		setfield {mfincomp}/fNMDAd gmax {G_fNMDAd}
		copy /library/Mg_fblock {mfincomp}/Mg_fblockd
  		addmsg {mfincomp}/fNMDAd {mfincomp}/Mg_fblockd CHANNEL Gk Ek
		addmsg {mfincomp}/Mg_fblockd {mfincomp} CHANNEL Gk Ek
  		addmsg {mfincomp} {mfincomp}/Mg_fblockd VOLTAGE Vm	
  		addmsg {mfincomp} {mfincomp}/fNMDAd VOLTAGE Vm
	
		copy /library/sNMDA {mfincomp}/sNMDAd
		setfield {mfincomp}/sNMDAd gmax {G_sNMDAd}
		copy /library/Mg_sblock {mfincomp}/Mg_sblockd
  		addmsg {mfincomp}/sNMDAd {mfincomp}/Mg_sblockd CHANNEL Gk Ek
		addmsg {mfincomp}/Mg_sblockd {mfincomp} CHANNEL Gk Ek
  		addmsg {mfincomp} {mfincomp}/Mg_sblockd VOLTAGE Vm	
  		addmsg {mfincomp} {mfincomp}/sNMDAd VOLTAGE Vm	
		
		create neutral /inputs/{mfincomp}

  		if ({ex_rate_d} > 0)
		    	create timetable /inputs/{mfincomp}/ex_tt
    			setfield /inputs/{mfincomp}/ex_tt \
      				maxtime {synmaxtime} act_val 1.0 method 2              \
      				meth_desc1 {1/{ex_rate_d}} meth_desc2 0 meth_desc3 3
      			call /inputs/{mfincomp}/ex_tt TABFILL

	      		create spikegen /inputs/{mfincomp}/ex_spikegen
      			setfield /inputs/{mfincomp}/ex_spikegen output_amp 1 thresh 0.5
      			addmsg /inputs/{mfincomp}/ex_tt /inputs/{mfincomp}/ex_spikegen INPUT activation
      			addmsg /inputs/{mfincomp}/ex_spikegen {mfincomp}/AMPAd SPIKE
      			addmsg /inputs/{mfincomp}/ex_spikegen {mfincomp}/fNMDAd SPIKE
      			addmsg /inputs/{mfincomp}/ex_spikegen {mfincomp}/sNMDAd SPIKE
  		end

	end
	closefile {MF_infile}

	// add inhibitory synapses to another set of compartments (read in from file)
	openfile {PC_infile} r
	randseed {PC_seed}

	for (i = 1; i <= {no_PC}; i = i + 1)
		pcincomp = {readfile {PC_infile}}

		copy /library/GABA {pcincomp}/GABAd
  		setfield {pcincomp}/GABAd gmax {G_GABAd}
        	addmsg  {pcincomp}/GABAd {pcincomp}  CHANNEL Gk Ek
        	addmsg  {pcincomp} {pcincomp}/GABAd VOLTAGE Vm
		
		if(!{exists /inputs/{pcincomp}}) 
			create neutral /inputs/{pcincomp}
		end

  		if ({inhib_rate_d} > 0)
		    	create timetable /inputs/{pcincomp}/inhib_tt
    			setfield /inputs/{pcincomp}/inhib_tt \
      				maxtime {synmaxtime} act_val 1.0 method 2              \
      				meth_desc1 {1/{inhib_rate_d}} meth_desc2 0 meth_desc3 3
      			call /inputs/{pcincomp}/inhib_tt TABFILL

      			create spikegen /inputs/{pcincomp}/inhib_spikegen
      			setfield /inputs/{pcincomp}/inhib_spikegen output_amp 1 thresh 0.5
      			addmsg /inputs/{pcincomp}/inhib_tt /inputs/{pcincomp}/inhib_spikegen INPUT activation
      			addmsg /inputs/{pcincomp}/inhib_spikegen {pcincomp}/GABAd SPIKE
  		end
	end
	closefile {PC_infile}
end


// update timetables for synaptic input bursts
function add_synburst

	int i
	str pcincomp
	str mfincomp
	int nextseed

	silent 1

	if (exbdur > 0 && exbrate > 0)
		randseed {MF_seed}
		nextseed = {rand 100000 999999}

		if (ex_rate_s > 0)
			call /inputs/soma/ex_tt TUPDATE 2 {exbonset} {{exbonset} + {exbdur}} {1.0 / {{exbrate}*50}}
			randseed {nextseed}
			nextseed = {rand 100000 999999}
		else
  			create timetable /inputs/soma/ex_tt
  			setfield /inputs/soma/ex_tt \
  				maxtime {{exbonset} + {exbdur}} act_val 1.0 method 2 \
  				meth_desc1 {1/{{exbrate}*50}} \
  				meth_desc2 0 meth_desc3 3
  			call /inputs/soma/ex_tt TABFILL
			// Next line takes baseline_rate back to near-zero. 
  			call /inputs/soma/ex_tt TUPDATE 2 0 {exbonset} {10000}
 			create spikegen /inputs/soma/ex_spikegen
  			setfield /inputs/soma/ex_spikegen output_amp 1 thresh 0.5
  			addmsg /inputs/soma/ex_tt /inputs/soma/ex_spikegen INPUT activation
  			addmsg /inputs/soma/ex_spikegen soma/AMPAs SPIKE
		end
	end

	if(inb1dur > 0)
		randseed {PC_seed}
		nextseed = {rand 100000 999999}

		if (inhib_rate_s > 0)
			// Two inhibitory bursts follow each other, inb1 is first and determines onset
			if(inb1rate > 0)
				call /inputs/soma/inhib_tt TUPDATE 2 {inb1onset} {{inb1onset} + {inb1dur}} {1.0 / {{inb1rate}*50}}
			end
			randseed {nextseed}
			nextseed = {rand 100000 999999}
			if(inb2dur > 0)
				call /inputs/soma/inhib_tt TUPDATE 2 {{inb1onset} + {inb1dur}} {{inb1onset} + {inb1dur} + {inb2dur}} {1.0 / {{inb2fac}*{inhib_rate_s}}}
			end
			randseed {nextseed}
			nextseed = {rand 100000 999999}
		else
			if(inb1rate > 0)
  				create timetable /inputs/soma/inhib_tt
  				setfield /inputs/soma/inhib_tt \
  					maxtime {{inb1onset} + {inb1dur} + {inb2dur}} act_val 1.0 method 2 \
  					meth_desc1 {1/{{inb1rate}*50}} \
  					meth_desc2 0 meth_desc3 3
  				call /inputs/soma/inhib_tt TABFILL
				if(inb2dur > 0)
  					call /inputs/soma/inhib_tt TUPDATE 2 {{inb1onset} + {inb1dur}} {{inb1onset} + {inb1dur} + {inb2dur}} {1.0 / {{inb2fac}*{inhib_rate_s}}}
				end
				// Next line takes baseline_rate back to near-zero. 
  				call /inputs/soma/inhib_tt TUPDATE 2 0 {inb1onset} {10000}
  				create spikegen /inputs/soma/inhib_spikegen
  				setfield /inputs/soma/inhib_spikegen output_amp 1 thresh 0.5
  				addmsg /inputs/soma/inhib_tt /inputs/soma/inhib_spikegen INPUT activation
  				addmsg /inputs/soma/inhib_spikegen soma/GABAs SPIKE
			end
		end
	end

	randseed {nextseed}
	nextseed = {rand 100000 999999}
	if (exbdur > 0 && exbrate > 0)
		openfile {MF_infile} r
		for (i = 1; i <= {no_MF}; i = i + 1)
			mfincomp = {readfile {MF_infile}}
			if (ex_rate_d > 0)
				call /inputs/{mfincomp}/ex_tt TUPDATE 2 {exbonset} {{exbonset} + {exbdur}} {1.0 / {exbrate}}
			else
				if(!{exists /inputs/{mfincomp}})
					create neutral /inputs/{mfincomp}
				end
				create timetable /inputs/{mfincomp}/ex_tt
				setfield /inputs/{mfincomp}/ex_tt \
					maxtime {{exbonset} + {exbdur}} act_val 1.0 method 2 \
					meth_desc1 {1/{exbrate}} meth_desc2 0 meth_desc3 3
				call /inputs/{mfincomp}/ex_tt TABFILL
				// Next line takes baseline_rate back to near-zero. 
 				call /inputs/{mfincomp}/ex_tt TUPDATE 2 0 {exbonset} {10000}
	 			create spikegen /inputs/{mfincomp}/ex_spikegen
 				setfield /inputs/{mfincomp}/ex_spikegen output_amp 1 thresh 0.5
 				addmsg /inputs/{mfincomp}/ex_tt /inputs/{mfincomp}/ex_spikegen INPUT activation
 				addmsg /inputs/{mfincomp}/ex_spikegen {mfincomp}/AMPAd SPIKE
			end
		end
		closefile {MF_infile}
	end

	randseed {nextseed}
	nextseed = {rand 100000 999999}
	if (inb1dur > 0)
		openfile {PC_infile} r

		for (i = 1; i <= {no_PC}; i = i + 1)
    			pcincomp = {readfile {PC_infile}}
			if (inhib_rate_d > 0)
				if(inb1rate > 0)
     					call /inputs/{pcincomp}/inhib_tt TUPDATE 2 {inb1onset} {{inb1onset} + {inb1dur}} {1.0 / {inb1rate}}
				end
	 			randseed {nextseed}
	 			nextseed = {rand 100000 999999}
				if(inb2dur > 0)
     					call /inputs/{pcincomp}/inhib_tt TUPDATE 2 {{inb1onset}+{inb1dur}} {{inb1onset}+{inb1dur}+{inb2dur}} {1.0 / {{inb2fac} * {inhib_rate_d}}}
				end
	 			randseed {nextseed}
	 			nextseed = {rand 100000 999999}
			else
				if(inb1rate > 0)
					if(!{exists /inputs/{pcincomp}})
 						create neutral /inputs/{pcincomp}
					end
 					create timetable /inputs/{pcincomp}/inhib_tt
 					setfield /inputs/{pcincomp}/inhib_tt \
 						maxtime {{inb1onset} + {inb1dur}} act_val 1.0 method 2  \
 						meth_desc1 {1/{inb1rate}} meth_desc2 0 meth_desc3 3
 					call /inputs/{pcincomp}/inhib_tt TABFILL
					if(inb2dur > 0)
						call /inputs/{pcincomp}/inhib_tt TUPDATE 2 {{inb1onset} + {inb1dur}} {{inb1onset} + {inb1dur} + {inb2dur}} {1.0 / {{inb2fac} * {inhib_rate_d}}}
					end
	 				randseed {nextseed}
	 				nextseed = {rand 100000 999999}
					// Next line takes baseline_rate back to near-zero. 
 					call /inputs/{pcincomp}/inhib_tt TUPDATE 2 0 {inb1onset} {10000}
 					create spikegen /inputs/{pcincomp}/inhib_spikegen
 					setfield /inputs/{pcincomp}/inhib_spikegen output_amp 1 thresh 0.5
 					addmsg /inputs/{pcincomp}/inhib_tt /inputs/{pcincomp}/inhib_spikegen INPUT activation
 					addmsg /inputs/{pcincomp}/inhib_spikegen {pcincomp}/GABAd SPIKE
				end
			end
		end
		closefile {PC_infile}
	end

	silent -1
end