Difference between revisions of "VLA Source Subtraction Topical Guide-CASA6.2.0"
|Line 347:||Line 347:|
'''Prior to this step, please refer to the CASA guide on multi configuration data combination as we will now be using a combined dataset of the three configurations'''
'''Prior to this step, please refer to the CASA guide on multi configuration data combination as we will now be using a combined dataset of the three configurations'''
We can also add in a point source with a canonical flux density of 1 Jy to bring back Sgr A*. We again create a component list and use [https://casadocs.readthedocs.io/en/v6.2.0/api/tt/casatasks.imaging.ft.html ft] to attach the source model. Using [https://casadocs.readthedocs.io/en/v6.2.0/api/tt/casatasks.manipulation.uvsub.html uvsub] with ''reverse=True'' will add instead of subtract the MODEL to DATA/CORRECTED. This step can be skipped when Sgr A* is not required. When the data are going to be self-calibrated, we actually recommend to not introduce an artificial source during the calibration steps as it has no phase errors imprinted. For this example, we now re-introduce Sgr A*. Once more, we start by copying the combined
We can also add in a point source with a canonical flux density of 1 Jy to bring back Sgr A*. We again create a component list and use [https://casadocs.readthedocs.io/en/v6.2.0/api/tt/casatasks.imaging.ft.html ft] to attach the source model. Using [https://casadocs.readthedocs.io/en/v6.2.0/api/tt/casatasks.manipulation.uvsub.html uvsub] with ''reverse=True'' will add instead of subtract the MODEL to DATA/CORRECTED. This step can be skipped when Sgr A* is not required. When the data are going to be self-calibrated, we actually recommend to not introduce an artificial source during the calibration steps as it has no phase errors imprinted. For this example, we now re-introduce Sgr A*. Once more, we start by copying the combined :
<pre style="background-color: lightgrey;”>
<pre style="background-color: lightgrey;”>
|Line 372:||Line 372:|
image once :
Revision as of 17:54, 14 October 2021
This tutorial was created and tested using CASA 6.2.0
Occasionally, observers may find that the emission of one source overlaps with that of nearby sources. This overlap can present analytical challenges if the nearby sources, which are the targets of interest, become obscured. These problems may arise when observing crowded fields or very bright objects. By modelling the emission of the obscuring source, or sources, one can then subtract it from the dataset and thus disentangle the emission.
In this tutorial, we will subtract the variable and unresolved point source of Sgr A*, the central supermassive black hole of our Milky Way from a dataset that was obtained in a monitoring campaign that includes observations from three different configurations of the VLA. In the final section we will show how to insert back into the dataset a model of the subtracted source, which we do using a single combined dataset. Prior to that section the user may refer to our CASA guide on data combination to understand how the data combination may be performed.
We will be removing the point source from three different S-band datasets obtained in the A, B, and C configurations, from the NRAO Monitoring of the Galactic Center/G2 Cloud Encounter. The datasets have all been calibrated and had their science targets split out.
The calibrated measurement sets can be downloaded here: https://casa.nrao.edu/Data/EVLA/SgrA/VLA-combination-SgrA-files.tar.gz (1.4GB)
As a first step download the file above, then untar:
# In a Terminal tar -xzvf VLA-combination-SgrA-files.tar.gz
This will unpack three MeasurementSets (MSs), one for each array configuration:
VLA-SgrA-Sband-Aconfig.ms VLA-SgrA-Sband-Bconfig.ms VLA-SgrA-Sband-Cconfig.ms
We will inspect the data and create separate images to better understand the image parameters such as on-source integration time, resolution, and rms.
# In a Terminal casa
As a first step, let's have a look at the 'listobs' output for the different MSs. For example, the A-configuration MS has the following structure:
# In CASA listobs(vis='VLA-SgrA-Sband-Aconfig.ms')
########################################## ##### Begin Task: listobs ##### listobs(vis="VLA-SgrA-Sband-Aconfig.ms",selectdata=True,spw="",field="",antenna="", uvrange="",timerange="",correlation="",scan="",intent="", feed="",array="",observation="",verbose=True,listfile="", listunfl=False,cachesize=50,overwrite=False) ================================================================================ MeasurementSet Name: /lustre/aoc/sciops/jott/casa/topicalguide/combination/test/VLA-SgrA-Sband-Aconfig.ms MS Version 2 ================================================================================ Observer: lorant sjouwerman Project: uid://evla/pdb/11434214 Observation: EVLA Data records: 528000 Total elapsed time = 360 seconds Observed from 31-May-2014/09:07:57.0 to 31-May-2014/09:13:57.0 (UTC) Compute subscan properties ObservationID = 0 ArrayID = 0 Date Timerange (UTC) Scan FldId FieldName nRows SpwIds Average Interval(s) ScanIntent 31-May-2014/09:07:57.0 - 09:13:57.0 63 0 J1745-2900 528000 [0,3,4,5,6,7,8,9,10,11,12,13,14,15] [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3] [OBSERVE_TARGET#UNSPECIFIED] (nRows = Total number of rows per scan) Fields: 1 ID Code Name RA Decl Epoch SrcId nRows 0 NONE J1745-2900 17:45:40.038300 -29.00.28.06899 J2000 0 528000 Spectral Windows: (14 unique spectral windows and 1 unique polarization setups) SpwID Name #Chans Frame Ch0(MHz) ChanWid(kHz) TotBW(kHz) CtrFreq(MHz) BBC Num Corrs 0 EVLA_S#A0C0#80 64 TOPO 1988.000 2000.000 128000.0 2051.0000 12 RR LL 3 EVLA_S#A0C0#83 64 TOPO 2372.000 2000.000 128000.0 2435.0000 12 RR LL 4 EVLA_S#A0C0#84 64 TOPO 2500.000 2000.000 128000.0 2563.0000 12 RR LL 5 EVLA_S#A0C0#85 64 TOPO 2628.000 2000.000 128000.0 2691.0000 12 RR LL 6 EVLA_S#A0C0#86 64 TOPO 2756.000 2000.000 128000.0 2819.0000 12 RR LL 7 EVLA_S#A0C0#87 64 TOPO 2884.000 2000.000 128000.0 2947.0000 12 RR LL 8 EVLA_S#B0D0#88 64 TOPO 2988.000 2000.000 128000.0 3051.0000 15 RR LL 9 EVLA_S#B0D0#89 64 TOPO 3116.000 2000.000 128000.0 3179.0000 15 RR LL 10 EVLA_S#B0D0#90 64 TOPO 3244.000 2000.000 128000.0 3307.0000 15 RR LL 11 EVLA_S#B0D0#91 64 TOPO 3372.000 2000.000 128000.0 3435.0000 15 RR LL 12 EVLA_S#B0D0#92 64 TOPO 3500.000 2000.000 128000.0 3563.0000 15 RR LL 13 EVLA_S#B0D0#93 64 TOPO 3628.000 2000.000 128000.0 3691.0000 15 RR LL 14 EVLA_S#B0D0#94 64 TOPO 3756.000 2000.000 128000.0 3819.0000 15 RR LL 15 EVLA_S#B0D0#95 64 TOPO 3884.000 2000.000 128000.0 3947.0000 15 RR LL Sources: 16 ID Name SpwId RestFreq(MHz) SysVel(km/s) 0 J1745-2900 0 - - 0 J1745-2900 1 - - 0 J1745-2900 2 - - 0 J1745-2900 3 - - 0 J1745-2900 4 - - 0 J1745-2900 5 - - 0 J1745-2900 6 - - 0 J1745-2900 7 - - 0 J1745-2900 8 - - 0 J1745-2900 9 - - 0 J1745-2900 10 - - 0 J1745-2900 11 - - 0 J1745-2900 12 - - 0 J1745-2900 13 - - 0 J1745-2900 14 - - 0 J1745-2900 15 - - Antennas: 26: ID Name Station Diam. Long. Lat. Offset from array center (m) ITRF Geocentric coordinates (m) East North Elevation x y z 0 ea01 N32 25.0 m -220.127.116.11 +18.104.22.168 -441.7442 4689.9683 -16.9356 -1600781.062100 -5039347.430600 3558761.526300 1 ea02 N64 25.0 m -22.214.171.124 +34.02.20.5 -1382.3632 15410.1417 -40.6233 -1599855.668100 -5033332.388100 3567636.626500 2 ea03 E64 25.0 m -107.27.00.1 +33.50.06.7 15507.5911 -7263.7210 67.2006 -1587600.203200 -5050575.869700 3548885.404900 3 ea04 E24 25.0 m -126.96.36.199 +188.8.131.52 2858.1804 -1349.1324 13.7306 -1598663.094300 -5043581.396100 3553767.023200 4 ea05 W08 25.0 m -184.108.40.206 +220.127.116.11 -432.1181 -272.1470 -1.5057 -1601614.092200 -5042001.651900 3554652.509800 5 ea06 N56 25.0 m -18.104.22.168 +34.00.38.4 -1105.2076 12254.3155 -34.2423 -1600128.382500 -5035104.142000 3565024.679400 6 ea07 N48 25.0 m -22.214.171.124 +33.59.06.2 -855.2644 9405.9610 -25.9303 -1600374.875000 -5036704.207500 3562667.885900 7 ea08 N16 25.0 m -126.96.36.199 +188.8.131.52 -155.8517 1426.6442 -9.3792 -1601061.957400 -5041175.883000 3556058.040000 8 ea09 W64 25.0 m -184.108.40.206 +220.127.116.11 -14240.7638 -9606.2696 17.1066 -1616361.587500 -5042770.516600 3546911.446900 9 ea10 E40 25.0 m -18.104.22.168 +22.214.171.124 6908.8305 -3240.7192 39.0202 -1595124.923100 -5045829.467200 3552210.703600 10 ea11 W24 25.0 m -126.96.36.199 +33.53.04.0 -2673.3552 -1784.5888 10.4757 -1604008.749300 -5042135.808900 3553403.716000 11 ea12 N09 25.0 m -107.37.07.8 +188.8.131.52 -77.4204 530.6453 -5.5755 -1601139.471200 -5041679.039700 3555316.553900 12 ea13 W56 25.0 m -184.108.40.206 +220.127.116.11 -11333.2004 -7637.6771 15.3707 -1613255.393400 -5042613.099800 3548545.915000 13 ea14 E08 25.0 m -18.104.22.168 +22.214.171.124 407.8298 -206.0320 -3.2196 -1600801.931000 -5042219.386500 3554706.431200 14 ea15 E56 25.0 m -107.29.04.1 +126.96.36.199 12327.6313 -5774.7469 42.6153 -1590380.611000 -5048810.243300 3550108.432300 15 ea17 E32 25.0 m -107.34.01.5 +188.8.131.52 4701.6Difference between revisions of "VLA Data Combination-CASA6.2.0" Jump to navigation Jump to search Revision as of 17:03, 9 August 2021 (edit) Jott (talk | contribs) (→Removal of the variable Sgr A* point source) ← Older edit Latest revision as of 17:18, 9 August 2021 (edit) (undo) Jott (talk | contribs) (→Removal of the variable Sgr A* point source) 413 -2209.7152 25.2066 -1597053.135800 -5044604.681200 3553058.995000 16 ea18 E72 25.0 m -184.108.40.206 +220.127.116.11 19041.8717 -8769.2047 4.7262 -1584460.871200 -5052385.599800 3547600.000100 17 ea19 W16 25.0 m -18.104.22.168 +22.214.171.124 -1348.7109 -890.6216 1.3005 -1602592.853600 -5042054.996800 3554140.704800 18 ea20 N40 25.0 m -126.96.36.199 +188.8.131.52 -633.6074 6878.6018 -20.7693 -1600592.756000 -5038121.357300 3560574.853200 19 ea21 E48 25.0 m -184.108.40.206 +220.127.116.11 9456.6097 -4431.6564 37.9341 -1592894.077600 -5047229.138200 3551221.206000 20 ea22 N24 25.0 m -18.104.22.168 +22.214.171.124 -290.3752 2961.8594 -12.2389 -1600930.087800 -5040316.396400 3557330.387200 21 ea23 W72 25.0 m -126.96.36.199 +188.8.131.52 -17419.4740 -11760.2758 14.9538 -1619757.312900 -5042937.664400 3545120.392300 22 ea24 W48 25.0 m -184.108.40.206 +220.127.116.11 -8707.9403 -5861.7877 15.5282 -1610451.925800 -5042471.125800 3550021.055800 23 ea25 W32 25.0 m -18.104.22.168 +22.214.171.124 -4359.4392 -2923.1244 11.7721 -1605808.634900 -5042230.089000 3552459.209500 24 ea26 W40 25.0 m -126.96.36.199 +188.8.131.52 -6377.9880 -4286.7769 8.2038 -1607962.463800 -5042338.190100 3551324.947500 25 ea28 E16 25.0 m -107.36.09.8 +184.108.40.206 1410.0378 -673.4764 -0.7821 -1599926.107500 -5042772.979700 3554319.790400 ##### End Task: listobs ##### ##########################################
We see that the target source for A-configuration is J1745-2900 (Sgr A*) (the target source has been split out to remove all calibrators). The on-source integration time amounts to only six minutes and the 14 spectral windows span a frequency range from 1.988 to 4.012GHz. Inspection of the other array configuration files show almost identical setups.
To better understand the data, let's check the uv-coverage of each of the three datasets:
# In CASA # A-config: plotms(vis='VLA-SgrA-Sband-Aconfig.ms',xaxis='Uwave',yaxis='Vwave')
# In CASA # B-config plotms(vis='VLA-SgrA-Sband-Bconfig.ms',xaxis='Uwave',yaxis='Vwave')
# In CASA # C-config: plotms(vis='VLA-SgrA-Sband-Cconfig.ms',xaxis='Uwave',yaxis='Vwave')
The uv-coverage plots are shown in Fig. 1a-c. The u:v aspect ratio of each uv-coverage is high as Sgr A* is a very southern source. We also see that the longest baseline in each array differs by about a factor of 3, as expected, between the VLA A, B, and C configurations.
The next step is to create images we will then model and subtract the point source from.
To keep things simple, we will use common cell sizes of 0.1 arcsec, which samples well the A-configuration beam and oversamples the more compact configurations. We create images of 1280 pixels on each side, and we will tclean 1000 iterations (see the VLA CASA imaging guide for more sophisticated imaging parameter choices). :
# In CASA # A-config: tclean(vis='VLA-SgrA-Sband-Aconfig.ms', imagename='SgrA-Aonly',field='J1745-2900', specmode='mfs',cell='0.1arcsec',imsize=[1280,1280],niter=1000,weighting='briggs',robust=0)
# In CASA # B-config tclean(vis='VLA-SgrA-Sband-Bconfig.ms', imagename='SgrA-Bonly',field='J1745-2900', specmode='mfs',cell='0.1arcsec',imsize=[1280,1280],niter=1000,weighting='briggs',robust=0)
# In CASA # C-config: tclean(vis='VLA-SgrA-Sband-Cconfig.ms', imagename='SgrA-Conly',field='J1745-2900', specmode='mfs',cell='0.1arcsec',imsize=[1280,1280],niter=1000,weighting='briggs',robust=0)
The clean images, shown in Fig. 2a-c, give a first impression of the data.
The basic parameters of the individual images can be checked through imhead for the spatial resolution and determining the rms when checking the statistics of empty areas within the viewer. The central point source, Sgr A*, is variable and we see this reflected in the flux density values from the images taken in the three different configurations, which were separated in observing time by several months (get the peak flux values from within the viewer or use the imstat task):
A-configuration: synthesized beam 1.40" x 0.40"; rms ~0.8mJy; peak flux density of Sgr A* 0.713 Jy/beam B-configuration: synthesized beam 4.12" x 1.31"; rms ~0.7mJy; peak flux density of Sgr A* 0.691 Jy/beam C-configuration: synthesized beam 11.18" x 3.98"; rms ~0.6mJy; peak flux density of Sgr A* 1.314 Jy/beam
Removal of the variable Sgr A* point source
We have seen in the initial images that Sgr A* is a variable source. The variability would introduces problems if a user wished to combine the datasets as the visibilities of the different sessions will reflect these variations. Cleaning would be difficult in such a situation as flux levels at different uv points (times and baselines) would not be consistent in their portion for the central point source. Therefore, we will remove the unresolved Sgr A* in each dataset. For those who are interested in having Sgr A* back in the image, we will later show how to re-introduce a nominal point source with a flux of 1Jy. It is perfectly fine, however, to image without the artificial source.
To start, we create a component list for each dataset that includes only a point source at the position of Sgr A*. To do so, we first need to find out the position of the central point source. This is performed by fitting a point source (2d-Gaussian function) to the A-configuration data, which has the largest angular resolution. We use imfit:
# In CASA imfit(imagename='SgrA-Aonly.image',box='630,620,650,660')
The output of imfit into the logger is as follows:
Fit on SgrA-Aonly.image component 0 Position --- --- ra: 17:45:40.038545 +/- 0.000057 s (0.000748 arcsec along great circle) --- dec: -029.00.28.051094 +/- 0.004412 arcsec --- ra: 639.9679 +/- 0.0075 pixels --- dec: 640.1790 +/- 0.0441 pixels
We will be using RA (J2000) =17h45m40.039s and DEC (J2000) = -29d00'28.05" for the central position of Sgr A*. We will use these coordinates for all three configurations, although it might be advisable to fit each dataset separately in case the peak may slightly shift. In this case, a single position works for all of our three data sets.
The component list will be inserted as a MODEL column into the respective MS via ft. Task uvsub will then be used to subtract the point source model from the CORRECTED data column. Since there's no CORRECTED column to start with, uvsub will initially copy the DATA column to the CORRECTED column, then subtract. Note that running uvsub twice will oversubtract; we recommend to create backup copies of the previous datasets before subtracting Sgr A*:
# In a Terminal cp -r VLA-SgrA-Sband-Aconfig.ms VLA-SgrA-Sband-Aconfig-sub.ms cp -r VLA-SgrA-Sband-Bconfig.ms VLA-SgrA-Sband-Bconfig-sub.ms cp -r VLA-SgrA-Sband-Cconfig.ms VLA-SgrA-Sband-Cconfig-sub.ms
Let's start with the A-configuration data and create a component list of a point source with a flux of 0.712 Jy at a position of RA (J2000) =17h45m40.038547s and DEC (J2000) = -29d00'28.051226" (more examples of component lists are provided in the CASA guide Create a Component List for Selfcal):
# In CASA cl.addcomponent(flux=0.713, fluxunit='Jy',shape='point', dir='J2000 17:45:40.039 -29.00.28.05') cl.rename('component-SgrA-A.cl') cl.close()
(We have used the CASA coordinate convention with colons for h:m:s and dots for d.m.s.)
The component list is now stored in the file 'component-SgrA-A.cl' and we will use it to populate the MODEL column via ft:
# In CASA ft(vis='VLA-SgrA-Sband-Aconfig-sub.ms', complist='component-SgrA-A.cl', usescratch=True)
At this step the MODEL column is created.
Finally we will subtract the MODEL from the DATA/CORRECTED_DATA with uvsub. This task will also create CORRECTED as it does not exist yet:
# In CASA uvsub(vis='VLA-SgrA-Sband-Aconfig-sub.ms')
Note that to revert back to the original state, you can use task clearcal to reset the MODEL column and to set CORRECTED to be identical with DATA (thus undoing the source subtraction).
uvsub in CASA 6.2.0 has a bug and will show an error message like 'name 'vis' is not defined'. The task still appears to work correctly though, just the history entry seems to be compromised.
Let's repeat the steps for B-configuration, now using a flux of 0.691 Jy. Although a separate fit would be even better, the subtraction also works well when using the A-configuration position:
# In CASA cl.addcomponent(flux=0.691, fluxunit='Jy',shape='point', dir='J2000 17:45:40.039 -29.00.28.05') cl.rename('component-SgrA-B.cl') cl.close() # ft(vis='VLA-SgrA-Sband-Bconfig-sub.ms', complist='component-SgrA-B.cl', usescratch=True) # uvsub(vis='VLA-SgrA-Sband-Bconfig-sub.ms')
And for C-configuration we subtract a point source of 1.314 Jy (note that the central flux includes some extended emission, but is still dominated by Sgr A*):
# In CASA cl.addcomponent(flux=1.314, fluxunit='Jy',shape='point', dir='J2000 17:45:40.039 -29.00.28.05') cl.rename('component-SgrA-C.cl') cl.close() # ft(vis='VLA-SgrA-Sband-Cconfig-sub.ms', complist='component-SgrA-C.cl', usescratch=True) # uvsub(vis='VLA-SgrA-Sband-Cconfig-sub.ms')
Let's image the three data sets with Sgr A* removed. We will run tclean, but since the point source is removed, we only do 500 iterations for A and B configurations, and 200 iterations for the C configuration data to avoid cleaning into the noise:
# In CASA # A-config: tclean(vis='VLA-SgrA-Sband-Aconfig-sub.ms', imagename='SgrA-Aonly-noPNT',field='J1745-2900', specmode='mfs',cell='0.1arcsec',imsize=[1280,1280],niter=500,weighting='briggs',robust=0)
# In CASA # B-config: tclean(vis='VLA-SgrA-Sband-Bconfig-sub.ms', imagename='SgrA-Bonly-noPNT',field='J1745-2900', specmode='mfs',cell='0.1arcsec',imsize=[1280,1280],niter=500,weighting='briggs',robust=0)
# In CASA # C-config: tclean(vis='VLA-SgrA-Sband-Cconfig-sub.ms', imagename='SgrA-Conly-noPNT',field='J1745-2900', specmode='mfs',cell='0.1arcsec',imsize=[1280,1280],niter=200,weighting='briggs',robust=0)
As expected, the images without the point sources as shown in Fig. 3a-c look similar to those in Fig. 2a-c. but with the central point source removed. Since we cleaned a given number of iterations, some differences are visible, particularly for C-configuration. This is expected.
Inserting an artificial Point Source for Sgr A*
Prior to this step, please refer to the CASA guide on multi configuration data combination as we will now be using a combined dataset of the three configurations
We can also add in a point source with a canonical flux density of 1 Jy to bring back Sgr A*. We again create a component list and use ft to attach the source model. Using uvsub with reverse=True will add instead of subtract the MODEL to DATA/CORRECTED. This step can be skipped when Sgr A* is not required. When the data are going to be self-calibrated, we actually recommend to not introduce an artificial source during the calibration steps as it has no phase errors imprinted. For this example, we now re-introduce Sgr A*. Once more, we start by copying the combined dataset:
# In a Terminal cp -r VLA-SgrA-Sband-statwt-combined.ms VLA-SgrA-Sband-statwt-combined-addPNT.ms
Now we create a component list with a 1 Jy point source at the previously derived position of Sgr A*.
# In CASA cl.addcomponent(flux=1, fluxunit='Jy',shape='point', dir='J2000 17:45:40.039 -29.00.28.05') cl.rename('component-SgrA.cl') cl.close()
# In CASA ft(vis='VLA-SgrA-Sband-statwt-combined-addPNT.ms', complist='component-SgrA.cl', usescratch=True) # uvsub(vis='VLA-SgrA-Sband-statwt-combined-addPNT.ms',reverse=True)
After inserting Sgr A* back into the dataset we image the measurement set once again:
# In CASA tclean(vis=['VLA-SgrA-Sband-statwt-combined-addPNT.ms'], imagename='GC-statwt-all-addPNT',field='J1745-2900',specmode='mfs',cell='0.1arcsec',imsize=[1280,1280],niter=5000, threshold='5mJy',weighting='briggs',robust=0)
In Fig. 9 we show the resulting images on the same scales as in Fig. 8a-b. As expected the main difference is the added point source but some differences due to the tclean algorithm are also visible. Again, one can improve the images as described above.
Last checked on CASA Version 6.2.0.