def test_lev3_FUV(self): """ This test is for level 3 FUV data """ # Prepare input files. self.get_input_file("input", "o5in01tnq_raw.fits") outroot = "calstis_lev3_FUV" # Run test calstis("o5in01tnq_raw.fits", outroot=outroot) # Compare results outputs = [(outroot + "_flt.fits", outroot + "_flt_ref.fits"), (outroot + "_x2d.fits", outroot + "_x2d_ref.fits")] self.compare_outputs(outputs)
def test_lev3_FUV(self): """ This test is for level 3 FUV data """ # Prepare input files. self.get_input_file("input", "o5in01tnq_raw.fits") outroot = "calstis_lev3_FUV" # Run test calstis("o5in01tnq_raw.fits", outroot=outroot) # Compare results outputs = [(outroot + "_flt.fits", outroot + "_flt_ref.fits"), (outroot + "_x2d.fits", outroot + "_x2d_ref.fits")] self.compare_outputs(outputs)
def test2_lev1_FUV(self): """ This test is for level 1? FUV data """ # Prepare input files. self.get_input_file("input", "odj102010_raw.fits") self.get_input_file("input", "odj102010_wav.fits") outroot = "calstis_1lev1_FUVspec" # Run test calstis("odj102010_raw.fits", outroot=outroot) # Compare results outputs = [(outroot+"_flt.fits", outroot+"_flt_ref.fits"), (outroot+"_x1d.fits", outroot+"_x1d_ref.fits")] self.compare_outputs(outputs)
def test2_lev1_FUV(self): """ This test is for level 1? FUV data """ # Prepare input files. self.get_input_file("input", "odj102010_raw.fits") self.get_input_file("input", "odj102010_wav.fits") outroot = "calstis_1lev1_FUVspec" # Run test calstis("odj102010_raw.fits", outroot=outroot) # Compare results outputs = [(outroot + "_flt.fits", outroot + "_flt_ref.fits"), (outroot + "_x1d.fits", outroot + "_x1d_ref.fits")] self.compare_outputs(outputs)
def test_lev2_CCD(self): """ This test is for level 2 CCD data """ # Prepare input files. self.get_input_file("input", "o3wd01060_raw.fits") self.get_input_file("input", "o3wd01060_wav.fits") self.get_data("input", "o3wd01060_spt.fits") outroot = "calstis_lev2_CCD" # Run test calstis("o3wd01060_raw.fits", outroot=outroot) # Compare results outputs = [(outroot + "_flt.fits", outroot + "_flt_ref.fits"), (outroot + "_crj.fits", outroot + "_crj_ref.fits"), (outroot + "_sx1.fits", outroot + "_sx1_ref.fits"), (outroot + "_sx2.fits", outroot + "_sx2_ref.fits")] self.compare_outputs(outputs)
def test_lev2_CCD(self): """ This test is for level 2 CCD data """ # Prepare input files. self.get_input_file("input", "o3wd01060_raw.fits") self.get_input_file("input", "o3wd01060_wav.fits") self.get_data("input", "o3wd01060_spt.fits") outroot = "calstis_lev2_CCD" # Run test calstis("o3wd01060_raw.fits", outroot=outroot) # Compare results outputs = [(outroot + "_flt.fits", outroot + "_flt_ref.fits"), (outroot + "_crj.fits", outroot + "_crj_ref.fits"), (outroot + "_sx1.fits", outroot + "_sx1_ref.fits"), (outroot + "_sx2.fits", outroot + "_sx2_ref.fits")] self.compare_outputs(outputs)
def test_ccd_imaging(self): """ This test is for calstis on CCD imaging data """ # Prepare input files. self.get_input_file("input", "oci402010_raw.fits") self.get_data("input", "oci402dnj_epc.fits") self.get_data("input", "oci402doj_epc.fits") outroot = "stis_test1" outfile = outroot + "_flt.fits" outcrj = outroot + "_crj.fits" outsx2 = outroot + "_sx2.fits" reffile_flt = 'reference_stis_01_flt.fits' reffile_crj = 'reference_stis_01_crj.fits' reffile_sx2 = 'reference_stis_01_sx2.fits' calstis("oci402010_raw.fits", outroot=outroot) # Compare results outputs = [(outfile, reffile_flt), (outcrj, reffile_crj), (outsx2, reffile_sx2)] self.compare_outputs(outputs)
def test_ccd_imaging(self): """ This test is for calstis on CCD imaging data """ # Prepare input files. self.get_input_file("input", "oci402010_raw.fits") self.get_data("input", "oci402dnj_epc.fits") self.get_data("input", "oci402doj_epc.fits") outroot = "stis_test1" outfile = outroot + "_flt.fits" outcrj = outroot + "_crj.fits" outsx2 = outroot + "_sx2.fits" reffile_flt = 'reference_stis_01_flt.fits' reffile_crj = 'reference_stis_01_crj.fits' reffile_sx2 = 'reference_stis_01_sx2.fits' calstis("oci402010_raw.fits", outroot=outroot) # Compare results outputs = [(outfile, reffile_flt), (outcrj, reffile_crj), (outsx2, reffile_sx2)] self.compare_outputs(outputs)
def regress(folder): """ Run *drk and *bia files in folder through CalSTIS to check for errors in processing """ start_dir = os.getcwd() print('#------------------#') print('Running regression for') print(folder) print('#------------------#') monitor_dir = '/grp/hst/stis/darks_biases' test_suite = os.path.join(monitor_dir, 'test_suite') test_dark = os.path.join(monitor_dir, 'test_dark') print((glob.glob(os.path.join(folder, '*bia.fits')))) reference_files = glob.glob(os.path.join(folder, '*bia.fits')) + \ glob.glob(os.path.join(folder, '*drk.fits')) print(reference_files) assert len(reference_files) >= 1, 'No reference files in folder' print('Copying files and removing old files') for testing_dir in [test_suite, test_dark]: for oldfile in glob.glob(os.path.join(testing_dir, '*_drk.fits')) + \ glob.glob(os.path.join(testing_dir, '*_bia.fits')): print(('removing', oldfile)) os.remove(os.path.join(testing_dir, oldfile)) for newfile in reference_files: print(('moving', newfile, '-->', testing_dir)) shutil.copy(newfile, testing_dir) ####################################### # Run checks in the test_suite folder # ####################################### os.chdir(test_suite) print((os.getcwd())) bias_biwk_refs = glob.glob('*bias*_bi*.fits') bias_biwk_refs.sort() biasrefs = glob.glob('*bias*_wk*.fits') biasrefs.sort() darkrefs = glob.glob('*dark*.fits') darkrefs.sort() raws = glob.glob('*raw.fits') print('Setting IMPHTTAB in datasets') for dark, bias in zip(darkrefs, biasrefs): remove_products() print('#-------------------------------------------#') print(('Running CalSTIS with %s %s ' % (dark, bias))) print('#-------------------------------------------#') for rawfile in raws: if os.path.exists( rawfile.replace('raw.fits', 'wav.fits') ): wavefile = rawfile.replace('raw.fits', 'wav.fits') else: wavefile = '' pyfits.setval(rawfile, 'DARKFILE', value=dark, ext=0) pyfits.setval(rawfile, 'BIASFILE', value=bias, ext=0) pyfits.setval(rawfile, 'IMPHTTAB', value='oref$x9r1607mo_imp.fits', ext=0) if wavefile: pyfits.setval(wavefile, 'DARKFILE', value=dark, ext=0) pyfits.setval(wavefile, 'BIASFILE', value=bias, ext=0) pyfits.setval(wavefile, 'IMPHTTAB', value='oref$x9r1607mo_imp.fits', ext=0) status = calstis(rawfile, wavecal=wavefile) if status: sys.exit('Calstis Error detected for %s' % (dark[5:9])) ###################################### # Run checks in the test_dark folder # ###################################### os.chdir(test_dark) print((os.getcwd())) raws = glob.glob('*raw.fits') print('Setting IMPHTTAB in datasets') for item in raws: pyfits.setval(item, 'IMPHTTAB', value='oref$x9r1607mo_imp.fits', ext=0) for bias in bias_biwk_refs: remove_products() print('#------------------------------------------#') print(('Running CalSTIS with %s' % (bias))) print('#------------------------------------------#') for rawfile in raws: pyfits.setval(rawfile, 'BIASFILE', value=bias, ext=0) pyfits.setval(rawfile, 'DARKFILE', value=darkrefs[0], ext=0) status = calstis(input=rawfile) if status: sys.exit('Calstis Error detected for %s' % (dark[5:9])) os.chdir(start_dir)
def bd_calstis(joinedfile, thebiasfile=None): """ Run CalSTIS on the joined file Header keywords will be set for ocrreject to work correctly and not flag regions outside the original aperture: APERTURE --> 50CCD APER_FOV --> '50x50' DARKCORR --> 'OMIT' FLATCORR --> 'OMIT' Parameters ---------- joinedfile : str join of multiple input darks thebiasfile : str, bool the biasfile to be subtracted by basic2d """ with pyfits.open(joinedfile, 'update') as hdu: hdu[0].header['CRCORR'] = 'PERFORM' hdu[0].header['APERTURE'] = '50CCD' hdu[0].header['APER_FOV'] = '50x50' hdu[0].header['DARKCORR'] = 'OMIT' hdu[0].header['FLATCORR'] = 'OMIT' if thebiasfile: hdu[0].header['BIASFILE'] = thebiasfile crj_file = joinedfile.replace('.fits', '_crj.fits') path, name = os.path.split(joinedfile) name, ext = os.path.splitext(name) trailerfile = os.path.join(path, name+'_bd_calstis_log.txt') if os.path.exists(crj_file): print('Deleting old file: %s' % crj_file) os.remove(crj_file) if os.path.exists(trailerfile): print('Deleting old file: %s' % trailerfile) os.remove(trailerfile) print('Running CalSTIS on %s' % joinedfile) print('to create: %s' % crj_file) status = calstis(joinedfile, wavecal="", outroot="", savetmp=False, verbose=False, trailer=trailerfile) if status != 0: try: print() with open(trailerfile) as tr: for line in tr.readlines(): print(' {}'.format(line.strip())) finally: raise Exception('CalSTIS failed to properly reduce {}'.format(joinedfile)) pyfits.setval(crj_file, 'FILENAME', value=os.path.split(crj_file)[1])
def bd_calstis(joinedfile, thebiasfile=None): """ Run CalSTIS on the joined file Header keywords will be set for ocrreject to work correctly and not flag regions outside the original aperture: APERTURE --> 50CCD APER_FOV --> '50x50' DARKCORR --> 'OMIT' FLATCORR --> 'OMIT' Parameters ---------- joinedfile : str join of multiple input darks thebiasfile : str, bool the biasfile to be subtracted by basic2d """ with pyfits.open(joinedfile, 'update') as hdu: hdu[0].header['CRCORR'] = 'PERFORM' hdu[0].header['APERTURE'] = '50CCD' hdu[0].header['APER_FOV'] = '50x50' hdu[0].header['DARKCORR'] = 'OMIT' hdu[0].header['FLATCORR'] = 'OMIT' if thebiasfile: hdu[0].header['BIASFILE'] = thebiasfile crj_file = joinedfile.replace('.fits', '_crj.fits') path, name = os.path.split(joinedfile) name, ext = os.path.splitext(name) trailerfile = os.path.join(path, name + '_bd_calstis_log.txt') if os.path.exists(crj_file): print('Deleting old file: %s' % crj_file) os.remove(crj_file) if os.path.exists(trailerfile): print('Deleting old file: %s' % trailerfile) os.remove(trailerfile) print('Running CalSTIS on %s' % joinedfile) print('to create: %s' % crj_file) status = calstis(joinedfile, wavecal="", outroot="", savetmp=False, verbose=False, trailer=trailerfile) if status != 0: try: print() with open(trailerfile) as tr: for line in tr.readlines(): print(' {}'.format(line.strip())) finally: raise Exception( 'CalSTIS failed to properly reduce {}'.format(joinedfile)) pyfits.setval(crj_file, 'FILENAME', value=os.path.split(crj_file)[1])