Changeset 1653 for branches/alma


Ignore:
Timestamp:
10/22/09 20:47:17 (15 years ago)
Author:
Kana Sugimoto
Message:

New Development: No

JIRA Issue: Yes (CAS-1431)

Ready to Release: Yes

Interface Changes: Yes

What Interface Changed: A new parameter 'plot' (boolean) is added to

the method 'smooth'.

Test Programs:

Put in Release Notes: No

Module(s): sdsmooth and sdcal

Description:

A new parameter 'plot' (boolean) is added to the method scantable.smooth.
If plot=True, smoothed and unsmoothed spectra is plotted, for each row
in the input scantable, and you are asked if you accept the displayed
smoothing. If you don't, continues without smoothing the row.


File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/alma/python/scantable.py

    r1649 r1653  
    14711471        return s
    14721472
    1473     def smooth(self, kernel="hanning", width=5.0, insitu=None):
     1473    #def smooth(self, kernel="hanning", width=5.0, insitu=None):
     1474    def smooth(self, kernel="hanning", width=5.0, plot=False, insitu=None):
    14741475        """
    14751476        Smooth the spectrum by the specified kernel (conserving flux).
     
    14831484                        Maximum. For 'boxcar' it is the full width.
    14841485                        For 'rmedian' it is the half width.
     1486            plot:       plot the original and the smoothed spectra.
     1487                        In this each indivual fit has to be approved, by
     1488                        typing 'y' or 'n'
    14851489            insitu:     if False a new scantable is returned.
    14861490                        Otherwise, the scaling is done in-situ
     
    14921496        self._math._setinsitu(insitu)
    14931497        varlist = vars()
     1498
     1499        if plot: orgscan = self.copy()
     1500
    14941501        s = scantable(self._math._smooth(self, kernel.lower(), width))
    14951502        s._add_history("smooth", varlist)
     1503
     1504        if plot:
     1505            if rcParams['plotter.gui']:
     1506                from asap.asaplotgui import asaplotgui as asaplot
     1507            else:
     1508                from asap.asaplot import asaplot
     1509            self._p=asaplot()
     1510            self._p.set_panels()
     1511            ylab=s._get_ordinate_label()
     1512            #self._p.palette(0,["#777777","red"])
     1513            for r in xrange(s.nrow()):
     1514                xsm=s._getabcissa(r)
     1515                ysm=s._getspectrum(r)
     1516                xorg=orgscan._getabcissa(r)
     1517                yorg=orgscan._getspectrum(r)
     1518                self._p.clear()
     1519                self._p.hold()
     1520                self._p.set_axes('ylabel',ylab)
     1521                self._p.set_axes('xlabel',s._getabcissalabel(r))
     1522                self._p.set_axes('title',s._getsourcename(r))
     1523                self._p.set_line(label='Original',color="#777777")
     1524                self._p.plot(xorg,yorg)
     1525                self._p.set_line(label='Smoothed',color="red")
     1526                self._p.plot(xsm,ysm)
     1527                ### Ugly part for legend
     1528                for i in [0,1]:
     1529                    self._p.subplots[0]['lines'].append([self._p.subplots[0]['axes'].lines[i]])
     1530                self._p.release()
     1531                ### Ugly part for legend
     1532                self._p.subplots[0]['lines']=[]
     1533                res = raw_input("Accept smoothing ([y]/n): ")
     1534                if res.upper() == 'N':
     1535                    s._setspectrum(yorg, r)
     1536            self._p.unmap()
     1537            self._p = None
     1538            del orgscan
     1539
    14961540        print_log()
    14971541        if insitu: self._assign(s)
     
    15551599                f.data = None
    15561600                f.fit()
     1601                fpar = f.get_parameters()
     1602                if plot:
     1603                    f.plot(residual=True)
     1604                    x = raw_input("Accept fit ( [y]/n ): ")
     1605                    if x.upper() == 'N':
     1606                        self.blpars.append(None)
     1607                        continue
    15571608                workscan._setspectrum(f.fitter.getresidual(), r)
    1558                 fpar = f.get_parameters()
    15591609                self.blpars.append(fpar)
    1560                
     1610            if plot:
     1611                f._p.unmap()
     1612                f._p = None
    15611613            #f.set_scan(self, mask)
    15621614            #s = f.auto_fit(insitu, plot=plot)
Note: See TracChangeset for help on using the changeset viewer.