Purkinje cell: Synaptic activation predicts voltage control of burst-pause (Masoli & D'Angelo 2017)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:239421
"The dendritic processing in cerebellar Purkinje cells (PCs), which integrate synaptic inputs coming from hundreds of thousands granule cells and molecular layer interneurons, is still unclear. Here we have tested a leading hypothesis maintaining that the significant PC output code is represented by burst-pause responses (BPRs), by simulating PC responses in a biophysically detailed model that allowed to systematically explore a broad range of input patterns. BPRs were generated by input bursts and were more prominent in Zebrin positive than Zebrin negative (Z+ and Z-) PCs. Different combinations of parallel fiber and molecular layer interneuron synapses explained type I, II and III responses observed in vivo. BPRs were generated intrinsically by Ca-dependent K channel activation in the somato-dendritic compartment and the pause was reinforced by molecular layer interneuron inhibition. BPRs faithfully reported the duration and intensity of synaptic inputs, such that synaptic conductance tuned the number of spikes and release probability tuned their regularity in the millisecond range. ..."
Reference:
1 . Masoli S, D'Angelo E (2017) Synaptic Activation of a Detailed Purkinje Cell Model Predicts Voltage-Dependent Control of Burst-Pause Responses in Active Dendrites. Front Cell Neurosci 11:278 [PubMed]
Citations  Citation Browser
Model Information (Click on a link to find other models with that property)
Model Type: Realistic Network; Synapse;
Brain Region(s)/Organism: Cerebellum;
Cell Type(s): Cerebellum Purkinje GABA cell;
Channel(s): I Potassium; I K,Ca;
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: NEURON;
Model Concept(s): Detailed Neuronal Models; Bursting;
Implementer(s): Masoli, Stefano [stefano.masoli at unipv.it];
Search NeuronDB for information about:  Cerebellum Purkinje GABA cell; I K,Ca; I Potassium;
/
Purkinjecell_2017
mod_files
Cav2_1.mod *
Cav3_1.mod *
Cav3_2.mod *
Cav3_3.mod *
cdp5.mod *
HCN1_Angeloetal2007.mod *
Kca11.mod *
Kca22.mod *
Kca31.mod *
Kir23.mod *
Kv11.mod *
Kv15.mod *
Kv33.mod *
Kv34.mod *
Kv43.mod *
Leak.mod *
Nav16.mod *
PC_Gaba_det_vi_alfa1.mod
PURKINJE_Ampa_det_vi.mod
UBC_TRP.mod
                            
TITLE Gaba mod file only for fitting purpose 

COMMENT
Thierry Nieus, unpublished results, please keep reserved.
Variables with suffix "_s" are meant for single IPSC fit, with suffix "_2" for CGP experimental condition
	Does not work with variable dt!
ENDCOMMENT



NEURON {
	POINT_PROCESS PC_gaba_alpha1
	 
	NONSPECIFIC_CURRENT i
	RANGE Q10_diff,Q10_channel
	RANGE g, ic ,Cdur ,Tmax, Erev
	RANGE Open

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

	RANGE gmaxA1,onSET	
	RANGE gA1

	RANGE xout,yout,zout,uout	
	
	RANGE tau_1,tau_rec,tau_facil,U,T,U_2 
	RANGE diff_flag,diff_flag2,M,Rd,Diff,lamd
	RANGE nd,diffus ,Trelease, gmax_factor, syntype 
	RANGE C, CA1, CA2, DA1, DA2, DA2f, OA1, OA2	
}

UNITS {
	(nA) 	= (nanoamp)
	(mV) 	= (millivolt)
	(umho)  = (micromho)
	(mM) 	= (milli/liter)
	(pS) 	= (picosiemens)
	PI   	= (pi)(1)
    }
    
    
    
    PARAMETER {
	syntype
	gmax_factor = 1
	: Parametri Postsinaptici
	gmaxA1	= 918.807	(pS)	
	Q10_diff	= 1.5
	Q10_channel	= 2.4
	Cdur	= 0.3		(ms)	

	: A1 kinetic rates EC50=(around) 20 uM, U=0.35
	kon	= 20		(/ms/mM)	: 20
	koff	= 2		(/ms) 		 
	d3	= 15		(/ms) 	: 15	 
	r3	= 0.15		(/ms) 	: 0.15, use 3.75 for slices in the PR model
	d1d2	= 15		(/ms/mM) : 15	
	r1r2	= 0.007		(/ms)	: 0.007
	a1	= 0.06		(/ms)	: 0.06
	b1	= 0.03		(/ms)
	a2	= 0.4		(/ms)	: 0.4
	b2	= 10		(/ms)	
	r1	= 7e-4		(/ms)
	r2	= 6e-3		(/ms)	: 6e-3
	d1	= 3.3e-4	(/ms)
	d2	= 1.2		(/ms)	: 1.2
	
	Erev	= -60		(mV)

	: Parametri Presinaptici
	tau_1 	= 0.1 		(ms) 	< 1e-9, 1e9 >
	tau_rec = 36.169 	(ms) 	< 1e-9, 1e9 > 	:43.4
	tau_facil = 58.517	(ms) 	< 0, 1e9 >	: 6.22 
	U 	= 0.35			< 0, 1 >
	 
	
	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	= 7.506	: numero di (kilo) molecole in una vescicola	(52.76)	
	Rd	= 0.978 (um)	:4.79	: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

	 
	celsius (degC)
}


ASSIGNED {
	v		(mV)		: postsynaptic voltage
	i 		(nA)		: current = g*(v - Erev)
	ic 		(nA)		: current = g*(v - Erev)
	g 		(pS)		: conductance
	gA1		(nA)
	
	Open
	diffus	
 
	T		(mM)	
	 
	Trelease	(mM)
	 	
	Mres		(mM)	
	tpre		(ms)

	xout
	yout
	zout
	uout
	
	tspike[100]	(ms)	: will be initialized by the pointprocess
	PRE[100]
	:PRE_2[500]
	numpulses
	tzero
	gbar_Q10 (mho/cm2)
	Q10 (1)
}

STATE {	
	: CTRL - A1
	C
	CA1
	CA2
	DA1
	DA2
	DA2f
	OA1
	OA2	
 
}

INITIAL {
	: CTRL - A1
	C=1
	CA1=0
	CA2=0
	DA1=0
	DA2=0
	DA2f=0
	OA1=0  	
	OA2=0

 
	Open=0
	  
	T=0 		(mM)
	
	gbar_Q10 = Q10_diff^((celsius-30)/10)
	Q10 = Q10_channel^((celsius-30)/10)
 
	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 100 { PRE[i-1]=0 tspike[i-1]=0 } :PRE_2[500]=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) 
	} 
	onSET	= 1
	 
}
	FUNCTION imax(a,b) {
	    if (a>b) { imax=a }
	    else { imax=b }
	}
	
FUNCTION diffusione(){	 
	LOCAL DifWave,i,cntc,fi,aaa
	DifWave=0
	cntc=imax(numpulses-100,0)
	FROM i=cntc  TO numpulses{
	    fi=fmod(i,100)
	    tzero=tspike[fi]
		if(t>tzero){
		    aaa = (-Rd*Rd/(4*Diff*(t-tzero)))
		    if(fabs(aaa)<699){
			DifWave=DifWave+PRE[fi]*Mres*exp(aaa)/((4*PI*Diff*(1e-3)*lamd)*(t-tzero)) : ^nd nd =1
		    }else{
			if(aaa>0){
			    DifWave=DifWave+PRE[fi]*Mres*exp(699)/((4*PI*Diff*(1e-3)*lamd)*(t-tzero)) : ^nd nd =1
			}else{
			    DifWave=DifWave+PRE[fi]*Mres*exp(-699)/((4*PI*Diff*(1e-3)*lamd)*(t-tzero)) : ^nd nd =1
			}
		    }
		}
	}	
	diffusione=DifWave
}



BREAKPOINT {
	SOLVE kstates METHOD sparse
	
	Open=OA1+OA2
	
	gA1 = gmaxA1 * gbar_Q10 * Open
	
	g = gA1 * gmax_factor
	
	i = (1e-6) * g * ( v - Erev )
	ic = i
}

KINETIC kstates {

	: ************
	: *** CTRL ***	
	: ************
	

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


NET_RECEIVE(weight,on, nspike,tzero (ms),x,y,z,u, tsyn (ms)) {LOCAL fi
	INITIAL {
		x = 0
		y = 0
		z = 0
		u = 0 
		 		
		xout=x
		yout=y
		zout=z
		uout=u
		tsyn = t
		nspike = 1
	}

	if(onSET){
		on=0 
		onSET=0
		 
	}
	
	if (flag == 0) { 
		: Qui faccio rientrare la modulazione presinaptica
		nspike = nspike + 1
		:printf("T = %g (mM)\n",Trelease)
		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

			 
				
			fi=fmod(numpulses,100)
			PRE[fi]=y	: PRE[numpulses]=y
			 
			tspike[fi] = t
			numpulses=numpulses+1

			 

			tsyn = t			
		}
		net_send(Cdur, nspike)
		 
	}

	if (flag == nspike) { 
		T = 0
		 
		on = 0
	}
}