: from Durstewitz & Gabriel (2006), Cerebral Cortex TITLE nmda synapse NEURON { POINT_PROCESS NMDA NONSPECIFIC_CURRENT i RANGE g,a,b,gNMDAmax,tauD,tauF,util,tcon,tcoff,enmda } UNITS { (uS) = (microsiemens) (nA) = (nanoamp) (mV) = (millivolt) } PARAMETER { tcon = 2.3 (ms) tcoff = 95.0 (ms) enmda = 0 (mV) gNMDAmax = 0 (uS) tauD = 800 (ms) tauF = 800 (ms) util= .3 } ASSIGNED { v (mV) i (nA) g (uS) factor } INITIAL { a=0 b=0 factor=tcon*tcoff/(tcoff-tcon) } STATE { a b } BREAKPOINT { LOCAL s SOLVE states METHOD derivimplicit s = 1.50265/(1+0.33*exp(-0.0625*v)) g = b-a i = gNMDAmax*g*s*(v-enmda) } DERIVATIVE states { a' = -a/tcon b' = -b/tcoff } NET_RECEIVE(wgt,R,u,tlast (ms),nspike) { LOCAL x :printf("entry flag=%g t=%g\n", flag, tlast) if (nspike==0) { R=1 u=util } else { if (tauF>0) { u=util+(1-util)*u*exp(-(t-tlast)/tauF) } if (tauD>0) { R=1+(R*(1-u)-1)*exp(-(t-tlast)/tauD) } } x=wgt*factor*R*u state_discontinuity(a,a+x) state_discontinuity(b,b+x) tlast=t nspike= nspike+1 }