def normalize_masterflat(WORK_DIR): print '\n + Normalizing masterflat.\n' try: os.remove('masterflat_norm.fits') except: pass iraf.apflatten(input='masterflat.fits', output='masterflat_norm.fits', referen=observations[WORK_DIR]['objects'][0], interac='no', find='no', recenter='no', resize='no', edit='no', trace='no', fittrac='no', flatten='yes', fitspec='yes', functio='spline3', order=13, sample='51:2098', niterat=5)
def produce_flat(filelist_flat, masterflat_name): flat_directory = os.path.dirname(filelist_flat[0]) filelist_text = open("filelist.lis", "w") for i in range(len(filelist_flat)): filelist_text.write(filelist_flat[i] + "\n") filelist_text.close() if len(filelist_flat) > 1: iraf.imcombine("@filelist.lis", "Flat.raw.fits", combine="average", reject="minmax", nlow=1, nhigh=1, nkeep=1) trim = trim_remove_bias("Flat.raw.fits") iraf.apflatten(trim, masterflat_name, referen="find_orders_flat", apertures="3-50", trace="no", gain=0.1913, readnoise=3.380) else: iraf.apflatten(filelist_flat[0], masterflat_name, referen="find_orders_flat", apertures="3-50", trace="no", gain=0.1913, readnoise=3.380) os.remove("Flat.raw.fits") os.remove(trim) os.remove("filelist.lis") shutil.move(masterflat_name, os.path.join(flat_directory)) print("Success! Produced file:" + masterflat_name)
# ir.apnorm1.gain = ")apnormalize.gain" # ir.apnorm1.lsigma = ")apnormalize.lsigma" # ir.apnorm1.usigma = ")apnormalize.usigma" # ir.apnorm1.clean = ")apnormalize.clean" if True: # the old, IRAF way: #ir.apnormalize(_sflatdc+'big', _sflatdcn+'big', sample=horizsamp, niterate=1, threshold=flat_threshold, function="spline3", pfit = "fit1d", clean='yes', cennorm='no', recenter='yes', resize='yes', edit='yes', trace='yes', weights='variance', fittrace='yes', interactive=interactive, background='fit', order=3) ir.apflatten(_sflatdc + 'big', _sflatdcn + 'big', sample=horizsamp, niterate=1, threshold=flat_threshold, function="spline3", pfit="fit1d", clean='yes', recenter='yes', resize='yes', edit='yes', trace='yes', fittrace='yes', interactive=interactive, order=3) else: mudflat = pyfits.getdata(_sflatdc + 'big.fits') mudhdr = pyfits.getheader(_sflatdc + 'big.fits') trace = spec.traceorders(_sflatdc + 'big.fits', pord=2, nord=ir.aptrace.order, g=gain,
def correctblazefn(inflat, outflat, ref_ap=None): #Create padded file to get aperatures on edges flatdat = pyfits.getdata(inflat + postfn) flathdr = pyfits.getheader(inflat + postfn) n_big = 1400 n_base = flatdat.shape[0] pad = (n_big - n_base) / 2 bigflat = ny.zeros([n_big, n_base]) bigflat[pad:(pad + n_base), :] = flatdat pyfits.writeto(inflat + 'big' + postfn, bigflat, flathdr, overwrite=True, output_verify='warn') # Flatten Iraf or otherwise if irafapflatten: if ref_ap == None: ir.apflatten(inflat + 'big', outflat + 'big', sample=horizsamp, niterate=1, threshold=flat_threshold, function="spline3", pfit="fit1d", clean='yes', recenter='yes', resize='yes', edit='yes', trace='yes', fittrace='yes', interactive=interactive, order=3) else: ir.apflatten(inflat + 'big', outflat + 'big', references=ref_ap, sample=horizsamp, niterate=1, threshold=flat_threshold, function="spline3", pfit="fit1d", clean='yes', recenter='yes', resize='yes', edit='yes', trace='no', fittrace='yes', interactive=False, order=3) else: mudflat = pyfits.getdata(inflat + 'big.fits') mudhdr = pyfits.getheader(inflat + 'big.fits') trace = spec.traceorders(inflat + 'big.fits', pord=2, nord=ir.aptrace.order, g=gain, rn=readnoise, fitwidth=100) normflat = spec.normalizeSpecFlat(mudflat * gain, nspec=ir.aptrace.order, traces=trace) pyfits.writeto(outflat + 'big.fits', normflat, header=mudhdr, output_verify='warn') # Remove Padding normflatdat = pyfits.getdata(outflat + 'big' + postfn) normflathdr = pyfits.getheader(outflat + 'big' + postfn) smallnormflat = normflatdat[pad:(pad + n_base), :] smallnormflat[smallnormflat == 0] = 1. pyfits.writeto(outflat + postfn, smallnormflat, normflathdr, overwrite=True, output_verify='warn')
str_v_mod_out = temp_dir + ('[0]' + ',' + temp_dir).join(v_mod) + '[0]' #iraf.apall("master_flat.fits",extract='no',nfind=58,interactive="no",find="yes") iraf.apall(temp_dir + star_file.replace('.fits', '_boost.fits'), extract='no', nfind=62, interactive="no", find="yes", recenter="yes") v_mod_norm = SRP.outputnames(v, 'tnrm') str_v_mod_flats = temp_dir + (',' + temp_dir).join(v_mod_norm) + '' for j, x in enumerate(v_mod): iraf.apflatten(cal_dir + 'master_flat.fits', output=temp_dir + v_mod_norm[j], reference=temp_dir + star_file.replace('.fits', '_boost.fits')) iraf.reset(use_new_imt="no") iraf.flpr("0") #divide each science image by its flat iraf.imarith(str_v_mod_out, '/', str_v_mod_flats, str_v_mod) #stack all science images iraf.imcombine(str_v_mod_out, temp_dir + star_file, combine="sum") iraf.reset(use_new_imt="no") iraf.flpr("0") str_star = star_file.replace('.fits', '.ec.fits')