示例#1
0
    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;
示例#2
0
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
示例#3
0
    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