casa  $Rev:20696$
 All Classes Namespaces Files Functions Variables
Public Member Functions | Public Attributes
asap.asaplinefind.linefinder Class Reference

List of all members.

Public Member Functions

def __init__
def set_options
def set_scan
def set_data
def find_lines
def get_mask
def get_ranges

Public Attributes

 finder

Detailed Description

The class for automated spectral line search in ASAP.

Example:
   fl=linefinder()
   fl.set_scan(sc)
   fl.set_options(threshold=3)
   nlines=fl.find_lines(edge=(50,0))
   if nlines!=0:
      print "Found ",nlines," spectral lines"
      print fl.get_ranges(False)
   else:
      print "No lines found!"
   sc2=sc.poly_baseline(fl.get_mask(),7)

The algorithm involves a simple threshold criterion. The line is
considered to be detected if a specified number of consequtive
channels (default is 3) is brighter (with respect to the current baseline
estimate) than the threshold times the noise level. This criterion is
applied in the iterative procedure updating baseline estimate and trying
reduced spectral resolutions to detect broad lines as well. The off-line
noise level is determined at each iteration as an average of 80% of the
lowest variances across the spectrum (i.e. histogram equalization is
used to avoid missing weak lines if strong ones are present). For
bad baseline shapes it is recommended to increase the threshold and
possibly switch the averaging option off (see set_options) to
detect strong lines only, fit a high order baseline and repeat the line
search.

Definition at line 3 of file asaplinefind.py.


Constructor & Destructor Documentation

Create a line finder object.

Definition at line 35 of file asaplinefind.py.


Member Function Documentation

def asap.asaplinefind.linefinder.find_lines (   self,
  nRow = 0,
  mask = [],
  edge = (0,0 
)
Search for spectral lines in the scan assigned in set_scan.
Parameters:
     nRow:       a row in the scantable to work with
     mask:       an optional mask (e.g. retreived from scantable)
     edge:       an optional number of channels to drop at
         the edge of the spectrum. If only one value is
         specified, the same number will be dropped from
         both sides of the spectrum. Default is to keep
         all channels
A number of lines found will be returned

Definition at line 117 of file asaplinefind.py.

References tests.test_imcontsub.list.

def asap.asaplinefind.linefinder.get_mask (   self,
  invert = False 
)
Get the mask to mask out all lines that have been found (default)

Parameters:
      invert  if True, only channels belong to lines will be unmasked

Note: all channels originally masked by the input mask or
      dropped out by the edge parameter will still be excluded
      regardless on the invert option

Definition at line 143 of file asaplinefind.py.

def asap.asaplinefind.linefinder.get_ranges (   self,
  defunits = True 
)
Get ranges (start and end channels or velocities) for all spectral
lines found.

Parameters:
      defunits  if True (default), the range will use the same units
        as set for the scan (e.g. LSR velocity)
        if False, the range will be expressed in channels

Definition at line 155 of file asaplinefind.py.

def asap.asaplinefind.linefinder.set_data (   self,
  spectrum 
)
Set the 'data' (spectrum) to work with
Parameters: a method to allow linefinder work without setting scantable
for the purpose of using linefinder inside some method in scantable
class. (Dec 22, 2010 by W.Kawasaki)

Definition at line 103 of file asaplinefind.py.

Referenced by asap.asapplotter.asapplotter.plot(), and asap.asapplotter.asapplotter.plotgrid().

def asap.asaplinefind.linefinder.set_options (   self,
  threshold = 1.7320508075688772,
  min_nchan = 3,
  avg_limit = 8,
  box_size = 0.2,
  noise_box = 'all',
  noise_stat = 'mean80' 
)
Set the parameters of the algorithm
Parameters:
     threshold    a single channel S/N ratio above which the
          channel is considered to be a detection
          Default is sqrt(3), which together with
          min_nchan=3 gives a 3-sigma criterion
     min_nchan    a minimal number of consequtive channels,
          which should satisfy a threshold criterion to
          be a detection. Default is 3.
     avg_limit    A number of consequtive channels not greater than
          this parameter can be averaged to search for
          broad lines. Default is 8.
     box_size     A running mean/median box size specified as a fraction
          of the total spectrum length. Default is 1/5
     noise_box    Area of the spectrum used to estimate noise stats
          Both string values and numbers are allowed
          Allowed string values:
             'all' use all the spectrum (default)
             'box' noise box is the same as running mean/median
                   box
          Numeric values are defined as a fraction from the
          spectrum size. Values should be positive.
          (noise_box == box_size has the same effect as
           noise_box = 'box')
     noise_stat   Statistics used to estimate noise, allowed values:
              'mean80' use the 80% of the lowest deviations
                       in the noise box (default)
              'median' median of deviations in the noise box

Note:  For bad baselines threshold should be increased,
       and avg_limit decreased (or even switched off completely by
       setting this parameter to 1) to avoid detecting baseline
       undulations instead of real lines.

Definition at line 43 of file asaplinefind.py.

def asap.asaplinefind.linefinder.set_scan (   self,
  scan 
)
Set the 'data' (scantable) to work with.
Parameters:
     scan:    a scantable

Definition at line 93 of file asaplinefind.py.


Member Data Documentation

Definition at line 39 of file asaplinefind.py.


The documentation for this class was generated from the following file: