Ignore:
Timestamp:
01/10/06 15:11:58 (18 years ago)
Author:
mar637
Message:

Request: added channel based flagging

File:
1 edited

Legend:

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

    r798 r800  
    721721
    722722
    723     def flag_spectrum(self, thebeam, theif, thepol):
     723    def flag_spectrum(self, flags, row=-1, allaxes=None):
    724724        """
    725725        This flags a selected spectrum in the scan 'for good'.
     
    727727        Use masks for non-permanent exclusion of channels.
    728728        Parameters:
    729             thebeam,theif,thepol:    all have to be explicitly
    730                                      specified
    731         Example:
    732             scan.flag_spectrum(0,0,1)
    733             flags the spectrum for Beam=0, IF=0, Pol=1
    734         """
    735         if (thebeam < self.nbeam() and
    736             theif < self.nif() and
    737             thepol < self.npol()):
    738             sdtable.setbeam(self, thebeam)
    739             sdtable.setif(self, theif)
    740             sdtable.setpol(self, thepol)
    741             sdtable._flag(self)
    742             self._add_history("flag_spectrum", vars())
    743         else:
    744             print "Please specify a valid (Beam/IF/Pol)"
     729            flags:   a mask created with scantable.create_mask
     730            row:     the number of the row (intergration) to flag,
     731                     the deafult is -1, which is ALL rows.
     732            allaxes: if True apply to all spectra. Otherwise
     733                     apply only to the selected (beam/pol/if)spectra only
     734                     The default is taken from .asaprc (True if none)
     735        Example:
     736            scan.flag_spectrum() # flags everything, not very useful
     737            msk = scan.create_mask([511,513])
     738            scan,set_cursor(IF=1)
     739            scan.flag_spectrum(msk, allaxes=False)
     740            # flags the central three channels for all rows in the table,
     741            # using the selected IF only (e.g. a birdie)
     742        """
     743        if allaxes is None: allaxes = rcParams['scantable.allaxes']
     744        if len(flags) != self.nchan():
     745            msg  = "Length of mask invalid.",valid
     746            if rcParams['verbose']:
     747                print msg
     748                return
     749            else:
     750                raise AssertionError(msg)
     751        rows = range(self.nrow())
     752        if row > -1: rows = [row]
     753        for r in rows:
     754            if allaxes:
     755                beamSel,IFSel,polSel = (self.getbeam(),self.getif(),self.getpol())
     756                for i in range(self.nbeam()):
     757                    self.setbeam(i)
     758                    for j in range(self.nif()):
     759                        self.setif(j)
     760                        for k in range(self.npol()):
     761                            self.setpol(k)
     762                            sdtable._flagspectrum(self, flags, r)
     763                self.setbeam(beamSel)
     764                self.setif(IFSel)
     765                self.setpol(polSel)
     766            else:
     767                sdtable._flagspectrum(self, flags, r)
     768        self._add_history("flag_spectrum", vars())
    745769        return
    746770
     
    840864                         Otherwise, the scaling is done in-situ
    841865                         The default is taken from .asaprc (False)
    842             allaxes:         if True apply to all spectra. Otherwise
     866            allaxes:     if True apply to all spectra. Otherwise
    843867                         apply only to the selected (beam/pol/if)spectra only
    844868                         The default is taken from .asaprc (True if none)
Note: See TracChangeset for help on using the changeset viewer.