summaryrefslogtreecommitdiff
path: root/stwcs/distortion/coeff_converter.py
diff options
context:
space:
mode:
Diffstat (limited to 'stwcs/distortion/coeff_converter.py')
-rw-r--r--stwcs/distortion/coeff_converter.py43
1 files changed, 22 insertions, 21 deletions
diff --git a/stwcs/distortion/coeff_converter.py b/stwcs/distortion/coeff_converter.py
index 415b512..99cf74d 100644
--- a/stwcs/distortion/coeff_converter.py
+++ b/stwcs/distortion/coeff_converter.py
@@ -1,9 +1,10 @@
-from __future__ import division, print_function # confidence high
+from __future__ import (absolute_import, unicode_literals, division, print_function)
import numpy as np
from astropy.io import fits
from astropy import wcs as pywcs
+
def sip2idc(wcs):
"""
Converts SIP style coefficients to IDCTAB coefficients.
@@ -49,28 +50,28 @@ def sip2idc(wcs):
print('Input to sip2idc must be a PyFITS header or a wcsutil.HSTWCS object\n')
return
-
if None in [ocx10, ocx11, ocy10, ocy11]:
print('First order IDC coefficients not found, exiting ...\n')
return None, None
idc_coeff = np.array([[ocx11, ocx10], [ocy11, ocy10]])
- cx = np.zeros((order+1,order+1), dtype=np.double)
- cy = np.zeros((order+1,order+1), dtype=np.double)
- for n in range(order+1):
- for m in range(order+1):
- if n >= m and n>=2:
- sipval = np.array([[sipa[m,n-m]],[sipb[m,n-m]]])
+ cx = np.zeros((order + 1, order + 1), dtype=np.double)
+ cy = np.zeros((order + 1, order + 1), dtype=np.double)
+ for n in range(order + 1):
+ for m in range(order + 1):
+ if n >= m and n >= 2:
+ sipval = np.array([[sipa[m, n - m]], [sipb[m, n - m]]])
idcval = np.dot(idc_coeff, sipval)
- cx[n,m] = idcval[0]
- cy[n,m] = idcval[1]
+ cx[n, m] = idcval[0]
+ cy[n, m] = idcval[1]
- cx[1,0] = ocx10
- cx[1,1] = ocx11
- cy[1,0] = ocy10
- cy[1,1] = ocy11
+ cx[1, 0] = ocx10
+ cx[1, 1] = ocx11
+ cy[1, 0] = ocy10
+ cy[1, 1] = ocy11
return cx, cy
+
def _read_sip_kw(header):
"""
Reads SIP header keywords and returns an array of coefficients.
@@ -84,15 +85,15 @@ def _read_sip_kw(header):
"keyword for SIP distortion")
m = int(header["A_ORDER"])
- a = np.zeros((m+1, m+1), np.double)
- for i in range(m+1):
- for j in range(m-i+1):
+ a = np.zeros((m + 1, m + 1), np.double)
+ for i in range(m + 1):
+ for j in range(m - i + 1):
a[i, j] = header.get("A_%d_%d" % (i, j), 0.0)
m = int(header["B_ORDER"])
- b = np.zeros((m+1, m+1), np.double)
- for i in range(m+1):
- for j in range(m-i+1):
+ b = np.zeros((m + 1, m + 1), np.double)
+ for i in range(m + 1):
+ for j in range(m - i + 1):
b[i, j] = header.get("B_%d_%d" % (i, j), 0.0)
elif "B_ORDER" in header:
raise ValueError(
@@ -102,7 +103,7 @@ def _read_sip_kw(header):
a = None
b = None
- return a , b
+ return a, b
"""