To create a script of the Python code on this page see Extracting scripts from these tutorials.
The simalma task
ALMA consists of the high resolution array of 12m antennas, the ALMA Compact Array of 7m antennas, and Total Power measurements using 12m antennas. One can simulate all of these in CASA.
One could use simobserve generate simulated observations for each component separately, and then combine the Measurement Sets in simanalyze. This technique is general and can be used to simulate observations using multiple 12 m array configurations, as well. Total power observations can be simulated either in an independent run of simobserve, or along with one of the interferometric simulations. Note that if you simulate total power and an interferometric observation ssimultaneously with simobserve, they must have the same set of pointing centers and the same integration and total time, which is probably not realistic. (For example it is generally recommended to observe a larger area by 1/2 primary beam in total power mode to combine with a 12 m ALMA mosaic).
This "manual" method is described in the ACA_Simulation_(CASA_4.1) guide.
New in 4.1 is the simalma task, which takes one set of parameters describing the region of the sky to observe, and makes the appropriate calls to simobserve and simanalyze for the user. How this works is described here.
As of CASA 4.1, ALMA is still optimizing the algorithms for combining total power and interferometric data, so the parameters used here are likely to change.
Set simalma as current task
Reset all parameters to default, and then set the project name to m51
# Set simalma to default parameters default("simalma") # Our project name will be m51, and all simulation products will be placed in a subdirectory m51/ project="m51"
Specify sky model image
We'll use an Halpha image of M51 as a model of the sky, for this example. The curl command will copy the file from a URL and rename it.
# Model sky = Halpha image of M51 os.system('curl http://casaguides.nrao.edu/images/3/3f/M51ha.fits.txt -f -o M51ha.fits') skymodel = "M51ha.fits"
Note that simalma will not modify your original input image. Rather, it will make a copy m51/m51.skymodel.
We will override most of the parameters in the Halpha FITS image to make the image more suitable to a sub-millimeter ALMA observation. We will:
- place the source in the southern hemisphere with the indirection parameter,
- set the pixel size to 0.1arcsec, to simulate an observation of a galaxy that is smaller in angular size. (M51 itself would require a quite large mosaic, and in any case we'd like the input model pixels to be significantly smaller than the synthesized beam.)
- set the peak brightness to 0.004 Jy/pixel
- set the frequency to 330GHz, and since it's a 2D image we'll set the single "channel" width to be 50MHz, and peak brightness of 0.004 Jy/pixel. These parameters are plausible for observing a sub-mm emission line in a galaxy.
# Set model image parameters: indirection="J2000 23h59m59.96s -34d59m59.50s" incell="0.1arcsec" inbright="0.004" incenter="330.076GHz" inwidth="50MHz"
Set up Observing Parameters
Based on the Cycle 1 capabilities, we would like to use array configuration number 3 which affords ~0.5 arcsec resolution:
We'll observe for a couple of hours (this is the 12m array observing time):
Following the Cycle 1 convention, simalma will observe 3 times longer with the 7m array and total power dishes.
In nominal weather:
To cover the source as we've rescaled the pixel size, we'll need a 1 arcmin mosaic, and we'll let simalma calculate the pointings for us:
What does it do?
The 12m array observation is simulated first -- simalma simply calls simobserve with your input parameters. simobserve generates a graphic about the elevation and showing the dirty synthesized beam:
The 12m-only visibilities are not currently imaged separately from the 7m visibilities, but this is an expected upgrade in a future release.
Simulate 12m total power observation
Next we'll simulate a total power raster map of the same area, on a square grid. CASA simulation tools can not simulate true on-the-fly mapping (with smearing on timescales smaller than an integration time), but a square grid with a short integration time will provide a very accurate approximation.
By virtue of CASA's global parameters, we already have project and image world coordinate system parameters set correctly.
We need to change the mapping parameters to specify a square region a bit larger than the interferometric map.
integration = "10s" mapsize = "1.3arcmin" maptype = "square"
We'll observe on a different day. This doesn't really matter, but if you choose to simulate two different 12m ALMA configurations and combine them, you will have issues concatenating the datasets if they are simulated on the same day with the same antenna names. So, it's a good habit to change the day.
obsmode = "sd" sdantlist = "aca.tp.cfg" sdant = 0 refdate = "2012/12/01" totaltime = "2h"
Run simobserve, displaying graphics to screen and to files.
Simulate 7m ACA observation
Next we'll add an ACA mosaic, with its larger primary beam.
integration = "10s" mapsize = "1arcmin" maptype = "hex" pointingspacing = "15arcsec"
We can specify an integral number of times to repeat the mosaic by setting totaltime to an integer string without units.
obsmode = "int" refdate = "2012/12/02" antennalist = "aca.i.cfg" totaltime = "3"
Run simobserve, displaying graphics to screen and to files.
Deconvolve the visibilities back into an image
Next we use simanalyze to combine the three measurement sets and create a single image.
There are many ways to do this, and you may wish to discuss options with scientists at your ARC. In this example we will use the total power image as a model when deconvolving the ACA image, and then use the result as a model when deconvolving the 12m interferometric image. This method tends to give low weight to the large spatial scales, but is simple to illustrate.
It's possible to get better results if one used multiscale clean in the clean task (again using the lower resolution image as a model when deconvolving the higher resolution one). An alternative would be to create an image independently from each dataset, and then use the CASA feather task to combine them entirely in the image plane.
If given a total power and interferometric measurement set, simanalyze will automatically create the total power image, then use it as a model and deconvolve the interferometric image. It is not recommended to do both interferometric images simultaneously.
First image total power and ACA with total power as a model
default("simanalyze") project = "m51c" vis = '$project.aca.i.ms,$project.aca.tp.sd.ms' imsize = [512,512] cell = '0.2arcsec' analyze = True showpsf = False showresidual = False showconvolved = True simanalyze()
Next add the 12m interferometric data
Here we explicitly have to set the modelimage to the result from the previous run.
default("simanalyze") project = "m51c" vis = '$project.ALMA_0.5arcsec.ms' imsize = [512,512] cell = '0.1arcsec' modelimage = "$project.aca.i.image" analyze = True showpsf = False showresidual = False showconvolved = True simanalyze()
Last checked on CASA Version 4.1.0.