PRO CheckNans ;spectra = file_search('stelib_*[0-9]?.fits',COUNT=nfiles) spectra = file_search('stelib_F6IV_HD124570.fits',COUNT=nfiles) nans = indgen(nfiles) for j=0,nfiles-1 do begin fits_read,spectra[j], spec, h angstrom=sxpar(h, 'CDELT1') wave=sxpar(h, 'CRVAL1') + dindgen(sxpar(h,'NAXIS1')-1) * sxpar(h, 'CDELT1') ; Criterium below finds NaN values in the spectrum ; if (size(where(Finite(spec) eq 0),/dimen) ne 0) then nans[j] = 0 else nans[j] = 1 ; Check if there are gaps larger then 2 pix at the edges of spectrum spec=spec[where(wave ge 3780) AND where(wave le 9270)] dim=size(spec,/dimen) bad = (where(spec eq 0.0,count)) nans[j]=1 if (count gt 1) then begin if (count gt 2) then begin if ((where(spec eq 0.0))[1] eq 1) OR ((where(spec eq 0.0))[dim-2] eq (dim-2)) then nans[j]=0 else nans[j]=1 endif else begin if ((where(spec eq 0.0))[1] eq 1) then nans[j]=0 else nans[j]=1 endelse endif medianVal=median(spec[where(spec ne 0.0)]) ; Calculate the size of the largest gap in the spectrum maxGap=0 sum=1 index=where(spec eq 0.0) for i=0,n_elements(index)-2 do begin if (index[i+1]-index[i] eq 1) then begin sum=sum+1 ; print, index[i], index[i+1], sum endif else begin if (sum gt maxGap) then maxGap=sum sum=1 endelse endfor if (count ge 1 AND sum gt maxGap) then maxGap=sum ;print, File_Basename(spectra[j]), ' ',nans[j], FORMAT='(A32, A3, I1)' if (size(where(spec eq 0.0),/dimen) ne 0) then $ print, File_Basename(spectra[j]), ' yes ',nans[j],' ',maxGap, 'pixels',angstrom*maxGap,'angstroms ', medianVal, FORMAT='(A32, A5, I1, A1, I6, A10, F8.1, A11, e11.5)' $ else print, File_Basename(spectra[j]), ' no ',nans[j],' ',maxGap, 'pixels',angstrom*maxGap,'angstroms ',medianVal, FORMAT='(A32, A5, I1, A1, I6, A10, F8.1, A11, e11.5)' endfor END