diff options
author | dencheva <dencheva@stsci.edu> | 2010-08-31 11:34:18 -0400 |
---|---|---|
committer | dencheva <dencheva@stsci.edu> | 2010-08-31 11:34:18 -0400 |
commit | a10cfd3fd163ea6ff29a109c55b5cd82435d3a4b (patch) | |
tree | 0d1618dab025395db9b35149e8ff7443bbfc230a /updatewcs | |
parent | 4a537e0fcc7ba1f797b638d3d1eb7746d9535ff8 (diff) | |
download | stwcs_hcf-a10cfd3fd163ea6ff29a109c55b5cd82435d3a4b.tar.gz |
Wcskey and alternate WCS used now in stwcs
git-svn-id: http://svn.stsci.edu/svn/ssb/stsci_python/stsci_python/trunk/stwcs@10201 fe389314-cf27-0410-b35b-8c050e845b92
Diffstat (limited to 'updatewcs')
-rw-r--r-- | updatewcs/__init__.py | 66 |
1 files changed, 48 insertions, 18 deletions
diff --git a/updatewcs/__init__.py b/updatewcs/__init__.py index b1d88d4..95119f1 100644 --- a/updatewcs/__init__.py +++ b/updatewcs/__init__.py @@ -66,7 +66,7 @@ def updatewcs(input, vacorr=True, tddcorr=True, dgeocorr=True, d2imcorr=True, ch tddcorr=tddcorr,dgeocorr=dgeocorr, d2imcorr=d2imcorr) #restore the original WCS keywords - utils.restoreWCS(f) + utils.restoreWCS(f, wcskey='O', clobber=True) makecorr(f, acorr) return files @@ -88,7 +88,7 @@ def makecorr(fname, allowed_corr): nrefchip, nrefext = getNrefchip(f) ref_wcs = HSTWCS(fobj=f, ext=nrefext) ref_wcs.readModel(update=True,header=f[nrefext].header) - utils.write_archive(f[nrefext].header) + ref_wcs.copyWCS(header=f[nrefext].header, wcskey='O', wcsname='OPUS', clobber=True) if 'DET2IMCorr' in allowed_corr: det2im.DET2IMCorr.updateWCS(f) @@ -96,28 +96,58 @@ def makecorr(fname, allowed_corr): for i in range(len(f))[1:]: # Perhaps all ext headers should be corrected (to be consistent) extn = f[i] - if extn.header.has_key('extname') and extn.header['extname'].lower() == 'sci': - ref_wcs.restore(f[nrefext].header) - hdr = extn.header - utils.write_archive(hdr) - ext_wcs = HSTWCS(fobj=f, ext=i) - ext_wcs.readModel(update=True,header=hdr) - for c in allowed_corr: - if c != 'DGEOCorr' and c != 'DET2IMCorr': - corr_klass = corrections.__getattribute__(c) - kw2update = corr_klass.updateWCS(ext_wcs, ref_wcs) - for kw in kw2update: - hdr.update(kw, kw2update[kw]) + if extn.header.has_key('extname'): + extname = extn.header['extname'].lower() + if extname == 'sci': + + sciextver = extn.header['extver'] + ref_wcs.restore(f[nrefext].header, wcskey="O") + + hdr = extn.header + ext_wcs = HSTWCS(fobj=f, ext=i) + ext_wcs.copyWCS(header=hdr, wcskey='O', wcsname='OPUS', clobber=True) + ext_wcs.readModel(update=True,header=hdr) + for c in allowed_corr: + if c != 'DGEOCorr' and c != 'DET2IMCorr': + corr_klass = corrections.__getattribute__(c) + kw2update = corr_klass.updateWCS(ext_wcs, ref_wcs) + for kw in kw2update: + hdr.update(kw, kw2update[kw]) + + + idcname = os.path.split(fileutil.osfn(ext_wcs.idctab))[1] + wname = ''.join(['IDC_',idcname.split('_idc.fits')[0]]) + wkey = getKey(hdr, wname) + ext_wcs.copyWCS(header=hdr, wcskey=wkey, wcsname=wname, clobber=True) + elif extname in ['err', 'dq', 'sdq']: + cextver = extn.header['extver'] + if cextver == sciextver: + ext_wcs.copyWCS(header=extn.header, wcskey=" ", wcsname=" ") + else: + cextver = extn.header['extver'] + continue + if 'DGEOCorr' in allowed_corr: kw2update = dgeo.DGEOCorr.updateWCS(f) for kw in kw2update: - f[1].header.update(kw, kw2update[kw]) - - - + f[1].header.update(kw, kw2update[kw]) f.close() + +def getKey(header, wcsname): + """ + If WCSNAME is found in header, return its key, else return + the next available key. This is used to update a specific WCS + repeatedly and not generate new keys every time. + """ + wkey = utils.next_wcskey(header) + names = utils.wcsnames(header) + for item in names.items(): + if item[1] == wcsname: + wkey = item[0] + return wkey + def getNrefchip(fobj): """ This handles the fact that WFPC2 subarray observations |