Antennae Band7 - Imaging for CASA 3.3

From CASA Guides
Jump to navigationJump to search


This section of the AntennaeBand7 CASA Guide cover the imaging of the continuum and spectral line data. It begins where the Antennae Band7 - Calibration section left off. If you completed the Calibration section of the guide, then you may want to continue with the calibrated data sets and If you did not complete the Calibration section, then you can download the calibrated uv-data from the region closest to your location:

North America


East Asia

Once there, download the file 'Antennae_Band7_CalibratedData.tgz' to obtain the calibrated uvdata.

Once the download has finished, unpack the file:

# In a terminal outside CASA
tar -xvzf Antennae_Band7_CalibratedData.tgz

cd Antennae_Band7_CalibratedData

# Start CASA

After that, you should have and in your working directory.

Continuum map

We will make 345 GHz continuum images for the two regions covered by the mosaics. We use the task clean over the channels that are free of the line emission. The line-free channels are found by plotting the average spectrum. We find the CO(3-2) line from channels 50 to 100 in the southern mosaic, and from 70 to 100 in the northern mosaic.

Southern mosaic: Amplitude vs. channel. The CO(3-2) line is seen from 50 to 100
Northern mosaic: Amplitude vs. channel. The CO(3-2) line is seen from 70 to 100

The avgtime is set to a large value so that it averages over all the integrations, and avgscan is set to allow averaging of the different scans.

Next we create the continuum emission map. We use the default non-interactive mode and niter=0 as a first step to see if there is any continuum emission. The resolution in Band 7 for the extended configuration is approximately 1 arcsec. We therefore choose a cell size of 0.2 arcsec to oversample the beam sufficiently (at least three times). Note that we need to delete any previous clean output images before proceeding with the clean command, otherwise CASA will clean the data further instead of producing new output images.

For the northern mosaic:

345 GHz continuum image of the northern mosaic
345 GHz continuum image of the southern mosaic
os.system('rm -rf Antennae_North.Cont.Clean*')

     niter=1000, threshold='0.5mJy')

The input parameters include:

  • vis='': The calibrated dataset on the science target
  • imagename='Antennae_North.Cont.Clean': The base name of the output images
  • phasecenter='12': the source id of the mosaic.
  • spw='0:0~50,0:120~164': To specify only the line-free channels
  • mode='mfs': Multi-Frequency Synthesis: The default mode, which produces one image from all the specified data combined
  • niter=1000: Maximum number of clean iterations
  • theshold='0.5mJy': Stop cleaning if the maximum residual is below this value (~1.5 times the rms noise)
  • imsize=500, cell='0.2arcsec': Image size in pixels, chosen to cover the mosaic, and the cell size per pixel in arcsec to properly sample the synthesized beam (at least three times).

For the southern mosaic we modify the phase center and the line-free channels:

os.system('rm -rf Antennae_South.Cont.Clean*')

     niter=1000, threshold='0.5mJy')

The Half Power Beam Width (HPBW) of the elliptical synthesized beam is:

  • Northern mosaic: 1.28" times 0.66", with a position angle (PA) equal to 86 deg.
  • Southern mosaic: 1.15" times 0.66", and PA equal to 68 deg.

We will determine some statistics for the images using the task imstat:


The peak flux density of the image is ~4.4 and 2.9 mJy, the rms ~ 0.3 mJy, and the dynamic ranges are >=10.

Line cubes of the galaxy

Before making line emission data cube, we will subtract the continuum emission using the task uvcontsub. This task makes fits to the line free channels and subtracts the emission in the uv-domain.

os.system('rm -rf*')
uvcontsub(vis = '',
	  fitspw='0:20~53;71~120,1:70~120,2:20~120,3:20~120', solint ='inf', 
	  fitorder = 1, fitmode = 'subtract')
  • fitspw='0:20~53;71~120,1:70~120,2:20~120,3:20~120': To specify the spectral windows and channels to be used in the fit for the continuum. We avoid the spectral regions that include the CO and CN emission lines.
  • solint ='inf': Timescale for the fit. Here we are electing to have one fit per scan
  • fitorder = 1: We will fit a first-order polynomial to the continuum
  • fitmode = 'subtract': Subtract the continuum and store the result in the CORRECTED data column

Next, we will clean the CO (3-2) line emission:

os.system('rm -rf Antennae_South.Line*')

     niter=10000, threshold='20.0mJy',
One of the channels in the interactive clean, showing CO emission. The white region indicates the clean mask

Notable parameters include:

  • spw='0:38~87': To specify the CO (1-0) line emission alone
  • mode='channel': To produce an image with different planes specified by the "start", "nchan", and "width" parameters
  • start='', nchan=31, width='': To include all 31 channels specified by spw, with no channel averaging
  • threshold='5 mJy': Stop cleaning if the maximum residual is below this value.
  • outframe='LSRK': Shift the output reference frame to the local standard of rest
  • restfreq='115.271201800GHz': The rest frequency of the CO line
  • mask=[53,50,87,83]: The region in which to fit clean components (i.e., the source)
  • niter=500: Maximum number of clean iterations
  • interactive=T: To do interactive cleaning with the viewer GUI
  • psfmode='hogbom': The method used to calculated the PSF during minor clean cycles. Hogbom is a good choice for poorly-sample uv-planes

Note that you can also find the frequencies of many spectral lines inside CASA. For example, the following commands will search for CO emission lines in ALMA band 3, and output the results to the logger:

os.system('rm -rf myresults.tbl')
slsearch(outfile='myresults.tbl', freqrange = [84,116], species=['COv=0'])'myresults.tbl')

Or define the parameter restfreq directly using:

# In CASA'myresults.tbl') 

Using interactive=T the viewer will open when it is ready to start an interactive clean. Step through to the channels to see how extended the emission is. Then either use "All Channels" to define the same clean mask for all channels, or select "This Channel" to select different masks for each channel. Once you have defined a polygon region, you need to double click inside it to save the mask region. You can use the "tape deck" to step through the channels again and check that the emission in all channels fits within the mask(s) you have created. Note that the mask we defined above does not include all emission -- you will have to change the mask interactively! To continue with clean use the "Next action" buttons in the green area on the Viewer Display GUI: The red X will stop clean where you are; the blue arrow will stop the interactive part of clean, but continue to clean non-interactively until reaching the stopping niter or threshold (whichever comes first); and the green arrow will clean until it reaches the "iterations" parameter on the left side of the green area.

When the cleaning has finished, you may want to inspect the resulting cube and and use the tape deck to play the cube as a movie. Use Spectral Profile in the Tools tab to make an integrated spectrum of the CO(1-0) emission.


The rms noise level in the cube is ~0.85 mJy per channel in the line-free channels. The ALMA sensitivity calculator gives a noise level of 0.80 mJy using 7 antennas, an integration time of 3.5 hours, and a bandwidth of 32.25 MHz (this is twice the channel separation because on-line Hanning smoothing was applied.)

Next, we make the moment maps of the CO (1-0) emission using the task immoments:

os.system('rm -rf result-ngc3256_CO1-0.mom0*')
immoments(imagename='result-ngc3256_line_CO.image', moments=[0],
	chans='15~34', box='38,38,90,90', axis='spectral',
	includepix=[0.02, 10000], outfile='result-ngc3256_CO1-0.mom0')
os.system('rm -rf result-ngc3256_CO1-0.mom1*')
immoments(imagename='result-ngc3256_line_CO.image', moments=[1],
	chans='15~34', box='38,38,90,90', axis='spectral',
	includepix=[0.045, 10000], outfile='result-ngc3256_CO1-0.mom1')
The CO(1-0) velocity field of NGC3256, with contours of the total line emission map overlaid
The CO(1-0) "moment 0" total intensity maps of NGC3256, with contours of the velocity field overlaid
The CO(1-0) "moment 2" dispersion map of NGC3256
  • moments=[x]: To specify that we wish to make the xth moment map. The 0th moment map gives integrated emission and the 1st gives the intensity-weighted velocity field
  • chans='15~34': These are the channels that show line emission and therefore the ones we want to use for the moment map
  • box='38,38,90,90': To select a box region around the emission so as to not include any regions away from the galaxy
  • axis='spectral': Indicates the moment axis; in this case, 'spectral'
  • includepix=[0.045, 10000]: To select which pixel values in the cube to include in the moments. We find these values by looking for the faintest believable emission in the cube
  • outfile='result-ngc3256_CO1-0.mom0': The output image name

Here, we have chosen to run the immoments separately for the total intensity map and the velocity field because we want to use different thresholds for flux inclusion. To find the lower limit in includepix, open the cube in the viewer, and identify the lowest believable flux levels in the cube.

We also make a velocity dispersion map of the CO(1-0) gas, using moments=[2]

os.system('rm -rf result-ngc3256_CO1-0.mom2*')
immoments(imagename='result-ngc3256_line_CO.image', moments=[2],
	chans='5~44', box='38,38,90,90', axis='spectral',
	includepix=[0.035, 10000], outfile='result-ngc3256_CO1-0.mom2')

Now we can make images of the CO(1-0) emission. First create a colour image of the velocity field, with contours of the total line emission overlaid:

imview(contour={'file': 'result-ngc3256_CO1-0.mom0','levels': 
       raster={'file': 'result-ngc3256_CO1-0.mom1','range': [2630,2920],
       'colorwedge':T, 'colormap': 'Rainbow 2'}, out='result-CO_velfield.png')

Or, make a colour image of the integrated CO(1-0) line emission, with contours of the velocity field overlaid:

imview(contour={'file': 'result-ngc3256_CO1-0.mom1','levels': 
        raster={'file': 'result-ngc3256_CO1-0.mom0', 'colorwedge':T,
        'colormap': 'Rainbow 2','scaling':-1.0,'range': [0.8,250]}, 

And make a greyscale image of the CO(1-0) gas velocity dispersion

imview(contour={'file': 'result-ngc3256_CO1-0.mom2','levels': 
        raster={'file': 'result-ngc3256_CO1-0.mom2', 'colorwedge':T,
        'colormap': 'Greyscale 1','scaling':-1.0,'range': [0,74]}, 
Channel maps of six central channels, with contours of the total continuum map overlaid

Also, using the viewer, it is possible to make channel maps. The following image shows six velocity channels, with contours indicating the 3mm continuum emission.

Next, we clean the CN line emission. There are two CN lines, the N=1-0, J=3/2-1/2 line at higher frequency and the N=1-0, J=1/2-1/2 line at lower frequency. We start with the higher frequency line emission. Again, we have set a mask here, but the best results are obtained if an interactive clean mask is defined.

os.system('rm -rf result-ngc3256_line_CNhi.*')
clean(vis='', imagename='result-ngc3256_line_CNhi',
	outframe='LSRK', spw='1:50~76', start='', nchan=27, width='',
	restfreq='113.48812GHz', selectdata=T, mode='channel',
	niter=500, gain=0.1, psfmode='hogbom', mask=[53,50,87,83],
	interactive=True, imsize=128, cell='1arcsec',
	weighting='briggs', robust=0.0, threshold='2mJy')

Make the moment maps of the higher frequency CN line emission:

os.system('rm -rf*')
immoments( imagename='result-ngc3256_line_CNhi.image', moments=[0,1],
	chans='5~18', axis='spectral', box='38,38,90,90',
	includepix=[0.005, 10000], outfile='')

Make images of the higher frequency CN line emission:

imview(contour={'file': '','range': []}, 
        raster={'file': '',
        'range': [2630,2920],'colorwedge':T,
        'colormap': 'Rainbow 2'}, out='result-CNhi_velfield.png')
imview(contour={'file': '','levels': 
       raster={'file': '','colorwedge':T,
       'colormap': 'Rainbow 2'}, out='result-CNhi_map.png')

And finally, clean the CN (N=1-0, J=1/2-1/2) emission:

os.system('rm -rf result-ngc3256_line_CNlo.*')
clean( vis='', imagename='result-ngc3256_line_CNlo',
	outframe='LSRK', spw='1:29~54', start='', nchan=26, width='',
	restfreq='113.17049GHz', selectdata=T, mode='channel',
	niter=300, gain=0.1, psfmode='hogbom', mask=[53,50,87,83],
	interactive=True, imsize=128, cell='1arcsec',
	weighting='briggs', robust=0.0, threshold='2mJy')

Make the moment maps of the lower frequency CN emission

os.system('rm -rf*')
immoments( imagename='result-ngc3256_line_CNlo.image', moments=[0,1],
	chans='8~18', axis='spectral', box='38,38,90,90',
	includepix=[0.003, 10000], outfile='')

Make images of the low frequency CN emission

imview(contour={'file': '','range': []}, 
        raster={'file': '',
        'range': [2630,2920],'colorwedge':T,
        'colormap': 'Rainbow 2'}, out='result-CNlo_velfield.png')
imview(contour={'file': '','levels': 
        raster={'file': '','colorwedge':T,
        'colormap': 'Rainbow 2'}, out='result-CNlo_map.png')

This composite shows the CN maps and velocity fields.

And finally we show the channel maps of all three emission lines overlaid. The 'hot metal' colours represent the higher frequency CN line, the green contours are the CO line, and the cyan contours are the lower frequency CN line.

Channel maps of all three lines

Daniel Espada 12:00 UT, 14 July 2011