Changeset 2095


Ignore:
Timestamp:
04/01/11 21:43:18 (14 years ago)
Author:
WataruKawasaki
Message:

merged from bug fixes from trunk (r2093)

Location:
branches/casa-prerelease/pre-asap
Files:
14 edited

Legend:

Unmodified
Added
Removed
  • branches/casa-prerelease/pre-asap

    • Property svn:mergeinfo changed
      /trunkmerged: 2094
  • branches/casa-prerelease/pre-asap/Makefile

    • Property svn:mergeinfo changed (with no actual effect on merging)
  • branches/casa-prerelease/pre-asap/SConstruct

    • Property svn:mergeinfo changed (with no actual effect on merging)
  • branches/casa-prerelease/pre-asap/apps

    • Property svn:mergeinfo changed (with no actual effect on merging)
  • branches/casa-prerelease/pre-asap/external-alma

    • Property svn:mergeinfo changed (with no actual effect on merging)
  • branches/casa-prerelease/pre-asap/external-alma/atnf/pks/pks_maths.cc

    • Property svn:mergeinfo changed (with no actual effect on merging)
  • branches/casa-prerelease/pre-asap/getsvnrev.sh

    • Property svn:mergeinfo changed (with no actual effect on merging)
  • branches/casa-prerelease/pre-asap/python

  • branches/casa-prerelease/pre-asap/python/scantable.py

    r2082 r2095  
    20732073                          clipthresh=None, clipniter=None, plot=None, getresidual=None, outlog=None, blfile=None):
    20742074        """\
    2075         Return a scan which has been baselined (all rows) by sinusoidal functions.
     2075        Return a scan which has been baselined (all rows) with sinusoidal functions.
    20762076        Parameters:
    20772077            insitu:        If False a new scantable is returned.
     
    21662166                               chan_avg_limit=None, plot=None, getresidual=None, outlog=None, blfile=None):
    21672167        """\
    2168         Return a scan which has been baselined (all rows) by cubic spline
    2169         function (piecewise cubic polynomial).
     2168        Return a scan which has been baselined (all rows) with sinusoidal functions.
    21702169        Spectral lines are detected first using linefinder and masked out
    21712170        to avoid them affecting the baseline solution.
     
    23092308
    23102309    @asaplog_post_dec
    2311     def cspline_baseline(self, insitu=None, mask=None, npiece=None, clipthresh=None, clipniter=None, plot=None, outlog=None, blfile=None):
     2310    def cspline_baseline(self, insitu=None, mask=None, npiece=None,
     2311                         clipthresh=None, clipniter=None, plot=None, getresidual=None, outlog=None, blfile=None):
    23122312        """\
    23132313        Return a scan which has been baselined (all rows) by cubic spline function (piecewise cubic polynomial).
     
    23242324                        indivual fit has to be approved, by typing 'y'
    23252325                        or 'n'
     2326            getresidual:if False, returns best-fit values instead of
     2327                        residual. (default is True)
    23262328            outlog:     Output the coefficients of the best-fit
    23272329                        function to logger (default is False)
     
    23502352        nchan = workscan.nchan()
    23512353       
    2352         if mask is None: mask = [True for i in xrange(nchan)]
    2353         if npiece is None: npiece = 2
    2354         if clipthresh is None: clipthresh = 3.0
    2355         if clipniter is None: clipniter = 1
    2356         if plot is None: plot = False
    2357         if outlog is None: outlog = False
    2358         if blfile is None: blfile = ""
     2354        if mask        is None: mask        = [True for i in xrange(nchan)]
     2355        if npiece      is None: npiece      = 2
     2356        if clipthresh  is None: clipthresh  = 3.0
     2357        if clipniter   is None: clipniter   = 1
     2358        if plot        is None: plot        = False
     2359        if getresidual is None: getresidual = True
     2360        if outlog      is None: outlog      = False
     2361        if blfile      is None: blfile      = ""
    23592362
    23602363        outblfile = (blfile != "") and os.path.exists(os.path.expanduser(os.path.expandvars(blfile)))
     
    23622365        try:
    23632366            #CURRENTLY, PLOT=true UNAVAILABLE UNTIL cubic spline fitting is implemented as a fitter method.
    2364             workscan._cspline_baseline(mask, npiece, clipthresh, clipniter, outlog, blfile)
     2367            workscan._cspline_baseline(mask, npiece, clipthresh, clipniter, getresidual, outlog, blfile)
    23652368           
    23662369            workscan._add_history("cspline_baseline", varlist)
     
    23832386    def auto_cspline_baseline(self, insitu=None, mask=None, npiece=None, clipthresh=None,
    23842387                              clipniter=None, edge=None, threshold=None,
    2385                               chan_avg_limit=None, plot=None, outlog=None, blfile=None):
     2388                              chan_avg_limit=None, getresidual=None, plot=None, outlog=None, blfile=None):
    23862389        """\
    23872390        Return a scan which has been baselined (all rows) by cubic spline
     
    24232426                        indivual fit has to be approved, by typing 'y'
    24242427                        or 'n'
     2428            getresidual:if False, returns best-fit values instead of
     2429                        residual. (default is True)
    24252430            outlog:     Output the coefficients of the best-fit
    24262431                        function to logger (default is False)
     
    24472452        nchan = workscan.nchan()
    24482453       
    2449         if mask is None: mask = [True for i in xrange(nchan)]
    2450         if npiece is None: npiece = 2
    2451         if clipthresh is None: clipthresh = 3.0
    2452         if clipniter is None: clipniter = 1
    2453         if edge is None: edge = (0, 0)
    2454         if threshold is None: threshold = 3
     2454        if mask           is None: mask          = [True for i in xrange(nchan)]
     2455        if npiece         is None: npiece        = 2
     2456        if clipthresh     is None: clipthresh    = 3.0
     2457        if clipniter      is None: clipniter      = 1
     2458        if edge           is None: edge          = (0, 0)
     2459        if threshold      is None: threshold      = 3
    24552460        if chan_avg_limit is None: chan_avg_limit = 1
    2456         if plot is None: plot = False
    2457         if outlog is None: outlog = False
    2458         if blfile is None: blfile = ""
     2461        if plot           is None: plot           = False
     2462        if getresidual    is None: getresidual    = True
     2463        if outlog         is None: outlog         = False
     2464        if blfile         is None: blfile         = ""
    24592465
    24602466        outblfile = (blfile != "") and os.path.exists(os.path.expanduser(os.path.expandvars(blfile)))
     
    24912497                    curedge += edge[i]
    24922498               
    2493             workscan._auto_cspline_baseline(mask, npiece, clipthresh, clipniter, curedge, threshold, chan_avg_limit, outlog, blfile)
     2499            workscan._auto_cspline_baseline(mask, npiece, clipthresh, clipniter, curedge, threshold, chan_avg_limit, getresidual, outlog, blfile)
    24942500
    24952501            workscan._add_history("auto_cspline_baseline", varlist)
     
    25112517
    25122518    @asaplog_post_dec
    2513     def poly_baseline(self, insitu=None, mask=None, order=None, plot=None, outlog=None, blfile=None):
     2519    def poly_baseline(self, insitu=None, mask=None, order=None, plot=None, getresidual=None, outlog=None, blfile=None):
    25142520        """\
    25152521        Return a scan which has been baselined (all rows) by a polynomial.
     
    25232529                        indivual fit has to be approved, by typing 'y'
    25242530                        or 'n'
     2531            getresidual:if False, returns best-fit values instead of
     2532                        residual. (default is True)
    25252533            outlog:     Output the coefficients of the best-fit
    25262534                        function to logger (default is False)
     
    25452553        nchan = workscan.nchan()
    25462554       
    2547         if mask is None: mask = [True for i in xrange(nchan)]
    2548         if order is None: order = 0
    2549         if plot is None: plot = False
    2550         if outlog is None: outlog = False
    2551         if blfile is None: blfile = ""
     2555        if mask        is None: mask        = [True for i in xrange(nchan)]
     2556        if order       is None: order       = 0
     2557        if plot        is None: plot        = False
     2558        if getresidual is None: getresidual = True
     2559        if outlog      is None: outlog      = False
     2560        if blfile      is None: blfile      = ""
    25522561
    25532562        outblfile = (blfile != "") and os.path.exists(os.path.expanduser(os.path.expandvars(blfile)))
     
    25792588                    masklist = workscan.get_masklist(f.mask, row=r, silent=True)
    25802589                    #workscan._append_blinfo(blpars, masklist, f.mask)
    2581                     workscan._setspectrum(f.fitter.getresidual(), r)
     2590                    workscan._setspectrum((f.fitter.getresidual() if getresidual else f.fitter.getfit()), r)
    25822591                   
    25832592                    if outblfile:
     
    25912600                if outblfile: blf.close()
    25922601            else:
    2593                 workscan._poly_baseline(mask, order, outlog, blfile)
     2602                workscan._poly_baseline(mask, order, getresidual, outlog, blfile)
    25942603           
    25952604            workscan._add_history("poly_baseline", varlist)
     
    26112620
    26122621    def auto_poly_baseline(self, insitu=None, mask=None, order=None, edge=None, threshold=None,
    2613                            chan_avg_limit=None, plot=None, outlog=None, blfile=None):
     2622                           chan_avg_limit=None, plot=None, getresidual=None, outlog=None, blfile=None):
    26142623        """\
    26152624        Return a scan which has been baselined (all rows) by a polynomial.
     
    26472656                        indivual fit has to be approved, by typing 'y'
    26482657                        or 'n'
     2658            getresidual:if False, returns best-fit values instead of
     2659                        residual. (default is True)
    26492660            outlog:     Output the coefficients of the best-fit
    26502661                        function to logger (default is False)
     
    26672678        nchan = workscan.nchan()
    26682679       
    2669         if mask is None: mask = [True for i in xrange(nchan)]
    2670         if order is None: order = 0
    2671         if edge is None: edge = (0, 0)
    2672         if threshold is None: threshold = 3
     2680        if mask           is None: mask          = [True for i in xrange(nchan)]
     2681        if order          is None: order          = 0
     2682        if edge           is None: edge          = (0, 0)
     2683        if threshold      is None: threshold      = 3
    26732684        if chan_avg_limit is None: chan_avg_limit = 1
    2674         if plot is None: plot = False
    2675         if outlog is None: outlog = False
    2676         if blfile is None: blfile = ""
     2685        if plot           is None: plot           = False
     2686        if getresidual    is None: getresidual    = True
     2687        if outlog         is None: outlog         = False
     2688        if blfile         is None: blfile         = ""
    26772689
    26782690        outblfile = (blfile != "") and os.path.exists(os.path.expanduser(os.path.expandvars(blfile)))
     
    27412753                    masklist = workscan.get_masklist(f.mask, row=r, silent=True)
    27422754                    #workscan._append_blinfo(blpars, masklist, f.mask)
    2743                     workscan._setspectrum(f.fitter.getresidual(), r)
     2755                    workscan._setspectrum((f.fitter.getresidual() if getresidual else f.fitter.getfit()), r)
    27442756
    27452757                    if outblfile:
     
    27592771                        curedge += edge[i]
    27602772               
    2761                 workscan._auto_poly_baseline(mask, order, curedge, threshold, chan_avg_limit, outlog, blfile)
     2773                workscan._auto_poly_baseline(mask, order, curedge, threshold, chan_avg_limit, getresidual, outlog, blfile)
    27622774
    27632775            workscan._add_history("auto_poly_baseline", varlist)
  • branches/casa-prerelease/pre-asap/src

  • branches/casa-prerelease/pre-asap/src/SConscript

    • Property svn:mergeinfo changed (with no actual effect on merging)
  • branches/casa-prerelease/pre-asap/src/Scantable.cpp

    r2082 r2095  
    17611761}
    17621762
    1763 void Scantable::polyBaseline(const std::vector<bool>& mask, int order, bool outLogger, const std::string& blfile)
     1763void Scantable::polyBaseline(const std::vector<bool>& mask, int order, bool getResidual, bool outLogger, const std::string& blfile)
    17641764{
    17651765  ofstream ofs;
     
    17891789    chanMask = getCompositeChanMask(whichrow, mask);
    17901790    fitBaseline(chanMask, whichrow, fitter);
    1791     setSpectrum(fitter.getResidual(), whichrow);
     1791    setSpectrum((getResidual ? fitter.getResidual() : fitter.getFit()), whichrow);
    17921792    outputFittingResult(outLogger, outTextFile, chanMask, whichrow, coordInfo, hasSameNchan, ofs, "polyBaseline()", fitter);
    17931793  }
     
    17961796}
    17971797
    1798 void Scantable::autoPolyBaseline(const std::vector<bool>& mask, int order, const std::vector<int>& edge, float threshold, int chanAvgLimit, bool outLogger, const std::string& blfile)
     1798void Scantable::autoPolyBaseline(const std::vector<bool>& mask, int order, const std::vector<int>& edge, float threshold, int chanAvgLimit, bool getResidual, bool outLogger, const std::string& blfile)
    17991799{
    18001800  ofstream ofs;
     
    18501850
    18511851    fitBaseline(chanMask, whichrow, fitter);
    1852     setSpectrum(fitter.getResidual(), whichrow);
     1852    setSpectrum((getResidual ? fitter.getResidual() : fitter.getFit()), whichrow);
    18531853
    18541854    outputFittingResult(outLogger, outTextFile, chanMask, whichrow, coordInfo, hasSameNchan, ofs, "autoPolyBaseline()", fitter);
     
    18581858}
    18591859
    1860 void Scantable::cubicSplineBaseline(const std::vector<bool>& mask, int nPiece, float thresClip, int nIterClip, bool outLogger, const std::string& blfile)
     1860void Scantable::cubicSplineBaseline(const std::vector<bool>& mask, int nPiece, float thresClip, int nIterClip, bool getResidual, bool outLogger, const std::string& blfile)
    18611861{
    18621862  ofstream ofs;
     
    18861886    chanMask = getCompositeChanMask(whichrow, mask);
    18871887    //fitBaseline(chanMask, whichrow, fitter);
    1888     //setSpectrum(fitter.getResidual(), whichrow);
     1888    //setSpectrum((getResidual ? fitter.getResidual() : fitter.getFit()), whichrow);
    18891889    std::vector<int> pieceEdges;
    18901890    std::vector<float> params;
    1891     std::vector<float> res = doCubicSplineFitting(getSpectrum(whichrow), chanMask, nPiece, pieceEdges, params, thresClip, nIterClip, true);
     1891    std::vector<float> res = doCubicSplineFitting(getSpectrum(whichrow), chanMask, nPiece, pieceEdges, params, thresClip, nIterClip, getResidual);
    18921892    setSpectrum(res, whichrow);
    18931893    //
     
    18991899}
    19001900
    1901 void Scantable::autoCubicSplineBaseline(const std::vector<bool>& mask, int nPiece, float thresClip, int nIterClip, const std::vector<int>& edge, float threshold, int chanAvgLimit, bool outLogger, const std::string& blfile)
     1901void Scantable::autoCubicSplineBaseline(const std::vector<bool>& mask, int nPiece, float thresClip, int nIterClip, const std::vector<int>& edge, float threshold, int chanAvgLimit, bool getResidual, bool outLogger, const std::string& blfile)
    19021902{
    19031903  ofstream ofs;
     
    19541954
    19551955    //fitBaseline(chanMask, whichrow, fitter);
    1956     //setSpectrum(fitter.getResidual(), whichrow);
     1956    //setSpectrum((getResidual ? fitter.getResidual() : fitter.getFit()), whichrow);
    19571957    std::vector<int> pieceEdges;
    19581958    std::vector<float> params;
    1959     std::vector<float> res = doCubicSplineFitting(getSpectrum(whichrow), chanMask, nPiece, pieceEdges, params, thresClip, nIterClip, true);
     1959    std::vector<float> res = doCubicSplineFitting(getSpectrum(whichrow), chanMask, nPiece, pieceEdges, params, thresClip, nIterClip, getResidual);
    19601960    setSpectrum(res, whichrow);
    19611961    //
     
    19731973  }
    19741974  if (nPiece < 1) {
    1975     throw(AipsError("wrong number of the sections for fitting"));
     1975    throw(AipsError("number of the sections must be one or more"));
    19761976  }
    19771977
     
    22152215    chanMask = getCompositeChanMask(whichrow, mask);
    22162216    //fitBaseline(chanMask, whichrow, fitter);
    2217     //setSpectrum(fitter.getResidual(), whichrow);
     2217    //setSpectrum((getResidual ? fitter.getResidual() : fitter.getFit()), whichrow);
    22182218    std::vector<float> params;
    2219     //std::vector<float> res = doSinusoidFitting(getSpectrum(whichrow), chanMask, nWaves, params, thresClip, nIterClip, true);
    22202219    std::vector<float> res = doSinusoidFitting(getSpectrum(whichrow), chanMask, nWaves, maxWaveLength, params, thresClip, nIterClip, getResidual);
    22212220    setSpectrum(res, whichrow);
     
    22832282
    22842283    //fitBaseline(chanMask, whichrow, fitter);
    2285     //setSpectrum(fitter.getResidual(), whichrow);
     2284    //setSpectrum((getResidual ? fitter.getResidual() : fitter.getFit()), whichrow);
    22862285    std::vector<float> params;
    22872286    std::vector<float> res = doSinusoidFitting(getSpectrum(whichrow), chanMask, nWaves, maxWaveLength, params, thresClip, nIterClip, getResidual);
     
    23352334
    23362335  const double PI = 6.0 * asin(0.5); // PI (= 3.141592653...)
    2337   double baseXFactor = 2.0*PI/(double)maxWaveLength/(double)(nChan-1);  //the denominator (nChan-1) should be changed to (xdata[nChan-1]-xdata[0]) for accepting x-values given in velocity or frequency when this function is moved to fitter.
     2336  double baseXFactor = 2.0*PI/(double)maxWaveLength/(double)(nChan-1);  //the denominator (nChan-1) should be changed to (xdata[nChan-1]-xdata[0]) for accepting x-values given in velocity or frequency when this function is moved to fitter. (2011/03/30 WK)
    23382337
    23392338  // xArray : contains elemental values for computing the least-square matrix.
     
    26352634
    26362635  if (verbose) {
    2637     for (int i = 0; i < 60; ++i) {
    2638       oss << "-";
    2639     }
    2640     oss << endl;
    26412636    oss <<  " Scan[" << getScan(whichrow)  << "]";
    26422637    oss <<  " Beam[" << getBeam(whichrow)  << "]";
     
    26592654    oss << "Results of baseline fit" << endl;
    26602655    oss << "  rms = " << setprecision(6) << rms << endl;
     2656    for (int i = 0; i < 60; ++i) {
     2657      oss << "-";
     2658    }
     2659    oss << flush;
    26612660  }
    26622661
  • branches/casa-prerelease/pre-asap/src/Scantable.h

    r2082 r2095  
    497497  void polyBaseline(const std::vector<bool>& mask,
    498498                    int order,
     499                    bool getResidual=true,
    499500                    bool outLogger=false,
    500501                    const std::string& blfile="");
     
    504505                        float threshold=3.0,
    505506                        int chanAvgLimit=1,
     507                        bool getResidual=true,
    506508                        bool outLogger=false,
    507509                        const std::string& blfile="");
     
    510512                           float thresClip,
    511513                           int nIterClip,
     514                           bool getResidual=true,
    512515                           bool outLogger=false,
    513516                           const std::string& blfile="");
     
    519522                               float threshold=3.0,
    520523                               int chanAvgLimit=1,
     524                               bool getResidual=true,
    521525                               bool outLogger=false,
    522526                               const std::string& blfile="");
     
    679683                                          float thresClip=3.0,
    680684                                          int nIterClip=1,
    681                                           bool getResidual=false);
     685                                          bool getResidual=true);
    682686  std::vector<float> doSinusoidFitting(const std::vector<float>& data,
    683687                                       const std::vector<bool>& mask,
     
    687691                                       float thresClip=3.0,
    688692                                       int nIterClip=1,
    689                                        bool getResidual=false);
     693                                       bool getResidual=true);
    690694  bool hasSameNchanOverIFs();
    691695  std::string getMaskRangeList(const std::vector<bool>& mask,
  • branches/casa-prerelease/pre-asap/src/ScantableWrapper.h

    r2082 r2095  
    257257  { table_->reshapeSpectrum( nmin, nmax ); }
    258258
    259   void polyBaseline(const std::vector<bool>& mask, int order, bool outlog=false, const std::string& blfile="")
    260   { table_->polyBaseline(mask, order, outlog, blfile); }
    261 
    262   void autoPolyBaseline(const std::vector<bool>& mask, int order, const std::vector<int>& edge, float threshold=5.0, int chan_avg_limit=1, bool outlog=false, const std::string& blfile="")
    263   { table_->autoPolyBaseline(mask, order, edge, threshold, chan_avg_limit, outlog, blfile); }
    264 
    265   void cubicSplineBaseline(const std::vector<bool>& mask, int npiece, float clipthresh, int clipniter, bool outlog=false, const std::string& blfile="")
    266   { table_->cubicSplineBaseline(mask, npiece, clipthresh, clipniter, outlog, blfile); }
    267 
    268   void autoCubicSplineBaseline(const std::vector<bool>& mask, int npiece, float clipthresh, int clipniter, const std::vector<int>& edge, float threshold=5.0, int chan_avg_limit=1, bool outlog=false, const std::string& blfile="")
    269   { table_->autoCubicSplineBaseline(mask, npiece, clipthresh, clipniter, edge, threshold, chan_avg_limit, outlog, blfile); }
     259  void polyBaseline(const std::vector<bool>& mask, int order, bool getresidual=true, bool outlog=false, const std::string& blfile="")
     260  { table_->polyBaseline(mask, order, getresidual, outlog, blfile); }
     261
     262  void autoPolyBaseline(const std::vector<bool>& mask, int order, const std::vector<int>& edge, float threshold=5.0, int chan_avg_limit=1, bool getresidual=true, bool outlog=false, const std::string& blfile="")
     263  { table_->autoPolyBaseline(mask, order, edge, threshold, chan_avg_limit, getresidual, outlog, blfile); }
     264
     265  void cubicSplineBaseline(const std::vector<bool>& mask, int npiece, float clipthresh, int clipniter, bool getresidual=true, bool outlog=false, const std::string& blfile="")
     266  { table_->cubicSplineBaseline(mask, npiece, clipthresh, clipniter, getresidual, outlog, blfile); }
     267
     268  void autoCubicSplineBaseline(const std::vector<bool>& mask, int npiece, float clipthresh, int clipniter, const std::vector<int>& edge, float threshold=5.0, int chan_avg_limit=1, bool getresidual=true, bool outlog=false, const std::string& blfile="")
     269  { table_->autoCubicSplineBaseline(mask, npiece, clipthresh, clipniter, edge, threshold, chan_avg_limit, getresidual, outlog, blfile); }
    270270
    271271  void sinusoidBaseline(const std::vector<bool>& mask, const std::vector<int>& nwave, float maxwavelength, float clipthresh, int clipniter, bool getresidual=true, bool outlog=false, const std::string& blfile="")
Note: See TracChangeset for help on using the changeset viewer.