Exemple #1
0
def maxfit_iter(imgfiles, box, imidx):
    from taskinit import ia, rg
    try:
        from astropy.io import fits as pyfits
    except:
        try:
            import pyfits
        except ImportError:
            raise ImportError(
                'Neither astropy nor pyfits exists in this CASA installation')
    img = imgfiles[imidx]

    try:
        if (not ia.open(img)):
            raise Exception, "Cannot create image analysis tool using " + img
        print('Processing image: ' + img)
        hdr = pyfits.getheader(img)
        pols = DButil.polsfromfitsheader(hdr)
        freqs = DButil.freqsfromfitsheader(hdr)
        ndx, ndy, nchans, npols = ia.shape()
        blc, trc = [0, 0], [ndx, ndy]
        if 'box' in locals():
            if box != '':
                blc[0], blc[1], trc[0], trc[1] = [
                    int(ll) for ll in box.split(',')
                ]
        results = {}
        for itpp in pols:
            results[itpp] = {'results': {}, 'converged': []}
        for ll in range(nchans):
            for pp, itpp in enumerate(pols):
                comp = 'component{}'.format(ll)
                r = rg.box(blc=[blc[0], blc[1], ll, pp],
                           trc=[trc[0], trc[1], ll, pp])
                iachan = ia.subimage(region=r, dropdeg=True)
                try:
                    result_dict = iachan.maxfit(point=True, negfind=False)
                    result_dict['component0']['converged'] = True
                    result_dict['component0']['flux']['polarisation'] = itpp
                    result_dict['component0']['spectrum']['frequency']['m0'][
                        'value'] = float(freqs[ll])
                    results[itpp]['results'][comp] = result_dict['component0']
                    results[itpp]['converged'].append(True)
                except:
                    results[itpp]['converged'].append(False)
        results[itpp]['results']['nelements'] = results[itpp]['results'].keys()
        # update timestamp
        timstr = hdr['date-obs']
        return [True, timstr, img, results]
    except Exception, instance:
        casalog.post(str('*** Error in imfit ***') + str(instance))
        # raise instance
        return [False, timstr, img, {}]
Exemple #2
0
def imfit_iter(imgfiles, doreg, tims, msinfofile, ephem, box, region, chans,
               stokes, mask, includepix, excludepix, residual, model,
               estimates, logfile, append, newestimates, complist, overwrite,
               dooff, offset, fixoffset, stretch, rms, noisefwhm, summary,
               imidx):
    from taskinit import iatool, rg
    import pdb
    try:
        from astropy.io import fits as pyfits
    except:
        try:
            import pyfits
        except ImportError:
            raise ImportError(
                'Neither astropy nor pyfits exists in this CASA installation')
    img = imgfiles[imidx]

    if doreg:
        # check if ephemfile and msinfofile exist
        if not ephem:
            print("ephemeris info does not exist!")
            return
        if not tims:
            print("timestamp of the image does not exist!")
            return
        try:
            tim = tims[imidx]
            helio = vla_prep.ephem_to_helio(msinfo=msinfofile,
                                            ephem=ephem,
                                            reftime=tim)
            fitsfile = [img.replace('.image', '.fits')]
            vla_prep.imreg(imagefile=[img],
                           fitsfile=fitsfile,
                           helio=helio,
                           toTb=False,
                           scl100=True)
            img = img.replace('.image', '.fits')
        except:
            print 'Failure in vla_prep. Skipping this image file: ' + img

    myia = iatool()
    try:
        if (not myia.open(img)):
            raise Exception, "Cannot create image analysis tool using " + img
        print('Processing image: ' + img)
        hdr = pyfits.getheader(img)
        pols = DButil.polsfromfitsheader(hdr)
        ndx, ndy, nchans, npols = myia.shape()
        results = {}
        for itpp in pols:
            results[itpp] = {}
        for pp, itpp in enumerate(pols):
            r = rg.box(blc=[0, 0, 0, pp], trc=[ndx, ndy, nchans, pp])
            myiapol = myia.subimage(region=r, dropdeg=True)
            results[itpp] = myiapol.fitcomponents(box=box,
                                                  region=region,
                                                  chans=chans,
                                                  stokes=stokes,
                                                  mask=mask,
                                                  includepix=includepix,
                                                  excludepix=excludepix,
                                                  residual=residual,
                                                  model=model,
                                                  estimates=estimates,
                                                  logfile=logfile,
                                                  append=append,
                                                  newestimates=newestimates,
                                                  complist=complist,
                                                  overwrite=overwrite,
                                                  dooff=dooff,
                                                  offset=offset,
                                                  fixoffset=fixoffset,
                                                  stretch=stretch,
                                                  rms=rms,
                                                  noisefwhm=noisefwhm,
                                                  summary=summary)
        # update timestamp

        timstr = hdr['date-obs']
        return [True, timstr, img, results]
    except Exception, instance:
        casalog.post(str('*** Error in imfit ***') + str(instance))
        # raise instance
        return [False, timstr, img, {}]