diff options
Diffstat (limited to 'lib/stwcs/updatewcs')
-rw-r--r-- | lib/stwcs/updatewcs/__init__.py | 2 | ||||
-rw-r--r-- | lib/stwcs/updatewcs/makewcs.py | 13 | ||||
-rw-r--r-- | lib/stwcs/updatewcs/utils.py | 53 |
3 files changed, 55 insertions, 13 deletions
diff --git a/lib/stwcs/updatewcs/__init__.py b/lib/stwcs/updatewcs/__init__.py index 9ab8ade..179612d 100644 --- a/lib/stwcs/updatewcs/__init__.py +++ b/lib/stwcs/updatewcs/__init__.py @@ -100,6 +100,7 @@ def updatewcs(input, vacorr=True, tddcorr=True, npolcorr=True, d2imcorr=True, cleanWCS(f) makecorr(f, acorr) + return files def makecorr(fname, allowed_corr): @@ -359,4 +360,3 @@ def getCorrections(instrument): print "The following corrections will be performed for instrument %s\n" % instrument for c in acorr: print c,': ' , apply_corrections.cnames[c] - diff --git a/lib/stwcs/updatewcs/makewcs.py b/lib/stwcs/updatewcs/makewcs.py index e422a4a..c2e709d 100644 --- a/lib/stwcs/updatewcs/makewcs.py +++ b/lib/stwcs/updatewcs/makewcs.py @@ -1,6 +1,5 @@ from __future__ import division # confidence high -from stwcs import DEGTORAD, RADTODEG import numpy as np from math import sin, sqrt, pow, cos, asin, atan2,pi import utils @@ -149,7 +148,7 @@ class MakeWCS(object): ref_wcs.idcmodel.shift(offsetx,offsety) rfx, rfy = ref_wcs.idcmodel.cx, ref_wcs.idcmodel.cy - + ref_wcs.setPscale() offshift = offsh dec = ref_wcs.wcs.crval[1] @@ -244,10 +243,10 @@ def troll(roll, dec, v2, v3): Generic Conversion at STScI. """ # Convert all angles to radians - _roll = DEGTORAD(roll) - _dec = DEGTORAD(dec) - _v2 = DEGTORAD(v2 / 3600.) - _v3 = DEGTORAD(v3 / 3600.) + _roll = np.deg2rad(roll) + _dec = np.deg2rad(dec) + _v2 = np.deg2rad(v2 / 3600.) + _v3 = np.deg2rad(v3 / 3600.) # compute components sin_rho = sqrt((pow(sin(_v2),2)+pow(sin(_v3),2)) - (pow(sin(_v2),2)*pow(sin(_v3),2))) @@ -260,7 +259,7 @@ def troll(roll, dec, v2, v3): B = atan2( sin(A)*cos(_dec), (sin(_dec)*sin_rho - cos(_dec)*cos(rho)*cos(A))) # compute final value - troll = RADTODEG(pi - (gamma+B)) + troll = np.rad2deg(pi - (gamma+B)) return troll diff --git a/lib/stwcs/updatewcs/utils.py b/lib/stwcs/updatewcs/utils.py index b7fe7c4..b761efc 100644 --- a/lib/stwcs/updatewcs/utils.py +++ b/lib/stwcs/updatewcs/utils.py @@ -57,7 +57,7 @@ def extract_rootname(kwvalue): else: rootname = fname - return rootname + return rootname.strip() def construct_distname(fobj,wcsobj): """ @@ -73,15 +73,24 @@ def construct_distname(fobj,wcsobj): if idcname is None and wcsobj.sip is not None: idcname = 'UNKNOWN' - npolname = extract_rootname(fobj[0].header.get('NPOLFILE', "NONE")) + npolname = build_npolname(fobj) if npolname is None and wcsobj.cpdis1 is not None: npolname = 'UNKNOWN' - d2imname = extract_rootname(fobj[0].header.get('D2IMFILE', "NONE")) + d2imname = build_d2imname(fobj) if d2imname is None and wcsobj.det2im is not None: d2imname = 'UNKNOWN' - sipname = '%s_%s'%(fobj[0].header.get('rootname',""),idcname) + sipname = build_sipname(fobj) + + distname = build_distname(sipname,npolname,d2imname) + return {'DISTNAME':distname,'SIPNAME':sipname} + +def build_distname(sipname,npolname,d2imname): + """ + Core function to build DISTNAME keyword value without the HSTWCS input. + """ + distname = sipname.strip() if npolname != 'NONE' or d2imname != 'NONE': if d2imname != 'NONE': @@ -89,4 +98,38 @@ def construct_distname(fobj,wcsobj): else: distname+='-'+npolname.strip() - return {'DISTNAME':distname,'SIPNAME':sipname}
\ No newline at end of file + return distname + +def build_sipname(fobj): + try: + sipname = fobj[0].header["SIPNAME"] + except KeyError: + try: + sipname = fobj[0].header['rootname']+'_'+ \ + extract_rootname(fobj[0].header["IDCTAB"]) + except KeyError: + if 'A_ORDER' in fobj[1].header or 'B_ORDER' in fobj[1].header: + sipname = 'UNKNOWN' + else: + sipname = 'NOMODEL' + return sipname + +def build_npolname(fobj): + try: + npolfile = extract_rootname(fobj[0].header["NPOLFILE"]) + except KeyError: + if countExtn(f, 'WCSDVARR'): + npolfile = 'UNKNOWN' + else: + npolfile = 'NOMODEL' + return npolfile + +def build_d2imname(fobj): + try: + d2imfile = extract_rootname(fobj[0].header["D2IMFILE"]) + except KeyError: + if countExtn(f, 'D2IMARR'): + d2imfile = 'UNKNOWN' + else: + d2imfile = 'NOMODEL' + return d2imfile
\ No newline at end of file |