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, {}]
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, {}]