def __init__(self, ftmachine='ft', wprojplanes=10, facets=1, pixels=[3600, 3600], cell=['3arcsec', '3arcsec'], spw='', field='', phasecenter='', weight='natural', robust=0.0, stokes='I', npixels=0, uvtaper=False, outertaper=[], timerange='', uvrange='', baselines='', scan='', observation='', gain=0.1, numthreads=-1, pbcorr=False, minpb=0.2, cyclefactor=1.5, painc=360., pblimit=0.1, dopbcorr=True, applyoffsets=False, cfcache='cfcache.dir', epjtablename='',mterm=True,wbawp=True,aterm=True,psterm=True,conjbeams=True): self.im=casac.imager() self.imperms={} self.dc=casac.deconvolver() self.ft=ftmachine self.origms='' self.wprojplanes=wprojplanes self.facets=facets print 'cell', cell self.pixels=pixels self.cell=cell if(spw==''): spw='*' self.spw=spw self.field=field self.phCen=phasecenter self.weight=weight self.imageparamset=False self.robust=robust self.weightnpix=npixels self.stokes=stokes self.numthreads=numthreads self.imagetilevol=1000000 self.visInMem=False self.cyclefactor=cyclefactor self.novaliddata={} self.gain=gain self.uvtaper=uvtaper self.outertaper=outertaper self.timerange=timerange self.uvrange=uvrange self.baselines=baselines self.scan=scan self.observation=observation self.pbcorr=pbcorr self.minpb=minpb ###a default common cube coordsys self.cubecoordsys=casac.coordsys().torecord() self.painc=painc; self.pblimit=pblimit; self.dopbcorr=dopbcorr; self.applyoffsets=applyoffsets; self.cfcache=cfcache; self.epjtablename=epjtablename; self.mterm=mterm; self.aterm=aterm; self.psterm=psterm; self.wbawp=wbawp; self.conjbeams=conjbeams;
quanta = casac.quanta() measures = casac.measures() imager = casac.imager() calibrater = casac.calibrater() ms = casac.ms() tableplot = casac.tableplot() msplot = casac.msplot() calplot = casac.calplot() table = casac.table() #flagger = casac.flagger() agentflagger = casac.agentflagger() image = casac.image() imagepol = casac.imagepol() simulator = casac.simulator() componentlist = casac.componentlist() coordsys = casac.coordsys() regionmanager = casac.regionmanager() spectralline = casac.spectralline() utils = casac.utils() deconvolver = casac.deconvolver() vpmanager = casac.vpmanager() vlafillertask = casac.vlafillertask() atmosphere = casac.atmosphere() cu = casac.utils() mstransformer = casac.mstransformer() #plotms = __plotmshome__.create( ) from imstat_pg import imstat_pg as imstat from flagdata_pg import flagdata_pg as flagdata
def imagechan_selfselect(self, msname='spw00_4chan351rowTile.ms', spwids=[0], field=0, imroot='newmodel', imchan=0, niter=100, alg='clark', thr='0.0mJy', mask='', majcycle=1, scales=[0], chanchunk=1, startchan=0): ###need generate fstart, width from 1 channel width, start, numchan and spw origname=msname retval={} retval['maxresidual']=0.0 retval['iterations']=0 retval['converged']=False #pdb.set_trace() ####This causes a lock problem..randomly gets exception while waiting #ia.open(imroot+'.model') #csys=ia.coordsys() #ia.done() #### csys=casac.coordsys() ###hopefully this has been set by caller csys.fromrecord(self.cubecoordsys) im=casac.imager() fstart=csys.toworld([0,0,0,startchan],'n')['numeric'][3] fstep=csys.toworld([0,0,0,startchan+1],'n')['numeric'][3]-fstart fend=fstep*(chanchunk-1)+fstart print 'fstat bef findchansel ', fstart spw, start, nchan=self.findchanselLSRK(msname=msname, spw=spwids, field=field, numpartition=1, beginfreq=fstart, endfreq=fend, chanwidth=fstep) print 'spw, start, nchan', spw, start, nchan if((len(spw[0])==0) or (len(nchan[0])==0) or (len(start[0]) ==0) ): return retval imname=imroot+str(imchan) maskname='' if(mask != ''): maskname=imname+'.mask' if( not self.makemask(inmask=mask, outmask=maskname, imchan=imchan, chanchunk=chanchunk, startchan=startchan)): maskname='' # a.getchanimage(cubeimage=imroot+'.model', outim=imname+'.model', chan=imchan) im.selectvis(vis=msname, field=field, spw=spw[0], nchan=nchan[0], start=start[0], step=1, datainmemory=self.visInMem, time=self.timerange, uvrange=self.uvrange, baseline=self.baselines, scan=self.scan, observation=self.observation, writeaccess=False) print 'fstart bef def', fstart if(self.uvtaper): im.filter(type='gaussian', bmaj=self.outertaper[0], bmin=self.outertaper[1], bpa=self.outertaper[2]) im.defineimage(nx=self.pixels[0], ny=self.pixels[1], cellx=self.cell[0], celly=self.cell[1], phasecenter=self.phCen, facets=self.facets, mode='frequency', nchan=chanchunk, start=str(fstart)+'Hz', step=str(fstep)+'Hz', outframe='LSRK') im.weight(type=self.weight, rmode='norm', npixels=self.weightnpix, robust=self.robust) im.setoptions(ftmachine=self.ft, wprojplanes=self.wprojplanes, imagetilevol=self.imagetilevol, singleprecisiononly=True, numthreads=self.numthreads) im.setscales(scalemethod='uservector', uservector=scales) fluxscaleimage=imname+'.flux' if(self.ft=='mosaic') else '' majcycle = majcycle if (niter/majcycle) >0 else 1 self.setextraoptions(im, fluxscaleimage=fluxscaleimage, cyclefactor=(0.0 if(majcycle >1) else self.cyclefactor)) #### non simple ft machine...should use mf if((self.ft != 'ft') or ((majcycle <= 1) and (self.cyclefactor > 0))): alg='mf'+alg try: for kk in range(majcycle): retval=im.clean(algorithm=alg, gain=self.gain, niter= (niter/majcycle), threshold=thr, model=imname+'.model', image=imname+'.image', residual=imname+'.residual', mask=maskname, psfimage=imname+'.psf') if(not os.path.exists(imname+'.image')): ##all channels flagged for example...make 0 images for concat later im.defineimage(nx=self.pixels[0], ny=self.pixels[1], cellx=self.cell[0], celly=self.cell[1], phasecenter=self.phCen, facets=self.facets, mode='frequency', nchan=chanchunk, start=str(fstart)+'Hz', step=str(fstep)+'Hz', outframe='LSRK') im.make(imname+'.image') im.make(imname+'.model') im.make(imname+'.residual') im.make(imname+'.psf') if(self.ft=='mosaic'): im.make(imname+'.flux' ) im.make(imname+'.flux.pbcoverage') im.done() del im except Exception as instance: if(not os.path.exists(imname+'.image')): ##all channels flagged for example...make 0 images for concat later im.defineimage(nx=self.pixels[0], ny=self.pixels[1], cellx=self.cell[0], celly=self.cell[1], phasecenter=self.phCen, facets=self.facets, mode='frequency', nchan=chanchunk, start=str(fstart)+'Hz', step=str(fstep)+'Hz', outframe='LSRK') im.make(imname+'.image') im.make(imname+'.model') im.make(imname+'.residual') im.make(imname+'.psf') if(self.ft=='mosaic'): im.make(imname+'.flux' ) im.make(imname+'.flux.pbcoverage') im.done() del im if(string.count(str(instance), 'PSFZero') <1): raise Exception(instance) if(maskname != ''): shutil.rmtree(maskname, True) #self.putchanimage(imroot+'.model', imname+'.model', startchan, False) #self.putchanimage(imroot+'.residual', imname+'.residual', startchan, False) #self.putchanimage(imroot+'.image', imname+'.image', startchan, False) #self.putchanimage(imroot+'.psf', imname+'.psf', startchan, False) return retval