#include #include #include #include //##################################################################### /* Runge Kutta integrator from numerical recipies plus improvements */ /* void *deri(int n,double h[],double D[],double t); */ /* function argument not tested yet */ void rk4(void deri(int , double [], double [], double ), \ double h[], int n, double t, double dt) { #define naux 60 int i; double k1[naux],k2[naux],k3[naux],k4[naux],h0[naux]; double dt2, dt6; dt2=dt/2.; dt6=dt/6.; for (i = 0 ; i1){ R1x=R1x+cos(e1[i]*2.*PI*freq); R1y=R1y+sin(e1[i]*2.*PI*freq); } } } } //CONTRALATERAL EPSPs i=0.; for(i=0;i1){ R2x=R2x+cos(e2[i]*2.*PI*freq); R2y=R2y+sin(e2[i]*2.*PI*freq); } } } } //IPSILATERAL IPSPs i=0.; for(i=0;i1){ R3x=R3x+cos(e3[i]*2.*PI*freq); R3y=R3y+sin(e3[i]*2.*PI*freq); } } } } //CONTRALATERAL IPSPs i=0.; for(i=0;i1){ R4x=R4x+cos(e4[i]*2.*PI*freq); R4y=R4y+sin(e4[i]*2.*PI*freq); } } } } // Fast transient K+ current a_inf=1./(pow((1.0+exp(-(v[0]+31.0)/6.0)),0.25)); b_inf=1./(pow((1.0+exp((v[0]+66.0)/7.0)),0.5)); c_inf=b_inf; tau_a=q0p17*(100.0/(7.0*exp((v[0]+60.0)/14.0)+29.0*exp(-(v[0]+60.0)/24.0))+0.1); tau_b=q0p17*(1000.0/(14.0*exp((v[0]+60.0)/27.0)+29.0*exp(-(v[0]+60.0)/24.0))+1.0); tau_c=q0p17*(90.0/(1.0+exp(-(v[0]+66.0)/17.0))+10.0); // Low threshold K+ current w_inf=1./(pow((1.0+exp(-(v[0]+48.0)/6.0)),0.25)); z_inf=(1.0-ZETA)/(1.0+exp((v[0]+71.0)/10.0))+ZETA; tau_w=0.8*q0p17*(100.0/(6.0*exp((v[0]+60.0)/6.0)+16.0*exp(-(v[0]+60.0)/45.0))+1.5); tau_z=q0p17*(1000.0/(exp((v[0]+60.0)/20.0)+exp(-(v[0]+60.0)/8.0))+50.0); // High threshold K+ current n_inf=1./(pow((1.0+exp(-(v[0]+15.0)/5.0)),0.5)); p_inf=1.0/(1.0+exp(-(v[0]+23.0)/6.0)); tau_n=q0p17*(100.0/(11.0*exp((v[0]+60.0)/24.0)+21.0*exp(-(v[0]+60.0)/23.0))+0.7); tau_p=q0p17*(100.0/(4.0*exp((v[0]+60.0)/32.0)+5.0*exp(-(v[0]+60.0)/22.0))+5.0); // Fast Na+ current m_inf=1.0/(1.0+exp(-(v[0]+38.0)/7.0)); h_inf=1.0/(1.0+exp((v[0]+65.0)/6.0)); tau_m=q0p17*(10.0/(5.0*exp((v[0]+60.0)/18.0)+36.0*exp(-(v[0]+60.0)/25.0))+0.04); tau_h=q0p17*(100.0/(7.0*exp((v[0]+60.0)/11.0)+10.0*exp(-(v[0]+60.0)/25.0))+0.6); // Hyperpolarization-activated cation current r_inf=1.0/(1.0+exp((v[0]+76.0)/7.0)); tau_r=q0p17*(100000./(237.0*exp((v[0]+60.0)/12.0)+17.0*exp(-(v[0]+60.0)/14.0))+25.0); // Current equations gA=0.0;//GA*(v[1]*v[1]*v[1]*v[1])*v[2]*v[3]*(v[0]-EK) gLT=1.3*q3p03*GLT*(v[4]*v[4]*v[4]*v[4])*v[5];//1.6*q3p03*GLT*(v[4]*v[4]*v[4]*v[4])*v[5];//1.6*q3p03*GLT*(w0*w0*w0*w0)*z0;//1.6*q3p03*GLT*(v[4]*v[4]*v[4]*v[4])*v[5]; gHT=q3p03*GHT*(PHI*v[6]*v[6]+(1.0-PHI)*v[7]); gNA=q3p03*GNA*(v[8]*v[8]*v[8])*v[9]; gH=1.3*q3p03*GH*v[10];//1.56*q3p03*GH*r0;//1.56*q3p03*GH*v[10]; gLK=q3p03*GLK; IA=gA*(v[0]-EK); ILT=gLT*(v[0]-EK); IHT=gHT*(v[0]-EK); INA=gNA*(v[0]-ENA); IH=gH*(v[0]-EH); ILK=gLK*(v[0]-ELK); cur_term=I0; syn1ex = v[11]*(v[0]-EEXC); syn2ex = v[13]*(v[0]-EEXC); syn1in = v[15]*(v[0]-EINH); syn2in = v[17]*(v[0]-EINH); syn_term= syn1ex + syn2ex + syn1in +syn2in; rk4(takens,v,19,t,dt); //******************************************************************************************************// //Loop to compute Spike triggered voltage, synaptic conductance, IKLT current, IKLT conductance averages// //******************************************************************************************************// for(p=0;p<(N_steps_sta-1);p++){ memory[N_steps_sta - p -1] = memory[N_steps_sta - p - 2]; syn1[N_steps_sta - p -1]=syn1[N_steps_sta - p - 2]; syn2[N_steps_sta - p -1]=syn2[N_steps_sta - p - 2]; iklt_memory[N_steps_sta - p -1] = iklt_memory[N_steps_sta - p - 2]; gklt_memory[N_steps_sta - p -1] = gklt_memory[N_steps_sta - p - 2]; } memory[0]=v[0]; iklt_memory[0]=ILT; gklt_memory[0]=q3p03*GLT*(v[4]*v[4]*v[4]*v[4])*v[5]; syn1[0]=syn1ex; syn2[0]=syn2ex; v3=v2; v2=v1; v1=v[0]; if(((v2-v3)>0.)&&((v1-v2)<0.)){ P=P+1; p=0; for(p=0;p0.)&&((v1-v2)<0.)&&(v2>-25.)){ N=N+1; p=0; for(p=0;p