TITLE NMDA sinaptico COMMENT NMDA model from article (version 15 sept 2004). Based on Nieus et al, 2006. ENDCOMMENT INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)} NEURON { POINT_PROCESS NMDAS NONSPECIFIC_CURRENT i RANGE Rb,Ru,Rd,Rr,Ro, Rc,rb RANGE g,gmax,Cdur,Erev RANGE MgBlock,v0_block,k_block RANGE gg1,gg2,gg3 RANGE T,Trelease,Tdiff RANGE tau_1,tau_rec,tau_facil,U,u0 RANGE A1,A2,A3,tau_dec1,tau_dec2,tau_dec3 : comes from fit RANGE tdelay,ton,PRE } UNITS { (nA) = (nanoamp) (mV) = (millivolt) (pS) = (picosiemens) (umho) = (micromho) (mM) = (milli/liter) (uM) = (micro/liter) PI = (pi) (1) } PARAMETER { Rb = 5 (/ms/mM) : binding Ru = 0.1 (/ms) : unbinding Rd = 12e-4 (/ms) : desensitization Rr = 9e-3 (/ms) : resensitization Ro = 3e-2 (/ms) : opening Rc = 0.966 (/ms) : closing Erev = -3.7 (mV) : 0 (mV) gmax = 10e4 (pS) : 7e3 : 4e4 v0_block = -20 (mV) : -8.69 (mV) : -18.69 (mV) : -32.7 (mV) k_block = 13 (mV) : Diffusion: M=21500, R=1.033, D=0.223, lamd=0.02 A1 = 0.131837 A2 = 0.0555027 A3 = 0.0135232 tau_dec1 = 3.4958 tau_dec2 = 16.6317 tau_dec3 = 128.983 : Parametri Presinaptici tau_1 = 3 (ms) < 1e-9, 1e9 > tau_rec = 35.1 (ms) < 1e-9, 1e9 > tau_facil = 10.8 (ms) < 0, 1e9 > U = 0.416 (1) < 0, 1 > u0 = 0 (1) < 0, 1 > : se u0=0 al primo colpo y=U } ASSIGNED { v (mV) : postsynaptic voltage i (nA) : current = g*(v - Erev) g (pS) : actual conductance rb (/ms) : binding MgBlock T (mM) Trelease (mM) Tdiff (mM) Tdiff_0 (mM) tdelay (ms) ton (ms) x PRE } STATE { C0 : unbound C1 : single bound C2 : double bound D : desensitized O : open gg1 gg2 gg3 sink } INITIAL { rates(v) C0 = 1 C1 = 0 C2 = 0 O = 0 D = 0 T = 0 (mM) Tdiff = 0 (mM) Trelease = 0 (mM) Tdiff_0 = 0 (mM) gg1 = 0 gg2 = 0 gg3 = 0 ton = -1 (ms) PRE = 0 } FUNCTION SET_tdelay(R,D){ tdelay=0.25*R*R/D } BREAKPOINT { rates(v) if( (t-ton)>tdelay) { Tdiff=gg1+gg2+gg3 Tdiff_0 = Tdiff }else{ Tdiff=Tdiff_0+(A1+A2+A3)*PRE*(t-ton)/tdelay } Trelease = Tdiff SOLVE kstates METHOD sparse g = gmax* O i = (1e-6) * g * (v - Erev) * MgBlock } KINETIC kstates { rb = Rb * Trelease ~ C0 <-> C1 (rb,Ru) ~ C1 <-> C2 (rb,Ru) ~ C2 <-> D (Rd,Rr) ~ C2 <-> O (Ro,Rc) CONSERVE C0+C1+C2+D+O = 1 : Glutamate diffusion wave ~ gg1 <-> sink (1/tau_dec1,0) ~ gg2 <-> sink (1/tau_dec2,0) ~ gg3 <-> sink (1/tau_dec3,0) } PROCEDURE rates(v(mV)) { : E' necessario includere DEPEND v0_block,k_block per aggiornare le tabelle! TABLE MgBlock DEPEND v0_block,k_block FROM -120 TO 30 WITH 150 MgBlock = 1 / ( 1 + exp ( - ( v - v0_block ) / k_block ) ) } NET_RECEIVE(weight, on, nspike,flagtdel, t0 (ms),y, z, u, tsyn (ms)) { INITIAL { flagtdel=1 nspike = 1 Tdiff=0 y=0 z=0 u=u0 tsyn=t } if (flag == 0) { nspike = nspike + 1 if (!on) { ton=t t0=t 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 tsyn=t PRE=y } net_send(tdelay,flagtdel) } if (flag == flagtdel){ flagtdel = flagtdel+1 state_discontinuity(gg1,gg1+A1*x*u) state_discontinuity(gg2,gg2+A2*x*u) state_discontinuity(gg3,gg3+A3*x*u) on=0 } }