示例#1
0
def update_image_wcs_info(tweakwcs_output,
                          headerlet_filenames=None,
                          fit_label=None):
    """Write newly computed WCS information to image headers and write headerlet files

        Parameters
        ----------
        tweakwcs_output : list
            output of tweakwcs. Contains sourcelist tables, newly computed WCS info, etc. for every chip of every valid
            every valid input image.

        headerlet_filenames : dictionary, optional
            dictionary that maps the flt/flc.fits file name to the corresponding custom headerlet filename.

        Returns
        -------
        out_headerlet_list : dictionary
            a dictionary of the headerlet files created by this subroutine, keyed by flt/flc fits filename.
        """
    out_headerlet_dict = {}
    for item in tweakwcs_output:
        image_name = item.meta['filename']
        chipnum = item.meta['chip']
        hdulist = fits.open(image_name, mode='update')
        if chipnum == 1:
            chipctr = 1
            num_sci_ext = amutils.countExtn(hdulist)

            # generate wcs name for updated image header, headerlet
            # Just in case header value 'wcs_name' is empty.
            if fit_label is None:
                if 'relative' in item.meta['fit method']:
                    fit_label = 'REL'
                else:
                    fit_label = 'IMG'

            if not hdulist['SCI', 1].header['WCSNAME'] or hdulist[
                    'SCI', 1].header['WCSNAME'] == "":
                wcs_name = "FIT_{}_{}".format(fit_label,
                                              item.meta['catalog_name'])
            else:
                wname = hdulist['sci', 1].header['wcsname']
                if "-" in wname:
                    wcs_name = '{}-FIT_{}_{}'.format(
                        wname[:wname.index('-')], fit_label,
                        item.meta['fit_info']['catalog'])
                else:
                    wcs_name = '{}-FIT_{}_{}'.format(
                        wname, fit_label, item.meta['fit_info']['catalog'])

            # establish correct mapping to the science extensions
            sci_ext_dict = {}
            for sci_ext_ctr in range(1, num_sci_ext + 1):
                sci_ext_dict["{}".format(sci_ext_ctr)] = fileutil.findExtname(
                    hdulist, 'sci', extver=sci_ext_ctr)

        # update header with new WCS info
        sci_extn = sci_ext_dict["{}".format(item.meta['chip'])]
        hdr_name = "{}_{}-hlet.fits".format(image_name.rstrip(".fits"),
                                            wcs_name)
        updatehdr.update_wcs(hdulist,
                             sci_extn,
                             item.wcs,
                             wcsname=wcs_name,
                             reusename=True)
        info = item.meta['fit_info']
        hdulist[sci_extn].header['RMS_RA'] = info['RMS_RA'].value if info[
            'RMS_RA'] is not None else -1.0
        hdulist[sci_extn].header['RMS_DEC'] = info['RMS_DEC'].value if info[
            'RMS_DEC'] is not None else -1.0
        hdulist[sci_extn].header['CRDER1'] = info['RMS_RA'].value if info[
            'RMS_RA'] is not None else -1.0
        hdulist[sci_extn].header['CRDER2'] = info['RMS_DEC'].value if info[
            'RMS_DEC'] is not None else -1.0
        hdulist[sci_extn].header['NMATCHES'] = len(
            info['ref_mag']) if info['ref_mag'] is not None else -1.0
        if 'HDRNAME' in hdulist[sci_extn].header:
            del hdulist[sci_extn].header['HDRNAME']
        hdulist[sci_extn].header['HDRNAME'] = hdr_name
        hdulist.flush()
        hdulist.close()

        # Create headerlet
        out_headerlet = headerlet.create_headerlet(image_name,
                                                   hdrname=hdr_name,
                                                   wcsname=wcs_name,
                                                   logging=False)

        # Update headerlet
        update_headerlet_phdu(item, out_headerlet)

        # Write headerlet
        if headerlet_filenames:
            headerlet_filename = headerlet_filenames[
                image_name]  # Use HAP-compatible filename defined in runhlaprocessing.py
        else:
            if image_name.endswith("flc.fits"):
                headerlet_filename = image_name.replace("flc", "flt_hlet")
            if image_name.endswith("flt.fits"):
                headerlet_filename = image_name.replace("flt", "flt_hlet")
        out_headerlet.writeto(headerlet_filename, overwrite=True)
        log.info("Wrote headerlet file {}.\n\n".format(headerlet_filename))
        out_headerlet_dict[image_name] = headerlet_filename

        # Attach headerlet as HDRLET extension
        if headerlet.verify_hdrname_is_unique(hdulist, hdr_name):
            headerlet.attach_headerlet(image_name,
                                       headerlet_filename,
                                       logging=False)

        chipctr += 1
    return (out_headerlet_dict)
示例#2
0
def run(configObj=None):

    headerlet.attach_headerlet(configObj['filename'], configObj['hdrlet'],
                               configObj['logging'])
示例#3
0
def run(configObj=None):

    headerlet.attach_headerlet(configObj['filename'],configObj['hdrlet'],
                               configObj['logging'])