source: trunk/fts.py

Last change on this file was 44, checked in by JohnLightfoot, 10 years ago

some bug fixes

File size: 2.3 KB
Line 
1from __future__ import absolute_import
2
3import collections
4import numpy as np
5
6
7class FTS(object):
8 """Class to describe the Fourier Transform Spectrometer.
9 """
10
11 def __init__(self, parameters):
12 self.parameters = parameters
13
14 # read params from FTSpectrograph sheet
15 ftsparm = parameters['substages']['FTSpectrograph']
16
17 self.result = collections.OrderedDict()
18
19 # slightly awkward getting values as they are keyed by
20 # the row number in the parent spreadsheet
21 row = ftsparm['wn min [cm-1]'].keys()[0]
22 self.result['wnmin'] = wnmin = ftsparm['wn min [cm-1]'][row]
23 self.result['wnmax'] = wnmax = ftsparm['wn max [cm-1]'][row]
24 self.result['specres'] = specres = ftsparm['Spectral Res'][row]
25
26 # read params from FTSMechanical sheet
27 ftsparm = parameters['substages']['FTSMechanical']
28 row = ftsparm['V drive [cm/s]'].keys()[0]
29 self.result['vdrive'] = ftsparm['V drive [cm/s]'][row]
30
31 # derived parameters
32 self.result['delta_wn'] = delta_wn = wnmin / specres
33 self.result['delta_opd'] = 1.0 / (2.0 * wnmax * 100.0)
34 # number of unaliased spectral points
35 nspec = int(np.ceil(wnmax / delta_wn)) + 1
36 # ftsnsample symmetric about 0 opd
37 self.result['ftsnsample'] = ftsnsample = 2 * (nspec - 1)
38 self.result['opd_max'] = 1.0 / (2.0 * delta_wn)
39
40 # unaliased spectral points sampled by FTS (wn=wavenumber[cm-1]
41 i = np.arange(nspec)
42 fts_wn = wnmax * i / float(nspec-1)
43
44 # wn axis truncated at wnmin
45 fts_wn_truncated = fts_wn[fts_wn >= wnmin]
46
47 self.result['fts_wn'] = fts_wn
48 self.result['fts_wn_truncated'] = fts_wn_truncated
49
50 def run(self):
51 print 'FTS.run'
52 return self.result
53
54 def __repr__(self):
55 return '''
56FTS:
57 wnmin : {wnmin}
58 wnmax : {wnmax}
59 specres : {specres}
60 delta wn : {delta_wn}
61 delta opd: {delta_opd}
62 nsample : {nsample}
63 max opd : {opd_max}
64'''.format(
65 wnmin=self.result['wnmin'],
66 wnmax=self.result['wnmax'],
67 specres=self.result['specres'],
68 delta_wn=self.result['delta_wn'],
69 delta_opd=self.result['delta_opd'],
70 nsample=self.result['ftsnsample'],
71 opd_max=self.result['opd_max'])
72
Note: See TracBrowser for help on using the repository browser.