Ignore:
Timestamp:
09/14/10 12:17:16 (14 years ago)
Author:
Malte Marquarding
Message:

Ticket #206: use STFitEntry as return objetc instead of pointer wrnagling.

File:
1 edited

Legend:

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

    r1920 r1924  
    11581158        return msk
    11591159
    1160     def get_masklist(self, mask=None, row=0):
     1160    def get_masklist(self, mask=None, row=0, silent=False):
    11611161        """\
    11621162        Compute and return a list of mask windows, [min, max].
     
    11921192        if not i:
    11931193            msg += "\nThis mask is only valid for IF=%d" % (self.getif(i))
    1194         asaplog.push(msg)
     1194        if not silent:
     1195            asaplog.push(msg)
    11951196        masklist=[]
    11961197        ist, ien = None, None
     
    19341935                workscan._setspectrum(f.fitter.getresidual(), r)
    19351936                self.blpars.append(f.get_parameters())
    1936                 self.masklists.append(workscan.get_masklist(f.mask, row=r))
     1937                self.masklists.append(workscan.get_masklist(f.mask, row=r, silent=True))
    19371938                self.actualmask.append(f.mask)
    19381939
     
    19491950            raise RuntimeError(msg)
    19501951
    1951 
    1952     def poly_baseline(self, mask=None, order=0, plot=False, batch=False, insitu=None, rows=None):
     1952    @asaplog_post_dec
     1953    def poly_baseline(self, mask=None, order=0, plot=False, batch=False,
     1954                      insitu=None, rows=None):
    19531955        """\
    19541956        Return a scan which has been baselined (all rows) by a polynomial.
     
    19731975        """
    19741976        if insitu is None: insitu = rcParams["insitu"]
     1977        varlist = vars()
    19751978        if insitu:
    19761979            workscan = self
     
    19781981            workscan = self.copy()
    19791982
    1980         varlist = vars()
    19811983        nchan = workscan.nchan()
    19821984       
     
    19911993           
    19921994            if len(rows) > 0:
    1993                 self.blpars = []
    1994                 self.masklists = []
    1995                 self.actualmask = []
     1995                workscan.blpars = []
     1996                workscan.masklists = []
     1997                workscan.actualmask = []
    19961998
    19971999            if batch:
    1998                 for r in rows:
    1999                     workscan._poly_baseline_batch(mask, order, r)
     2000                workscan._poly_baseline_batch(mask, order)
    20002001            elif plot:
    20012002                f = fitter()
     
    20162017                        continue
    20172018                    workscan._setspectrum(f.fitter.getresidual(), r)
    2018                     self.blpars.append(f.get_parameters())
    2019                     self.masklists.append(workscan.get_masklist(f.mask, row=r))
    2020                     self.actualmask.append(f.mask)
     2019                    workscan.blpars.append(f.get_parameters())
     2020                    workscan.masklists.append(workscan.get_masklist(f.mask, row=r))
     2021                    workscan.actualmask.append(f.mask)
    20212022                   
    20222023                f._p.unmap()
    20232024                f._p = None
    20242025            else:
    2025                 import array
    20262026                for r in rows:
    2027                     pars = array.array("f", [0.0 for i in range(order+1)])
    2028                     pars_adr = pars.buffer_info()[0]
    2029                     pars_len = pars.buffer_info()[1]
     2027                    fitparams = workscan._poly_baseline(mask, order, r)
     2028                    params = fitparams.getparameters()
     2029                    fmtd = ", ".join(["p%d = %3.6f" % (i, v) for i, v in enumerate(params)])
     2030                    errors = fitparams.geterrors()
     2031                    fmask = mask_and(mask, workscan._getmask(r))
     2032
     2033                    workscan.blpars.append({"params":params,
     2034                                            "fixed": fitparams.getfixedparameters(),
     2035                                            "formatted":fmtd, "errors":errors})
     2036                    workscan.masklists.append(workscan.get_masklist(fmask, r, silent=True))
     2037                    workscan.actualmask.append(fmask)
    20302038                   
    2031                     errs = array.array("f", [0.0 for i in range(order+1)])
    2032                     errs_adr = errs.buffer_info()[0]
    2033                     errs_len = errs.buffer_info()[1]
    2034                    
    2035                     fmsk = array.array("i", [1 for i in range(nchan)])
    2036                     fmsk_adr = fmsk.buffer_info()[0]
    2037                     fmsk_len = fmsk.buffer_info()[1]
    2038                    
    2039                     workscan._poly_baseline(mask, order, r, pars_adr, pars_len, errs_adr, errs_len, fmsk_adr, fmsk_len)
    2040                    
    2041                     params = pars.tolist()
    2042                     fmtd = ""
    2043                     for i in xrange(len(params)): fmtd += "  p%d= %3.6f," % (i, params[i])
    2044                     fmtd = fmtd[:-1]  # remove trailing ","
    2045                     errors = errs.tolist()
    2046                     fmask = fmsk.tolist()
    2047                     for i in xrange(len(fmask)): fmask[i] = (fmask[i] > 0)    # transform (1/0) -> (True/False)
    2048                    
    2049                     self.blpars.append({"params":params, "fixed":[], "formatted":fmtd, "errors":errors})
    2050                     self.masklists.append(workscan.get_masklist(fmask, r))
    2051                     self.actualmask.append(fmask)
    2052                    
    2053                     asaplog.push(str(fmtd))
     2039                    asaplog.push(fmtd)
    20542040           
    20552041            workscan._add_history("poly_baseline", varlist)
     
    22022188
    22032189            # Show mask list
    2204             masklist=workscan.get_masklist(f.mask, row=r)
     2190            masklist=workscan.get_masklist(f.mask, row=r, silent=True)
    22052191            msg = "mask range: "+str(masklist)
    22062192            asaplog.push(msg, False)
Note: See TracChangeset for help on using the changeset viewer.