summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordencheva <dencheva@stsci.edu>2011-02-28 18:02:37 -0500
committerdencheva <dencheva@stsci.edu>2011-02-28 18:02:37 -0500
commite279c1b0d7f7e35e9c40c5ecaef66fa47cc8c206 (patch)
tree60b75df35fe1cdcc7d9b04d714bfb75415341cde
parentd2cb30f106bb150c0f179d6636d8a61e41acb67e (diff)
downloadstwcs_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
-rw-r--r--wcsutil/headerlet.py50
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 ...