def mk_skyflats(file_list=None,file_path=None, bias_fil=None): import xastropy.PH136.experiments.hrdiagram as hrd from astropy.io.fits import getdata # Frames B_sky = 32 + np.arange(5) V_sky = 37 + np.arange(5) R_sky = 43 + np.arange(5) all_sky = [B_sky, V_sky, R_sky] # Outfiles outfil = ['Sky_B.fits', 'Sky_V.fits', 'Sky_R.fits'] filters = ['B','V','R'] # Bias if bias_fil == None: bias_fil = 'Bias.fits' bias_img,bias_head = getdata(bias_fil,0,header=True) # Loop on Filters for ff in filters: # Index idx = filters.index(ff) # Generate file names files= hrd.mk_file_list(all_sky[idx]) # Stack with scaling img = hrd.stack_img(files, bias_img=bias_img, norm=True) # Trim trim_img = hrd.trimflip_img(img) # Deal with zeros zro = np.where( trim_img == 0.) trim_img[zro] = 1. # Write print 'Sky Flats: Writing ', outfil[idx] fits.writeto(outfil[idx], trim_img, clobber=True) print 'Sky Flats: All done' return
def proc_sa104(file_path=None,outdir=None, bias_fil=None): from astropy.coordinates import ICRS from astropy.io import ascii from astropy import units as u from astropy.io.fits import getdata import xastropy.PH136.experiments.hrdiagram as hrd # Defaults if file_path == None: file_path = 'Raw/' if outdir == None: outdir = 'Std/' # Bias frame if bias_fil == None: bias_fil = 'Bias.fits' bias_img,bias_head = getdata(bias_fil,0,header=True) # Read Log data = ascii.read('simple.log',delimiter='|') nfil = len(data) all_coord = ICRS(ra=data['RA'], dec=data['DEC'], unit=(u.hour,u.degree)) # M67 coords sa104_rac = '12:43:44.3' sa104_decc = '-00:29:40.0' sa104_c = ICRS(sa104_rac, sa104_decc, unit=(u.hour,u.degree)) # Find all SA 104 sep = (sa104_c.separation(all_coord)).degree isa104, = np.where( sep < 1. ) # 1 degree sa104 = data[isa104] # Filters all_filt=np.array(sa104['Filter']) filters,ifilt = np.unique(all_filt,return_index=True) # Loop on Filterse all_fil = [] for ff in filters: # Load Sky frame skyfil = 'Sky_'+ff+'.fits' sky_img,head = getdata(skyfil,0,header=True) # Images idx = np.where(sa104['Filter'] == ff) # Loop on images for kk in np.concatenate(idx,axis=0): # Read img,head = getdata(sa104[kk]['File'],0,header=True) # Bias subtract img = img - bias_img # Trim timg = hrd.trimflip_img(img) # Flat field timg = timg / sky_img # Normalize by exposure timg = timg / sa104[kk]['Exp'] # Filename outfil = outdir+'SA104_t'+str(int(sa104[kk]['Exp']))+'_'+ff+'.fits' # Check for duplicate flg_skip = 0 mt = [i for i in range(len(all_fil)) if all_fil[i] == outfil] if len(mt) > 0: print 'Duplicate image', outfil print 'Skipping...' continue all_fil.append(outfil) # Write print 'Writing ', outfil fits.writeto(outfil, timg, head, clobber=True) return
def proc_m67(file_path=None,outdir=None, bias_fil=None): from astropy.coordinates import ICRS from astropy.io import ascii from astropy import units as u from astropy.io.fits import getdata import xastropy.PH136.experiments.hrdiagram as hrd # Defaults if file_path == None: file_path = 'Raw/' if outdir == None: outdir = 'Science/' # Bias frame if bias_fil == None: bias_fil = 'Bias.fits' bias_img,bias_head = getdata(bias_fil,0,header=True) # Read Log data = ascii.read('simple.log',delimiter='|') nfil = len(data) all_coord = ICRS(ra=data['RA'], dec=data['DEC'], unit=(u.hour,u.degree)) # M67 coords m67_rac = '08:54:24' m67_decc = '+11:49:00' m67_c = ICRS(m67_rac, m67_decc, unit=(u.hour,u.degree)) # Find all M67 sep = (m67_c.separation(all_coord)).degree im67, = np.where( sep < 1. ) # 1 degree m67 = data[im67] # 5 positions m67_ra = ['08:52:02.2', '08:52:15.3', '08:51:49.9', '08:51:50.0', '08:52:16.2'] m67_dec = ['+11:52:41.0', '+11:55:51.0', '+11:55:53.0', '+11:49:38.0', '+11:49:40.0'] m67_pointings = ICRS(ra=m67_ra, dec=m67_dec, unit=(u.hour, u.degree)) # Filters all_filt=np.array(m67['Filter']) filters,ifilt = np.unique(all_filt,return_index=True) # Loop on Filterse all_fil = [] for ff in filters: # Load Sky frame skyfil = 'Sky_'+ff+'.fits' sky_img,head = getdata(skyfil,0,header=True) # Images idx = np.where(m67['Filter'] == ff) # Loop on images for kk in np.concatenate(idx,axis=0): # Read img,head = getdata(m67[kk]['File'],0,header=True) # Bias subtract img = img - bias_img # Trim timg = hrd.trimflip_img(img) # Flat field timg = timg / sky_img # Normalize by exposure timg = timg / m67[kk]['Exp'] # Filename coord = ICRS(head['RA'], head['DEC'], unit=(u.hour,u.degree)) sep = (coord.separation(m67_pointings)).degree ipos = np.argmin(sep) outfil = outdir+'M67_C'+str(ipos)+'_t'+str(int(m67[kk]['Exp']))+'_'+ff+'.fits' # Check for duplicate flg_skip = 0 mt = [i for i in range(len(all_fil)) if all_fil[i] == outfil] if len(mt) > 0: print 'Duplicate image', outfil print 'Skipping...' continue all_fil.append(outfil) # Write print 'Writing ', outfil fits.writeto(outfil, timg, clobber=True) return