To create a script of the Python code on this page see Extracting scripts from these tutorials.
ALMA 12m + ACA + Total Power
Multiple configurations, or an observation in one 12m configuration plus one ACA observation, or other combinations, can be simulated by running sim_observe for each, and then combining the Measurement Sets to run sim_analyze. Total power observations can be simulated either in an independent run of sim_observe, or along with an interferometric simulation. Note that if you simulate total power and an interferometric observation simultaneously with sim_observe, 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 12m ALMA mosaic).
- Simdata version for CASA 3.3
Explanation of the script
Set sim_observe as current task
Reset all parameters to default, and then set the project name to m51c
# Set sim_observe to default parameters default("sim_observe") # Our project name will be m51c, and all simulation products will be placed in a subdirectory m51c/ project="m51c"
Specify sky model image
We'll use an Halpha image of M51 as an example model sky. Download from here and place in your working directory. sim_observe will make a copy m51c/m51c.skymodel, and not modify your input image.
# Model sky = Halpha image of M51 modelimage = "m51ha.fits"
Although the image has a world coordinate system, we want to override most of the parameters.
- We'll place the source in the southern hemisphere with the indirection parameter,
- set the pixel size to 0.1arcsec, effectively moving the galaxy further away (M51 itself would require a quite large mosaic, and in any case we need for the input model pixels to be significantly smaller than the synthesized beam that we'll be simulating, or else we won't be learning anything)
- set the frequency to 330GHz, and since its a 2D image we'll set the single "channel" width to be 50MHz, and peak brightness of 0.004 Jy/pixel - parameters plausible for observing an emission line in a galaxy.
# Set model image parameters: indirection="B1950 23h59m59.96s -34d59m59.50s" incell="0.1arcsec" inbright="0.004" incenter="330.076GHz" inwidth="50MHz"
Simulate 12m interferometric observation
We'll begin with the 12m ALMA array observation, and have sim_observe calculate a hexagonal mosaic of pointings.
The default interface for sim_observe provides an integration parameter, which is the dwell time at each mosaic pointing -- we'll set that to 10s. A real observation would integrate a scan of ~5 min at each mosaic pointing; we could set integration="5min" but then for data volume and speed, sim_observe would only generate one measurement per 5min scan. While thermal noise levels would be scaled correctly, corruption of the data with a phase screen (see XXX for a guide), or the details of uv coverage, would not be realistic. Rotating through the mosaic more rapidly than a real simulation will result in more representative uv coverage. If you wish to simulate the more realistic case such as 5 min scans with 5s integrations, please see XXX for a guide to doing that with sim_observe (Its not hard, it just takes two calls to the task instead of one).
# have sim_observe calculate mosaic pointing locations: setpointings = True mapsize = "1arcmin" maptype = "hex" pointingspacing = "9arcsec" # this could also be specified in units of the primary beam e.g. "0.5PB"
sim_observe can determine what array configuration to use, if you provide a desired resolution or synthesized beam size.
observe = True antennalist = "ALMA;0.5arcsec" totaltime = "3600s"
Deconvolve the visibilities back into an image
image = True vis = "$project.ms" imsize = [192, 192]
Specify number of iteration of cleaning task with proper threshold and weighting
niter = 10000 threshold = "1e-7Jy" weighting = "natural"
We'd like to calculate a difference and fidelity image, and see some diagnostics:
analyze = True
And see the array but not the UV coverage:
showarray = True showuv = False
Plot both to the screen and the png files with lots of messages:
graphics = "both" verbose = True overwrite = True
# This commands CASA to execute simdata simdata()
- Output results: