source: trunk/fiins.py@ 35

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

various improvements

File size: 2.4 KB
Line 
1from __future__ import absolute_import
2
3import collections
4import pp
5
6import beamsgenerator
7import doublefourier
8import fts
9import loadparameters
10import pointingerrors
11import renderer
12import skygenerator
13import uvmapgenerator
14
15
16class Fiins(object):
17 """FISICA simulator.
18 """
19 def __init__(self, sky_spreadsheet='SkySparams.xlsx', sky_sheet='1point'):
20 self.sky_spreadsheet = sky_spreadsheet
21 self.sky_sheet = sky_sheet
22 self.result = collections.OrderedDict()
23
24 # start parallel python (pp), find the number of CPUS available
25 ppservers = ()
26 self.job_server = pp.Server(ppservers=ppservers)
27 print 'fiins starting pp with %s workers' % \
28 self.job_server.get_ncpus()
29
30 def simulate(self):
31 # read parameters
32 loadparams = loadparameters.LoadParameters(
33 sky_spreadsheet=self.sky_spreadsheet,
34 sky_sheet=self.sky_sheet)
35 obs_specification = loadparams.run()
36 self.result['loadparameters'] = obs_specification
37
38 # generate UV map
39 uvmapgen = uvmapgenerator.UVMapGenerator(parameters=obs_specification)
40 self.result['uvmapgenerator'] = uvmapgen.run()
41
42 # generate information on the FTS
43 ftsd = fts.FTS(parameters=obs_specification)
44 self.result['fts'] = ftsd.run()
45
46 # generate primary beams
47 beamsgen = beamsgenerator.BeamsGenerator(
48 previous_results=self.result)
49 self.result['beamsgenerator'] = beamsgen.run()
50
51 # pointing errors
52 pointingerrs = pointingerrors.PointingErrors(
53 parameters=obs_specification)
54 self.result['pointingerrors'] = pointingerrs.run()
55
56 # construct sky
57 skygen = skygenerator.SkyGenerator(parameters=obs_specification,
58 previous_results=self.result)
59 self.result['skygenerator'] = skygen.run()
60
61 # calculate interferograms
62 doublef = doublefourier.DoubleFourier(parameters=obs_specification,
63 previous_results=self.result, job_server=self.job_server)
64 self.result['doublefourier'] = doublef.run()
65
66 # construct html description of result
67 self.render()
68
69 def import_result(self):
70 print 'does nothing'
71
72 def render(self):
73 htmlrenderer = renderer.Renderer(result=self.result)
74 htmlrenderer.run()
75
76 def __repr__(self):
77 return 'FISICA simulator'
78
Note: See TracBrowser for help on using the repository browser.