source: trunk/cleanimage.py

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

clean central quarter only

File size: 2.1 KB
Line 
1from __future__ import absolute_import
2
3import collections
4import math
5import numpy as np
6import pp
7
8import common.commonobjects as co
9import pythonclean
10
11
12class CleanImage(object):
13 """Class to compute clean image cube from uvspectra.
14 """
15
16 def __init__(self, previous_results, job_server):
17 self.previous_results = previous_results
18 self.job_server = job_server
19
20 self.result = collections.OrderedDict()
21
22 def run(self):
23 print 'CleanImage.run'
24
25 # get dirty image and beam info
26 dirty = self.previous_results['dirtyimage']
27 dirtyimage = dirty['dirtyimage']
28 dirtybeam = dirty['dirtybeam']
29 spatial_axis = dirty['spatial axis [arcsec]']
30 wavenumber = dirty['wavenumber [cm-1]']
31
32 # clean image cube
33 cleanimage = np.zeros(np.shape(dirtyimage), np.float)
34 residualimage = np.zeros(np.shape(dirtyimage), np.float)
35
36 # calculate clean image for each wn
37 jobs = {}
38 # clean only central quarter
39 imsize = np.shape(dirtyimage)[:2]
40 window = [slice(imsize[0]/4, imsize[0]*3/4), slice(imsize[1]/4, imsize[1]*3/4)]
41 for iwn,wn in enumerate(wavenumber):
42 # submit jobs
43 immax = np.max(dirtyimage[:,:,iwn])
44 indata = (dirtyimage[:,:,iwn], dirtybeam[:,:,iwn], window, 0.1,
45 immax/100.0, 5000,)
46 jobs[wn] = self.job_server.submit(pythonclean.hogbom,
47 indata, (), ('numpy','pythonclean',))
48
49 for iwn,wn in enumerate(wavenumber):
50 # collect and store results
51 cleanimage[:,:,iwn], residualimage[:,:,iwn] = jobs[wn]()
52
53 self.result['dirtyimage'] = dirtyimage
54 self.result['cleanimage'] = cleanimage + residualimage
55 self.result['residualimage'] = residualimage
56 self.result['spatial axis [arcsec]'] = spatial_axis
57 self.result['spatial axis'] = spatial_axis
58 self.result['wavenumber [cm-1]'] = wavenumber
59
60 return self.result
61
62 def __repr__(self):
63 return '''
64CleanImage:
65'''.format(
66 num_uvspectra=len(self.uvspectra))
67
Note: See TracBrowser for help on using the repository browser.