1
2
3
4
5 from __future__ import division
6
7 import pyfits
8 from pytools import fileutil
9
10
12 """ Gets entry in MDRIZTAB where task parameters live.
13 This method returns a record array mapping the selected
14 row.
15 """
16
17
18
19
20 _fileName = files[0]
21 _header = fileutil.getHeader(_fileName)
22 if _header.has_key('MDRIZTAB'):
23 _tableName = _header['MDRIZTAB']
24 else:
25 raise KeyError, "No MDRIZTAB found in file " + _fileName
26
27 _tableName = fileutil.osfn(_tableName)
28
29
30 _filters = fileutil.getFilterNames(_header)
31
32
33 try:
34 _mdriztab = pyfits.open(_tableName)
35 except:
36 raise IOError,"MDRIZTAB table '%s' not valid!" % _tableName
37
38
39
40 _rows = _getRowsByFilter(_mdriztab, _filters)
41 if _rows == []:
42 _rows = _getRowsByFilter(_mdriztab, 'ANY')
43
44
45
46
47 _nimages = len(files)
48 _row = 0
49 for i in _rows:
50 _numimages = _mdriztab[1].data.field('numimages')[i]
51 if _nimages >= _numimages:
52 _row = i
53 print '- MDRIZTAB: MultiDrizzle parameters read from row %s.'%(_row+1)
54
55 mpars = _mdriztab[1].data[_row]
56 _mdriztab.close()
57
58 return mpars
59
61 rows = []
62 for i in xrange(table[1].data.shape[0]):
63 _tfilters = table[1].data.field('filter')[i]
64 if _tfilters == filters:
65 rows.append(i)
66 return rows
67