pro cuap_event, event Widget_Control, event.id, Get_Value=buttonValue CASE buttonValue OF 'Display Dataset': BEGIN erase widget_control, event.top, get_uvalue=data CASE data.type OF 'asc': BEGIN data_filename=pickfile(/READ, filter='*.*') dB = 0.0 ;For making gain calibration Ag = 1.0 ;amplifier gain T = data.t header=data.hd head=fltarr(6) openr,1,data_filename readf,1,head close,1 dB= head(0) IF(dB EQ 1) THEN dB=0.0 Ag = 10.0^(dB/20.0) ;dB = 20 log (A) , A=Gain T = head(3) IF(head(3) EQ 0) THEN T=data.t file_length = data.pt function_data=fltarr(file_length) openr,1,data_filename readf,1,function_data close,1 END 'byt': BEGIN image_data=pickfile(/READ, filter='*.BYT') END ELSE: BEGIN print, 'Program Error.' END ENDCASE image_size1=1 image_size2=data.pt header=data.hd headerless_fun=fltarr(data.pt) FOR i=6,data.pt-1 DO BEGIN headerless_fun(0)=0 headerless_fun(1)=0 headerless_fun(2)=0 headerless_fun(3)=0 headerless_fun(4)=0 headerless_fun(5)=0 headerless_fun(i)=function_data(i) ENDFOR N=data.pt T=T*1 ;This is the sampling interval read from file, earlier. xdata=fltarr(N) xdata=findgen(N) xdata=xdata*T max=N*T the_max=N for i=0, 100 DO BEGIN IF (function_data(N-1-i) EQ 0) THEN the_max=N-i IF (function_data(N-2-1) NE 0) THEN GOTO, HERE ENDFOR HERE: the_min=0 for i=0, 100 DO BEGIN IF (function_data(i) EQ 0) THEN the_min=i IF (function_data(i+1) NE 0) THEN GOTO, HERE2 ENDFOR HERE2: slider1=data.sd1 slider2=data.sd2 widget_control, slider1, set_value=the_min widget_control, slider2, set_value=the_max the_domain=1 the_min=the_min*T the_max=the_max*T IF(header EQ 'Yes') THEN function_data=headerless_fun function_data = function_data/Ag ;Vin = Vout/A , A=Gain image_info={image1:function_data,t:T,s_dev:data.s_dev,sizeY:image_size2,sd1:data.sd1,sd2:data.sd2,type:data.type,pt:data.pt,hd:data.hd,widy:data.widy,rX:0,rY:0,domain:the_domain, multi:data.multi,marray:data.marray} widget_control, event.top, set_uvalue=image_info plot, xdata, function_data, XTitle='time(s)',XRange=[the_min,the_max] END 'Resize Plot': BEGIN erase widget_control, event.top, get_uvalue=data slider1=data.sd1 slider2=data.sd2 widget_control, slider1,get_value=s1_value widget_control, slider2,get_value=s2_value function_data=data.image1 N=data.pt T=data.t xdata=fltarr(N) xdata=findgen(N) IF (data.domain EQ 1) THEN xdata=xdata*T ;domain=1,time domain IF (data.domain NE 1) THEN xdata=xdata*(1.0/(N*T)) ;domain=2,freq domain IF (data.domain EQ 1) THEN max=s2_value*T IF (data.domain EQ 1) THEN min=s1_value*T IF (data.domain NE 1) THEN max=s2_value*(1.0/(N*T)) IF (data.domain NE 1) THEN min=s1_value*(1.0/(N*T)) IF(data.domain NE 3) THEN IF(data.domain EQ 1) THEN plot, xdata, function_data, XTitle='time(s)',XRange=[min,max] IF(data.domain NE 3) THEN IF(data.domain EQ 2) THEN plot, xdata, function_data, Title='F.F.T.',XTitle='freq(Hz)',XRange=[min,max] IF(data.domain NE 3) THEN IF(data.domain EQ 6) THEN plot, xdata, function_data,Title='F.F.T.',XTitle='freq(Hz)',XRange=[min,max] IF(data.domain EQ 3) THEN SURFACE, data.marray, Az=s2_value, Ax=s1_value FOR j=0,data.pt-1 DO BEGIN IF(data.domain EQ 4) THEN half_fft_array=fltarr(data.pt/2,data.multi) ENDFOR IF(data.domain EQ 7) THEN half_fft_array=fltarr(data.pt/2,data.multi) FOR i=0, data.pt/2-1 DO BEGIN IF(data.domain EQ 4) THEN half_fft_array(i,*)=data.marray(i,*) ;mag_fun IF(data.domain EQ 7) THEN half_fft_array(i,*)=data.marray(i,*) ENDFOR IF(data.domain EQ 4) THEN SURFACE, half_fft_array, Az=s2_value, Ax=s1_value IF(data.domain EQ 7) THEN SURFACE, half_fft_array, Az=S2_value, Ax=s1_value image_Info={image1:data.image1, t:data.t, s_dev:data.s_dev, sizeY:data.sizeY, sd1:data.sd1, sd2:data.sd2,type:data.type,pt:data.pt,hd:data.hd,widy:data.widy,rX:data.rX,rY:data.rY,domain:data.domain,multi:data.multi,marray:data.marray} widget_control, event.top, set_uvalue=image_info END 'Isolate Carrot Response': BEGIN widget_control, event.top, get_uvalue=data slider1=data.sd1 slider2=data.sd2 widget_control, slider2, get_value=s2_value widget_control, slider1, get_value=s1_value trans_data=fltarr(data.pt) If(data.domain EQ 4) THEN dat=fltarr(data.pt,data.multi) IF(data.domain NE 4) THEN dat=fltarr(data.pt) data_filename = pickfile(/READ,filter='*.asc') openr,1,data_filename readf,1,trans_data close,1 dm=data.multi - 1 If(data.domain EQ 4) THEN dat=data.marray IF(data.domain NE 4) THEN dat=data.image1 FOR q=0,5 DO BEGIN FOR r=0,dm DO BEGIN IF(data.domain EQ 4) THEN dat(q,r)=0 IF(data.domain NE 4) THEN dat(q)=0 ENDFOR ENDFOR IF(data.domain NE 4) THEN trans_data(0)=0 IF(data.domain NE 4) THEN trans_data(1)=0 IF(data.domain NE 4) THEN trans_data(2)=0 IF(data.domain NE 4) THEN trans_data(3)=0 IF(data.domain NE 4) THEN trans_data(4)=0 IF(data.domain NE 4) THEN trans_data(5)=0 complex_trans_data=COMPLEX(data.pt) complex_trans_data=FFT(trans_data) real_part=fltarr(data.pt) imag_part=fltarr(data.pt) real_part=FLOAT(complex_trans_data) imag_part=IMAGINARY(complex_trans_data) mag_trans=fltarr(data.pt) mag_trans=sqrt(real_part^2.0+imag_part^2.0) IF(data.domain NE 4) THEN complex_dat=COMPLEX(data.pt) IF(data.domain EQ 4) THEN dat_fft_mag=fltarr(data.pt,data.multi) FOR i=0,data.multi-1 DO BEGIN IF(data.domain EQ 4) THEN complex_num=COMPLEX(data.pt) IF(data.domain EQ 4) THEN array=fltarr(data.pt) IF(data.domain EQ 4) THEN array=data.marray(*,i) IF(data.domain EQ 4) THEN complex_num=FFT(array) IF(data.domain EQ 4) THEN real_part=fltarr(data.pt) IF(data.domain EQ 4) THEN imag_part=fltarr(data.pt) IF(data.domain EQ 4) THEN real_part=FLOAT(complex_num) IF(data.domain EQ 4) THEN imag_part=IMAGINARY(complex_num) FOR j=0,data.pt-1 DO BEGIN IF(data.domain EQ 4) THEN dat_fft_mag(j,i)=sqrt((real_part(j))^2.0+(imag_part(j))^2.0) ENDFOR ENDFOR two_dim_tran=fltarr(data.pt, data.multi) FOR i=0,data.multi-1 DO BEGIN IF(data.domain EQ 4) THEN two_dim_tran(*,i)=mag_trans ENDFOR log_trans_array=fltarr(data.pt) FOR i=0,data.pt-1 DO BEGIN IF(mag_trans(i) GT 0) THEN log_trans_array(i)=ALOG10(mag_trans(i)) IF(mag_trans(i) EQ 0) THEN log_trans_array(i)= 0 IF(mag_trans(i) LT 0) THEN log_trans_array(i)= 0 ENDFOR IF(data.domain NE 4) THEN log_output_array=fltarr(data.pt) IF(data.domain EQ 4) THEN log_output_array=fltarr(data.pt, data.multi) FOR i=0,data.pt-1 DO BEGIN FOR j=0,dm DO BEGIN IF(data.domain EQ 4) THEN IF(dat(i,j) GT 0) THEN log_output_array(i,j)=ALOG10(dat(i,j)) IF(data.domain EQ 4) THEN IF(dat(i,j) EQ 0) THEN log_output_array(i,j)= 0 ;all dat changed from dat_fft_mag IF(data.domain EQ 4) THEN IF(dat(i,j) LT 0) THEN log_output_array(i,j) = 0 ENDFOR ENDFOR FOR i=0,data.pt-1 DO BEGIN value=dat(i) IF(data.domain NE 4) THEN IF(dat(i) GT 0) THEN log_output_array(i)=ALOG10(value) IF(data.domain NE 4) THEN IF(dat(i) EQ 0) THEN log_output_array(i)= 0 IF(data.domain NE 4) THEN IF(dat(i) LT 0) THEN log_output_array(i)= 0 ENDFOR IF(data.domain NE 4) THEN carrot_response=fltarr(data.pt) IF(data.domain EQ 4) THEN carrot_response=fltarr(data.pt,data.multi) FOR i=0,data.pt-1 DO BEGIN difference=log_output_array(i)-log_trans_array(i) IF(data.domain NE 4) THEN carrot_response(i)=10.0^(difference) ENDFOR IF(data.domain EQ 4) THEN two_dim_trans_array=fltarr(data.pt, data.multi) FOR i=0,dm DO BEGIN IF(data.domain EQ 4) THEN two_dim_trans_array(*,i)=log_trans_array ENDFOR IF(data.domain EQ 4) THEN mag_td=fltarr(data.pt,data.multi) IF(data.domain EQ 4) THEN mag_td=data.marray log_out_array=fltarr(data.pt, data.multi) FOR i=0, data.pt-1 DO BEGIN FOR j=0, data.multi-1 DO BEGIN IF(data.domain EQ 4) THEN IF(mag_td(i,j) GT 0) THEN log_out_array(i,j)=ALOG10(mag_td(i,j)) IF(data.domain EQ 4) THEN IF(mag_td(i,j) EQ 0) THEN log_out_array(i,j)=0 IF(data.domain EQ 4) THEN IF(mag_td(i,j) LT 0) THEN log_out_array(i,j)=0 ENDFOR ENDFOR td_carrot_response=fltarr(data.pt, data.multi) FOR i=0, data.pt-1 DO BEGIN FOR j=0, dm DO BEGIN IF(data.domain EQ 4) THEN td_carrot_response(i,j)=10.0^(log_out_array(i,j)-two_dim_trans_array(i,j)) ENDFOR ENDFOR N=data.pt T=data.t xdata=fltarr(N) xdata=findgen(N) xdata=xdata*(1.0/(N*T)) ;domain=2,freq domain max=s2_value*(1.0/(N*T)) min=s1_value*(1.0/(N*T)) IF(data.domain NE 4) THEN plot, xdata, carrot_response, Title='Carrot Response:', XTitle='freq(Hz)', XRange=[min,max] IF(data.domain EQ 4) THEN half_fft_array=fltarr(data.pt/2,data.multi) FOR i=0, data.pt/2-1 DO BEGIN IF(data.domain EQ 4) THEN half_fft_array(i,*)=td_carrot_response(i,*) ENDFOR IF(data.domain EQ 4) THEN SURFACE, half_fft_array, Az=30, Ax=30 IF(data.domain NE 4) THEN dmain=6 IF(data.domain EQ 4) THEN dmain=7 image_Info={image1:carrot_response, t:data.t, s_dev:data.s_dev, sizeY:data.sizeY,sd1:data.sd1,sd2:data.sd2,type:data.type,pt:data.pt,hd:data.hd,widy:data.widy,rX:data.rX,ry:data.rY,domain:dmain,multi:data.multi,marray:td_carrot_response} widget_control, event.top, set_uvalue=image_info END 'Calculate Statistics': BEGIN widget_control, event.top, get_uvalue=data slider1=data.sd1 slider2=data.sd2 widget_control, slider2, get_value=s2_value widget_control, slider1, get_value=s1_value N=data.pt T=data.t xdata=fltarr(N) xdata=findgen(N) xdata=xdata*(1.0/(N*T)) max=10E6 min=0 multi_data_array=fltarr(data.pt/2,data.multi) multi_data_array=data.marray mean_array=fltarr(data.pt/2) statistics=fltarr(4) single_array=fltarr(data.multi) var_array=fltarr(data.pt/2) i=0 j=0 FOR i=0,data.pt/2-1 DO BEGIN FOR j=0,data.multi-1 DO BEGIN single_array(j)=multi_data_array(i,j) ENDFOR statistics=MOMENT(single_array) mean_array(i)=statistics[0] var_array(i)=statistics[1] ENDFOR sd_array=fltarr(data.pt/2) sd_array=sqrt(var_array) erase plot, xdata, mean_array, Title='Mean Response:', XTitle='freq(Hz)', XRange=[min,max] Errplot, xdata, mean_array-sd_array, mean_array+sd_array k=0 CT=0.0 for i=0,data.pt/2-1 DO BEGIN CT=CT+((sd_array(i)/mean_array(i))*100) ENDFOR print, CT/(data.pt/2) dmain=0 dmain=2 ;Back to freq domain. image_Info={image1:mean_array, t:data.t, s_dev:sd_array, sizeY:data.sizeY,sd1:data.sd1,sd2:data.sd2,type:data.type,pt:data.pt,hd:data.hd,widy:data.widy,rX:data.rX,ry:data.rY,domain:dmain,multi:data.multi,marray:data.marray} widget_control, event.top, set_uvalue=image_info END 'Normalize Dataset': BEGIN erase widget_control, event.top, get_uvalue=data N=data.pt T=data.pt xdata=fltarr(N) xdata=findgen(N) xdata=xdata*(1.0/(N*T)) data_array=fltarr(data.pt,data.multi) data_array=data.marray normal_array=fltarr(data.pt,data.multi) the_max=0.0 for i=0,data.multi-1 DO BEGIN the_max=MAX(data_array(*,i)) normal_array(*,i)=data_array(*,i)/the_max ENDFOR half_array=fltarr(data.pt/2,data.multi) for j=0,data.pt/2-1 DO BEGIN half_array(j,*)=normal_array(j,*) ENDFOR surface, half_array image_info={image1:data.image1,t:data.t,s_dev:data.s_dev,sizeY:data.sizeY,sd1:data.sd1,sd2:data.sd2,type:data.type,pt:data.pt,hd:data.hd,widy:data.widy,rX:data.rX,rY:data.rY,domain:data.domain,multi:data.multi,marray:normal_array} widget_control, event.top, set_uvalue=image_info END 'Unknown Dataset': BEGIN widget_control, event.top, get_uvalue=data N=data.pt T=data.t xdata=fltarr(N) xdata=findgen(N) xdata=xdata*(1.0/(N*T)) unk_data=fltarr(N) unk_filename=pickfile(/READ,filter='*.*') openr,1,unk_filename readf,1,unk_data close,1 unk_data(0)=0 unk_data(1)=0 unk_data(2)=0 unk_data(3)=0 unk_data(4)=0 unk_data(5)=0 complex_unk=COMPLEX(N) complex_unk=FFT(unk_data) real_part=fltarr(N) imag_part=fltarr(N) real_part=FLOAT(complex_unk) imag_part=IMAGINARY(complex_unk) mag=fltarr(N) mag=sqrt(real_part^2.0+imag_part^2.0) norm_mag=fltarr(N) max_mag=0.0 max_mag=MAX(mag) norm_mag=mag/max_mag stored_array=fltarr(data.pt,data.multi) stored_array=data.marray pos_result=fltarr(data.multi) ;store variances, to decide match temp_array=fltarr(2) stats=fltarr(4) var=0.0 for i=0,data.multi-1 DO BEGIN for j=0,data.pt/2-1 DO BEGIN temp_array(0)=norm_mag(j) temp_array(1)=stored_array(j,i) stats=MOMENT(temp_array) var=stats(1) pos_result(i)=pos_result(i)+var ENDFOR ENDFOR invert_result=fltarr(data.multi) for l=0, data.multi-1 DO BEGIN invert_result(l)=pos_result(data.multi-1-l) ENDFOR min_element=0 for k=0,data.multi-1 DO BEGIN print, k, ' k: ', pos_result(k) IF(invert_result(k) LT invert_result(min_element)) THEN min_element=k print, min_element, ' min: ', invert_result(min_element) ENDFOR print, "Your Unknown Most Closely Matches Function: ",1+min_element;adjust for 0 element # END 'Plot F.F.T.': BEGIN erase widget_control, event.top, get_uvalue=data N=data.pt T=data.t xdata=fltarr(N) xdata=findgen(N) xdata=xdata*(1.0/(N*T)) slider2=data.sd2 widget_control, slider2, set_value=data.pt/2 IF(data.domain NE 3) THEN fft_data=fltarr(N) IF(data.domain NE 3) THEN fft_data=FFT(data.image1) IF(data.domain NE 3) THEN max=N/2*(1.0/(N*T)) IF(data.domain EQ 3) THEN fft_data=fltarr(N,data.multi) IF(data.domain EQ 3) THEN fft_data=data.marray IF(data.domain EQ 3) THEN array=fltarr(N) IF(data.domain EQ 3) THEN complex_array=COMPLEX(N) IF(data.domain EQ 3) THEN fft_mag=fltarr(data.pt,data.multi) IF(data.domain NE 3) THEN fft_mag=fltarr(data.pt) FOR i=0, data.multi-1 DO BEGIN array=fft_data(*,i) complex_array=FFT(array) IF(data.domain NE 3) THEN real_part=fltarr(data.pt) IF(data.domain NE 3) THEN imag_part=fltarr(data.pt) IF(data.domain NE 3) THEN real_part=FLOAT(fft_data) IF(data.domain NE 3) THEN imag_part=IMAGINARY(fft_data) IF(data.domain EQ 3) THEN real_part=fltarr(N) IF(data.domain EQ 3) THEN imag_part=fltarr(N) IF(data.domain EQ 3) THEN real_part=FLOAT(complex_array) IF(data.domain EQ 3) THEN imag_part=IMAGINARY(complex_array) FOR j=0,data.pt-1 DO BEGIN IF(data.domain EQ 3) THEN fft_mag(j,i)=sqrt((real_part(j))^2.0+(imag_part(j))^2.0) ENDFOR IF(data.domain NE 3) THEN fft_mag=sqrt(real_part^2.0+imag_part^2.0) ENDFOR IF(data.domain EQ 3) THEN half_fft_data=fltarr(data.pt/2,data.multi) for i=0,N/2-1 DO BEGIN IF(data.domain EQ 3) THEN half_fft_data(i,*)=fft_mag(i,*) ENDFOR IF(data.domain NE 3) THEN plot,xdata,fft_mag, Title='F.F.T.',XTitle='freq(Hz)',XRange=[0,max] IF(data.domain EQ 3) THEN SURFACE, half_fft_data IF(data.domain NE 3) THEN half_fft_data=0 IF(data.domain EQ 3) THEN what_domain=4 IF(data.domain NE 3) THEN what_domain=2 image_info={image1:fft_mag,t:data.t,s_dev:data.s_dev,sizeY:data.sizeY,sd1:data.sd1,sd2:data.sd2,type:data.type,pt:data.pt,hd:data.hd,widy:data.widy,rX:data.rX,rY:data.rY,domain:what_domain,multi:data.multi,marray:fft_mag} widget_control, event.top, set_uvalue=image_info END 'Output to file': BEGIN widget_control, event.top, get_uvalue=data output_filename=pickfile(/READ) function_data=data.image1 function_sd=data.s_dev openw,1,output_filename for i=0, data.pt/2-1 DO BEGIN printf,1,function_data(i) ENDFOR printf,1,'sd' for j=0, data.pt/2-1 DO BEGIN printf,1,function_sd(j) ENDFOR close,1 print, 'Data Written to: ', output_filename END 'Multi-Dataset Display': BEGIN widget_control, event.top, get_uvalue=data first_filename=pickfile(/READ,filter='*.*') second_filename=pickfile(/READ,filter='*.*') IF(data.multi GT 2) THEN third_filename=pickfile(/READ,filter='*.*') IF(data.multi GT 3) THEN fourth_filename=pickfile(/READ,filter='*.*') IF(data.multi GT 4) THEN fifth_filename=pickfile(/READ,filter='*.*') IF(data.multi GT 5) THEN sixth_filename=pickfile(/READ,filter='*.*') IF(data.multi GT 6) THEN seventh_filename=pickfile(/READ,filter='*.*') IF(data.multi GT 7) THEN eigth_filename=pickfile(/READ,filter='*.*') IF(data.multi GT 8) THEN ninth_filename=pickfile(/READ,filter='*.*') IF(data.multi GT 9) THEN tenth_filename=pickfile(/READ,filter='*.*') IF(data.multi GT 10) THEN eleventh_filename=pickfile(/READ,filter='*.*') IF(data.multi GT 11) THEN twelvth_filename=pickfile(/READ,filter='*.*') IF(data.multi GT 12) THEN thirteenth_filename=pickfile(/READ,filter='*.*') IF(data.multi GT 13) THEN fourteenth_filename=pickfile(/READ,filter='*.*') IF(data.multi GT 14) THEN fifteenth_filename=pickfile(/READ,filter='*.*') IF(data.multi GT 15) THEN sixteenth_filename=pickfile(/READ,filter='*.*') array_one=fltarr(data.pt) array_two=fltarr(data.pt) array_three=fltarr(data.pt) array_four=fltarr(data.pt) array_five=fltarr(data.pt) array_six=fltarr(data.pt) array_seven=fltarr(data.pt) array_eight=fltarr(data.pt) array_nine=fltarr(data.pt) array_ten=fltarr(data.pt) array_eleven=fltarr(data.pt) array_twelve=fltarr(data.pt) array_thirteen=fltarr(data.pt) array_fourteen=fltarr(data.pt) array_fifteen=fltarr(data.pt) array_sixteen=fltarr(data.pt) head=fltarr(6) openr,1,first_filename readf,1,head close,1 dB=head(0) Ag= 10.0^(dB/20.0) file_length = data.pt array_one=fltarr(file_length) openr,1,first_filename readf,1,array_one close,1 array_one=array_one/Ag head=fltarr(6) openr,1,second_filename readf,1,head close,1 dB=head(0) Ag= 10.0^(dB/20.0) array_two=fltarr(file_length) openr,1,second_filename readf,1,array_two close,1 array_two=array_two/Ag head=fltarr(6) IF(data.multi GT 2) THEN openr,1,third_filename IF(data.multi GT 2) THEN readf,1,head IF(data.multi GT 2) THEN close,1 dB=head(0) Ag= 10.0^(dB/20.0) IF(data.multi GT 2) THEN array_three=fltarr(file_length) IF(data.multi GT 2) THEN openr,1,third_filename IF(data.multi GT 2) THEN readf,1,array_three IF(data.multi GT 2) THEN close,1 array_three=array_three/Ag head=fltarr(6) IF(data.multi GT 3) THEN openr,1,fourth_filename IF(data.multi GT 3) THEN readf,1,head IF(data.multi GT 3) THEN close,1 dB=head(0) Ag= 10.0^(dB/20.0) IF(data.multi GT 3) THEN array_four=fltarr(file_length) IF(data.multi GT 3) THEN openr,1,fourth_filename IF(data.multi GT 3) THEN readf,1,array_four IF(data.multi GT 3) THEN close,1 array_four=array_four/Ag head=fltarr(6) IF(data.multi GT 4) THEN openr,1,fifth_filename IF(data.multi GT 4) THEN readf,1,head IF(data.multi GT 4) THEN close,1 dB=head(0) Ag= 10.0^(dB/20.0) IF(data.multi GT 4) THEN array_five=fltarr(file_length) IF(data.multi GT 4) THEN openr,1,fifth_filename IF(data.multi GT 4) THEN readf,1,array_five IF(data.multi GT 4) THEN close,1 array_five=array_five/Ag head=fltarr(6) IF(data.multi GT 5) THEN openr,1,sixth_filename IF(data.multi GT 5) THEN readf,1,head IF(data.multi GT 5) THEN close,1 dB=head(0) Ag= 10.0^(dB/20.0) IF(data.multi GT 5) THEN array_six=fltarr(file_length) IF(data.multi GT 5) THEN openr,1,sixth_filename IF(data.multi GT 5) THEN readf,1,array_six IF(data.multi GT 5) THEN close,1 array_six=array_six/Ag head=fltarr(6) IF(data.multi GT 6) THEN openr,1,seventh_filename IF(data.multi GT 6) THEN readf,1,head IF(data.multi GT 6) THEN close,1 dB=head(0) Ag= 10.0^(dB/20.0) IF(data.multi GT 6) THEN array_seven=fltarr(file_length) IF(data.multi GT 6) THEN openr,1,seventh_filename IF(data.multi GT 6) THEN readf,1,array_seven IF(data.multi GT 6) THEN close,1 array_seven=array_seven/Ag head=fltarr(6) IF(data.multi GT 7) THEN openr,1,eigth_filename IF(data.multi GT 7) THEN readf,1,head IF(data.multi GT 7) THEN close,1 dB=head(0) Ag= 10.0^(dB/20.0) IF(data.multi GT 7) THEN array_eight=fltarr(file_length) IF(data.multi GT 7) THEN openr,1,eigth_filename IF(data.multi GT 7) THEN readf,1,array_eight IF(data.multi GT 7) THEN close,1 array_eight=array_eight/Ag head=fltarr(6) IF(data.multi GT 8) THEN openr,1,ninth_filename IF(data.multi GT 8) THEN readf,1,head IF(data.multi GT 8) THEN close,1 dB=head(0) Ag= 10.0^(dB/20.0) IF(data.multi GT 8) THEN array_nine=fltarr(file_length) IF(data.multi GT 8) THEN openr,1,ninth_filename IF(data.multi GT 8) THEN readf,1,array_nine IF(data.multi GT 8) THEN close,1 array_nine=array_nine/Ag head=fltarr(6) IF(data.multi GT 9) THEN openr,1,tenth_filename IF(data.multi GT 9) THEN readf,1,head IF(data.multi GT 9) THEN close,1 dB=head(0) Ag= 10.0^(dB/20.0) IF(data.multi GT 9) THEN array_ten=fltarr(file_length) IF(data.multi GT 9) THEN openr,1,tenth_filename IF(data.multi GT 9) THEN readf,1,array_ten IF(data.multi GT 9) THEN close,1 array_ten=array_ten/Ag head=fltarr(6) IF(data.multi GT 10) THEN openr,1,eleventh_filename IF(data.multi GT 10) THEN readf,1,head IF(data.multi GT 10) THEN close,1 dB=head(0) Ag= 10.0^(dB/20.0) IF(data.multi GT 10) THEN array_eleven=fltarr(file_length) IF(data.multi GT 10) THEN openr,1,eleventh_filename IF(data.multi GT 10) THEN readf,1,array_eleven IF(data.multi GT 10) THEN close,1 array_eleven=array_eleven/Ag head=fltarr(6) IF(data.multi GT 11) THEN openr,1,twelvth_filename IF(data.multi GT 11) THEN readf,1,head IF(data.multi GT 11) THEN close,1 dB=head(0) Ag= 10.0^(dB/20.0) IF(data.multi GT 11) THEN array_twelve=fltarr(file_length) IF(data.multi GT 11) THEN openr,1,twelvth_filename IF(data.multi GT 11) THEN readf,1,array_twelve IF(data.multi GT 11) THEN close,1 array_twelve=array_twelve/Ag head=fltarr(6) IF(data.multi GT 12) THEN openr,1,thirteenth_filename IF(data.multi GT 12) THEN readf,1,head IF(data.multi GT 12) THEN close,1 dB=head(0) Ag= 10.0^(dB/20.0) IF(data.multi GT 12) THEN array_thirteen=fltarr(file_length) IF(data.multi GT 12) THEN openr,1,thirteenth_filename IF(data.multi GT 12) THEN readf,1,array_thirteen IF(data.multi GT 12) THEN close,1 array_thirteen=array_thirteen/Ag head=fltarr(6) IF(data.multi GT 13) THEN openr,1,fourteenth_filename IF(data.multi GT 13) THEN readf,1,head IF(data.multi GT 13) THEN close,1 dB=head(0) Ag= 10.0^(dB/20.0) IF(data.multi GT 13) THEN array_fourteen=fltarr(file_length) IF(data.multi GT 13) THEN openr,1,fourteenth_filename IF(data.multi GT 13) THEN readf,1,array_fourteen IF(data.multi GT 13) THEN close,1 array_fourteen=array_fourteen/Ag head=fltarr(6) IF(data.multi GT 14) THEN openr,1,fifteenth_filename IF(data.multi GT 14) THEN readf,1,head IF(data.multi GT 14) THEN close,1 dB=head(0) Ag= 10.0^(dB/20.0) IF(data.multi GT 14) THEN array_fifteen=fltarr(file_length) IF(data.multi GT 14) THEN openr,1,fifteenth_filename IF(data.multi GT 14) THEN readf,1,array_fifteen IF(data.multi GT 14) THEN close,1 array_fifteen=array_fifteen/Ag head=fltarr(6) IF(data.multi GT 15) THEN openr,1,sixteenth_filename IF(data.multi GT 15) THEN readf,1,head IF(data.multi GT 15) THEN close,1 dB=head(0) Ag= 10.0^(dB/20.0) IF(data.multi GT 15) THEN array_sixteen=fltarr(file_length) IF(data.multi GT 15) THEN openr,1,sixteenth_filename IF(data.multi GT 15) THEN readf,1,array_sixteen IF(data.multi GT 15) THEN close,1 array_sixteen=array_sixteen/Ag FOR i=0,5 DO BEGIN IF(data.hd EQ 'Yes') THEN array_one(i)=0 IF(data.hd EQ 'Yes') THEN array_two(i)=0 IF(data.hd EQ 'Yes') THEN array_three(i)=0 IF(data.hd EQ 'Yes') THEN array_four(i)=0 IF(data.hd EQ 'Yes') THEN array_five(i)=0 IF(data.hd EQ 'Yes') THEN array_six(i)=0 IF(data.hd EQ 'Yes') THEN array_seven(i)=0 IF(data.hd EQ 'Yes') THEN array_eight(i)=0 IF(data.hd EQ 'Yes') THEN array_nine(i)=0 IF(data.hd EQ 'Yes') THEN array_ten(i)=0 IF(data.hd EQ 'Yes') THEN array_eleven(i)=0 IF(data.hd EQ 'Yes') THEN array_twelve(i)=0 IF(data.hd EQ 'Yes') THEN array_thirteen(i)=0 IF(data.hd EQ 'Yes') THEN array_fourteen(i)=0 IF(data.hd EQ 'Yes') THEN array_fifteen(i)=0 IF(data.hd EQ 'Yes') THEN array_sixteen(i)=0 ENDFOR two_dim_array=fltarr(data.pt,data.multi) two_dim_array(*,data.multi-1)=array_one two_dim_array(*,data.multi-2)=array_two IF(data.multi GT 2) THEN two_dim_array(*,data.multi-3)=array_three IF(data.multi GT 3) THEN two_dim_array(*,data.multi-4)=array_four IF(data.multi GT 4) THEN two_dim_array(*,data.multi-5)=array_five IF(data.multi GT 5) THEN two_dim_array(*,data.multi-6)=array_six IF(data.multi GT 6) THEN two_dim_array(*,data.multi-7)=array_seven IF(data.multi GT 7) THEN two_dim_array(*,data.multi-8)=array_eight IF(data.multi GT 8) THEN two_dim_array(*,data.multi-9)=array_nine IF(data.multi GT 9) THEN two_dim_array(*,data.multi-10)=array_ten IF(data.multi GT 10) THEN two_dim_array(*,data.multi-11)=array_eleven IF(data.multi GT 11) THEN two_dim_array(*,data.multi-12)=array_twelve IF(data.multi GT 12) THEN two_dim_array(*,data.multi-13)=array_thirteen IF(data.multi GT 13) THEN two_dim_array(*,data.multi-14)=array_fourteen IF(data.multi GT 14) THEN two_dim_array(*,data.multi-15)=array_fifteen IF(data.multi GT 15) THEN two_dim_array(*,data.multi-16)=array_sixteen AX=30 AZ=50 slider1=data.sd1 slider2=data.sd2 widget_control,slider1, get_value=s1_value widget_control,slider2, get_value=s2_value SURFACE, two_dim_array ;, Az=s2_value, Ax=s1_value image_info={image1:data.image1,t:data.t,s_dev:data.s_dev,sizeY:data.sizeY,sd1:data.sd1,sd2:data.sd2,type:data.type,pt:data.pt,hd:data.hd,widy:data.widy,rX:data.rx,rY:data.rY,domain:3,multi:data.multi,marray:two_dim_array} widget_control, event.top, set_uvalue=image_info END 'Clip Dataset': BEGIN widget_control, event.top, get_uvalue=data slider1=data.sd1 slider2=data.sd2 widget_control, slider1,get_value=s1_value widget_control, slider2,get_value=s2_value function_data=data.image1 clipped_function=fltarr(data.pt) clipped_function=function_data FOR i=0,s1_value-1 DO BEGIN IF(s1_value NE 0) THEN clipped_function(i)=0 ENDFOR FOR i=s2_value+1,data.pt-1 DO BEGIN IF(s2_value LT data.pt) THEN clipped_function(i)=0 ENDFOR image_Info={image1:clipped_function, t:data.t, s_dev:data.s_dev, sizeY:data.sizeY,sd1:data.sd1,sd2:data.sd2,type:data.type,pt:data.pt,hd:data.hd,widy:data.widy,rX:data.rX,rY:data.rY,domain:data.domain,multi:data.multi,marray:data.marray} widget_control, event.top, set_uvalue=image_info END 'Quit': BEGIN Widget_Control, event.top, /Destroy END 'Erase Screen': BEGIN erase END ENDCASE END PRO HandleList, event Widget_control, event.id, Get_Uvalue=options Widget_control, event.top, get_uvalue=data image_info={image1:data.image1,t:data.t,s_dev:data.s_dev,sizeY:data.sizeY, sd1:data.sd1, sd2:data.sd2, type:options(event.index),pt:data.pt,hd:data.hd,widy:data.widy,rX:data.rX,rY:data.rY,domain:data.domain,multi:data.multi,marray:data.marray} widget_control, event.top, set_uvalue=image_info END PRO HandleList2, event Widget_control, event.id, Get_Uvalue=options2 Widget_control, event.top, get_uvalue=data image_info={image1:data.image1,t:data.t,s_dev:data.s_dev,sizeY:data.sizeY, sd1:data.sd1,sd2:data.sd2,type:data.type,pt:options2(event.index),hd:data.hd,widy:data.widy,rx:data.rX,rY:data.rY,domain:data.domain,multi:data.multi,marray:data.marray} widget_control, event.top, set_uvalue=image_info END PRO HandleList3, event Widget_control, event.id, Get_Uvalue=options3 Widget_control, event.top, get_uvalue=data image_info={image1:data.image1,t:data.t,s_dev:data.s_dev,sizeY:data.sizeY,sd1:data.sd1,sd2:data.sd2,type:data.type,pt:data.pt,hd:options3(event.index),widy:data.widy,rX:data.rX,rY:data.rY,domain:data.domain,multi:data.multi,marray:data.marray} widget_control, event.top, set_uvalue=image_info END PRO HandleList4, event Widget_control, event.id, Get_Uvalue=options4 Widget_control, event.top, get_uvalue=data image_info={image1:data.image1,t:data.t,s_dev:data.s_dev,sizeY:data.sizeY,sd1:data.sd1,sd2:data.sd2,type:data.type,pt:data.pt,hd:data.hd,widy:data.widy,rX:data.rX,rY:data.rY,domain:data.domain,multi:options4(event.index),marray:data.marray} widget_control, event.top, set_uvalue=image_info END pro fslider_size_event, event widget_control, event.top, get_uvalue=data slider1=data.sd1 slider2=data.sd2 Widget_control, slider1 ,get_value=s1_value Widget_control, slider2 ,get_value=s2_value END pro cuap t1b = Widget_Base(Column=1, Title='Carrot Ultrasound Signal Analysis: [C.Vick, Advisor:Dr.Rao 1/1/99]') t2b = Widget_Base(t1b, row=1) t4b = Widget_Base(t1b, row=3,grid_layout=1) options = ['asc', 'byt'] listMenu = Widget_Droplist(t2b, Value=options, Title='File Type: ', Frame=1, Event_Pro='HandleList', UValue=options) options2 = ['256','128','512','1024', 'other'] listMenu2 = Widget_Droplist(t2b, Value=options2, Title='Data Points: ', Frame=1, Event_Pro='HandleList2', UValue=options2) options3 = ['Yes', 'No'] listMenu3 = Widget_Droplist(t2b, Value=options3, Title='File Header: ', Frame=1, Event_Pro='HandleList3', UValue=options3) options4 = ['1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16'] listMenu4 = Widget_Droplist(t2b, Value=options4, Title='Num.of Files: ', Frame=1, Event_Pro='HandleList4', UValue=options4) loadButton = Widget_Button(t4b, Value='Display Dataset') resiButton = Widget_Button(t4b, Value='Resize Plot') clipButton = Widget_Button(t4b, Value='Clip Dataset') fft_Button = Widget_Button(t4b, Value='Plot F.F.T.') horiButton = Widget_Button(t4b, Value='Multi-Dataset Display') carrButton = Widget_Button(t4b, Value='Isolate Carrot Response') variButton = Widget_Button(t4b, Value='Calculate Statistics') normButton = Widget_Button(t4b, Value='Normalize Dataset') enhaButton = Widget_Button(t4b, Value='Unknown Dataset') writButton = Widget_Button(t4b, Value='Output to file') erasButton = Widget_Button(t4b, Value='Erase Screen') quitButton = Widget_Button(t4b, Value='Quit') read, "Window Heigth [350]:", h window1 = Widget_Draw(t1b, XSize=700, YSize=h) ;200 t3b=Widget_Base(t1b,row=1) text=Widget_label(t3b, Value=' Plot: Xmin,Xmax ',dynamic_resize=1) f1=Widget_Slider(t3b, maximum=512) f2=Widget_Slider(t3b, maximum=512) widget_control,f1,set_value=0 widget_control,f2,set_value=512 widget_control, window1, get_value=w_id image_info ={image1:0,t:50.0*(10.0^(-9.0)),s_dev:0,sizeY:0,sd1:f1,sd2:f2,type:'asc',pt:256,hd:'Yes',widy:w_id,rX:0,rY:0,domain:1,multi:1,marray:0} Widget_control, t1b, set_uvalue= image_info XManager, 'fslider_size', t3b, event_handler='fslider_size_event' Widget_Control, t1b, /realize XManager, 'cuap', t1b, Event='cuap_event' end