Exemple #1
0
def load_qa_frame(filename, frame=None, flavor=None):
    """ Load an existing QA_Frame or generate one, as needed

    Args:
        filename: str
        frame: Frame object, optional
        flavor: str, optional
            Type of QA_Frame

    Returns:
        qa_frame: QA_Frame object
    """
    from desispec.qa.qa_frame import QA_Frame
    log=get_logger()
    if os.path.isfile(filename): # Read from file, if it exists
        qaframe = read_qa_frame(filename)
        log.info("Loaded QA file {:s}".format(filename))
        # Check against frame, if provided
        if frame is not None:
            for key in ['camera','expid','night','flavor']:
                assert getattr(qaframe, key) == frame.meta[key.upper()]
    else:  # Init
        if frame is None:
            log.error("QA file {:s} does not exist.  Expecting frame input".format(filename))
        qaframe = QA_Frame(frame)
    # Set flavor?
    if flavor is not None:
        qaframe.flavor = flavor
    # Return
    return qaframe
Exemple #2
0
def load_qa_frame(filename, frame_meta=None, flavor=None):
    """ Load an existing QA_Frame or generate one, as needed

    Args:
        filename: str
        frame_meta: dict like, optional
        flavor: str, optional
            Type of QA_Frame

    Returns:
        qa_frame: QA_Frame object
    """
    from desispec.qa.qa_frame import QA_Frame
    log = get_logger()
    if os.path.isfile(filename):  # Read from file, if it exists
        qaframe = read_qa_frame(filename)
        log.info("Loaded QA file {:s}".format(filename))
        # Check against frame, if provided
        if frame_meta is not None:
            for key in ['camera', 'expid', 'night', 'flavor']:
                assert str(getattr(qaframe,
                                   key)) == str(frame_meta[key.upper()])
    else:  # Init
        if frame_meta is None:
            log.error(
                "QA file {:s} does not exist.  Expecting frame input".format(
                    filename))
        qaframe = QA_Frame(frame_meta)
    # Set flavor?
    if flavor is not None:
        qaframe.flavor = flavor
    # Return
    return qaframe
Exemple #3
0
    def _write_qaframe(self, camera='b0', expid=1, night='20160101', ZPval=24., flavor='science'):
        """Write QA data frame files"""
        frm = self._make_frame(camera=camera, expid=expid, night=night, flavor=flavor)
        qafrm = QA_Frame(frm)
        # SKY
        qafrm.init_skysub()
        qafrm.qa_data['SKYSUB']['METRICS'] = {}
        qafrm.qa_data['SKYSUB']['METRICS']['NSKY_FIB'] = 10
        # FLUX
        qafrm.init_fluxcalib()
        qafrm.qa_data['FLUXCALIB']['METRICS'] = {}
        qafrm.qa_data['FLUXCALIB']['METRICS']['ZP'] = ZPval
        qafrm.qa_data['FLUXCALIB']['METRICS']['RMS_ZP'] = 0.05
        # Outfile
        qafile = findfile('qa_data', night=night, expid=expid,
                         specprod_dir=self.testDir, camera=camera)
        # WRITE
        write_qa_frame(qafile, qafrm)
        self.files_written.append(qafile)

        # Generate frame too (for QA_Exposure)
        frame = self._make_frame(camera=camera, flavor=flavor, night=night, expid=expid)
        frame_file = findfile('frame', night=night, expid=expid, specprod_dir=self.testDir, camera=camera)
        _ = write_frame(frame_file, frame)
        self.files_written.append(frame_file)
        #
        return qafile
Exemple #4
0
    def test_init_qa_skysub(self):
        #- Init SkySub dict
        qafrm = QA_Frame(self._make_frame(flavor='science'))
        qafrm.init_skysub()
        assert qafrm.qa_data['SKYSUB']['PARAMS']['PCHI_RESID'] > 0.

        #- ReInit SkySub dict
        qafrm.init_skysub(re_init=True)
        assert qafrm.qa_data['SKYSUB']['PARAMS']['PCHI_RESID'] > 0.
Exemple #5
0
    def test_init_qa_fluxcalib(self):
        #- Init FluxCalib dict
        qafrm = QA_Frame(self._make_frame(flavor='science'))
        qafrm.init_fluxcalib()
        assert qafrm.qa_data['FLUXCALIB']['PARAMS']['MAX_ZP_OFF'] > 0.

        #- ReInit FluxCalib dict
        qafrm.init_fluxcalib(re_init=True)
        assert qafrm.qa_data['FLUXCALIB']['PARAMS']['MAX_ZP_OFF'] > 0.
Exemple #6
0
    def test_init_qa_fiberflat(self):
        #- Init FiberFlat dict
        qafrm = QA_Frame(self._make_frame(flavor='flat'))
        qafrm.init_fiberflat()
        assert qafrm.qa_data['FIBERFLAT']['PARAMS']['MAX_RMS'] > 0.

        #- ReInit FiberFlat dict
        qafrm.init_fiberflat(re_init=True)
        assert qafrm.qa_data['FIBERFLAT']['PARAMS']['MAX_RMS'] > 0.
Exemple #7
0
 def test_qa_frame_write_load_data(self):
     # Write
     frm0 = self._make_frame()
     qafrm0 = QA_Frame(frm0)
     write_qa_frame(self.qafile_b0, qafrm0)
     # Load
     qafrm2 = load_qa_frame(self.qafile_b0, frm0)
     assert qafrm2.night == qafrm0.night
Exemple #8
0
 def test_qa_frame_write_load_data(self):
     # Write
     frm0 = self._make_frame()
     qafrm0 = QA_Frame(frm0)
     # Write
     outfile = findfile('qa_data', night=self.nights[0], expid=self.expids[0],
                        specprod_dir=self.testDir, camera='b0')
     write_qa_frame(outfile, qafrm0)
     self.files_written.append(outfile)
     # Load
     qafrm2 = load_qa_frame(outfile, frame_meta=frm0.meta)
     assert qafrm2.night == qafrm0.night
Exemple #9
0
    def test_init_qa_skysub(self):
        #- Init SkySub dict
        qafrm = QA_Frame(self._make_frame(flavor='science'))
        qafrm.init_skysub()
        assert qafrm.qa_data['SKYSUB']['PARAMS']['PCHI_RESID'] > 0.

        #- ReInit SkySub dict
        qafrm.init_skysub(re_init=True)
        assert qafrm.qa_data['SKYSUB']['PARAMS']['PCHI_RESID'] > 0.
Exemple #10
0
    def test_init_qa_fluxcalib(self):
        #- Init FluxCalib dict
        qafrm = QA_Frame(self._make_frame(flavor='science'))
        qafrm.init_fluxcalib()
        assert qafrm.qa_data['FLUXCALIB']['PARAMS']['MAX_ZP_OFF'] > 0.

        #- ReInit FluxCalib dict
        qafrm.init_fluxcalib(re_init=True)
        assert qafrm.qa_data['FLUXCALIB']['PARAMS']['MAX_ZP_OFF'] > 0.
Exemple #11
0
    def test_init_qa_fiberflat(self):
        #- Init FiberFlat dict
        qafrm = QA_Frame(self._make_frame(flavor='flat'))
        qafrm.init_fiberflat()
        assert qafrm.qa_data['FIBERFLAT']['PARAMS']['MAX_RMS'] > 0.

        #- ReInit FiberFlat dict
        qafrm.init_fiberflat(re_init=True)
        assert qafrm.qa_data['FIBERFLAT']['PARAMS']['MAX_RMS'] > 0.
Exemple #12
0
def read_qa_frame(filename):
    """Generate a QA_Frame object from a data file
    """
    from desispec.qa.qa_frame import QA_Frame
    #- check if filename is (night, expid, camera) tuple instead
    if not isinstance(filename, str):
        night, expid, camera = filename
        filename = findfile('qa', night, expid, camera)

    # Read
    qa_data = read_qa_data(filename)

    # Instantiate
    qaframe = QA_Frame(qa_data)

    return qaframe
Exemple #13
0
 def _write_qaframes(self):
     """Write QA data frame files"""
     frm0 = self._make_frame()
     frm1 = self._make_frame(camera='b1')
     qafrm0 = QA_Frame(frm0)
     qafrm1 = QA_Frame(frm1)
     # SKY
     qafrm0.init_skysub()
     qafrm1.init_skysub()
     qafrm0.qa_data['SKYSUB']['METRICS'] = {}
     qafrm1.qa_data['SKYSUB']['METRICS'] = {}
     qafrm0.qa_data['SKYSUB']['METRICS']['NSKY_FIB'] = 10
     qafrm1.qa_data['SKYSUB']['METRICS']['NSKY_FIB'] = 30
     # FLUX
     qafrm0.init_fluxcalib()
     qafrm1.init_fluxcalib()
     qafrm0.qa_data['FLUXCALIB']['METRICS'] = {}
     qafrm0.qa_data['FLUXCALIB']['METRICS']['ZP'] = 24.
     qafrm0.qa_data['FLUXCALIB']['METRICS']['RMS_ZP'] = 0.05
     qafrm1.qa_data['FLUXCALIB']['METRICS'] = {}
     qafrm1.qa_data['FLUXCALIB']['METRICS']['ZP'] = 24.5
     qafrm1.qa_data['FLUXCALIB']['METRICS']['RMS_ZP'] = 0.05
     # WRITE
     write_qa_frame(self.qafile_b0, qafrm0)
     write_qa_frame(self.qafile_b1, qafrm1)
Exemple #14
0
 def test_init_qa_frame(self):
     #- Simple Init call
     qafrm1 = QA_Frame(self._make_frame(flavor='science'))
     assert qafrm1.flavor == 'science'
Exemple #15
0
    def _write_qaframe(self,
                       camera='b0',
                       expid=1,
                       night='20160101',
                       ZPval=24.,
                       flavor='science'):
        """Write QA data frame files"""
        frm = self._make_frame(camera=camera,
                               expid=expid,
                               night=night,
                               flavor=flavor)
        qafrm = QA_Frame(frm)
        # SKY
        qafrm.init_skysub()
        qafrm.qa_data['SKYSUB']['METRICS'] = {}
        qafrm.qa_data['SKYSUB']['METRICS']['NSKY_FIB'] = 10
        # FLUX
        qafrm.init_fluxcalib()
        qafrm.qa_data['FLUXCALIB']['METRICS'] = {}
        qafrm.qa_data['FLUXCALIB']['METRICS']['ZP'] = ZPval
        qafrm.qa_data['FLUXCALIB']['METRICS']['RMS_ZP'] = 0.05
        # Outfile
        qafile = findfile('qa_data',
                          night=night,
                          expid=expid,
                          specprod_dir=self.testDir,
                          camera=camera)
        # WRITE
        write_qa_frame(qafile, qafrm)
        self.files_written.append(qafile)

        # Generate frame too (for QA_Exposure)
        frame = self._make_frame(camera=camera,
                                 flavor=flavor,
                                 night=night,
                                 expid=expid)
        frame_file = findfile('frame',
                              night=night,
                              expid=expid,
                              specprod_dir=self.testDir,
                              camera=camera)
        _ = write_frame(frame_file, frame)
        self.files_written.append(frame_file)
        #
        return qafile
Exemple #16
0
 def _write_qaframe(self,
                    camera='b0',
                    expid=1,
                    night='20160101',
                    ZPval=24.):
     """Write QA data frame files"""
     frm = self._make_frame(camera=camera)
     qafrm = QA_Frame(frm)
     # SKY
     qafrm.init_skysub()
     qafrm.qa_data['SKYSUB']['METRICS'] = {}
     qafrm.qa_data['SKYSUB']['METRICS']['NSKY_FIB'] = 10
     # FLUX
     qafrm.init_fluxcalib()
     qafrm.qa_data['FLUXCALIB']['METRICS'] = {}
     qafrm.qa_data['FLUXCALIB']['METRICS']['ZP'] = ZPval
     qafrm.qa_data['FLUXCALIB']['METRICS']['RMS_ZP'] = 0.05
     # Outfile
     qafile = findfile('qa_data',
                       night=night,
                       expid=expid,
                       specprod_dir=self.testDir,
                       camera=camera)
     # WRITE
     write_qa_frame(qafile, qafrm)
     self.files_written.append(qafile)
     return qafile