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") |
---|