Scripts for Step 3 - Self-calibration of the continuum:
step3_continuum_selfcal.py # main script
dictionary_data.py # loads data_dict
selfcal_utils.py # selfcal functions
Self-Calibration of SB+LB Data#
Here, we self-calibrate the long-baseline and short-baseline continuum data together (phase-aligned and concatenated).
Summary of path through self-calibration#
Additional explanation of parameter choices that are different from the SB-only self-cal
In the gaincal
task:
solint
: Previously in the SB-only self-cal, we usedsolint
s that were nice fractions of the scan lengths. This wasn’t so possible for the LB+SB self-cal, because the LB scan lengths weren’t as consistent. Instead, we reverted to the DSHARP/MAPSsolint
sequence.combine
: This time it wasn’t possible to avoidcombine='spw'
without sacrificing a lot of data. What constitutes “a lot” is subjective, but my sense was that there were too many printouts of flagged solutions (see the the script).refant
: Again selected using the refant lists generated by the pipelinehif_refant
task, shown in the weblog. This time the antenna rankings changed between the different executions, so I calculated an “overall ranking” by multiplying the rank of each antenna in each execution and taking the four with the smallest overall rank.minSNR
: Same as the SB-only self-cal. Perhaps it’s worth noting though that DSHARP decreased theminSNR
to1.5
for their SB+LB self-cal.num flagged solns: There are a lot more flagged solutions in the LB+SB self-cal than there were in the SB-only self-cal, but (!) we also have a lot more data in the SB+LB self-cal.
In the applycal
task:
applymode
: Here we are trusting the wisdom of DSHARP and copying them (they switch toapplymode='calonly'
for the SB+LB self-cal). This applies the calibrations, but does NOT flag the data where no calibration solutions are found. This means we do not lose data (so our beam size does not increase), but we also bring with data that has not been calibrated. CASA warns to use this with extreme caution.spwmap
: Since thegaincal
combine
includes SPW in all rounds, we need aspwmap
in all rounds.
In the tclean
task:
robust
: In my first SB+LB self-cal venture, I usedrobust=0.5
as before, but there were a lot of flagged solutions. Ryan suggested we can play with therobust
parameter. Getting high SNR is important. We can image with a lowerrobust
later for our final images if we want. So for the self-cal, we increaserobust
to1.0
.
🐛 Error in Calibrater::solve: Mismatch between Solution frequencies and existing CalTable frequencies
I encountered this (documented) error in the gaincal
task using CASA 6.2.1:
Current CalTable nchan= 1
Current CalTable freq = [224698702714]
Current Solution nchan= 1
Current Solution freq = [224698702714]
Diff = [6.103515625e-05]
2022-12-08 21:08:52 SEVERE Calibrater::solve Caught exception: Mismatch between Solution frequencies and existing CalTable frequencies for spw=35
2022-12-08 21:08:52 SEVERE Exception Reported: Error in Calibrater::solve.
2022-12-08 21:08:53 SEVERE gaincal::::casa Task gaincal raised an exception of class RuntimeError with the following message: Error in Calibrater::solve.
2022-12-08 21:08:53 SEVERE gaincal::::casa Exception Reported: Error in gaincal: Error in Calibrater::solve.
To avoid this bug, it was necessary to switch to CASA 6.4.1 at this point in the reduction process.
Achieved phase solutions as a function of time and antenna (the calibration tables)#
All of SB EB1, SB EB2, LB EB1, LB EB2, LB EB3, LB EB4, LB EB5 and LB EB6 were self-calibrated together. The following plot shows the gain phase solutions as a function of time for a single EB and a single self-cal round.
Images made after each round#
The following movie shows the continuum image achieved after each round of self-cal (with a large colour bar stretch to exaggerate faint emission).