NEURON { POINT_PROCESS GRANULE_Nmda_stoch_vi POINTER y NONSPECIFIC_CURRENT i RANGE Q10_diff,Q10_channel RANGE g , ic RANGE Cdur,Erev,T,Tmax RANGE Rb, Ru, Rd, Rr, Ro, Rc,rb,gmax,RdRate RANGE PRE RANGE Used RANGE MgBlock,v0_block,k_block RANGE diffuse,Trelease,lamd, Diff, M, Rd, nd, syntype, gmax_factor RANGE T_factor } UNITS { (nA) = (nanoamp) (mV) = (millivolt) (umho) = (micromho) (mM) = (milli/liter) (pS) = (picosiemens) (nS) = (nanosiemens) (um) = (micrometer) PI = (pi) (1) } PARAMETER { syntype gmax_factor = 1 : Parametri Presinaptici gmax = 18800 (pS) : 7e3 : 4e4 Q10_diff = 1.5 Q10_channel = 2.4 M = 21.515 : numero di (kilo) molecole in una vescicola Rd = 1.03 (um) Diff = 0.223 (um2/ms) Tmax = 1 (mM) T_factor = 0.5 : Postsinaptico, Westbrook scheme Cdur = 0.3 (ms) Rb = 5 (/ms/mM) : binding Ru = 0.1 (/ms) : unbinding RdRate = 12e-3 (/ms) : desensitization Rr = 9e-3 (/ms) : resensitization Ro = 3e-2 (/ms) : opening Rc = 0.966 (/ms) : closing Erev = -3.7 (mV) : 0 (mV) v0_block = -20 (mV) : -16 -8.69 (mV) : -18.69 (mV) : -32.7 (mV) k_block = 13 (mV) nd = 1 :kB = 0.44 (mM) : Diffusion diffuse = 1 lamd = 20 (nm) celsius (degC) } ASSIGNED { v (mV) : postsynaptic voltage i (nA) : current = g*(v - Erev) ic (nA) : current = g*(v - Erev) g (pS) : actual conductance rb (/ms) : binding T (mM) x Trelease (mM) tspike[100] (ms) : will be initialized by the pointprocess PRE[100] Mres (mM) MgBlock numpulses tzero gbar_Q10 (mho/cm2) Q10 (1) y } STATE { : Channel states (all fractions) C0 : unbound C1 : single bound C2 : double bound D : desensitized O : open } INITIAL { rates(v) C0 = 1 C1 = 0 C2 = 0 D = 0 O = 0 T = 0 numpulses=0 gbar_Q10 = Q10_diff^((celsius-30)/10) Q10 = Q10_channel^((celsius-30)/10) 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) } FUNCTION imax(a,b) { if (a>b) { imax=a } else { imax=b } } FUNCTION diffusione(){ LOCAL DifWave,i,cntc,fi DifWave=0 cntc=imax(numpulses-100,0) FROM i=cntc TO numpulses{ fi=fmod(i,100) tzero=tspike[fi] if(t>tzero){ DifWave=DifWave+PRE[fi]*Mres*exp(-Rd*Rd/(4*Diff*(t-tzero)))/((4*PI*Diff*(1e-3)*lamd)*(t-tzero))^nd } } diffusione=DifWave } BREAKPOINT { rates(v) SOLVE kstates METHOD sparse g = gmax * gbar_Q10 * O * gmax_factor : E' piu' logico spostare * MgBlock * PRE sul calcolo della corrente! i = (1e-6) * g * (v - Erev) * MgBlock ic = i } KINETIC kstates { :if ( diffuse && (t>tspike[0]) ) { Trelease= T + diffusione() } else { Trelease=T } Trelease = diffusione() rb = Rb * Trelease :^2 / (Trelease + kB)^2 ~ C0 <-> C1 (rb*Q10,Ru*Q10) : (fattore*rb,Ru) qui 2* per descrizione part.identiche ~ C1 <-> C2 (rb*Q10,Ru*Q10) : (rb,fattore*Ru) idem ~ C2 <-> D (RdRate*Q10,Rr*Q10) ~ C2 <-> O (Ro*Q10,Rc*Q10) CONSERVE C0+C1+C2+D+O = 1 } 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, tzero (ms)) {LOCAL fi :,y, z, u, tsyn (ms) : *********** ATTENZIONE! *********** : : Qualora si vogliano utilizzare impulsi di glutammato saturanti e' : necessario che il pulse sia piu' corto dell'intera simulazione : altrimenti la variabile on non torna al suo valore di default. INITIAL { nspike = 1 } if (flag == 0) { : Qui faccio rientrare la modulazione presinaptica nspike = nspike + 1 if (!on) { tzero = t on = 1 T=Tmax * T_factor :* y fi=fmod(numpulses,100) PRE[fi]= T_factor :y :(use with pointer) : PRE[numpulses]=y tspike[fi] = t numpulses=numpulses+1 } net_send(Cdur, nspike) : ! } if (flag == nspike) { tzero = t T = 0 on = 0 } }