diff options
Diffstat (limited to 'lib/stwcs/updatewcs/wfpc2_dgeo.py')
-rw-r--r-- | lib/stwcs/updatewcs/wfpc2_dgeo.py | 123 |
1 files changed, 0 insertions, 123 deletions
diff --git a/lib/stwcs/updatewcs/wfpc2_dgeo.py b/lib/stwcs/updatewcs/wfpc2_dgeo.py deleted file mode 100644 index e57bb5c..0000000 --- a/lib/stwcs/updatewcs/wfpc2_dgeo.py +++ /dev/null @@ -1,123 +0,0 @@ -""" wfpc2_dgeo - Functions to convert WFPC2 DGEOFILE into D2IMFILE - -""" -import os -import datetime - -import astropy -from astropy.io import fits -import numpy as np - -from stsci.tools import fileutil - -import logging -logger = logging.getLogger("stwcs.updatewcs.apply_corrections") - -def update_wfpc2_d2geofile(filename, fhdu=None): - """ - Creates a D2IMFILE from the DGEOFILE for a WFPC2 image (input), and - modifies the header to reflect the new usage. - - Parameters - ---------- - filename: string - Name of WFPC2 file to be processed. This file will be updated - to delete any reference to a DGEOFILE and add a D2IMFILE to replace - that correction when running updatewcs. - fhdu: object - FITS object for WFPC2 image. If user has already opened the WFPC2 - file, they can simply pass that FITS object in for direct processing. - - Returns - ------- - d2imfile: string - Name of D2IMFILE created from DGEOFILE. The D2IMFILE keyword in the - image header will be updated/added to point to this newly created file. - - """ - - close_fhdu = False - if fhdu is None: - fhdu = fileutil.openImage(filename, mode='update') - close_fhdu = True - - dgeofile = fhdu['PRIMARY'].header.get('DGEOFILE', None) - already_converted = dgeofile not in [None, "N/A", "", " "] - if already_converted or 'ODGEOFIL' in fhdu['PRIMARY'].header: - if not already_converted: - dgeofile = fhdu['PRIMARY'].header.get('ODGEOFIL', None) - logger.info('Converting DGEOFILE %s into D2IMFILE...' % dgeofile) - rootname = filename[:filename.find('.fits')] - d2imfile = convert_dgeo_to_d2im(dgeofile,rootname) - fhdu['PRIMARY'].header['ODGEOFIL'] = dgeofile - fhdu['PRIMARY'].header['DGEOFILE'] = 'N/A' - fhdu['PRIMARY'].header['D2IMFILE'] = d2imfile - else: - d2imfile = None - fhdu['PRIMARY'].header['DGEOFILE'] = 'N/A' - if 'D2IMFILE' not in fhdu['PRIMARY'].header: - fhdu['PRIMARY'].header['D2IMFILE'] = 'N/A' - - # Only close the file handle if opened in this function - if close_fhdu: - fhdu.close() - - # return the d2imfile name so that calling routine can keep - # track of the new file created and delete it later if necessary - # (multidrizzle clean=True mode of operation) - return d2imfile - -def convert_dgeo_to_d2im(dgeofile,output,clobber=True): - """ Routine that converts the WFPC2 DGEOFILE into a D2IMFILE. - """ - dgeo = fileutil.openImage(dgeofile) - outname = output+'_d2im.fits' - - removeFileSafely(outname) - data = np.array([dgeo['dy',1].data[:,0]]) - scihdu = fits.ImageHDU(data=data) - dgeo.close() - # add required keywords for D2IM header - scihdu.header['EXTNAME'] = ('DY', 'Extension name') - scihdu.header['EXTVER'] = (1, 'Extension version') - fits_str = 'PYFITS Version '+str(astropy.__version__) - scihdu.header['ORIGIN'] = (fits_str, 'FITS file originator') - scihdu.header['INHERIT'] = (False, 'Inherits global header') - - dnow = datetime.datetime.now() - scihdu.header['DATE'] = (str(dnow).replace(' ','T'), - 'Date FITS file was generated') - - scihdu.header['CRPIX1'] = (0, 'Distortion array reference pixel') - scihdu.header['CDELT1'] = (1, 'Grid step size in first coordinate') - scihdu.header['CRVAL1'] = (0, 'Image array pixel coordinate') - scihdu.header['CRPIX2'] = (0, 'Distortion array reference pixel') - scihdu.header['CDELT2'] = (1, 'Grid step size in second coordinate') - scihdu.header['CRVAL2'] = (0, 'Image array pixel coordinate') - - phdu = fits.PrimaryHDU() - phdu.header['INSTRUME'] = 'WFPC2' - d2imhdu = fits.HDUList() - d2imhdu.append(phdu) - scihdu.header['DETECTOR'] = (1, 'CCD number of the detector: PC 1, WFC 2-4 ') - d2imhdu.append(scihdu.copy()) - scihdu.header['EXTVER'] = (2, 'Extension version') - scihdu.header['DETECTOR'] = (2, 'CCD number of the detector: PC 1, WFC 2-4 ') - d2imhdu.append(scihdu.copy()) - scihdu.header['EXTVER'] = (3, 'Extension version') - scihdu.header['DETECTOR'] = (3, 'CCD number of the detector: PC 1, WFC 2-4 ') - d2imhdu.append(scihdu.copy()) - scihdu.header['EXTVER'] = (4, 'Extension version') - scihdu.header['DETECTOR'] = (4, 'CCD number of the detector: PC 1, WFC 2-4 ') - d2imhdu.append(scihdu.copy()) - d2imhdu.writeto(outname) - d2imhdu.close() - - return outname - - -def removeFileSafely(filename,clobber=True): - """ Delete the file specified, but only if it exists and clobber is True. - """ - if filename is not None and filename.strip() != '': - if os.path.exists(filename) and clobber: os.remove(filename) |