summaryrefslogtreecommitdiff
path: root/wcsutil/instruments.py
diff options
context:
space:
mode:
Diffstat (limited to 'wcsutil/instruments.py')
-rw-r--r--wcsutil/instruments.py117
1 files changed, 117 insertions, 0 deletions
diff --git a/wcsutil/instruments.py b/wcsutil/instruments.py
new file mode 100644
index 0000000..2790d8a
--- /dev/null
+++ b/wcsutil/instruments.py
@@ -0,0 +1,117 @@
+import pyfits
+import numpy as N
+#from .. mappings import ins_spec_kw
+from hstwcs.mappings import ins_spec_kw, prim_hdr_kw
+
+class InstrWCS(object):
+ """
+ A base class for instrument specific keyword definition.
+ It prvides a default implementation (modeled by ACS) for
+ all set_kw methods.
+ """
+ def __init__(self, hdr0, hdr):
+ self.exthdr = hdr
+ self.primhdr = hdr0
+
+ def set_ins_spec_kw(self):
+ """
+ This method MUST call all set_kw methods.
+ There should be a set_kw method for all kw listed in
+ mappings.ins_spec_kw
+ """
+ self.set_filter1()
+ self.set_filter2()
+ self.set_vafactor()
+ self.set_naxis1()
+ self.set_naxis2()
+ self.set_ltv1()
+ self.set_ltv2()
+ self.set_binned()
+ self.set_chip()
+ self.set_parity()
+
+ def set_filter1(self):
+ self.filter1 = self.primhdr.get('FILTER1', None)
+
+ def set_filter2(self):
+ self.filter2 = self.primhdr.get('FILTER2', None)
+
+ def set_vafactor(self):
+ self.vafactor = self.exthdr.get('vafactor', 1)
+
+ def set_naxis1(self):
+ self.naxis1 = self.exthdr.get('naxis1', None)
+
+ def set_naxis2(self):
+ self.naxis2 = self.exthdr.get('naxis2', None)
+
+ def set_ltv1(self):
+ self.ltv1 = self.exthdr.get('ltv1', 0.0)
+
+ def set_ltv2(self):
+ self.ltv2 = self.exthdr.get('ltv2', 0.0)
+
+ def set_binned(self):
+ self.binned = self.exthdr.get('BINAXIS1', 1)
+
+ def set_chip(self):
+ self.chip = self.exthdr.get('CCDCHIP', 1)
+
+ def set_parity(self):
+ self.parity = [[1.0,0.0],[0.0,-1.0]]
+
+class ACSWCS(InstrWCS):
+ """
+ get instrument specific kw
+ """
+
+ def __init__(self, hdr0, hdr):
+ self.primhdr = hdr0
+ self.exthdr = hdr
+ InstrWCS.__init__(self,hdr0, hdr)
+ self.set_ins_spec_kw()
+
+
+ def set_parity(self):
+ parity = {'WFC':[[1.0,0.0],[0.0,-1.0]],
+ 'HRC':[[-1.0,0.0],[0.0,1.0]],
+ 'SBC':[[-1.0,0.0],[0.0,1.0]]}
+ detector = self.primhdr.get('detector', None)
+ print 'detector', detector
+ self.parity = parity[detector]
+
+
+class WFPC2WCS(InstrWCS):
+
+
+ def __init__(self, hdr0, hdr):
+ self.primhdr = hdr0
+ self.exthdr = hdr
+ InstrWCS.__init__(self,hdr0, hdr)
+ self.set_ins_spec_kw()
+
+ def set_filter1(self):
+ self.filter1 = self.primhdr.get('FILTNAM1', None)
+ if self.filter1 == " " or self.filter1 == None:
+ self.filter1 = 'CLEAR1'
+
+ def set_filter2(self):
+ self.filter2 = self.primhdr.get('FILTNAM2', None)
+ if self.filter2 == " " or self.filter2 == None:
+ self.filter2 = 'CLEAR1'
+
+
+ def set_binned(self):
+ mode = self.primhdr.get('MODE', 1)
+ if mode == 'FULL':
+ self.binned = 1
+ elif mode == 'AREA':
+ self.binned = 2
+
+ def set_chip(self):
+ self.chip = self.exthdr.get('DETECTOR', 1)
+
+ def set_parity(self):
+ self.parity = [[-1.0,0.],[0.,1.0]]
+
+