The following example is processing of some Parkes polarmetric observations of OH masers at 1.6 GHz. Because digital filters where used in the backend, the baselines are stable enough not to require a quotient spectra. The 4 MHz bandwidth is wide enough to observe both the 1665 and 1667 MHz OH maser transitions. Each source was observed once for about 10 minutes. Tsys information was not written to the rpfits file (a nominal 25K values was used), so the amplitudes need to be adjusted based on a separate log file. A simple user function is used to simplify this, contained in a file called mypol.py:
def xyscale(data,xtsys=1.0,ytsys=1.0,nomtsys=25.0) : data.set_cursor(pol=0) data.scale(xtsys/nomtsys,allaxes=False) data.set_cursor(pol=1) data.scale(ytsys/nomtsys,allaxes=False) data.set_cursor(pol=2) data.scale((xtsys+ytsys)/(2*nomtsys),allaxes=False) data.set_cursor(pol=3) data.scale((xtsys+ytsys)/(2*nomtsys),allaxes=False)
The typical asap session would be
# Remind ourself the name of the rpfits files ls # Load data from an rpfits file d1665 = scantable('2005-10-27_0154-P484.rpf') # Check what we have just loaded d1665.summary # View the data in velocity d1665.set_unit('km/s') d1665.set_freqframe('LSRK') # Correct for the known phase offset in the crosspol data d1665.rotate_xyphase(-4) # Create a copy of the data and set the rest frequency to the 1667 MHz # transition d1667 = d1665.copy() d1667.set_restfreqs(lines=['OH1667']) d1667.summary # Copy out the scan we wish to process g351_5 = d1665.get_scan('351p160') g351_7 = d1667.get_scan('351p160') # Plot the data plotter.plot(g351_5,g351_7) # Only shows one panel # Tell the plotter to stack polarisation and panel scans plotter.set_mode('p','s') # Correct for the Tsys using our predefined function execfile('mypol.py') # Read in the function xyscale(g351_5,23.2,22.7) # Execute it on the data xyscale(g351_7,23.2,22.7) # Only plot the velocity range of interest plotter.set_range(-30,10) # Baseline the data msk = g351_5.create_mask([-20,-15],[0,5]) g351_5.poly_baseline(msk,1) msk = g351_7.create_mask([-20,-15],[0,5]) g351_7.poly_baseline(msk,1) # Update the plot with the baselined data plotter.plot() # Look at the various polarisation products plotter.set_cursor(pol='RR LL') plotter.set_cursor(pol='I Plinear') plotter.set_cursor(pol='I Q U V') # Save the plot as postscript plotter.save('g361_stokes.ps') # Save the process spectra g351_5.save('junk5.asap') g351_7.save('junk7.asap')