continuum_ms = new_continuum_ms else: antennae = "" arrayname = '7M12M' if os.getenv("USE_SELFCAL_MS"): selfcal_ms = basename+"_"+arrayname+"_selfcal.ms" continuum_ms = selfcal_ms logprint("Imaging MS {0} with array {1}".format(continuum_ms, arrayname), origin='almaimf_cont_imaging') coosys,racen,deccen = determine_phasecenter(ms=continuum_ms, field=field) phasecenter = "{0} {1}deg {2}deg".format(coosys, racen, deccen) (dra,ddec,pixscale) = list(determine_imsize(ms=continuum_ms, field=field, phasecenter=(racen,deccen), exclude_7m=exclude_7m, spw=0, pixfraction_of_fwhm=1/4.)) imsize = [dra, ddec] cellsize = ['{0:0.2f}arcsec'.format(pixscale)] * 2 contimagename = os.path.join(imaging_root, basename) + "_" + arrayname # SKIP the plot #if not os.path.exists(contimagename+".uvwave_vs_amp.png"): # # make a diagnostic plot to show the UV distribution # plotms(vis=continuum_ms, # xaxis='uvwave', # yaxis='amp', # avgchannel='1000', # minimum possible # of channels # plotfile=contimagename+".uvwave_vs_amp.png", # showlegend=True,
spw=spwstr, width=width, field=field, ) logprint("Selfcal MS is: " "{0}".format(selfcal_ms), origin='contim_selfcal') coosys, racen, deccen = determine_phasecenter(ms=selfcal_ms, field=field) phasecenter = "{0} {1}deg {2}deg".format(coosys, racen, deccen) (dra, ddec, pixscale) = list( determine_imsize(ms=selfcal_ms, field=field, phasecenter=(racen, deccen), exclude_7m=exclude_7m, only_7m=only_7m, spw='all', pixfraction_of_fwhm=1 / 4.)) imsize = [dra, ddec] cellsize = ['{0:0.2f}arcsec'.format(pixscale)] * 2 contimagename = os.path.join(imaging_root, basename) + "_" + arrayname if not os.path.exists(contimagename + ".uvwave_vs_amp.png"): # make a diagnostic plot to show the UV distribution plotms( vis=selfcal_ms, xaxis='uvwave', yaxis='amp', avgchannel='1000', # minimum possible # of channels
baselineimagename = ("{0}_{1}_spw{2}_{3}_{4}{5}".format( field, band, spw, arrayname, line_name, contsub_suffix)) lineimagename = os.path.join(imaging_root, baselineimagename) logprint("Measurement sets are: " + str(concatvis), origin='almaimf_line_imaging') coosys, racen, deccen = determine_phasecenter(ms=concatvis, field=field) phasecenter = "{0} {1}deg {2}deg".format(coosys, racen, deccen) (dra, ddec, pixscale) = list( determine_imsize( ms=concatvis, field=field, phasecenter=(racen, deccen), spw='all', pixfraction_of_fwhm=1 / 5. if only_7m else 1 / 3., exclude_7m=exclude_7m, only_7m=only_7m, min_pixscale= 0.08, # arcsec; dropped 20% on Nov 6, 2020 to handle beam size issues )) imsize = [int(dra), int(ddec)] cellsize = ['{0:0.2f}arcsec'.format(pixscale)] * 2 dirty_tclean_made_residual = False # prepare for the imaging parameters pars_key = "{0}_{1}_{2}_robust{3}{4}".format( field, band, arrayname, robust, contsub_suffix.replace(".", "_")) if (pars_key + "_" + line_name) in line_imaging_parameters:
arrayname = '7M12M' if os.getenv("USE_SELFCAL_MS"): selfcal_ms = basename + "_" + arrayname + "_selfcal.ms" continuum_ms = selfcal_ms logprint("Imaging MS {0} with array {1}".format(continuum_ms, arrayname), origin='almaimf_cont_imaging') coosys, racen, deccen = determine_phasecenter(ms=continuum_ms, field=field) phasecenter = "{0} {1}deg {2}deg".format(coosys, racen, deccen) (dra, ddec, pixscale) = list( determine_imsize(ms=continuum_ms, field=field, phasecenter=(racen, deccen), exclude_7m=exclude_7m, only_7m=only_7m, spw='all', pixfraction_of_fwhm=1 / 8. if only_7m else 1 / 4.)) imsize = [dra, ddec] cellsize = ['{0:0.2f}arcsec'.format(pixscale)] * 2 contimagename = os.path.join(imaging_root, basename) + "_" + arrayname + suffix for robust in (0, 2, -2): impars = imaging_parameters["{0}_{1}_{2}_robust{3}".format( field, band, arrayname, robust)] impars = copy.copy(impars) dirty_impars = copy.copy(impars)
else: selfcal_ms = basename+"_"+arrayname+"_selfcal.ms" logprint("Selfcal MS is: " "{0}".format(selfcal_ms), origin='contim_selfcal') assert os.path.exists(selfcal_ms) flagsum = flagdata(vis=selfcal_ms, mode='summary', uvrange='0~1m') if flagsum is not None and 'flagged' in flagsum and flagsum['flagged'] != flagsum['total']: raise ValueError("Found unflagged autocorrelation data (or at least, short baselines) in {0}".format(selfcal_ms)) coosys,racen,deccen = determine_phasecenter(ms=selfcal_ms, field=field) phasecenter = "{0} {1}deg {2}deg".format(coosys, racen, deccen) (dra,ddec,pixscale) = list(determine_imsize(ms=selfcal_ms, field=field, phasecenter=(racen,deccen), exclude_7m=exclude_7m, only_7m=only_7m, spw='all', pixfraction_of_fwhm=1/8. if only_7m else 1/4.)) imsize = [dra, ddec] cellsize = ['{0:0.2f}arcsec'.format(pixscale)] * 2 for key, value in imaging_parameters.items(): if 'cell' not in imaging_parameters[key]: imaging_parameters[key]['cell'] = cellsize if 'imsize' not in imaging_parameters[key]: imaging_parameters[key]['imsize'] = imsize contimagename = os.path.join(imaging_root, basename) + "_" + arrayname if do_bsens: # just a sanity check assert 'bsens' in contimagename
if exclude_7m: msmd.open(continuum_ms) antennae = ",".join([x for x in msmd.antennanames() if 'CM' not in x]) assert ",," not in antennae msmd.close() suffix = '12M' else: antennae = "" suffix = '7M12M' coosys, racen, deccen = determine_phasecenter(ms=continuum_ms, field=field) phasecenter = "{0} {1}deg {2}deg".format(coosys, racen, deccen) (dra, ddec, pixscale) = list( determine_imsize(ms=continuum_ms, field=field, phasecenter=(racen, deccen), spw=0, exclude_7m=exclude_7m)) #, pixfraction_of_fwhm=1/4.)) imsize = [dra, ddec] cellsize = ['{0:0.2f}arcsec'.format(pixscale)] * 2 contimagename = os.path.join(imaging_root, basename) + "_" + suffix if not os.path.exists(contimagename + ".uvwave_vs_amp.png"): # make a diagnostic plot to show the UV distribution plotms( vis=continuum_ms, xaxis='uvwave', yaxis='amp', avgchannel='1000', # minimum possible # of channels plotfile=contimagename + ".uvwave_vs_amp.png",
else: suffix = '7M12M' lineimagename = os.path.join( imaging_root, "{0}_{1}_spw{2}_{3}_lines".format(field, band, spw, suffix)) logprint(str(vis), origin='almaimf_line_imaging') coosys, racen, deccen = determine_phasecenter(ms=vis, field=field) phasecenter = "{0} {1}deg {2}deg".format(coosys, racen, deccen) (dra, ddec, pixscale) = list( determine_imsize( ms=vis[0], field=field, phasecenter=(racen, deccen), spw=0, pixfraction_of_fwhm=1 / 3., exclude_7m=exclude_7m, min_pixscale=0.1, # arcsec )) imsize = [dra, ddec] cellsize = ['{0:0.2f}arcsec'.format(pixscale)] * 2 dirty_tclean_made_residual = False # start with cube imaging if not os.path.exists(lineimagename + ".image") and not os.path.exists( lineimagename + ".residual"): # json is in unicode by default, but CASA rejects unicode
suffix = 'fullwindow_12M' else: logprint("Including 7M antennae", origin='almaimf_fullcont_imaging') suffix = 'fullwindow_7M12M' # only need to determine the phasecenter for 1 ms, under the assumption # that they will all overlap. We have to check that this assumption # never breaks down, though. coosys, racen, deccen = determine_phasecenter(ms=vis[0], field=field) phasecenter = "{0} {1}deg {2}deg".format(coosys, racen, deccen) # similarly, we should only need to determine the imsize for one MS (dra, ddec, pixscale) = list( determine_imsize(ms=vis[0], field=field, phasecenter=(racen, deccen), exclude_7m=exclude_7m, spw=0, pixfraction_of_fwhm=1 / 4.)) imsize = [dra, ddec] cellsize = ['{0:0.2f}arcsec'.format(pixscale)] * 2 contimagename = os.path.join(imaging_root, basename) + "_" + suffix for robust in (-2, 0, 2): imname = contimagename + "_robust{0}".format(robust) if not os.path.exists(imname + ".image.tt0"): tclean( vis=vis, field=field.encode(), imagename=imname,
freqname = int(reference_frequency / 1e9) logprint("SPW {spw} has rest frequency {reference_frequency} = {freqname}". format(**locals())) lineimagename = os.path.join( imaging_root, "BrickMaser_{0}_spw{1}".format( freqname, spw, )) coosys, racen, deccen = determine_phasecenter(ms=vis, field=field) phasecenter = "{0} {1}deg {2}deg".format(coosys, racen, deccen) (dra, ddec, pixscale) = determine_imsize( ms=vis, field=field, phasecenter=(racen, deccen), spw=0, pixfraction_of_fwhm=1 / 4., min_pixscale=0.1, # arcsec ) imsize = [int(dra), int(ddec)] cellsize = ['{0:0.2f}arcsec'.format(pixscale)] * 2 dirty_tclean_made_residual = False # calculate the channel width chanwidths = [] msmd.open(vis) count_spws = len(msmd.spwsforfield(field)) msmd.close() chanwidth = np.max([ np.abs(