#!/bin/env python """write out the important header information from a block of fits files""" from pyfits import getheader import sys,os,glob def deg2sex(dec): if dec > 0: sign = '+' else: sign = '-' dec = abs(dec) degree = int(dec) minute = int((dec - degree)*60) second = ((dec - degree)*60 - minute)*60 secint = int(second) secdec = int((second - secint)*100) return "%s%02i:%02i:%.02i.%02i" % (sign, degree, minute, secint, secdec) def hr2sex(ra): decimalhour = ra / 15. hour = int(decimalhour) minute = int((decimalhour - hour)*60) second = ((decimalhour - hour)*60 - minute)*60 secint = int(second) secdec = int((second - secint)*100) return "%02i:%02i:%.02i.%02i" % (hour, minute, secint, secdec) def niricat(files): for f in files: if f == '': continue h = getheader(f) if h['naxis']==0: ext = 1 hext = getheader(f,1) else: ext = 0 hext = 0 s = '' file = f[f.rfind('/')+1:] file = file[:file.rfind('.fits')] try: time = h['ut'] #target = h['target'].strip() object = h['object'].strip() if ext==0: sizestr = str(h['naxis1'])+'x'+str(h['naxis2']) if ext==1: sizestr = str(hext['naxis1'])+'x'+str(hext['naxis2']) try: airmass = "%.2f" % h['airmass'] except: airmass = "??" camera = h['camera'].strip() exp = "%.2f" % h['exptime'] coadd = "%3i" % h['coadds'] filt = h['filter1'] if filt == 'Kprime_G0206': filt = "K'" if filt == 'Kshort_G0205': filt = "Ks" if filt == 'K_G0204': filt = "K" if filt == 'H_G0203': filt = "H" if filt == 'J_G0202': filt = "J" if camera == 'f6' and sizestr == '1024x1024': sizestr = '' try: shutter = h['gcalshut'].strip() except: shutter = '?' shutterstr = '' if shutter == 'CLOSED': shutterstr = 'closed' try: ra = hr2sex(h['ra']) dec = deg2sex(h['dec']) except: ra = '??' dec = '??' except: #if this is not a standard file, ignore it print f + ' appears non-standard' continue s = s + f.ljust(22) + ' ' s = s + time.ljust(11) + ' ' s = s + object.ljust(15) + ' ' s = s + camera.ljust(3) s = s + coadd.ljust(3) + 'x' s = s + exp.ljust(4)[0:4] + ' ' s = s + filt.ljust(2) + ' ' s = s + ra.ljust(11) + ' ' s = s + dec.ljust(11) + ' ' s = s + airmass.ljust(5) + ' ' s = s + shutterstr.ljust(6) + ' ' s = s + sizestr print s ################### def main(): argv = sys.argv verbose = 1 input = '' input2 = '' fileselector = ["*.fits"] #default if (len(argv)>=2): for v in argv[1:]: if v[0] != '-': fileselector.append(v) if len(fileselector) > 1: fileselector = fileselector[1:] files = [] for fs in fileselector: files += glob.glob(fs) nbadfilenames = 0 for i in range(len(files)): f = files[i] #print f if f.find('.fit') < 0: if (len(argv)>=2): print f + ' is not a fits file.' files[i] = '' nbadfilenames = nbadfilenames + 1 if len(files) - nbadfilenames <= 0: print 'Error: No valid .fits files specified.' return 1 niricat(files) ################### if __name__=='__main__': main()