Ignore:
Timestamp:
07/09/12 16:54:10 (12 years ago)
Author:
Takeshi Nakazato
Message:

New Development: No

JIRA Issue: No

Ready for Test: Yes

Interface Changes: Yes/No?

What Interface Changed: Please list interface changes

Test Programs: List test programs

Put in Release Notes: Yes/No?

Module(s): Module Names change impacts.

Description: Describe your changes here...

New class asapgrid2 is defined. Difference from asapgrid class is
that input and output is a scantable instance, not a table name.


File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/python/asapgrid.py

    r2450 r2593  
    33from asap.scantable import scantable
    44from asap.selector import selector
    5 from asap._asap import stgrid
     5from asap._asap import stgrid, stgrid2
    66import pylab as pl
    77from logging import asaplog
     
    224224        asaplog.post('DEBUG','asapgrid.plot')
    225225       
     226class asapgrid2:
     227    """
     228    The asapgrid class is defined to convolve data onto regular
     229    spatial grid. Typical usage is as follows:
     230
     231       # create asapgrid instance with input scantable
     232       s = scantable( 'testimage1.asap', average=False )
     233       g = asapgrid( s )
     234       # set IFNO if necessary
     235       g.setIF( 0 )
     236       # set POLNOs if necessary
     237       g.setPolList( [0,1] )
     238       # set SCANNOs if necessary
     239       g.setScanList( [22,23,24] )
     240       # define image with full specification
     241       # you can skip some parameters (see help for defineImage)
     242       g.defineImage( nx=12, ny=12, cellx='10arcsec', celly='10arcsec',
     243                      center='J2000 10h10m10s -5d05m05s' )
     244       # set convolution function
     245       g.setFunc( func='sf', width=3 )
     246       # enable min/max clipping
     247       g.enableClip()
     248       # or, disable min/max clipping
     249       #g.disableClip()
     250       # actual gridding
     251       g.grid()
     252       # get result as scantable
     253       sg = g.getResult()
     254    """
     255    def __init__( self, scantab ):
     256        """
     257        Create asapgrid instance.
     258
     259        scantab -- input data as a scantable or a list of scantables
     260                   to grid more than one data at once. 
     261        """
     262        self.outfile = None
     263        self.ifno = None
     264        self.gridder = stgrid2()
     265        self.setData( scantab )
     266
     267    def setData( self, scantab ):
     268        """
     269        Set data to be processed.
     270
     271        scantab -- input data as a scantable or a list of scantables
     272                   to grid more than one data at once. 
     273        """
     274        if isinstance( scantab, scantable ):
     275            self.gridder._setin( scantab )
     276        else:
     277            self.gridder._setfiles( scantab )
     278        self.scantab = scantab
     279
     280    def setIF( self, ifno ):
     281        """
     282        Set IFNO to be processed. Currently, asapgrid allows to process
     283        only one IFNO for one gridding run even if the data contains
     284        multiple IFs. If you didn't specify IFNO, default value, which
     285        is IFNO in the first spectrum, will be processed.
     286
     287        ifno -- IFNO to be processed.
     288        """
     289        self.ifno = ifno
     290        self.gridder._setif( self.ifno )
     291
     292    def setPolList( self, pollist ):
     293        """
     294        Set list of polarization components you want to process.
     295        If not specified, all POLNOs will be processed.
     296
     297        pollist -- list of POLNOs.
     298        """
     299        self.gridder._setpollist( pollist )
     300
     301    def setScanList( self, scanlist ):
     302        """
     303        Set list of scans you want to process. If not specified, all
     304        scans will be processed.
     305
     306        scanlist -- list of SCANNOs.
     307        """
     308        self.gridder._setscanlist( scanlist )
     309
     310    def defineImage( self, nx=-1, ny=-1, cellx='', celly='', center='' ):
     311        """
     312        Define spatial grid.
     313
     314        First two parameters, nx and ny, define number of pixels of
     315        the grid. If which of those is not specified, it will be set
     316        to the same value as the other. If none of them are specified,
     317        it will be determined from map extent and cell size.
     318
     319        Next two parameters, cellx and celly, define size of pixel.
     320        You should set those parameters as string, which is constructed
     321        numerical value and unit, e.g. '0.5arcmin', or numerical value.
     322        If those values are specified as numerical value, their units
     323        will be assumed to 'arcsec'. If which of those is not specified,
     324        it will be set to the same value as the other. If none of them
     325        are specified, it will be determined from map extent and number
     326        of pixels, or set to '1arcmin' if neither nx nor ny is set.
     327
     328        The last parameter, center, define the central coordinate of
     329        the grid. You should specify its value as a string, like,
     330
     331           'J2000 05h08m50s -16d23m30s'
     332
     333        or
     334
     335           'J2000 05:08:50 -16.23.30'
     336
     337        You can omit equinox when you specify center coordinate. In that
     338        case, J2000 is assumed. If center is not specified, it will be
     339        determined from the observed positions of input data.
     340
     341        nx -- number of pixels along x (R.A.) direction.
     342        ny -- number of pixels along y (Dec.) direction.
     343        cellx -- size of pixel in x (R.A.) direction.
     344        celly -- size of pixel in y (Dec.) direction.
     345        center -- central position of the grid.
     346        """
     347        if not isinstance( cellx, str ):
     348            cellx = '%sarcsec'%(cellx)
     349        if not isinstance( celly, str ):
     350            celly = '%sarcsec'%(celly)
     351        self.gridder._defineimage( nx, ny, cellx, celly, center )
     352
     353    def setFunc( self, func='box', width=-1 ):
     354        """
     355        Set convolution function. Possible options are 'box' (Box-car,
     356        default), 'sf' (prolate spheroidal), and 'gauss' (Gaussian).
     357        Width of convolution function can be set using width parameter.
     358        By default (-1), width is automatically set depending on each
     359        convolution function. Default values for width are:
     360
     361           'box': 1 pixel
     362           'sf': 3 pixels
     363           'gauss': 1 pixel (width is used as HWHM)
     364
     365        func -- Function type ('box', 'sf', 'gauss').
     366        width -- Width of convolution function. Default (-1) is to
     367                 choose pre-defined value for each convolution function.
     368        """
     369        self.gridder._setfunc( func, width )
     370
     371    def setWeight( self, weightType='uniform' ):
     372        """
     373        Set weight type. Possible options are 'uniform' (default),
     374        'tint' (weight by integration time), 'tsys' (weight by
     375        Tsys: 1/Tsys**2), and 'tintsys' (weight by integration time
     376        as well as Tsys: tint/Tsys**2).
     377
     378        weightType -- weight type ('uniform', 'tint', 'tsys', 'tintsys')
     379        """
     380        self.gridder._setweight( weightType )
     381
     382    def enableClip( self ):
     383        """
     384        Enable min/max clipping.
     385
     386        By default, min/max clipping is disabled so that you should
     387        call this method before actual gridding if you want to do
     388        clipping.
     389        """
     390        self.gridder._enableclip()
     391
     392    def disableClip( self ):
     393        """
     394        Disable min/max clipping.
     395        """
     396        self.gridder._disableclip()
     397
     398    def grid( self ):
     399        """
     400        Actual gridding which will be done based on several user inputs.
     401        """
     402        self.gridder._grid()
     403
     404    def getResult( self ):
     405        """
     406        Return gridded data as a scantable.
     407        """
     408        return scantable( self.gridder._get(), average=False )
     409
    226410class _SDGridPlotter:
    227411    def __init__( self, infile, outfile=None, ifno=-1 ):
Note: See TracChangeset for help on using the changeset viewer.