function simulation(network,para,iinp,trial_num,hd_txt,OUTPUT_OPT) %%DO NOT EDIT THIS FILE, UNLESS YOU ARE ABOSLUTE SURE WHAT YOU ARE DOING. %%This is the template file use to generate the ODE simulation .m file %%"simulation.m" %%Written by Ning Jiang, Institute of Biomedical Engineering, Univesity of New %%Brunswick, NB, Canada, E3B 5A3 %%Email: ning.jiang@unb.ca %%Created Date: Nov 19, 2006 %%Rev. 1.1, Nov 20, 2006 --adding para to the saved variables global inp; duration=para.duration*1000; neuron_num=size(iinp,2); if OUTPUT_OPT out_v=zeros(1,neuron_num); out_t=0; end initial=zeros(1,3*neuron_num); initial(1:3:3*neuron_num-2)=rand(1,neuron_num)*5-60; initial(2:3:3*neuron_num-1)=rand(1,neuron_num); initial(3:3:3*neuron_num)=rand(1,neuron_num)*0.5; options=odeset('InitialStep',para.stepsize); firing_t=cell(1,neuron_num); v=initial(1:3:3*neuron_num-2); t_course=0; t0=0; for n=1:size(iinp,1) inp=iinp(n,:); [t,y]=ode45(@hhn,[t0,t0+para.stepsize],initial,options); initial=y(size(y,1),:); v=[v;y((2:size(y,1)),(1:3:neuron_num*3-2))]; t_course=[t_course;t(2:length(t))]; if rem(n,1000/para.stepsize) == 0 if hd_txt set(hd_txt,'string',['trial ',num2str(trial_num),': ',num2str(duration/1000-n*para.stepsize/1000),' sec left']); pause(0.01); else disp(['trial ',num2str(trial_num),': ',num2str(duration/1000-n*para.stepsize/1000),' sec left']); end for nn=1:neuron_num [ft,abnormal]=get_interval(v(:,nn),t_course,1); if ft ~=0 firing_t{nn}=[firing_t{nn},ft]; end end if OUTPUT_OPT out_v=[out_v;v(2:size(v,1),:)]; out_t=[out_t;t_course(2:length(t_course))]; end v=v(size(v,1),:); t_course=t_course(length(t_course)); end t0=t(length(t)); end if OUTPUT_OPT out_t=out_t(2:length(out_t)); out_v=out_v(2:size(out_v,1),:); save([para.resultfile,'_',num2str(trial_num)],'firing_t','out_t','out_v','iinp','network','para'); else save([para.resultfile,'_',num2str(trial_num)],'firing_t','iinp','network','para'); end function dydt=hhn(t,y) global inp;