1 """This reads HTK feature vectors via the HList program."""
2
3
4 from gmisclib import die
5 from gmisclib import g_exec
6 import gpkimgclass
7 import numpy
8
10 v, u = s.split()
11 if u == 's':
12 u = 1.0
13 elif u == 'ms':
14 u = 1e-3
15 elif u == 'us':
16 u = 1e-6
17 elif u == 'ns':
18 u = 1e-9
19 elif u == 'ps':
20 u = 1e-12
21 else:
22 die.die('Unrecognized time units: %s' % u)
23 return float(v)*u
24
25
27 in_hdr = True
28 in_os = False
29 in_data = False
30 os = 0
31 ax1 = None
32 hdr = {'CRPIX1': 1, 'CRPIX2': 1, 'CRVAL2': 0.0}
33 xos = 'x'
34 data = None
35 hdr['_NAME'] = fname
36 for line in g_exec.getiter_raw(None,
37 ['HList', '-h', '-o', '-i', '1', fname]
38 ):
39 line = line.rstrip()
40 if line == ' Observation Structure':
41 in_os = True
42 in_hdr = False
43 continue
44 elif in_os and line.startswith(' Samples:'):
45 in_os = False
46 in_data = True
47 data = numpy.zeros((hdr['NAXIS2'], hdr['NAXIS1']))
48 continue
49 elif line.startswith('----- END'):
50 in_data = False
51
52 if in_hdr:
53 k, v = line.strip().split(':', 1)
54 k = k.strip()
55 v = v.strip()
56 if k == 'Num Comps':
57 hdr['NAXIS1'] = int(v)
58 elif k == 'Num Samples':
59 hdr['NAXIS2'] = int(v)
60 elif k == 'Sample Period':
61 hdr['CDELT2'] = _parse_time(v)
62 elif k == 'File Format':
63 hdr['_FILETYPE'] = v
64 else:
65 hdr[k] = v
66 elif in_os:
67 if not line.startswith(' ') and ':' in line:
68 xos, tt = line.split(':', 1)
69 xos = xos.strip()
70 tt = tt.strip()
71 os = 0
72 else:
73 tt = line.strip()
74 hdr['TTYPE%d' % (os+1)] = '%s:%s' % (xos, tt)
75 os += 1
76 elif in_data:
77 if ':' in line:
78 os = 0
79 ax1, line = line.split(':')
80 ax1 = int(ax1)
81 data[ax1,os] = float(line)
82 os += 1
83 return gpkimgclass.gpk_img(hdr, data)
84
85 if __name__ == '__main__':
86
87 import sys
88 import pylab
89 d = read(sys.argv[1])
90 numpy.subtract(d.d, numpy.average(d.d, axis=0), d.d)
91 numpy.divide(d.d, numpy.std(d.d, axis=0), d.d)
92 pylab.imshow(d.d.transpose(),
93 interpolation='nearest', origin='lower',
94 aspect = 'normal',
95 )
96 pylab.show()
97