source: trunk/python/selector.py @ 932

Last change on this file since 932 was 932, checked in by mar637, 18 years ago

python warpper for c++ selector class

File size: 4.1 KB
Line 
1from asap._asap import selector as _selector
2class selector(_selector):
3    def __init(self):
4        _selector.__init__(self)
5
6    def reset(self):
7        """
8        Unset all selections.
9        """
10        self._reset()
11
12       
13    def set_polarisations(self, pols=[]):
14        """
15        Set the polarisations to be selected in the scantable.
16        Parameters:
17             pols:     a list of integers of 0-3, or strings, e.g ["I","Q"].
18                       Default [] is no selection
19        Example:
20             sel = selector()
21             # These are equivalent if data is 'linear'
22             sel.set_polarisations(["XX","Re(XY)"])
23             sel.set_polarisations([0,2])
24             # reset the polarisation selection
25             sel.set_polarisations()
26                         
27        """
28        vec = _to_list(pols, str) and _to_list(pols, int)
29        if vec: # is an empty and/or valid vector
30            if len(vec) and isinstance(vec[-1],str):
31                self._setpolstrings(self, vec)
32                return
33            self._setpols(vec)
34        else:
35            raise TypeError('Unknown pol type. Please use [0,1...] or ["XX","YY"...]')
36
37    def set_ifs(self, ifs=[]):
38        """
39        Set a sequence of IF numbers (0-based).
40        Parameters:
41            ifs:    a list of integers. Default [] is to unset the selection.
42        """
43        vec = _to_list(ifs, int)
44        if vec:
45            self._setifs(vec)
46        else:
47            raise TypeError('Unknown IFno type. Use lists of integers.')
48
49    def set_scans(self, scans=[]):
50        """
51        Set a sequence of Scan numbers (0-based).
52        Parameters:
53            scans:    a list of integers. Default [] is to unset the selection.
54        """
55        vec = _to_list(scans, int)
56        if vec:
57            self._setscans(vec)
58        else:
59            raise TypeError('Unknown Scan number type. Use lists of integers.')
60
61    def set_beams(self, beams=[]):
62        """
63        Set a sequence of Beam numbers (0-based).
64        Parameters:
65            beams:    a list of integers. Default [] is to unset the selection.
66        """
67        vec = _to_list(beams, int)
68        if vec:
69            self._setbeams(vec)
70        else:
71            raise TypeError('Unknown Beam number type. Use lists of integers.')
72
73    def set_cycles(self, cycles=[]):
74        """
75        Set a sequence of IF numbers (0-based).
76        Parameters:
77            cycless:    a list of integers. Default [] is to unset the selection.
78        """
79        vec = _to_list(cycles, int)
80        if vec:
81            self._setcycles(vec)
82        else:
83            raise TypeError('Unknown Cycle number type. Use lists of integers.')
84                                   
85
86    def set_name(self, name):
87        """
88        Set a selection based on a name. This can be a unix pattern , e.g. "*_R"
89        Parameters:
90            name:    a string containing a source name or pattern
91        Examples:
92            # select all reference scans which start with "Orion"
93            selection.set_name("Orion*_R")
94        """
95        if isinstance(name, str):
96            self._setame(name)
97        else:
98            raise TypeError('name must be a string')
99       
100    def set_tsys(self, tsysmin=0.0, tsysmax=None):
101        """
102        Select by Tsys range.
103        Parameters:
104            tsysmin:     the lower threshold. Default 0.0
105            tsysmax:     the upper threshold. Default None.
106        Examples:
107            # select all spectra with Tsys <= 500.0
108            selection.set_tsys(tsysmax=500.0)
109           
110        """
111        taql =  "SELECT FROM $1 WHERE TSYS >= %f" % (tsysmin)
112        if isinstance(tsysmax, float):
113            taql = taql + " AND TSYS <= %f" % ( tsysmax)
114        self._settaql(taql)
115
116    def set_query(self, query):
117        """
118        Select by Column query. Power users only!
119        Example:
120            # select all off scans with integration times over 60 seconds.
121            selection.set_query("SRCTYPE == 1 AND INTERVAL > 60.0")
122        """
123        taql = "SELECT FROM $1 WHERE " + query
124        self._settaql(taql)
125       
Note: See TracBrowser for help on using the repository browser.