diff options
author | dencheva <dencheva@stsci.edu> | 2011-02-28 18:02:37 -0500 |
---|---|---|
committer | dencheva <dencheva@stsci.edu> | 2011-02-28 18:02:37 -0500 |
commit | e279c1b0d7f7e35e9c40c5ecaef66fa47cc8c206 (patch) | |
tree | 60b75df35fe1cdcc7d9b04d714bfb75415341cde /wcsutil | |
parent | d2cb30f106bb150c0f179d6636d8a61e41acb67e (diff) | |
download | stwcs_hcf-e279c1b0d7f7e35e9c40c5ecaef66fa47cc8c206.tar.gz |
bugfixes
git-svn-id: http://svn.stsci.edu/svn/ssb/stsci_python/stsci_python/trunk/stwcs@12060 fe389314-cf27-0410-b35b-8c050e845b92
Diffstat (limited to 'wcsutil')
-rw-r--r-- | wcsutil/headerlet.py | 50 |
1 files changed, 34 insertions, 16 deletions
diff --git a/wcsutil/headerlet.py b/wcsutil/headerlet.py index 3733d84..c479e81 100644 --- a/wcsutil/headerlet.py +++ b/wcsutil/headerlet.py @@ -4,7 +4,6 @@ import pyfits from hstwcs import HSTWCS import altwcs from pyfits import HDUList -from stwcs import __version__ as stwcsVersion from mappings import basic_wcs @@ -25,18 +24,25 @@ def createHeaderlet(fname, hdrname, destim=None, output=None): if hdrname is None: raise ValueError, "Please provide a name for the headerlet, HDRNAME is a required parameter." if output is None: - output = hdrname + output = hdrname+'_hdr.fits' + elif not output.endswith('_hdr.fits'): + output = output+'_hdr.fits' + altkeys = altwcs.wcskeys(fobj[('SCI',1)].header) + try: + upwcsver = fobj[0].header.ascard['STWCSVER'] + except KeyError: + upwcsver = pyfits.Card("STWCSVER", " ","Version of STWCS used to update the WCS") if 'O' in altkeys: altkeys.remove('O') numsci = countext(fname, 'SCI') hdul = pyfits.HDUList() phdu = pyfits.PrimaryHDU() phdu.header.update('DESTIM', destim, comment='Destination observation root name') - phdu.header.update('HDRNAME',hdrname, 'Headerlet name') - phdu.header.update('STWCSVER',stwcsVersion, comment='Version of STWCS that generated this file') + phdu.header.update('HDRNAME',hdrname, comment='Headerlet name') phdu.header.update('DATE',time.strftime(fmt), comment='Date FITS file was generated') - + phdu.header.ascard.append(upwcsver) + updateRefFiles(fobj[0].header.ascard, phdu.header.ascard) phdu.header.update(key='VAFACTOR', value=fobj[('SCI',1)].header.get('VAFACTOR', 1.)) hdul.append(phdu) @@ -46,7 +52,7 @@ def createHeaderlet(fname, hdrname, destim=None, output=None): h = hwcs.wcs2header(sip2hdr=True).ascard for ak in altkeys: awcs = HSTWCS(fname,ext=('SCI',e), wcskey=ak) - h.extend(awcs.wcs2header().ascard) + h.extend(awcs.wcs2header(idc2hdr=False).ascard) h.insert(0,pyfits.Card(key='EXTNAME', value='SIPWCS', comment='Extension name')) h.insert(1,pyfits.Card(key='EXTVER', value=e, comment='Extension version')) @@ -143,7 +149,12 @@ def _cleanDestWCS(dest): removeD2IM(fobj[e]) removeSIP(fobj[e]) removeLUT(fobj[e]) - removePrimaryWCS(fobj,e) + removePrimaryWCS(fobj[e]) + removeIDCCoeffs(fobj[e]) + try: + del fobj[e].header.ascard['VAFACTOR'] + except KeyError: pass + removeAltWCS(fobj, ext=range(numext)) numwdvarr = countext(dest,'WCSDVARR') numd2im = countext(dest,'D2IMARR') @@ -200,33 +211,40 @@ def removeAltWCS(dest, ext): for k in dkeys: altwcs.deleteWCS(dest, ext=ext, wcskey=k) -def removePrimaryWCS(dest, ext): - naxis=dest[ext].header.ascard['NAXIS'].value +def removePrimaryWCS(ext): + naxis = ext.header.ascard['NAXIS'].value for key in basic_wcs: for i in range(1,naxis+1): try: - del dest[ext].header.ascard[key+str(i)] + del ext.header.ascard[key+str(i)] except KeyError: pass try: - del dest[ext].header.ascard['WCSAXES'] + del ext.header.ascard['WCSAXES'] except KeyError: pass +def removeIDCCoeffs(ext): + coeffs = ['OCX10', 'OCX11', 'OCY10', 'OCY11', 'IDCSCALE'] + for k in coeffs: + try: + del ext.header.ascard[k] + except KeyError: + pass + class Headerlet(HDUList): def __init__(self, fname, wcskeys=[]): self.wcskeys = wcskeys if isinstance(fname,str): fobj = pyfits.open(fname) - #fobj.close() elif isinstance(fname, list): fobj = fname else: raise ValueError, "Input must be a file name (string) or a pyfits file object (HDUList)." HDUList.__init__(self, fobj) self.fname = self.filename() - self.hdrname = self[0].header.get("HDRNAME","") - self.stwcsver = stwcsVersion - self.destim = self[0].header.get("DESTIM","") + self.hdrname = self[0].header["HDRNAME"] + self.stwcsver = self[0].header.get("STWCSVER","") + self.destim = self[0].header["DESTIM"] self.idctab = self[0].header.get("IDCTAB","") self.npolfile = self[0].header.get("NPOLFILE","") self.d2imfile = self[0].header.get("D2IMFILE","") @@ -286,7 +304,7 @@ class Headerlet(HDUList): self.verify() assert(self[0].header.has_key('DESTIM') and self[0].header['DESTIM']!= " ") assert(self[0].header.has_key('HDRNAME') and self[0].header['HDRNAME']!= " ") - assert(self[0].header.has_key('STWCSVER') and self[0].header['STWCSVER']!= " ") + #assert(self[0].header.has_key('STWCSVER') and self[0].header['STWCSVER']!= " ") """ npolfile, vafactor and d2imfile are optional. idctab may be optional too ... |