diff options
author | dencheva <dencheva@stsci.edu> | 2009-04-29 08:13:55 -0400 |
---|---|---|
committer | dencheva <dencheva@stsci.edu> | 2009-04-29 08:13:55 -0400 |
commit | 749102aed2e2c258f00aeef6c78fadd704c14fe7 (patch) | |
tree | b7abe7b2d58c01251a4f697681bfde14443a7161 /hstwcs/det2im.py | |
parent | 9bbd241a0d442f556d5db5d65075d0d26822d1eb (diff) | |
download | stwcs_hcf-749102aed2e2c258f00aeef6c78fadd704c14fe7.tar.gz |
Renamed hstwcs to udpatewcs
git-svn-id: http://svn.stsci.edu/svn/ssb/stsci_python/development/trunk/stwcs@7976 fe389314-cf27-0410-b35b-8c050e845b92
Diffstat (limited to 'hstwcs/det2im.py')
-rw-r--r-- | hstwcs/det2im.py | 155 |
1 files changed, 0 insertions, 155 deletions
diff --git a/hstwcs/det2im.py b/hstwcs/det2im.py deleted file mode 100644 index 90c9f28..0000000 --- a/hstwcs/det2im.py +++ /dev/null @@ -1,155 +0,0 @@ -import pyfits -from pytools import fileutil - -class DET2IMCorr(object): - def updateWCS(cls, fobj): - """ - :Parameters: - `fobj`: pyfits object - Science file, for which a detector to image correction - is available - - """ - assert isinstance(fobj, pyfits.NP_pyfits.HDUList) - - d2imfile = fobj[0].header['D2IMFILE'] - axiscorr = cls.getAxisCorr(d2imfile) - d2imerr = pyfits.getdata(d2imfile, ext=1).max() - if axiscorr == None: - new_kw = {} - else: - new_kw = {'D2IMEXT': d2imfile, 'AXISCORR': axiscorr, 'D2IMERR': d2imerr} - cls.applyDet2ImCorr(fobj, axiscorr) - cls.updatehdr(fobj, new_kw) - - updateWCS = classmethod(updateWCS) - - def getAxisCorr(cls, refname): - try: - direction = pyfits.getval(refname, ext=1, key='EXTNAME') - if direction == 'DX': return 1 - elif direction == 'DY': return 2 - else: - print '\tDET2IM correction expects the reference file to have' - print '\tan EXTNAME keyword of value "DX" or "DY"' - return None - except AttributeError: - print "\tAxis to which to apply the detector to image " - print "\tcorrection cannot be determined because the reference " - print "\tfile %s is missing a keyword EXTNAME" % refname - direction = None - return direction - getAxisCorr = classmethod(getAxisCorr) - - def applyDet2ImCorr(cls,fobj, axiscorr): - d2imfile = fileutil.osfn(fobj[0].header['D2IMFILE']) - hdu = cls.createDgeoHDU(d2imfile, axiscorr) - d2imarr_ind = cls.getD2imIndex(fobj) - if d2imarr_ind: - fobj[d2imarr_ind] = hdu - else: - fobj.append(hdu) - applyDet2ImCorr = classmethod(applyDet2ImCorr) - - def getD2imIndex(cls,fobj): - index = None - for e in range(len(fobj)): - try: - ename = fobj[e].header['EXTNAME'] - except KeyError: - continue - if ename == 'D2IMARR': - index = e - return index - getD2imIndex = classmethod(getD2imIndex) - - def createDgeoHDU(cls, d2imfile, axiscorr): - - d2im_data = pyfits.getdata(d2imfile, ext=1) - d2im_hdr = cls.createDet2ImHdr(d2im_data.shape, axiscorr) - hdu = pyfits.ImageHDU(header=d2im_hdr, data=d2im_data) - - return hdu - - createDgeoHDU = classmethod(createDgeoHDU) - - def createDet2ImHdr(cls, data_shape, axiscorr): - """ - Creates a header for the D2IMARR extension based on the - reference file recorded in D2IMFILE keyword in the primary header. - """ - - naxis1 = data_shape[0] - naxis2 = 0 - crpix1 = 0.0 - crpix2 = 0.0 - cdelt1 = 1.0 - cdelt2 = 1.0 - crval1 = 0.0 - crval2 = 0.0 - keys = ['XTENSION','BITPIX','NAXIS','NAXIS1','NAXIS2', - 'EXTNAME','EXTVER','PCOUNT','GCOUNT','CRPIX1', - 'CDELT1','CRVAL1','CRPIX2','CDELT2','CRVAL2', 'AXISCORR'] - - comments = {'XTENSION': 'Image extension', - 'BITPIX': 'IEEE floating point', - 'NAXIS': 'Number of axes', - 'NAXIS1': 'Number of image columns', - 'NAXIS2': 'Number of image rows', - 'EXTNAME': 'WCS distortion array', - 'EXTVER': 'Distortion array version number', - 'PCOUNT': 'Special data area of size 0', - 'GCOUNT': 'One data group', - 'CRPIX1': 'Distortion array reference pixel', - 'CDELT1': 'Grid step size in first coordinate', - 'CRVAL1': 'Image array pixel coordinate', - 'CRPIX2': 'Distortion array reference pixel', - 'CDELT2': 'Grid step size in second coordinate', - 'CRVAL2': 'Image array pixel coordinate', - 'AXISCORR': 'Direction in which the det2im correction is applied'} - - values = {'XTENSION': 'IMAGE', - 'BITPIX': -32, - 'NAXIS': 1, - 'NAXIS1': naxis1, - 'NAXIS2': naxis2, - 'EXTNAME': 'D2IMARR', - 'EXTVER': 1, - 'PCOUNT': 0, - 'GCOUNT': 1, - 'CRPIX1': crpix1, - 'CDELT1': cdelt1, - 'CRVAL1': crval1, - 'CRPIX2': crpix2, - 'CDELT2': cdelt2, - 'CRVAL2': crval2, - 'AXISCORR': axiscorr - } - - - cdl = pyfits.CardList() - for c in keys: - cdl.append(pyfits.Card(key=c, value=values[c], comment=comments[c])) - - hdr = pyfits.Header(cards=cdl) - return hdr - - createDet2ImHdr = classmethod(createDet2ImHdr) - - def updatehdr(cls, fobj, kwdict): - """ - Update extension headers to keep record of the files used for the - detector to image correction. - """ - for ext in fobj: - try: - extname = ext.header['EXTNAME'].lower() - except KeyError: - continue - if extname == 'sci': - for kw in kwdict: - ext.header.update(kw, kwdict[kw]) - else: - continue - updatehdr = classmethod(updatehdr) -
\ No newline at end of file |