source: trunk/uvmapgenerator.py@ 17

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

initial import

File size: 1.8 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 print 'spiral pattern computed'
44 self.result['bxby'] = bxby
45 self.result['bmin'] = bmin
46 self.result['bmax'] = bmax
47 self.result['n_baselines'] = n_baselines
48
49 else:
50 raise Exception, 'unknown baseline pattern: %s' % pattern
51
52 return self.result
53
54 def __repr__(self):
55 return 'UVMapGenerator'
56
Note: See TracBrowser for help on using the repository browser.