示例#1
0
    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)
示例#2
0
    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)
示例#3
0
    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)
示例#4
0
    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)
示例#5
0
    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)
示例#6
0
    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)
示例#7
0
    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)
示例#8
0
    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)
示例#9
0
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)
示例#10
0
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])
示例#11
0
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])