PRO sbc_defects,pflat ; ; determine number and location of defective (low ; count rate) pixels in an SBC P-flat. This is ; needed in order to determine if the SBC meets CEI ; specs. ; file = 'psbcext99marsm76super.fits' ; flat field file. levs = [0.1, 0.2, 0.3, 0.4, 0.5] ; levels to count defects at listbad = [ 0b, 0b, 0b, 0b, 1b] filo = 'sbc_defects.dat' ; ; read fits flat field file fits_read,file,pflat,h dimens = size(pflat) ncol = dimens[1] nrow = dimens[2] ; ; open output file filo = STRTRIM(filo,2) IF (STRLEN(filo) GT 0) THEN openw,unit_out,filo,/get_lun for i = 0, (n_elements(levs)-1) DO BEGIN bad = where(pflat LT levs(i), nbad) print, 'level = ',levs[i], ' nbad = ', nbad IF (STRLEN(filo) GT 0) THEN $ printf,unit_out,'level = ',levs[i], ' nbad = ', nbad IF (listbad[i] EQ 1b) THEN BEGIN print, ' ' print, ' count column row level' print, ' -----------------------------------' badval = pflat[bad] srtbad = sort(badval) temp = bad bad = temp[srtbad] badval = pflat[bad] colbad = bad MOD ncol + 1 rowbad = fix(bad / ncol) + 1 ind = indgen(n_elements(bad)) + 1 for j = 0, (n_elements(bad)-1) DO $ print, ind[j], colbad[j], rowbad[j], badval[j] print, ' ' IF (STRLEN(filo) GT 0) THEN BEGIN printf,unit_out, ' ' printf,unit_out, ' count column row level' printf,unit_out, ' -----------------------------------' for j = 0, (n_elements(bad)-1) DO $ printf,unit_out, ind[j], colbad[j], rowbad[j], badval[j] printf,unit_out, ' ' ENDIF ENDIF ENDFOR IF (STRLEN(filo) GT 0) THEN close,unit_out end