summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhack <hack@stsci.edu>2014-10-06 16:20:47 -0400
committerhack <hack@stsci.edu>2014-10-06 16:20:47 -0400
commitce0b790f0d19bb1b85328ee64f83a67f5a9905f5 (patch)
tree3026e5921453432407ded5043814ae8f4ef47077
parentbd432a46967bb359c3a6dc5b0430436c24ff0696 (diff)
downloadstwcs_hcf-ce0b790f0d19bb1b85328ee64f83a67f5a9905f5.tar.gz
update to STWCS code to handle additional TDD coefficient for ACS: specifically, TDD_CXA* and TDD_CXB*.
git-svn-id: http://svn.stsci.edu/svn/ssb/stsci_python/stwcs/trunk@34759 fe389314-cf27-0410-b35b-8c050e845b92
-rw-r--r--lib/stwcs/distortion/mutil.py12
-rw-r--r--lib/stwcs/updatewcs/corrections.py18
-rw-r--r--lib/stwcs/wcsutil/altwcs.py5
3 files changed, 28 insertions, 7 deletions
diff --git a/lib/stwcs/distortion/mutil.py b/lib/stwcs/distortion/mutil.py
index 07ec9b4..80fd6bf 100644
--- a/lib/stwcs/distortion/mutil.py
+++ b/lib/stwcs/distortion/mutil.py
@@ -263,17 +263,29 @@ def read_tdd_coeffs(phdr, chip=1):
skew_coeffs['TDD_B'] = None
skew_coeffs['TDD_CY_BETA'] = None
skew_coeffs['TDD_CY_ALPHA'] = None
+ skew_coeffs['TDD_CX_BETA'] = None
+ skew_coeffs['TDD_CX_ALPHA'] = None
if "TDD_CYB1" in phdr:
# We have 2014-calibrated TDD correction to apply, not J.A.-derived values
print "Using 2014-calibrated TDD correction..."
skew_coeffs['TDD_DATE'] = phdr['TDD_DATE']
+ # Read coefficients for TDD Y coefficient
cyb_kw = 'TDD_CYB{0}'.format(int(chip))
skew_coeffs['TDD_CY_BETA'] = phdr.get(cyb_kw,None)
cya_kw = 'TDD_CYA{0}'.format(int(chip))
tdd_cya = phdr.get(cya_kw,None)
if tdd_cya == 0 or tdd_cya == 'N/A': tdd_cya = None
skew_coeffs['TDD_CY_ALPHA'] = tdd_cya
+
+ # Read coefficients for TDD X coefficient
+ cxb_kw = 'TDD_CXB{0}'.format(int(chip))
+ skew_coeffs['TDD_CX_BETA'] = phdr.get(cxb_kw,None)
+ cxa_kw = 'TDD_CXA{0}'.format(int(chip))
+ tdd_cxa = phdr.get(cxa_kw,None)
+ if tdd_cxa == 0 or tdd_cxa == 'N/A': tdd_cxa = None
+ skew_coeffs['TDD_CX_ALPHA'] = tdd_cxa
+
else:
if "TDDORDER" in phdr:
n = int(phdr["TDDORDER"])
diff --git a/lib/stwcs/updatewcs/corrections.py b/lib/stwcs/updatewcs/corrections.py
index d6d2954..5a51868 100644
--- a/lib/stwcs/updatewcs/corrections.py
+++ b/lib/stwcs/updatewcs/corrections.py
@@ -75,7 +75,9 @@ class TDDCorr(object):
'OCX11':ext_wcs.idcmodel.cx[1,1],'OCY10':ext_wcs.idcmodel.cy[1,0],
'OCY11':ext_wcs.idcmodel.cy[1,1],
'TDD_CYA':ext_wcs.idcmodel.refpix['skew_coeffs']['TDD_CY_ALPHA'],
- 'TDD_CYB':ext_wcs.idcmodel.refpix['skew_coeffs']['TDD_CY_BETA']}
+ 'TDD_CYB':ext_wcs.idcmodel.refpix['skew_coeffs']['TDD_CY_BETA'],
+ 'TDD_CXA':ext_wcs.idcmodel.refpix['skew_coeffs']['TDD_CX_ALPHA'],
+ 'TDD_CXB':ext_wcs.idcmodel.refpix['skew_coeffs']['TDD_CX_BETA']}
else:
alpha, beta = cls.compute_alpha_beta(ext_wcs)
@@ -89,7 +91,7 @@ class TDDCorr(object):
newkw = {'TDDALPHA': alpha, 'TDDBETA':beta, 'OCX10':ext_wcs.idcmodel.cx[1,0],
'OCX11':ext_wcs.idcmodel.cx[1,1],'OCY10':ext_wcs.idcmodel.cy[1,0],
'OCY11':ext_wcs.idcmodel.cy[1,1],
- 'TDD_CYA':None, 'TDD_CYB':None}
+ 'TDD_CYA':None, 'TDD_CYB':None, 'TDD_CXA':None, 'TDD_CXB':None}
return newkw
updateWCS = classmethod(updateWCS)
@@ -108,10 +110,18 @@ class TDDCorr(object):
skew_coeffs = hwcs.idcmodel.refpix['skew_coeffs']
cy_beta = skew_coeffs['TDD_CY_BETA']
cy_alpha = skew_coeffs['TDD_CY_ALPHA']
+ delta_date = rday - skew_coeffs['TDD_DATE']
if cy_alpha is None:
- hwcs.idcmodel.cy[1,1] += cy_beta*(rday - skew_coeffs['TDD_DATE'])
+ hwcs.idcmodel.cy[1,1] += cy_beta*delta_date
else:
- hwcs.idcmodel.cy[1,1] = cy_alpha + cy_beta*(rday - skew_coeffs['TDD_DATE'])
+ new_beta = cy_alpha + cy_beta*delta_date
+ hwcs.idcmodel.cy[1,1] = new_beta
+
+ cx_beta = skew_coeffs['TDD_CX_BETA']
+ cx_alpha = skew_coeffs['TDD_CX_ALPHA']
+ if cx_alpha is not None:
+ new_beta = cx_alpha + cx_beta*delta_date
+ hwcs.idcmodel.cx[1,1] = new_beta
apply_tdd2idc2 = classmethod(apply_tdd2idc2)
diff --git a/lib/stwcs/wcsutil/altwcs.py b/lib/stwcs/wcsutil/altwcs.py
index bdb9b3b..6a2ddbd 100644
--- a/lib/stwcs/wcsutil/altwcs.py
+++ b/lib/stwcs/wcsutil/altwcs.py
@@ -350,8 +350,7 @@ def deleteWCS(fname, ext, wcskey=" ", wcsname=" "):
if hwcs is None:
continue
for k in hwcs.keys():
- if k in hdr:
- del hdr[k]
+ del hdr[k]
#del hdr['ORIENT'+wkey]
prexts.append(i)
if prexts != []:
@@ -434,7 +433,7 @@ def _restore(fobj, ukey, fromextnum,
norient = np.rad2deg(np.arctan2(hwcs['CD1_2'+'%s' %ukey], hwcs['CD2_2'+'%s' %ukey]))
fobj[toextension].header['ORIENTAT'] = norient
# Reset 2014 TDD keywords prior to computing new values (if any are computed)
- for kw in ['TDD_CYA','TDD_CYB']:
+ for kw in ['TDD_CYA','TDD_CYB','TDD_CXA','TDD_CXB']:
if kw in fobj[toextension].header:
fobj[toextension].header[kw] = 0.0