source: trunk/uvmapgenerator.py@ 50

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

cosmetic

File size: 1.7 KB
Line 
1from __future__ import absolute_import
2
3import collections
4import numpy as np
5
6
7class UVMapGenerator(object):
8 """Class to generate the UV map of the simulated observation.
9 """
10
11 def __init__(self, parameters):
12 self.parameters = parameters
13 self.result = collections.OrderedDict()
14
15 def run(self):
16 print 'UVMapGenerator.run'
17 interferometer = self.parameters['substages']['Interferometer']
18
19 # slightly awkward getting pattern value as it's keyed by its
20 # row number in the spreadsheet
21 row = interferometer['Pattern'].keys()[0]
22 pattern = interferometer['Pattern'][row]
23
24 if pattern.lower() == 'spiral':
25 bmax = interferometer['bmax [m]'][row]
26 bmin = interferometer['bmin [m]'][row]
27 n_baselines = int(interferometer['Num Baselines'][row])
28 bstep = interferometer['bstep [m]'][row]
29
30 # baseline increases by bstep for each circuit of spiral
31 n_laps = (bmax - bmin) / bstep
32
33 bxby = np.zeros([n_baselines,2])
34
35 # n_baselines is total number of points along spiral
36 for i in range(n_baselines):
37 # phi is angle around spiral, r its radius
38 phi = n_laps * 2 * np.pi * (n_baselines-i) / n_baselines
39 r = bmin + bstep * phi / (2 * np.pi)
40
41 bxby[i,:] = [r * np.cos(phi), r * np.sin(phi)]
42
43 self.result['bxby'] = bxby
44 self.result['bmin'] = bmin
45 self.result['bmax'] = bmax
46 self.result['n_baselines'] = n_baselines
47
48 else:
49 raise Exception, 'unknown baseline pattern: %s' % pattern
50
51 return self.result
52
53 def __repr__(self):
54 return 'UVMapGenerator'
55
Note: See TracBrowser for help on using the repository browser.