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 fast Na channel
function make_NaF
  
  	echo creating fast Na channel

  	int i
  	float x, dx
  	float tau, act

  	if ({exists NaF})
    		return
  	end

  	create tabchannel NaF
  	setfield NaF Ek {ENa} Gbar {Ginit} Ik 0 Gk 0 Xpower 3 Ypower 1 Zpower 0

  	// activation
  	call NaF TABCREATE X {tab_xdivs} {tab_xmin} {tab_xmax}

  	x = {tab_xmin}
  	dx = ({tab_xmax} - {tab_xmin})/{tab_xdivs}

  	for (i = 0; i <= {tab_xdivs}; i = i + 1)

    		tau = 5.833e-3/({exp {(x - 0.0064)/-0.009}} + {exp {(x + 0.097)/0.017}}) + 2.5e-5
    		tau = tau/QDeltaT
    		act = 1.0/(1.0 + {exp {(x + 0.045)/-0.007324}})

    		setfield NaF X_A->table[{i}] {tau}
    		setfield NaF X_B->table[{i}] {act}

    		x = x + dx
	
	end

  	tweaktau NaF X
  	setfield NaF X_A->calc_mode {tab_calcmode}
  	setfield NaF X_B->calc_mode {tab_calcmode}
  	call NaF TABFILL X {tab_xfills} 0

  	// inactivation
  	call NaF TABCREATE Y {tab_xdivs} {tab_xmin} {tab_xmax}

  	x = {tab_xmin}

  	for (i = 0; i <= {tab_xdivs}; i = i + 1)

     		tau = 16.67e-3/({exp {(x - 0.0083)/-0.029}} + {exp {(x + 0.066)/0.009}}) + 2.0e-04
   	 	tau = tau/QDeltaT 
      		act = 1.0/(1.0 + {exp {(x + 0.042)/0.0059}})
    
    		setfield NaF Y_A->table[{i}] {tau}
    		setfield NaF Y_B->table[{i}] {act}

    		x = x + dx

  	end

  	tweaktau NaF Y
  	setfield NaF Y_A->calc_mode {tab_calcmode}
  	setfield NaF Y_B->calc_mode {tab_calcmode}
  	call NaF TABFILL Y {tab_xfills} 0

end


// create persistent Na channel
function make_NaP
  
  	echo creating persistent Na channel

  	int i
  	float x, dx
  	float tau, act
  	float alpha, beta

  	if ({exists NaP})
    		return
  	end

  	create tabchannel NaP
  	setfield NaP Ek {ENa} Gbar {Ginit} Ik 0 Gk 0 Xpower 3 Ypower 1 Zpower 0

  	// activation
  	call NaP TABCREATE X {tab_xdivs} {tab_xmin} {tab_xmax}

  	x = {tab_xmin}
  	dx = ({tab_xmax} - {tab_xmin})/{tab_xdivs}

  	for (i = 0; i <= {tab_xdivs}; i = i + 1)
    
    		tau = 0.05/QDeltaT
		act = 1.0/(1.0 + {exp {(x + 0.070)/-0.0041}})
		    
    		setfield NaP X_A->table[{i}] {tau}
    		setfield NaP X_B->table[{i}] {act}

    		x = x + dx

  	end

  	tweaktau NaP X
  	setfield NaP X_A->calc_mode {tab_calcmode}
  	setfield NaP X_B->calc_mode {tab_calcmode}
  	call NaP TABFILL X {tab_xfills} 0

  	// inactivation
  	call NaP TABCREATE Y {tab_xdivs} {tab_xmin} {tab_xmax}

  	x = {tab_xmin}

  	for (i = 0; i <= {tab_xdivs}; i = i + 1)

    		tau = 0.25 + 1.75/(1.0 + {exp {(x + 0.065)/-0.008}})
		tau = tau/QDeltaT
    		act = 1.0/(1.0 + {exp {(x + 0.080)/0.004}})
    
    		setfield NaP Y_A->table[{i}] {tau}
    		setfield NaP Y_B->table[{i}] {act}

   	 	x = x + dx

  	end

  	tweaktau NaP Y
  	setfield NaP Y_A->calc_mode {tab_calcmode}
  	setfield NaP Y_B->calc_mode {tab_calcmode}
  	call NaP TABFILL Y {tab_xfills} 0

end


// create fast delayed rectifier Kv3 
function make_fKdr
  
  	echo creating fast delayed rectifier

  	int i
  	float x, dx
  	float tau, act

  	if ({exists fKdr})
    		return
  	end

 	create tabchannel fKdr
  	setfield fKdr Ek {EK} Gbar {Ginit} Ik 0 Gk 0 Xpower 4 Ypower 0 Zpower 0

  	// activation
  	call fKdr TABCREATE X {tab_xdivs} {tab_xmin} {tab_xmax}

  	x = {tab_xmin}
  	dx = ({tab_xmax} - {tab_xmin})/{tab_xdivs}

  	for (i = 0; i <= {tab_xdivs}; i = i + 1)

		tau = 0.0001 + (0.0139/({exp { (-0.040 - x)/-0.012 } } + {exp {-(-0.040 - x)/-0.013 }}))
		tau = tau/QDeltaT
		act = 1/(1 + {exp { (-0.040 - x)/0.0078 } } )
		
    		setfield fKdr X_A->table[{i}] {tau}
    		setfield fKdr X_B->table[{i}] {act}

    		x = x + dx

  	end

  	tweaktau fKdr X
  	setfield fKdr X_A->calc_mode {tab_calcmode}
  	setfield fKdr X_B->calc_mode {tab_calcmode}
  	call fKdr TABFILL X {tab_xfills} 0

end


// create slow delayed rectifier Kv2
function make_sKdr
  
  	echo creating slow delayed rectifier

  	int i
  	float x, dx
  	float tau, act

  	if ({exists sKdr})
    		return
  	end

  	create tabchannel sKdr
  	setfield sKdr Ek {EK} Gbar {Ginit} Ik 0 Gk 0 Xpower 4 Ypower 0 Zpower 0

  	// activation
  	call sKdr TABCREATE X {tab_xdivs} {tab_xmin} {tab_xmax}

  	x = {tab_xmin}
  	dx = ({tab_xmax} - {tab_xmin})/{tab_xdivs}

  	for (i = 0; i <= {tab_xdivs}; i = i + 1)

		tau = 5.0e-5 + (0.01495 / ({exp { (-0.050 - x) / -0.02174 } } + {exp {-(-0.050 - x) / -0.01391 }}))
		tau = tau/QDeltaT
		act = 1 / (1 + {exp { (-0.050 - x) / 0.0091 } } )
		
    		setfield sKdr X_A->table[{i}] {tau}
    		setfield sKdr X_B->table[{i}] {act}

    		x = x + dx

  	end

  	tweaktau sKdr X
  	setfield sKdr X_A->calc_mode {tab_calcmode}
  	setfield sKdr X_B->calc_mode {tab_calcmode}
  	call sKdr TABFILL X {tab_xfills} 0

end


// create small conductance KCa channel
function make_Sk

  	echo creating small conductance KCa channel

  	int i
  	float y, dy
  	float tau, act

  	if ({exists Sk})
    		return
  	end

  	create tabchannel Sk
  	setfield Sk Ek {EK} Gbar {Ginit} Ik 0 Gk 0 Xpower 0 Ypower 0 Zpower 1

  	call Sk TABCREATE Z {tab_ydivs} {tab_ymin} {tab_ymax}

  	y = {tab_ymin}
  	dy = ({tab_ymax} - {tab_ymin})/{tab_ydivs}

  	for (i = 0; i <= {tab_ydivs}; i = i + 1)
    
    		if ({y < 0.005}) 
      			tau = 0.001 - y*0.1867
    		else
      			tau = 6.667e-5
    		end
    		tau = tau/QDeltaT 
    		act = {pow {y} {4.0}}/({pow {y} {4.0}} + {pow {0.3e-3} {4.0}})

    		setfield Sk Z_A->table[{i}] {tau}
    		setfield Sk Z_B->table[{i}] {act}

    		y = y + dy

  	end

  	tweaktau Sk Z
  	setfield Sk Z_A->calc_mode {tab_calcmode}
  	setfield Sk Z_B->calc_mode {tab_calcmode}
  	call Sk TABFILL Z {tab_xfills} 0

end


// create slow h current
function make_h_slow

  	echo creating slow h current

  	int i
  	float x, dx
  	float tau, act

  	if ({exists h_slow})
    		return
  	end

  	create tabchannel h_slow
  	setfield h_slow Ek {Eh} Gbar {Ginit} Ik 0 Gk 0 Xpower 2 Ypower 0 Zpower 0

  	// activation
  	call h_slow TABCREATE X {tab_xdivs} {tab_xmin} {tab_xmax}

  	x = {tab_xmin}
  	dx = ({tab_xmax} - {tab_xmin})/{tab_xdivs}

  	for (i = 0; i <= {tab_xdivs}; i = i + 1)

    		tau = 0.4
		tau = tau/QDeltaT
        	act = 1.0/(1.0 + {exp {(x + 0.080)/0.005}})

    		setfield h_slow X_A->table[{i}] {tau}
    		setfield h_slow X_B->table[{i}] {act}

    		x = x + dx

  	end

  	tweaktau h_slow X
  	setfield h_slow X_A->calc_mode {tab_calcmode}
  	setfield h_slow X_B->calc_mode {tab_calcmode}
  	call h_slow TABFILL X {tab_xfills} 0

end


// create low voltage activated calcium channel
function make_CaLVA
 
  	echo creating low voltage activated Ca channel

  	int i
  	float x, dx
  	float tau, act

  	if ({exists CaLVA})
    		return
  	end

  	create tabchannel CaLVA
  	setfield CaLVA Ek {ECa} Gbar {Ginit} Ik 0 Gk 0 Xpower 2 Ypower 1 Zpower 0

  	// activation
  	call CaLVA TABCREATE X {tab_xdivs} {tab_xmin} {tab_xmax}

  	x = {tab_xmin}
  	dx = ({tab_xmax} - {tab_xmin})/{tab_xdivs}

  	for (i = 0; i <= {tab_xdivs}; i = i + 1)

		tau = 0.000204 + 0.333e-3/({exp {(x + 0.131)/-0.0167}} + {exp {(x + 0.0158)/0.0182}})
		tau = tau/QDeltaT
		act = 1.0/(1.0 + {exp {(x + 0.056)/-0.0062}})

    		setfield CaLVA X_A->table[{i}] {tau}
    		setfield CaLVA X_B->table[{i}] {act}

    		x = x + dx

  	end

  	tweaktau CaLVA X
  	setfield CaLVA X_A->calc_mode {tab_calcmode}
  	setfield CaLVA X_B->calc_mode {tab_calcmode}
  	call CaLVA TABFILL X {tab_xfills} 0

  	// inactivation
  	call CaLVA TABCREATE Y {tab_xdivs} {tab_xmin} {tab_xmax}

  	x = {tab_xmin}

  	for (i = 0; i <= {tab_xdivs}; i = i + 1)

		if(x < -0.081)
			tau = 0.333e-3 * {exp {(x + 0.466)/0.0666}}
		else
			tau = 9.32e-3 + (0.333e-3 * {exp {(x + 0.021)/-0.0105}})
		end
		tau = tau/QDeltaT
		act = 1.0/(1.0 + {exp {(x + 0.080)/0.004}}) 
    	
    		setfield CaLVA Y_A->table[{i}] {tau}
    		setfield CaLVA Y_B->table[{i}] {act}

    		x = x + dx

  	end

  	tweaktau CaLVA Y
  	setfield CaLVA Y_A->calc_mode {tab_calcmode}
  	setfield CaLVA Y_B->calc_mode {tab_calcmode}
  	call CaLVA TABFILL Y {tab_xfills} 0

end


// create high voltage activated calcium channel
function make_CaHVA
 
  	echo creating high voltage activated Ca channel

  	int i
  	float x, dx
  	float tau, act
  	float a, b

  	if ({exists CaHVA})
    		return
  	end

  	create tabchannel CaHVA
  	setfield CaHVA Ek {ECa} Gbar {Ginit} Ik 0 Gk 0 Xpower 3 Ypower 0 Zpower 0

  	// activation
  	call CaHVA TABCREATE X {tab_xdivs} {tab_xmin} {tab_xmax}

  	x = {tab_xmin}
  	dx = ({tab_xmax} - {tab_xmin})/{tab_xdivs}

  	for (i = 0; i <= {tab_xdivs}; i = i + 1)
    
    		a = 31746.03/(1.0 + {exp {-72.0*(x - 0.005)}})
    		b = 396.825*(x + 0.0089)/({exp {(x + 0.0089)/0.005}} - 1.0)
    		tau = 1/(a + b)
    		tau = tau/QDeltaT 
    		act = 1.0/(1.0 + {exp {(x + 0.0345)/-0.009}})

    		setfield CaHVA X_A->table[{i}] {tau}
    		setfield CaHVA X_B->table[{i}] {act}

    		x = x + dx

  	end

  	tweaktau CaHVA X
  	setfield CaHVA X_A->calc_mode {tab_calcmode}
  	setfield CaHVA X_B->calc_mode {tab_calcmode}
  	call CaHVA TABFILL X {tab_xfills} 0

end


// create tonic non-selective cation current 
function make_TNC
 
  	echo creating non specific cation current

  	int i
  	float x, dx
  	float tau, act

  	if ({exists TNC})
    		return
  	end

  	create tabchannel TNC
  	setfield TNC Ek {ETNC} Gbar {Ginit} Ik 0 Gk 0 Xpower 1 Ypower 0 Zpower 0

  	// activation
  	call TNC TABCREATE X {tab_xdivs} {tab_xmin} {tab_xmax}

  	x = {tab_xmin}
  	dx = ({tab_xmax} - {tab_xmin})/{tab_xdivs}

  	for (i = 0; i <= {tab_xdivs}; i = i + 1)
    
    		tau = {dt}
    		act = 1.0

    		setfield TNC X_A->table[{i}] {tau}
    		setfield TNC X_B->table[{i}] {act}

   		 x = x + dx

  	end

  	tweaktau TNC X
  	setfield TNC X_A->calc_mode {tab_calcmode}
  	setfield TNC X_B->calc_mode {tab_calcmode}
  	call TNC TABFILL X {tab_xfills} 0

end


// create Goldman-Hodgkin-Katz element
function make_GHK

	echo creating GHK element

	if (!{exists GHK})
	    	create tabcurrent GHK
	    	setfield GHK Gindex {VOLT_C1_INDEX} Gbar 0.0
		call GHK TABCREATE G_tab {tab_xfills} {tab_xmin} {tab_xmax} \
					 {tab_xfills} {tab_ymin} {tab_ymax}
	end
		
	setupghk GHK 2 {TempC} 0 {CCaO} \
		-xsize {tab_xfills} -xrange {tab_xmin} {tab_xmax} \
		-ysize {tab_xfills} -yrange {tab_ymin} {tab_ymax} 

	setfield GHK G_tab->calc_mode {tab_calcmode}
	setfield GHK I_tab->calc_mode {tab_calcmode}

end


// create all channels
function make_cn_chans
  
	echo making CN channel library...

	make_NaF
	make_NaP
	make_sKdr
	make_fKdr
	make_Sk
	make_h_slow
	make_CaLVA
	make_CaHVA
	make_TNC
        make_GHK
	
	echo done.
end