1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 """
18
19 This module provides the bits and pieces to implement AIPSImage and
20 AIPSUVData objects.
21
22 """
23
24
25 import Obit, OErr, OSystem
26 import AIPSDir
27 import Image, UV
28 import TableList
29
30
31 from Wizardry.AIPSData import AIPSUVData as WAIPSUVData
32 from Wizardry.AIPSData import AIPSImage as WAIPSImage
33
36 self.err = OErr.OErr()
37 return
38
40 """Checks that this instance of AIPSData refers to a dataset that is
41 actually present in the AIPS catalogue."""
42
43 assert(not self.err.isErr)
44 cno = Obit.AIPSDirFindCNO(desc['disk'], desc['userno'], desc['name'],
45 desc['klass'], self.type, desc['seq'],
46 self.err.me)
47 if cno == -1:
48 OErr.PClear(self.err)
49 return False
50 return True
51
53 data = self._init(desc)
54 return True
55
60
61 - def _len(self, desc):
62 data = self._init(desc)
63 return len(data)
64
68
72
76
78 """Returns the highest version number of the specified table type."""
79 data = self._init(desc)
80 return data.table_highver(type)
81
82 - def rename(self, desc, name, klass, seq):
86
87 - def zap(self, desc, force):
88 """Removes the data set from the AIPS catalogue."""
89 self._init(desc).zap(force)
90 return True
91
93 """Unsets the 'busy' state in the AIPS catalogue. Useful should an
94 AIPS task die mid-step."""
95 self._init(desc).clrstat()
96 return True
97
107
117
127
137
139 """Remove the specified version of the indicated table type."""
140 data = self._init(desc)
141 data.zap_table(type, version)
142 return True
143
144 - def _getitem_history(self, desc, key):
145 data = self._init(desc)
146 history = data.history
147 try:
148 result = history[key]
149 finally:
150 history.close()
151 pass
152 return result
153
154 pass
155
156
162
164 userno = OSystem.PGetAIPSuser()
165 uvdata = WAIPSImage(desc['name'], desc['klass'], desc['disk'],
166 desc['seq'], desc['userno'])
167 OSystem.PSetAIPSuser(userno)
168 return uvdata
169
170 pass
171
172
178
180 userno = OSystem.PGetAIPSuser()
181 uvdata = WAIPSUVData(desc['name'], desc['klass'], desc['disk'],
182 desc['seq'], desc['userno'])
183 OSystem.PSetAIPSuser(userno)
184 return uvdata
185
189
193
197
198 pass
199
200
203 self.err = OErr.OErr()
204 return
205
206 - def cat(self, disk, userno):
207 _userno = OSystem.PGetAIPSuser()
208 OSystem.PSetAIPSuser(userno)
209
210 try:
211 num_slots = AIPSDir.PNumber(disk, userno, self.err)
212 except OErr.OErr, err:
213 OErr.PClear(err)
214 return []
215
216 catalog = []
217 for cno in xrange(1, num_slots):
218 entry = AIPSDir.PInfo(disk, userno, cno, self.err)
219 if entry:
220 dict = {}
221 dict['cno'] = cno
222 dict['name'] = entry[0:12].strip()
223 dict['klass'] = entry[13:19].strip()
224 dict['seq'] = int(entry[20:25])
225 dict['type'] = entry[26:28]
226 dict['date'] = entry[29:40]
227 dict['time'] = entry[41:49]
228 catalog.append(dict)
229 pass
230 continue
231 OSystem.PSetAIPSuser(_userno)
232 return catalog
233
234 pass
235