[1636] | 1 | ========================================================= |
---|
| 2 | Tutorial 4 â Data Reduction for Parkes Methanol Multibeam |
---|
| 3 | ========================================================= |
---|
| 4 | |
---|
| 5 | .. sectionauthor:: Jimi Green |
---|
| 6 | |
---|
| 7 | Files |
---|
| 8 | ----- |
---|
| 9 | |
---|
| 10 | * mmb-mx.rpf Data file (9.4 Mb) |
---|
| 11 | |
---|
| 12 | Data Log |
---|
| 13 | -------- |
---|
| 14 | |
---|
| 15 | * 7 Spectra taken with Parkes Methanol Multibeam |
---|
| 16 | |
---|
| 17 | Instructions |
---|
| 18 | ------------ |
---|
| 19 | |
---|
| 20 | 1. Work through the list of commands given in the text file to |
---|
| 21 | calibrate data taken with the Parkes Methanol Multibeam. |
---|
| 22 | Commands should be typed line-by-line into ASAP. Seek help |
---|
| 23 | from the tutors if there are any commands you donât |
---|
| 24 | understand. |
---|
| 25 | 2. Write a python script to automate the calibration procedure for |
---|
| 26 | data taken with the Parkes Methanol Multibeam. Incorporate |
---|
| 27 | the list of commands used in step 1 as well as a routine to cycle |
---|
| 28 | through the 7 different beams. |
---|
| 29 | |
---|
| 30 | **Note:** Your python script should be executed in a terminal (and |
---|
| 31 | not within ASAP) with the following command:: |
---|
| 32 | |
---|
| 33 | python -i myscript.py |
---|
| 34 | |
---|
| 35 | Commands |
---|
| 36 | -------- |
---|
| 37 | |
---|
| 38 | .. code-block:: python |
---|
| 39 | |
---|
| 40 | # Load data (with filename mmb-mx.rpf) into memory and display |
---|
| 41 | data = scantable("mmb-mx.rpf") |
---|
| 42 | print data |
---|
| 43 | # Set the polarisation feed type |
---|
| 44 | data.set_feedtype("circular") |
---|
| 45 | # Select just the first IF (the data actually contains two, the |
---|
| 46 | # methanol transition at 6.7GHz and the excited-state OH transition |
---|
| 47 | # at 6GHz, but we will only look at methanol). |
---|
| 48 | sel=selector() |
---|
| 49 | sel.set_ifs(0) |
---|
| 50 | data.set_selection(sel) |
---|
| 51 | # Set the rest frequency |
---|
| 52 | data.set_restfreqs(6.6685192e9) |
---|
| 53 | # Set the cal values for the 7 beams, both polarisations. |
---|
| 54 | calfact = (( 2.29, 2.28 ), ( 2.18, 1.93 ), ( 4.37, 4.37 ), \ |
---|
| 55 | (2.53,3.20 ), ( 3.69, 3.89 ), ( 3.74, 3.51 ), ( 1.98, 1.70 )) |
---|
| 56 | # Apply cal factors to first beam, first polarisation |
---|
| 57 | sel.reset() |
---|
| 58 | sel.set_beams(0) |
---|
| 59 | sel.set_polarisations(0) |
---|
| 60 | data.set_selection(sel) |
---|
| 61 | data.scale(calfact[0][0], insitu=True, tsys=True) |
---|
| 62 | # Apply cal factors to first beam, second polarisation |
---|
| 63 | sel.reset() |
---|
| 64 | sel.set_beams(0) |
---|
| 65 | sel.set_polarisations(1) |
---|
| 66 | data.set_selection(sel) |
---|
| 67 | data.scale(calfact[0][1], insitu=True, tsys=True) |
---|
| 68 | # Now repeat above 10 steps for the other 6 beams |
---|
| 69 | # Reset selection parameter |
---|
| 70 | data.set_selection() |
---|
| 71 | # Set plotter output to show both polarisations on the same plot, |
---|
| 72 | # but each beam on a separate plot. |
---|
| 73 | plotter.plot(data) |
---|
| 74 | plotter.set_mode("p","b") |
---|
| 75 | # Plot the first scan only |
---|
| 76 | sel = selector() |
---|
| 77 | sel.set_scans(1) |
---|
| 78 | plotter.set_selection(sel) |
---|
| 79 | # Average "off-source" scans for each beam, then use as the |
---|
| 80 | # reference scan to form a quotient. |
---|
| 81 | q = data.mx_quotient() |
---|
| 82 | plotter.plot(q) |
---|
| 83 | # Define the channel unit. |
---|
| 84 | q.set_unit("km/s") |
---|
| 85 | plotter.plot() |
---|
| 86 | plotter.set_range(-60,-10) |
---|
| 87 | # Average all the multiple beam data together to form |
---|
| 88 | # a long integration spectrum. |
---|
| 89 | avb = q.average_beam() |
---|
| 90 | plotter.plot(avb) |
---|
| 91 | plotter.set_range() |
---|
| 92 | # Average polarisations together |
---|
| 93 | avp = avb.average_pol() |
---|
| 94 | plotter.plot(avp) |
---|
| 95 | # Fit a linear baseline (avoiding the maser feature) |
---|
| 96 | msk=avp.create_mask([-110,-70],[10,40]) |
---|
| 97 | avp.poly_baseline(msk,order=1) |
---|
| 98 | plotter.plot(avp) |
---|
| 99 | # Make a nice file |
---|
| 100 | plotter.set_colors("black") |
---|
| 101 | plotter.set_legend(mode=-1) |
---|
| 102 | plotter.set_title("G300.969+1.148") |
---|
| 103 | plotter.save("G300p96.ps") |
---|