source: fts.py@ 4

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

initial import

File size: 2.4 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 print parameters['substages']['FTSpectrograph'].keys()
15
16 # read params from FTSpectrograph sheet
17 ftsparm = parameters['substages']['FTSpectrograph']
18
19 self.result = collections.OrderedDict()
20
21 # slightly awkward getting values as they are keyed by
22 # the row number in the parent spreadsheet
23 row = ftsparm['wn min [cm-1]'].keys()[0]
24 self.result['wnmin'] = wnmin = ftsparm['wn min [cm-1]'][row]
25 self.result['wnmax'] = wnmax = ftsparm['wn max [cm-1]'][row]
26 self.result['specres'] = specres = ftsparm['Spectral Res'][row]
27
28 # read params from FTSMechanical sheet
29 ftsparm = parameters['substages']['FTSMechanical']
30 row = ftsparm['V drive [cm/s]'].keys()[0]
31 self.result['vdrive'] = ftsparm['V drive [cm/s]'][row]
32
33 # derived parameters
34 self.result['delta_wn'] = delta_wn = wnmin / specres
35 self.result['delta_opd'] = 1.0 / (2.0 * wnmax * 100.0)
36 self.result['ftsnsample'] = nsample = np.ceil(wnmax / delta_wn)
37 self.result['opd_max'] = 1.0 / (2.0 * delta_wn)
38
39 # spectral points sampled by FTS (wn=wavenumber[cm-1]
40 # lambda=wavelength[m])
41 i = np.arange(int(nsample))
42 fts_wn = wnmax * i / float(nsample-1)
43 # crop the spectrum below wnmin. This does not seem to be done
44 # in the matlab version.
45 fts_wn = fts_wn[fts_wn > wnmin]
46 fts_lambda = 1.0 / (fts_wn * 100.0)
47
48 self.result['fts_wn'] = fts_wn
49 self.result['fts_lambda'] = fts_lambda
50
51 print 'more to add in FTSDrive'
52
53 def run(self):
54 print 'FTS.run'
55 return self.result
56
57 def __repr__(self):
58 return '''
59FTS:
60 wnmin : {wnmin}
61 wnmax : {wnmax}
62 specres : {specres}
63 delta wn : {delta_wn}
64 delta opd: {delta_opd}
65 nsample : {nsample}
66 max opd : {opd_max}
67'''.format(
68 wnmin=self.result['wnmin'],
69 wnmax=self.result['wnmax'],
70 specres=self.result['specres'],
71 delta_wn=self.result['delta_wn'],
72 delta_opd=self.result['delta_opd'],
73 nsample=self.result['nsample'],
74 opd_max=self.result['opd_max'])
75
Note: See TracBrowser for help on using the repository browser.