1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
|
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)
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]]
|