source: trunk/fiins.py

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

almost working

File size: 2.9 KB
Line 
1from __future__ import absolute_import
2
3import collections
4import pp
5
6import beamsgenerator
7import cleanimage
8import dirtyimage
9import fts
10import loadparameters
11import observe
12import renderer
13import skygenerator
14import uvmapgenerator
15import uvspectra
16
17
18class Fiins(object):
19 """FISICA simulator.
20 """
21 def __init__(self, sky_spreadsheet='SkySparams.xlsx', sky_sheet='1point'):
22 self.sky_spreadsheet = sky_spreadsheet
23 self.sky_sheet = sky_sheet
24 self.result = collections.OrderedDict()
25
26 # start parallel python (pp), find the number of CPUS available
27 ppservers = ()
28 self.job_server = pp.Server(ppservers=ppservers)
29 print 'fiins starting pp with %s workers' % \
30 self.job_server.get_ncpus()
31
32 def simulate(self):
33 # read parameters
34 loadparams = loadparameters.LoadParameters(
35 sky_spreadsheet=self.sky_spreadsheet,
36 sky_sheet=self.sky_sheet)
37 obs_specification = loadparams.run()
38 self.result['loadparameters'] = obs_specification
39
40 # generate information on the FTS
41 ftsd = fts.FTS(parameters=obs_specification)
42 self.result['fts'] = ftsd.run()
43 print ftsd
44
45 # generate UV map and observation framework
46 uvmapgen = uvmapgenerator.UVMapGenerator(parameters=obs_specification,
47 previous_results=self.result)
48 self.result['uvmapgenerator'] = uvmapgen.run()
49 print uvmapgen
50
51 # generate primary beams
52 beamsgen = beamsgenerator.BeamsGenerator(
53 previous_results=self.result)
54 self.result['beamsgenerator'] = beamsgen.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 obs = observe.Observe(parameters=obs_specification,
63 previous_results=self.result, job_server=self.job_server)
64 self.result['observe'] = obs.run()
65
66 # recover spectra from interferograms
67 uvspec = uvspectra.UVspectra(previous_results=self.result,
68 job_server=self.job_server)
69 self.result['uvspectra'] = uvspec.run()
70
71 # construct dirty image
72 dirty = dirtyimage.DirtyImage(previous_results=self.result,
73 job_server=self.job_server)
74 self.result['dirtyimage'] = dirty.run()
75
76 # construct clean image
77 clean = cleanimage.CleanImage(previous_results=self.result,
78 job_server=self.job_server)
79 self.result['cleanimage'] = clean.run()
80
81 # construct html description of result
82 self.render()
83
84 def import_result(self):
85 print 'does nothing'
86
87 def render(self):
88 htmlrenderer = renderer.Renderer(result=self.result)
89 htmlrenderer.run()
90
91 def __repr__(self):
92 return 'FISICA simulator'
93
Note: See TracBrowser for help on using the repository browser.