"_robust{0}_preselfcal.model.tt1".format(robust) ] else: modelname = [ contimagename + "_robust{0}_selfcal{1}.model.tt0".format( robust, selfcaliter - 1), contimagename + "_robust{0}_selfcal{1}.model.tt1".format( robust, selfcaliter - 1) ] imname = contimagename + "_robust{0}_selfcal{1}".format( robust, selfcaliter) if not os.path.exists(imname + ".image.tt0"): okfields, notokfields = goodenough_field_solutions(caltable, minsnr=5) if len(okfields) == 0: logprint("All fields flagged out of gaincal solns!", origin='contim_selfcal') raise ValueError("All fields flagged out of gaincal solns!") okfields_str = ",".join(["{0}".format(x) for x in okfields]) logprint("Fields {0} had min snr 5, fields {1} did not".format( okfields, notokfields), origin='contim_selfcal') clearcal(vis=selfcal_ms, addmodel=True) # use gainfield so we interpolate the good solutions to the other # fields applycal(vis=selfcal_ms, gainfield=okfields_str, gaintable=cals, interp="linear",
cell="0.125arcsec", outframe='LSRK', weighting="briggs", robust = 0.5, savemodel='modelcolumn') impbcor(imagename=myimagebase+'.image', pbimage=myimagebase+'.pb', outfile=myimagebase+'.image.pbcor', overwrite=True) # perform PBcorr exportfits(imagename=myimagebase+'.image.pbcor', fitsimage=myimagebase+'.image.pbcor.fits', dropdeg=True, overwrite=True) # export the corrected image exportfits(imagename=myimagebase+'.pb', fitsimage=myimagebase+'.pb.fits', dropdeg=True, overwrite=True) # export the PB image exportfits(imagename=myimagebase+'.model', fitsimage=myimagebase+'.model.fits', dropdeg=True, overwrite=True) # export the PB image exportfits(imagename=myimagebase+'.residual', fitsimage=myimagebase+'.residual.fits', dropdeg=True, overwrite=True) # export the PB image rmtables(['phase_0.cal']) gaincal(vis=selfcal0vis, caltable='phase_0.cal', solint='int', gaintype='G', calmode='p') okfields = selfcal_heuristics.goodenough_field_solutions('phase_0.cal') okfields_str = ",".join(["{0}".format(x) for x in okfields]) selfcal1vis = 'selfcal_SgrB2_TE_full_selfcal_iter1.ms' rmtables([selfcal1vis]) applycal(vis=selfcal0vis, field=okfields_str, gaintable=["phase_0.cal"], interp="linear", applymode='calonly', calwt=False) split(vis=selfcal0vis, outputvis=selfcal1vis, datacolumn='corrected') outname = 'SgrB2_selfcal_full_TE_selfcal1' os.system('rm -rf ' + outname + "*") myimagebase = outname tclean(vis=selfcal1vis, imagename=myimagebase, field='SgrB2',
fitsimage=myimagebase + '.model.fits', dropdeg=True, overwrite=True) # export the PB image exportfits(imagename=myimagebase + '.residual', fitsimage=myimagebase + '.residual.fits', dropdeg=True, overwrite=True) # export the PB image rmtables(['phase_0.cal']) gaincal(vis=selfcal0vis, caltable='phase_0.cal', solint='int', gaintype='G', calmode='p') okfields, notokfields = selfcal_heuristics.goodenough_field_solutions( 'phase_0.cal') okfields_str = ",".join(["{0}".format(x) for x in okfields]) print("Self-calibration fields: {0}".format(okfields_str)) selfcal1vis = 'selfcal_SgrB2_TCTE_full_selfcal_iter1.ms' rmtables([selfcal1vis]) applycal(vis=selfcal0vis, field=okfields_str, gaintable=["phase_0.cal"], interp="linear", applymode='calonly', calwt=False) split(vis=selfcal0vis, outputvis=selfcal1vis, datacolumn='corrected') outname = 'SgrB2_selfcal_full_TCTE_selfcal1' os.system('rm -rf ' + outname + "*")
rmtables('selfcal_spw3_phase_2.cal') gaincal(vis=vis1, caltable="selfcal_spw3_phase_2.cal", field=field, solint=solint, calmode="p", refant="DV07", gaintype="G", minsnr=5, uvrange='100~5000m') #plotcal(caltable="selfcal_spw3_phase_2.cal", xaxis="time", yaxis="phase", subplot=331, # iteration="antenna", plotrange=[0,0,-30,30], markersize=5, # fontsize=10.0,) assert len( selfcal_heuristics.goodenough_field_solutions("selfcal_spw3_phase_2.cal", minsnr=5, maxphasenoise=np.pi / 4., pols=[0])) > 0 print( "Goodenough field solns: ", selfcal_heuristics.goodenough_field_solutions("selfcal_spw3_phase_2.cal", minsnr=5, maxphasenoise=np.pi / 4., pols=[0])) flagmanager(vis=vis1, mode='save', versionname='backup') applycal(vis=vis1, field="", gaintable=["selfcal_spw3_phase_2.cal"], interp="linear", applymode='calonly', calwt=False)
fitsimage=myimagebase + '.model.fits', dropdeg=True, overwrite=True) # export the PB image exportfits(imagename=myimagebase + '.residual', fitsimage=myimagebase + '.residual.fits', dropdeg=True, overwrite=True) # export the PB image rmtables(['phase_0.cal']) gaincal(vis=selfcal0vis, caltable='phase_0.cal', solint='int', gaintype='G', calmode='p') okfields, not_ok_fields = selfcal_heuristics.goodenough_field_solutions( 'phase_0.cal') okfields_str = ",".join(["{0}".format(x) for x in okfields]) # plotcal(caltable='phase_0.cal', xaxis='time', yaxis='phase', iteration='antenna', field=okfields_str, subplot=331) print("Iteration 0: Self-calibrating on field IDs {0}".format(okfields_str)) # flag out the fields that do not have solutions # (this should be overkill/redundant with not applying bad cals in the applycal step) flagdata(vis='phase_0.cal', field=",".join(map(str, not_ok_fields)), mode='manual') selfcal1vis = 'selfcal_SgrB2_TE_full_selfcal_iter1.ms' rmtables([selfcal1vis]) applycal(vis=selfcal0vis, field=okfields_str,
savemodel='modelcolumn') exportfits(myimagebase+'.image', myimagebase+'.image.fits', dropdeg=True, overwrite=True) impbcor(imagename=myimagebase+'.image',pbimage=myimagebase+'.pb', outfile=myimagebase+'.image.pbcor', overwrite=True) exportfits(myimagebase+'.image.pbcor', myimagebase+'.image.pbcor.fits', dropdeg=True, overwrite=True) exportfits(myimagebase+'.model', myimagebase+'.model.fits', dropdeg=True, overwrite=True) exportfits(myimagebase+'.residual', myimagebase+'.residual.fits', dropdeg=True, overwrite=True) rmtables('selfcal_spw3_phase_2.cal') gaincal(vis=vis1, caltable="selfcal_spw3_phase_2.cal", field=field, solint=solint, calmode="p", refant="DV07", gaintype="G", minsnr=5, uvrange='100~5000m') #plotcal(caltable="selfcal_spw3_phase_2.cal", xaxis="time", yaxis="phase", subplot=331, # iteration="antenna", plotrange=[0,0,-30,30], markersize=5, # fontsize=10.0,) assert len(selfcal_heuristics.goodenough_field_solutions("selfcal_spw3_phase_2.cal", minsnr=5, maxphasenoise=np.pi/4., pols=[0])) > 0 print("Goodenough field solns: ",selfcal_heuristics.goodenough_field_solutions("selfcal_spw3_phase_2.cal", minsnr=5, maxphasenoise=np.pi/4., pols=[0])) flagmanager(vis=vis1, mode='save', versionname='backup') applycal(vis=vis1, field="", gaintable=["selfcal_spw3_phase_2.cal"], interp="linear", applymode='calonly', calwt=False) flagmanager(vis=vis1, mode='restore', versionname='backup') summary1 = flagdata(vis=vis1, mode='summary') print("{flagged}/{total} flagged points in vis1".format(**summary1)) vis2 = 'w51_continuum_7m12m_contvis_selfcal_2.ms' os.system('rm -rf {0}'.format(vis2)) os.system('rm -rf {0}.flagversions'.format(vis2)) split(vis=vis1, outputvis=vis2, datacolumn="corrected")