summaryrefslogtreecommitdiff
path: root/lib/stwcs/updatewcs/wfpc2_dgeo.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/stwcs/updatewcs/wfpc2_dgeo.py')
-rw-r--r--lib/stwcs/updatewcs/wfpc2_dgeo.py123
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)