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
}
}