Changeset 2593 for trunk/python
- Timestamp:
- 07/09/12 16:54:10 (12 years ago)
- Location:
- trunk/python
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/python/__init__.py
r2587 r2593 52 52 from opacity import skydip 53 53 from opacity import model as opacity_model 54 from asapgrid import asapgrid 54 from asapgrid import asapgrid, asapgrid2 55 55 #from plotter2 import plotter2 56 56 from _asap import srctype -
trunk/python/asapgrid.py
r2450 r2593 3 3 from asap.scantable import scantable 4 4 from asap.selector import selector 5 from asap._asap import stgrid 5 from asap._asap import stgrid, stgrid2 6 6 import pylab as pl 7 7 from logging import asaplog … … 224 224 asaplog.post('DEBUG','asapgrid.plot') 225 225 226 class 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 226 410 class _SDGridPlotter: 227 411 def __init__( self, infile, outfile=None, ifno=-1 ):
Note:
See TracChangeset
for help on using the changeset viewer.