# # WBrealVmD_K.ode # WB interneuron with K modulation # # Author: Ernest Ho # Date: January 31, 2009 # # Defining the equations # f(_V,_N,_H,_J,_L,_Ko,_Cai)=ILEAKCl(_V)+ILEAKNa(_V)+ILEAKK(_V,_Ko)+INA(_V,_H)+IKDR(_V,_N,_Ko)+IAHP(_V,_Ko,_Cai)+ICA(_V)+INAP(_V,_J)+IKM(_V,_L,_Ko) ILEAKK(_V,_Ko)=gLK*(_V-EK(_Ko)) ILEAKCl(_V)=gLCl*(_V-ECl) ILEAKNa(_V)=gLNa*(_V-ENa) INA(_V,_H)=gNa*(minf(_V)**3)*(_H)*(_V-ENa) INAP(_V,_J)=gNaP*(_J)*(_V-ENa) minf(_V)=alpham(_V)/(alpham(_V)+betam(_V)) alpham(_V)=-0.1*(_V+35)/(exp(-0.1*(_V+35))-1) betam(_V)=4*exp(-(_V+60)/18) IKDR(_V,_N,_Ko)=gK*(_N**4)*(_V-EK(_Ko)) IKM(_V,_L,_Ko)=gKm*(_L)*(_V-EK(_Ko)) Ipump(_Ko)=Ipumpmax/(1+K_oeq/_Ko)**2 r_forward(_Ko)=r_f/(1+exp((_Ko-K_oth)/(rise))) glia_uptak(_Ko,_B)=r_back*(Bmax-_B)/1.1-r_forward(_Ko)*(_Ko)*(_B) bound_buff(_Ko,_B)=r_back*(Bmax-_B)-r_forward(_Ko)*(_Ko)*(_B) Cai_func(_V,_Cai)=-0.002*gCa*(_V-ECa)/(1+exp(-(_V+25)/2.5))-_Cai/80 IAHP(_V,_Ko,_Cai)=gAHP*(V-EK(_Ko))*(_Cai)/(1+_Cai) ICA(_V)=gCa*(_V-ECa)/(1+exp(-(_V+25)/2.5)) EK(_Ko)=26.64*ln(_Ko/133) func_n(_V,_N)=5*(ninf(_V)-_N)/taun(_V) ninf(_V)=alphan(_V)/(alphan(_V)+betan(_V)) taun(_V)=1/(alphan(_V)+betan(_V)) alphan(_V)=-0.01*(_V+34)/(exp(-0.1*(_V+34))-1) betan(_V)=tnzero*exp(-(_V+44)/80) func_h(_V,_H)=5*(alphah(_V)*(1-_H)-betah(_V)*_H) alphah(_V)=0.07*exp(-(_V+58)/20) betah(_V)=1/(exp(-0.1*(_V+28))+1) gs_inf(_V)=gs_max*tanh((abs(_V-gs_vth)+(_V-gs_vth))/(2.0*gs_vslope)) func_j(_V,_J)=5.0*(jinf(_V)-_J) jinf(_V)=1/(1+exp(-(_V+42)/5.0)) func_l(_V,_L)=(linf(_V)-_L)/taul(_V) linf(_V)=alphal(_v)/(alphal(_V)+betal(_V)) taul(_V)=0.34/(alphal(_V)+betal(_V)) alphal(_V)=0.001*(_V+30)/(1-exp(-(_V+30)/9.0)) betal(_V)=-0.001*(_V+30)/(1-exp((_V+30)/9.0)) # # Poisson spike train possrate(_rate) = _rate*[DT] init V=-65 init n=0.1 init h=0.05 init j=0.05 init l=0.05 init Ko=[KOINIT] init B=[BINIT] init Cai=0 init s=0 init se1=0 init se2=0 init si1=0 init si2=0 init gs=0 # weiner noise V'=-ge1zero*se1*(V-Eexc)-ge2zero*se2*(V-Eexc)-gi1zero*si1*(V-Ein)-gi2zero*si2*(V-Ein)-f(V,n,h,j,l,Ko,Cai)+iext-frac*Ipump(Ko)+ipulse*(heav(t-pstart)-heav(t-pend)) # last term is a 3ms pulse # ge'=-(ge-gezero)/tau_e+sqrt(2*sigmae^2/tau_e)*noise n'=func_n(V,n) h'=func_h(V,h) j'=func_j(V,j) l'=func_l(V,l) Ko'=(50/96485.0)*(ILEAKK(V,Ko)+IKDR(V,n,Ko)+IKM(V,l,Ko)+IAHP(V,Ko,Cai)-Ipump(Ko))+glia_uptak(Ko,B) gs' = (gs_inf(V) - gs)/((gs_max - gs_inf(V))*tau_gs) s' = -s/tau_s global 1 V {s=s+s_max} se1' = -se1/tau_e si1' = -si1/tau_i se2' = -se2/tau_e si2' = -si2/tau_i global 1 ((ran(1)<possrate(rate_e1))-0.5) {se1=se1+1.0} global 1 ((ran(1)<possrate(rate_e2))-0.5) {se2=se2+1.0} global 1 ((ran(1)<possrate(rate_i1))-0.5) {si1=si1+1.0} global 1 ((ran(1)<possrate(rate_i2))-0.5) {si2=si2+1.0} Cai'=Cai_func(V,Cai) B'=bound_buff(Ko,B) aux EKrev=EK(Ko) #aux ELeak=EL(Ko) aux glia_curr=glia_uptak(Ko,B) aux pota_curr=IKDR(V,N,Ko) aux pump_curr=Ipump(Ko) aux KB=Bmax-B aux KI=ILEAKK(V,Ko)+IKDR(V,n,Ko)-Ipump(Ko) aux IKCA=IAHP(V,Ko,Cai) aux m_curr=IKM(V,l,Ko) aux nap_curr=INAP(V,j) aux ca_curr=ICA(V) aux DEL=delay(t,1) # Initial conditions par s_max=1.0 par gs_max = 1.0 par tau_s = [TAUS] #3.0 par tau_gs = [TAUGS] #3.0 par gs_vth = -35.0 par gs_vslope=10.0 par tau_e=3 par tau_i=6 par tnzero = 0.125 par gLK=0.035 par gLCl=0.1 par gLNa=0.025 par gK=[GK] par gKm=0.00 par gNa=35 par gNaP=0.0 par gAHP=[GAHP] # 5 or 6 # gAHP=0.8 (IN) par gCa=0.03 par ENa=70 par ECl = -74 par ECa = 120 par Eexc = 0 par Ein = -73 par ge1zero=0.00 par ge2zero=0.00 par gi1zero=0.00 par gi2zero=0.00 par rate_e1=0.5 par rate_e2=0.0 par rate_i1=0.0 par rate_i2=0.5 # par sigmae=0.00 par r_back=0.0008 par r_f=0.0008 par rise=[SLOPE] #-1.15 par Bmax=500 par K_oeq=[KOEQ] #3 par K_oth=[KOTHETA] #15 par iext=[IEXT] #0 par Ipumpmax=[IPUMPMAX] #7 par frac=[IPUMPFRAC] #0.5 par ipulse=0 par pstart=90000 par pend=90005 @ total=[DURATION],dt=[DT] @ meth=stiff #@ meth=euler @ ylo=-90,yhi=60 @ xlo=0, xhi=1000 @ maxstor=200000000 @ bound=100000000 @ autoeval=0 done