Welcome!
The purpose of this project is to familiarize you with the basic visibility and imaging concepts in interferometric observations. At each step, a few questions are posted to you. In order to understand the concepts, try to think those questions over and address them as best as you can.
Find a computer you can access. Be sure the computer (1) can
serve as a X-window client. That is, it can display X windows
launched by a remote X server; and (2) has secure shall (ssh) installed.
Remote log into the host 140.109.225.112 with ssh. The email account
name you provided to me will by default be the username as well
as be the password.
If you are new to the linux operation system, here are a few essential shell commands that you may need to use during the exercises:
For demonstration purpose, we will in this lab series use the astronomical software package MIRIAD . MIRIAD stands for Multichannel Image Reconstruction, Image Analysis and Display and was initially developed for data reduction and imaging for the Berkeley Illinois Maryland Association (BIMA) Array. It is now frequently used in the millimeter astronomy community.
To set up your shell environment ready for MIRIAD, you will need to issue the following command,
> source /usr/local/miriad/MIRRC.linux
You should see a message similar to the one blow prompting out,
[syliu@ibm_t43 ~]$ source /usr/local/miriad/MIRRC.linux MIRIAD version 4.1.0 [CVS] loaded from MIR=/usr/local/miriad Optimized for telescope=sma
Now, you are all set.
Concept : MIRIAD data format, MIRIAD tasks running
First check if you are at the "PART1" directory.
In this part, we first take a look at a real observational dataset taken with the Submillimeter Array (SMA).
You can see a number of directories, including a dataset (directory) named "i20126" present under the "PART1" directory. With "ls", you can find "2202+422" is a directory which contains severals files, including "header", "history","vartable","visdata","flags", "wflags". This is the MIRIAD dataset format for storing the necessary information of an observation run. The directory "2202+422" is storing data toward, in this case, a specific source named "2202+422".
Try issue the following command at the command line,
> prthd in=2202+422
We used the command "prthd" to list the header information for the dataset "2202+422". What is the input keywords "in" for? You can easily guess the answer in this case, but you can also use the "mirhelp" command to find out the meaning of each keyword for any MIRIAD command. Take "prthd" for example, issue the following command at the command line,
> mirhelp prthd
You can realize that the input argument "i20126" for keyword "in" is the name of the dataset. Notice that "prthd" can take a couple more input keywords, which we did not specify. In our example, those keywords are either not necessary (keyword "log" in this case), or set to certain default values (keyword "options" in this case). For the rest of the lab sessions, you can use "mirhelp" accordingly to find out the meaning for any MIRIAD commands.
In the lab sessions, feel free to go back and forth between steps and repeat the commands, so that you can fully understand the concepts.
Concept : baseline, uv-coverage, visibilities
First check if you are at the "PART2" directory.
In this part, we will create a few artificial datasets in order to familiarize you with the concept of visibilities and to demonstrate how uv-coverage is achieved with different array (baseline) configurations and source locations. We than inspect the dataset used in the previous part to see what real data look like.
To create an artificial dataset
> uvgen source=source_a ant=$MIRCAT/bima_c.antpos baseunit=1 \ freq=100 radec=0,30 harange=-3,3,0.1 ellim=15 lat=40 out=testdata.a1[Question] What do the parameters ("freq", "radec", "harange", "ellim", and "lat") mean?
To exam the uv-coverage
> uvplt vis=testdata.a1 device=/xw axis=uu,vv nxy=2,2[Question] How many antennas and baselines are present in the dataset?
> uvplt vis=testdata.a1 device=/xw axis=uu,vv options=nobase[Question] What is the unit and range of the u and v axes? Roughly how long the real baselines are?
We than exam the amplitudes and phases of the visibilities. Also notice the unit and range of the horizontal and vertical axes in the plots.
> uvplt vis=testdata.a1 device=/xw axis=time,amplitude nxy=2,2 > uvplt vis=testdata.a1 device=/xw axis=time,phase yrange=-180,180 nxy=2,2 > uvplt vis=testdata.a1 device=/xw axis=uvdistance,amplitude options=nobase > uvplt vis=testdata.a1 device=/xw axis=uvdistance,phase yrange=-180,180 options=nobase[Question] Can you infer what the structure/geometry of the artificial source is?
To create a new artificial dataset with a source at declination 0 degree
> uvgen source=source_a ant=$MIRCAT/bima_c.antpos baseunit=1 \ freq=100 radec=0,0 harange=-3,3,0.1 ellim=15 lat=40 out=testdata.a2 > uvplt vis=testdata.a2 device=/xw axis=uu,vv options=nobase > uvplt vis=testdata.a2 device=/xw axis=uvdistance,amplitude options=nobase > uvplt vis=testdata.a2 device=/xw axis=uvdistance,phase yrange=-180,180 options=nobase[Question] What have changed in the uv-coverage plot? How about the visibilities?
Now we assume the source is at declination -20 degree.
> uvgen source=source_a ant=$MIRCAT/bima_c.antpos baseunit=1 \ freq=100 radec=0,-20 harange=-3,3,0.1 ellim=15 lat=40 out=testdata.a3 > uvplt vis=testdata.a3 device=/xw axis=uu,vv options=nobase > uvplt vis=testdata.a3 device=/xw axis=uvdistance,amplitude options=nobase > uvplt vis=testdata.a3 device=/xw axis=uvdistance,phase yrange=-180,180 options=nobase[Question] Again, what have changed in the uv-coverage plot? How about the visibilities?
In stead of changing the source position, we now put the source back to 30 degree in declination, but change the configuration of the array by using a different antenna position file.
> uvgen source=source_a ant=$MIRCAT/bima_b.antpos baseunit=1 \ freq=100 radec=0,30 harange=-3,3,0.1 ellim=15 lat=40 out=testdata.a4 > uvplt vis=testdata.a4 device=/xw axis=uu,vv options=nobase > uvplt vis=testdata.a4 device=/xw axis=uvdistance,amplitude options=nobase > uvplt vis=testdata.a4 device=/xw axis=uvdistance,phase yrange=-180,180 options=nobase[Question] Did you notice what the differences are as compared to the first test dataset?
If not, try make the following plots,
> uvplt vis=testdata.a4,testdata.a1 device=/xw axis=uu,vv options=nobase > uvplt vis=testdata.a4,testdata.a1 device=/xw axis=uvdistance,amplitude options=nobase > uvplt vis=testdata.a4,testdata.a1 device=/xw axis=uvdistance,phase \ yrange=-180,180 options=nobase[Question] Which dataset/antenna configuration would give a higher angular (spatial) resolution?
> uvgen source=source_b ant=$MIRCAT/bima_c.antpos baseunit=1 \ freq=100 radec=0,30 harange=-3,3,0.1 ellim=15 lat=40 out=testdata.b1 > uvplt vis=testdata.b1 device=/xw axis=uu,vv options=nobase > uvplt vis=testdata.b1 device=/xw axis=uvdistance,amplitude options=nobase > uvplt vis=testdata.b1 device=/xw axis=uvdistance,phase yrange=-180,180 options=nobase
and
> uvgen source=source_b ant=$MIRCAT/bima_b.antpos baseunit=1 \ freq=100 radec=0,30 harange=-3,3,0.1 ellim=15 lat=40 out=testdata.b2 > uvplt vis=testdata.b2 device=/xw axis=uu,vv options=nobase > uvplt vis=testdata.b2 device=/xw axis=uvdistance,amplitude options=nobase > uvplt vis=testdata.b2 device=/xw axis=uvdistance,phase yrange=-180,180 options=nobase
How about plotting things together again?
> uvplt vis=testdata.b2,testdata.b1 device=/xw axis=uu,vv options=nobase > uvplt vis=testdata.b2,testdata.b1 device=/xw axis=uvdistance,amplitude options=nobase > uvplt vis=testdata.b2,testdata.b1 device=/xw axis=uvdistance,phase \ yrange=-180,180 options=nobase[Question] How does array configuration make a difference?
We will try a change in the source model. Use the model "source_c", a point source but located 5 arcsecond north of the "phase center". The phase center is where you point your antennae to and where the location at which the corresponding visibilities should have zero phase.
> uvgen source=source_c ant=$MIRCAT/bima_c.antpos baseunit=1 \ freq=100 radec=0,30 harange=-3,3,0.1 ellim=15 lat=40 out=testdata.c1 > uvplt vis=testdata.c1 device=/xw axis=uu,vv options=nobase > uvplt vis=testdata.c1 device=/xw axis=uvdistance,amplitude options=nobase > uvplt vis=testdata.c1 device=/xw axis=uvdistance,phase yrange=-180,180 options=nobase[Question] Can you explain what you see?
We now turn to a real set of observation data to demonstrate what visibilities from real observations look like.
The data are from observations of a distance quasar, which is supposed to be a point source. Inspect the dataset with the commands we have learned earlier.
> uvplt vis=2202+422.cal device=/xw axis=uu,vv nxy=2,2 > uvplt vis=2202+422.cal device=/xw axis=uu,vv options=nobase[Question] How many antennas and baselines are there in this dataset? Given the data taken with the SMA array, can you guess what the source location is (positive, zero, or negative in declination angle)?
> uvplt vis=2202+422.cal device=/xw axis=time,amplitude > uvplt vis=2202+422.cal device=/xw axis=time,phase yrange=-180,180 > uvplt vis=2202+422.cal device=/xw axis=uvdistance,amplitude yrange=-.5,3.5 options=nobase > uvplt vis=2202+422.cal device=/xw axis=uvdistance,phase yrange=-180,180 options=nobase[Question] Do you agree that the data look consistent with the source being a point source? What the plots are so scattered?
Concept : imaging with Fourier transform
First check if you are at the "PART3" directory.
To make a map/image of the observed source from measured visibilities, we need to do an "inverse" Fourier transform. This is accomplished by the "invert" command.
> invert vis=2202+422.cal map=dirty.map beam=dirty.beam imsize=256,256 \ cell=0.25,0.25 sup=0 line=wide,1,1,1 options=systemp
At this step, two images are created, one is the source brightness distribution, which we named "dirty.map", and another one is the PSF (point-spread-function), which we named "dirty.beam". To look at the two images,
> cgdisp in=dirty.map device=/xw options=full > cgdisp in=dirty.beam device=/xw options=full[Question] Does the target source really look like a point source? Read the information provided at the bottom of the images, and find the maximum value in the dirty map? Can you explain all what you see?
Concept : deconvolution in imaging
We have to play with the "dirty" map to make it "cleaner" and reflect better what the real source brightness distribution look like. "Clean" tries to remove the PSF response in the dirty map by finding out where the source is likely to be, assuming it is a point source with certain intensity, registering that point source intensity into the so called clean component, and subtracting the contribution of this component from the dirty map. This contribution, as you should realize, is the clean component convolved with the PSF. After the subtraction, the remaining image is called a "residual" image, we can then repeat this "clean" process with the new "residual" image until at some point we think there is no more "source" needs to be extracted from the map.
First try clean "one step (niters=1"),
> clean map=dirty.map beam=dirty.beam out=clean.comp1 niters=1
Take a look at the clean component image and find out what the maximum value is
> cgdisp in=clean.comp1 device=/xw options=full
Now we create the residual image and take a look at it.
> restor map=dirty.map beam=dirty.beam model=clean.comp1 mode=residual \ out=residual.1 > cgdisp in=residual.1 device=/xw options=full[Question] How does the residual map look like? What is the maximum value in the residual map?
As mentioned in the class, a "restored" map, is created in the following way, 1) The "clean" beam is created by taking the inner (main) peak of dirty beam (PSF) and fitting it with a Gaussian. 2) The "restored" image is generated by convolving the clean component with the "clean" beam (an ideal image which hopefully represent the source brightness distribution) and adding back the residual map (to the former ideal image).
> restor map=dirty.map beam=dirty.beam model=clean.comp1 out=restor.1[Question] What do you notice in the terminal output?
As you can see, the Gaussian beam FWHM and position angle are the results from Gaussian fitting of the "dirty beam". Look at the "restored" image
> cgdisp in=restor.1 device=/xw options=full,beambl
or try
> cgdisp in=restor.1 device=/xw type=c options=full,beambl[Question] Do you notice a ellipse at the bottom-left corner of the image? Can you identify what that means?
You should find that this kind of "restored" image is far from satisfactory. There are significant effects from the PSF (these defects are called "sidelobes", as the conventional terminology would refer to). That means, we did not clean "deep" enough. In the following two sequences, we will clean "10 iterations" and "40 iterations".
SEQUENCE A:
> clean map=dirty.map beam=dirty.beam out=clean.comp2 niters=10 > cgdisp in=clean.comp2 device=/xw options=full > restor map=dirty.map beam=dirty.beam model=clean.comp2 mode=residual \ out=residual.2 > cgdisp in=residual.2 device=/xw options=full > restor map=dirty.map beam=dirty.beam model=clean.comp2 out=restor.2 > cgdisp in=restor.2 device=/xw options=full > cgdisp in=restor.2 device=/xw type=c options=full
SEQUENCE B:
> clean map=dirty.map beam=dirty.beam out=clean.comp3 niters=40 > cgdisp in=clean.comp3 device=/xw options=full > restor map=dirty.map beam=dirty.beam model=clean.comp3 mode=residual \ out=residual.3 > cgdisp in=residual.3 device=/xw options=full > restor map=dirty.map beam=dirty.beam model=clean.comp3 out=restor.3 > cgdisp in=restor.3 device=/xw options=full > cgdisp in=restor.3 device=/xw type=c options=full[Question] What did you notice in these two sequence of outputs?
As in the first trial sequence, you should pay attention to how the maximum values in those "clean component", "residual", and "restored" images change, as well as how the levels of those "sidelobes" change.
[Question] Think about how to decide how deep or when to stop "clean"ing?