Multicompartmental cerebellar granule cell model (Diwakar et al. 2009)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:116835
A detailed multicompartmental model was used to study neuronal electroresponsiveness of cerebellar granule cells in rats. Here we show that, in cerebellar granule cells, Na+ channels are enriched in the axon, especially in the hillock, but almost absent from soma and dendrites. Numerical simulations indicated that granule cells have a compact electrotonic structure allowing EPSPs to diffuse with little attenuation from dendrites to axon. The spike arose almost simultaneously along the whole axonal ascending branch and invaded the hillock, whose activation promoted spike back-propagation with marginal delay (<200 micros) and attenuation (<20 mV) into the somato-dendritic compartment. For details check the cited article.
Reference:
1 . Diwakar S, Magistretti J, Goldfarb M, Naldi G, D'Angelo E (2009) Axonal Na+ channels ensure fast spike activation and back-propagation in cerebellar granule cells. J Neurophysiol 101:519-32 [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 interneuron granule GLU cell;
Channel(s): I A; I M; I h; I K,Ca; I Sodium; I Calcium; I Potassium; I A, slow;
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: NEURON;
Model Concept(s): Action Potential Initiation; Active Dendrites; Detailed Neuronal Models; Axonal Action Potentials; Action Potentials; Intrinsic plasticity;
Implementer(s): Diwakar, Shyam [shyam at amrita.edu];
Search NeuronDB for information about:  Cerebellum interneuron granule GLU cell; I A; I M; I h; I K,Ca; I Sodium; I Calcium; I Potassium; I A, slow;
/
GrC
fig10
readme.html
AmpaCOD.mod *
GRC_CA.mod *
GRC_CALC.mod *
GRC_GABA.mod *
GRC_KA.mod *
GRC_KCA.mod *
GRC_KIR.mod *
GRC_KM.mod *
GRC_KV.mod *
GRC_LKG1.mod *
GRC_LKG2.mod *
GRC_NA.mod *
NmdaS.mod *
Pregen.mod *
ComPanel.hoc
Grc_Cell.hoc
mosinit.hoc
Parametri.hoc
screenshot.jpg
simple.ses
Start.hoc
                            
TITLE 

COMMENT
	Reference: Pugh JR and Raman I, Biophysical Journal Volume 88, March 2005 1740-1754
	Model adapted from patch to slice.
ENDCOMMENT

NEURON {
	POINT_PROCESS GRC_GABA
	NONSPECIFIC_CURRENT i
	RANGE g,Cdur,Erev,Open,OpenScaled,ScaleFactor

	:RANGE r1,r2,kon,koff,d1,d2,a1,a2,b1,b2
	RANGE kon,koff,d3,r3,d1d2,r1r2,a1,b1,a2,b2,r1,r2,d1,d2

	RANGE Tmax,gmax,onSET	
	
	RANGE tau_1,tau_rec,tau_facil,U,T 
	RANGE diff_flag,M,Rd,Diff,lamd
	RANGE nd
}

UNITS {
	(nA) 	= (nanoamp)
	(mV) 	= (millivolt)
	(umho)  = (micromho)
	(mM) 	= (milli/liter)
	(pS) 	= (picosiemens)
	PI   	= (pi)(1)
}

PARAMETER {
	: Parametri Postsinaptici
	gmax	=  756.35	(pS)	:1750 
	Cdur	= 0.3		(ms)	

	kon	= 20		(/ms/mM)	
	koff	= 2		(/ms) 		 
	d3	= 15		(/ms) 		 
	r3	= 3.75		(/ms) 		: 0.15, use 3.75 for slices 

	d1d2	= 15		(/ms/mM)	
	r1r2	= 0.007		(/ms)

	a1	= 0.06		(/ms)
	b1	= 0.03		(/ms)
	a2	= 0.4		(/ms)
	b2	= 10		(/ms)
	
	r1	= 7e-4		(/ms)
	r2	= 6e-3		(/ms)
	d1	= 3.3e-4	(/ms)
	d2	= 1.2		(/ms)

	Erev	= -65	(mV)

	: Parametri Presinaptici
	tau_1 		= 0.1 (ms) 	< 1e-9, 1e9 >
	tau_rec 	= 43.4 (ms) 	< 1e-9, 1e9 > 	:55.11 15.7	(first fit!)
	tau_facil 	= 6.22 (ms) 	< 0, 1e9 >    	:2.66 4.85  (first fit!)	
	U 		= 0.35		< 0, 1 >	:0.24  0.18	(first fit!)
	
	Tmax	= 1  (mM)	
	onSET	= 1
		
	: Diffusion parameters
	: Diffusion: M=21.500, R=1.033, D=0.223, lamd=0.02 as in excitatory synapses	

	M		= 52.76		:	46.93			: 20.95 (first fit!)
: numero di (kilo) molecole in una vescicola		
	Rd		= 4.79 (um)	:4.96	: 4.96 (first fit!)
	Diff		= 0.223 (um2/ms)
	lamd		= 20 	(nm)
	diff_flag	= 1			: flag diffusion on/off
	nd		= 1			: kernel exponent of diffusion

	ScaleFactor	= 1 			: for fit purposes
}


ASSIGNED {
	v		(mV)		: postsynaptic voltage
	i 		(nA)		: current = g*(v - Erev)
	g 		(pS)		: conductance
	Open
	OpenScaled	: for fit purposes
	
	T		(mM)	
	Trelease	(mM)
	Mres		(mM)	
	tpre		(ms)

	tspike[50]	(ms)	: will be initialized by the pointprocess
	PRE[50]
	numpulses
	tzero
}

STATE {	
	C
	CA1
	CA2
	DA1
	DA2
	DA2f
	OA1
	OA2	
}

INITIAL {
	C=1
	CA1=0
	CA2=0
	DA1=0
	DA2=0
	DA2f=0
	OA1=0  	
	OA2=0
	CA1=0
	CA2=0
	Open=0
	T=0 		(mM)
	:tpre=1e8	(ms)
		
	numpulses=0
	Mres=1e3* (1e3 * 1e15 / 6.022e23 * M)     : (M) to (mM) so 1e3, 1um^3=1dm^3*1e-15 so 1e15
	FROM i=1 TO 50{ PRE[i-1]=0 tspike[i-1]=0}
	tspike[0]=1e12	(ms)
	if(tau_1>=tau_rec){ 
		printf("Warning: tau_1 (%g) should never be higher neither equal to tau_rec (%g)!\n",tau_1,tau_rec)
		tau_rec=tau_1+1e-5
		:printf("tau_rec has been set to %g\n",tau_rec) 
	} 
}

FUNCTION diffusione(){
	LOCAL DifWave,i	
	DifWave=0
	FROM i=1 TO numpulses{
		tzero=tspike[i-1]
		if(t>tzero){
			DifWave=DifWave+PRE[i-1]*Mres*exp(-Rd*Rd/(4*Diff*(t-tzero)))/((4*PI*Diff*(1e-3)*lamd)*(t-tzero))^nd
		}
	}	
	diffusione=DifWave :Mres*exp(-Rd*Rd/(4*Diff*(t-tpre)))/((4*PI*Diff*(1e-3)*lamd)*(t-tpre))	
}


BREAKPOINT {
	SOLVE kstates METHOD sparse
	Open = OA1 + OA2
	OpenScaled=Open*ScaleFactor
	g = gmax * Open
	i = (1e-6) * g * (v - Erev)
}

KINETIC kstates {
	if ( diff_flag ) { Trelease = T + diff_flag * diffusione() } else { Trelease = T }
	: second row
	~	C  	<-> 	CA1	(2*kon*Trelease,koff)
	~	CA1 	<-> 	CA2	(kon*Trelease,2*koff)
	~	CA2	<->	DA2f	(d3,r3)
	: third row
	~ 	DA1  	<-> 	DA2	(d1d2*Trelease,r1r2)
	: first <=> second row
	~ 	OA1  	<-> 	CA1	(a1,b1)
	~ 	OA2  	<-> 	CA2	(a2,b2)
	: third <=> second row
	~	DA1	<->	CA1	(r1,d1)
	~	DA2	<->	CA2	(r2,d2)
	CONSERVE C+CA1+CA2+DA1+DA2+DA2f+OA1+OA2 = 1
}


NET_RECEIVE(weight, on, nspike, tzero (ms),x,y, z, u, tsyn (ms)) {

	INITIAL {
		x = 0
		y = 0
		z = 0
		u = 0 :u0
		tsyn = t
		nspike = 1
	}

	if(onSET){on=0 onSET=0}
        if (flag == 0) { 
		: Qui faccio rientrare la modulazione presinaptica
		nspike = nspike + 1
		if (!on) {
			tzero = t	
			tpre=t	: activates diffusion
			on = 1				
			z = z*exp(-(t - tsyn)/tau_rec)		
			z = z + ( y*(exp(-(t - tsyn)/tau_1) - exp(-(t - tsyn)/tau_rec)) / ((tau_1/tau_rec)-1) )
			y = y*exp(-(t - tsyn)/tau_1)			
			x = 1-y-z
				
			if (tau_facil > 0) { 
				u = u*exp(-(t - tsyn)/tau_facil)
				u = u + U * ( 1 - u )							
			} else { u = U }
			
			y = y + x * u
			T=Tmax*y
				
			PRE[numpulses]=y
			tspike[numpulses]=t
			numpulses=numpulses+1
			tsyn = t			
		}
		net_send(Cdur, nspike)
        }
	if (flag == nspike) { 
			T = 0
			on = 0
	}
}