dish   Users Guide
Version 3.0
PDF version
LaTeX version

Introduction to dish 

dish is a fully capable tool for reducing Single Dish Radio Astronomy Data efficiently. dish builds on the AIPS++ capacities with tools specifically designed to meet the needs of astronomers when interpreting spectra and images from observations with single radio telescopes. dish provides all the capabilities of the UNIPOPS package used to reduce 140ft data. In addition, dish has capabilities to optimally reduce different types of observations, having special functions for Beam Switched and Frequency Switched observing modes. Important new capabilities to flag selected ranges of spectra and produce spectral images are illustrated.

Section 2 presents the capabilities of dish by showing complete data reduction session for a simple GBT spectral line observation, where an astronomical measurement is completed in a small number of simple steps. Section 3 shows the lower level functions for examining individual integrations of an observing scan. Section 4 shows the flagging capabilities, including the graphical user interface. Section 6 describes in detail the calibration equations used Section 7 describes the data analysis functions for averaging and fitting models to the data. Section 8 presents the mapping capabilities of dish . Section 9 summarizes all of the dish capabilities in a handy reference. Section 10 presents the dish capabilities for an observer familiar with UNIPOPS. Appendix A describes the GBT data structure.

Other Help!

The starting point for all web documentation is the AIPS++ home page: http://aips2.aoc.nrao.edu/docs/user/documentation.html

The best way to learn is by doing. The web site: http://aips2.aoc.nrao.edu/docs/recipes/Recipes/index.html has simple, step by step, guides for standard data reduction scenarios. Also data are provided!

Starting up dish 

The AIPS++ dish package is started under Unix by first setting up the environment, by "source-ing" some shell scripts. It is also strongly recommended that the user work in an empty sub-directory, as many files will be created.

In the first example, OH mega-maser data will be reduced, and the working directory is assigned name OH. Also note that dish will run more efficiently if the working directory is mounted locally on the machine running dish .

% mdkir OH                                    # Create an empty work directory
% cd OH                                       # Go to it
% gbdish                                      # script to setup environment

After starting dish (via gbdish), a number of messages are printed in the window. Three new Graphical User Interfaces appear; 1) message log, 2) PG plotter and 3) dish record browser. The AIPS++ prompt is the ``-'' and the AIPS++ comment symbol is #. After each command execution, AIPS++ returns true, T, if the command is successful. The prompts and Ts are dropped in the listing below.

Loading Data into dish 

This first example session shows how GBT data are loaded into dish and the first examination of the observing parameters. In later executions more data will be averaged and fit.

The data used in this section are from an OH mega maser survey run by Jim Braatz of NRAO (Braatz@nrao.edu) as a background program at the GBT. The survey selects sources found in both the IRAS 100 micron catalog and the NRAO NVSS 1.4 GHz VLA survey as candidates for OH mega-maser sources.

The survey uses the GBT 1-2 GHz receiver and the full IF electronics chain to connect to the Spectral Processor located in the Equipment room (See http://www.gb.nrao.edu/GBT for a complete description of the GBT electronics). The OH survey uses the Spectral processor configured for dual polarization to produce 5 MHz bandwidth spectra having 1023 channels. The Spectral processor controlled turning on and off a calibration noise diode continually during the observation. The laboratory measurements of the noise diode values are used to calibrate the astronomical observation.

The goal of this recipe is to determine whether redshifted OH maser emission is present in the 1665.4018 and 1667.359 MHz lines. The only the AIPS++ plotter window is used in this recipe.

The process of dish analysis is importing the data into a Measurement Set (MS), calibrating individual scans and accumulating them into a single globalscan. This globalscan may be saved for later analysis. The dish program assumes the observations are organized into scans. A scan may contain any number of integrations. An integration is a set of intensities or spectra for each of the back-end inputs (such as dual polarizations and/or multiple beams).

Figure 1: Left: Raw reference spectra for scan 17 of the OFF-ON pair of scans 17,18 for observations towards RAS09539+0857. The dual polarization plots of the data in counts are presented. The spectral shape is due to the variation IF gain across the band. Right: Calibrated spectra from a single OFF-ON pair of scans towards IRAS09539+0857

The user inputs for data calibration are shown below. The steps include loading the data into AIPS++, plotting the raw data (Figure 1 left), calibrating and plotting the calibrated data (Figure 1 right).

# Load survey scans 17, 18, 19, 20
d.import('/home/archive/early-data/tape-1/OHsurvey',,,17,20)  
d.lscans()                                      # List the scans
# AIPS++ output == [17,18,19,20]         
d.gms()                                         # Show scan relationships
d.plotr(17,1)                                   # Plot raw reference scan 17
                                                # Cal-On Spectra for 2 pol. (figure 2)
d.calib(18)                                     # Sig-Ref/Ref calibrate the Signal Scan
d.plotc(18)                                     # Plot the calibrated data,
                                                # also prepares data for averaging
d.accum()                                       # Transfer for averaging with other scan
d.calib(20)                                     # Sig-Ref/Ref calibrate the Signal Scan
d.plotc(20)                                     # Show the spectra and 
                                                # Transfer data for averaging
d.accum()                                       # Add the scan to the accumulation
d.ave()                                         # Average all accumulated scans
d.show()                                        # Look at the Average

Figure 2: Right: Dual polarization spectra of IRAS09539+0857 with the results of the third order baseline fit shown. Left: Dual polarization observation of IRAS09539+0857, with baseline fit subtracted.

After analysis of a single pair of OFFON scans, another pair is calibrated and averaged. Next a baseline is fit to the two polarization spectra (Figure 2 left) and subtracted to show the detected OH emission (Figure 2 right).

                                                # Fit, remove a spectral baseline
d.nfit(3)                                       # Set third order polynomial
d.nregion(80,270,650,960)                       # Select channels 80-270 and 650-960 
d.bshape()                                      # Fit and show the baseline shape 
d.baseline()                                    # Subtract the baseline 
d.show()                                        # Show the baseline subtracted 
                                                # There is the 1667 OH line!
d.fileout('averageSpectra')                     # Name the output file 
d.keep()                                        # Save visible spectra; given number 18
exit                                            # We're done!

Figure 3: Left: Gaussian Fits to the baseline subtracted, calibrated spectra from the average spectra towards IRAS09539+0857, X axis units are GHz. Right: Same as Left, except that X axis units are km/sec.

Re-load Saved Spectra; Fit components

Now we re-open the previously imported measurement set and restore the saved average spectra. In this step the spectra are fit with two Gaussian components, and displayed twice. One display shows a Intensity versus Frequency display (Figure 3, left) and the other display shows Intensity versus Velocity (Figure 3, right).

d.open('OHsurvey_SP')                           # Re-open imported data
d.open('averageSpectra')                        # Re-open the previously averaged data
firstScan := d.lscans()                         # Get the number of the ave scan
aveSD := d.getscan(firstScan)                   # Create SD rec with ave scan
d.plotscan( aveSD)                              # plot the average scan
d.hanning()                                     # Hanning smooth the spectra
d.show()                                        # View the smoothed data
d.gauss(2)                                      # Fit 2 gaussians; X axis in GHz 
#Gauss:  1                                      AIPS++ output (see figure 4) 
#Center:  1.47757e+00   Height: 2.01256e-02    Width: 8.06329e-04
#Cerr:    3.12915e-05   Herr:   1.59137e-03    Werr:  7.41239e-05
#Gauss:  2                                      AIPS++ output
#Center:  1.47605e+00   Height: 8.07131e-03    Width: 6.44905e-04
#Cerr:    6.65425e-05   Herr:   1.82314e-03    Werr:  1.57421e-04
C := 2.99792E5                                  # Velocity of light in km/sec  
ohFreqB := 1665.400; ohFreqC := 1667.358        # Set OH constants 
C * (ohFreqB - 1476.05) / ohFreqB               # Calculate velocities 
34085.2739                                      # AIPS++ output in km/sec
C * (ohFreqC - 1477.57) / ohFreqC               # Calculate velocities 
34123.9998                                      # AIPS++ output in km/sec

The OH survey observations towards IRAS09539+0857 were made to confirm the observing setup for weak sources. These GBT observations show a peak of emission at 1.47757 GHz. The Arecibo survey of Darling and Giovanelli (2001, AJ, 121: 1278) had previously detected IRAS09539+0857 and measured a velocity of 38,673 km/sec (optical heliocentric), consistent with the observations presented here. (Note that $v_{opt}$ = 38,673 km/sec [optical definition] corresponds to $v_{rad} = \frac{1477.57}{1667.4018} v_{opt}$ = 34,270 km/sec [radio definition]).

                                                # Use PG Plotter GUI; Set X
                                                # to Barycentric Radio km/sec
d.gauss(2)                                      # Fit 2 gaussians; X axis in km/sec 
#Gauss:  1                                      # AIPS++ output (see figure 4)
#Center: 3.41247e+04   Height: 2.01256e-02    Width: 1.44979e+02 
#Cerr:   5.62624e+00   Herr:   1.59137e-03    Werr:  1.33275e+01 
#Gauss:  2                                      # AIPS++ output 
#Center: 3.43974e+04   Height: 8.07131e-03    Width: 1.15954e+02
#Cerr:   1.19644e+01   Herr:   1.82314e-03    Werr:  2.83044e+01 
exit                                            # We've got the velocity!



Glen Langston 2005-02-14