Coverage for /wheeldirectory/casa-6.7.0-12-py3.10.el8/lib/py/lib/python3.10/site-packages/casatasks/cvel2.py: 56%
27 statements
« prev ^ index » next coverage.py v7.6.4, created at 2024-10-31 19:10 +0000
« prev ^ index » next coverage.py v7.6.4, created at 2024-10-31 19:10 +0000
1##################### generated by xml-casa (v2) from cvel2.xml #####################
2##################### b0b759de57aa7d74a7bbb529a642b212 ##############################
3from __future__ import absolute_import
4import numpy
5from casatools.typecheck import CasaValidator as _val_ctor
6_pc = _val_ctor( )
7from casatools.coercetype import coerce as _coerce
8from casatools.errors import create_error_string
9from .private.task_cvel2 import cvel2 as _cvel2_t
10from casatasks.private.task_logging import start_log as _start_log
11from casatasks.private.task_logging import end_log as _end_log
12from casatasks.private.task_logging import except_log as _except_log
14class _cvel2:
15 """
16 cvel2 ---- Regrid an MS or MMS to a new spectral window, channel structure or frame
19 The intent of cvel2 is to transform channel labels and the
20 visibilities to a spectral reference frame which is appropriate for
21 the science analysis, e.g. from TOPO to LSRK to correct for Doppler
22 shifts throughout the time of the observation. Naturally, this will
23 change the shape of the spectral feature to some extent. According to
24 the Nyquist theorem you should oversample a spectrum with twice the
25 numbers of channels to retain the shape. Based on some tests, however,
26 we recommend to observe with at least 3-4 times the number of channels
27 for each significant spectral feature (like 3-4 times the
28 linewidth). This will minimize regridding artifacts in cvel2.
30 If cvel2 has already established the grid that is desired for the
31 imaging, tclean should be run with exactly the same frequency/velocity
32 parameters as used in cvel2 in order to avoid additional regridding in
33 clean.
35 Hanning smoothing is optionally offered in cvel2, but tests have shown
36 that already the regridding process itself, if it involved a
37 transformation from TOPO to a non-terrestrial reference frame, implies
38 some smoothing (due to channel interpolation) such that Hanning
39 smoothing may not be necessary.
41 This version of cvel2 also supports Multi-MS input, in which case it
42 will create an output Multi-MS too.
44 NOTE:
45 The parameter passall is not supported in cvel2. The user may
46 achieve the same results of passall=True by splitting out the data
47 that will not be regridded with cvel2 and concatenate regridded
48 and non-regridded sets at the end. In the case of Multi-MS input,
49 the user should use virtualconcat to achieve a concatenated MMS.
51 --------- parameter descriptions ---------------------------------------------
53 vis Name of input visibility file
54 Default: none
56 Example: vis='ngc5921.ms'
57 outputvis Name of output visibility file or Multi-MS
58 Default: none
60 Example: vis='ngc5921_out.ms'
61 keepmms If the input is a Multi-MS the output will also be a
62 Multi-MS.
63 Default: True
65 By default it will create a Multi-MS when the
66 input is a Multi-MS. The output Multi-MS will
67 have the same partition axis of the input
68 MMS. See 'help partition' for more information on
69 the MMS format.
71 NOTE: It is not possible to combine the spws if
72 the input MMS was partitioned with
73 separationaxis='spw'. In this case, the task will
74 abort with an error.
75 passall HIDDEN parameter. Pass through (write to output MS) non-selected data with no change
76 field Select field using field id(s) or field name(s)
77 Default: '' (all fields)
79 Use 'go listobs' to obtain the list id's or
80 names. If field string is a non-negative integer,
81 it is assumed a field index, otherwise, it is
82 assumed a field name.
84 Examples:
85 field='0~2'; field ids 0,1,2
86 field='0,4,5~7'; field ids 0,4,5,6,7
87 field='3C286,3C295'; field named 3C286 and
88 3C295
89 field = '3,4C*'; field id 3, all names
90 starting with 4C
91 spw Select spectral window/channels
92 Default: ''=all spectral windows and channels
94 Examples:
95 spw='0~2,4'; spectral windows 0,1,2,4 (all channels)
96 spw='<2'; spectral windows less than 2 (i.e. 0,1)
97 spw='0:5~61'; spw 0, channels 5 to 61
98 spw='0,10,3:3~45'; spw 0,10 all channels, spw
99 3 - chans 3 to 45.
100 spw='0~2:2~6'; spw 0,1,2 with channels 2
101 through 6 in each.
102 spw = '\*:3~64' channels 3 through 64 for all sp id's
103 spw = ' :3~64' will NOT work.
105 NOTE: mstransform does not support multiple
106 channel ranges per spectral window.
107 scan Scan number range
108 Subparameter of selectdata=True
109 default: '' = all
110 antenna Select data based on antenna/baseline
111 Subparameter of selectdata=True
112 default: '' (all)
114 If antenna string is a non-negative integer, it
115 is assumed an antenna index, otherwise, it is
116 assumed as an antenna name
118 Examples:
119 antenna='5&6'; baseline between antenna
120 index 5 and index 6.
121 antenna='VA05&VA06'; baseline between VLA
122 antenna 5 and 6.
123 antenna='5&6;7&8'; baselines with
124 indices 5-6 and 7-8
125 antenna='5'; all baselines with antenna index
126 5
127 antenna='05'; all baselines with antenna
128 number 05 (VLA old name)
129 antenna='5,6,10'; all baselines with antennas
130 5,6,10 index numbers
131 antenna='!ea03,ea12,ea17': all baselines
132 except those that include EVLA antennas ea03,
133 ea12, or ea17.
134 correlation Select data based on correlation
135 Default: '' (all)
137 Example: correlation='XX,YY'.
138 timerange Select data based on time range
139 Subparameter of selectdata=True
140 Default = '' (all)
142 Examples:
143 timerange =
144 'YYYY/MM/DD/hh:mm:ss~YYYY/MM/DD/hh:mm:ss'
145 (Note: if YYYY/MM/DD is missing date defaults
146 to first day in data set.)
147 timerange='09:14:0~09:54:0' picks 40 min on
148 first day
149 timerange= '25:00:00~27:30:00' picks 1 hr to 3
150 hr 30min on NEXT day
151 timerange='09:44:00' pick data within one
152 integration of time
153 timerange='>10:24:00' data after this time
154 intent Select observing intent
155 Default: '' (no selection by intent)
157 Example: intent='*BANDPASS*' (selects data
158 labelled with BANDPASS intent)
159 array Select (sub)array(s) by array ID number.
160 Default = '' (all)
161 uvrange Select data by baseline length.
162 observation Select by observation ID(s)
163 Subparameter of selectdata=True
164 Default: '' = all
166 Example: observation='0~2,4'
167 feed Multi-feed numbers: Not yet implemented.
168 datacolumn Which data column(s) to process.
169 mode Regridding mode (channel/velocity/frequency/channel_b).
170 Default: 'channel'
171 Options: 'channel', 'velocity', 'frequency',
172 'channel_b'
174 * mode = 'channel'; Use with nchan, start, width to
175 specify output spw. Produces equidistant grid
176 based on first selected channel.
177 * mode = 'velocity', means channels are specified
178 in velocity.
179 * mode = 'frequency', means channels are specified
180 in frequency.
181 * mode = 'channel_b', alternative 'channel'
182 mode. Does not force an equidistant grid. Faster.
184 Examples:
185 spw = '0,1'; mode = 'channel' will produce a
186 single spw containing all channels in spw 0
187 and 1
188 spw='0:5~28^2'; mode = 'channel' will produce
189 a single spw made with channels
190 (5,7,9,...,25,27)
191 spw = '0'; mode = 'channel': nchan=3; start=5;
192 width=4 will produce an spw with 3 output
193 channels
194 - new channel 1 contains data from channels
195 (5+6+7+8)
196 - new channel 2 contains data from channels
197 (9+10+11+12)
198 - new channel 3 contains data from channels
199 (13+14+15+16)
200 spw = '0:0~63^3'; mode='channel'; nchan=21;
201 start = 0; width = 1 will produce an spw with
202 21 channels
203 - new channel 1 contains data from channel 0
204 - new channel 2 contains data from channel 2
205 - new channel 21 contains data from channel 61
206 spw = '0:0~40^2'; mode = 'channel'; nchan = 3;
207 start = 5; width = 4 will produce an spw with
208 three output channels
209 - new channel 1 contains channels (5,7)
210 - new channel 2 contains channels (13,15)
211 - new channel 3 contains channels (21,23)
212 nchan Number of channels in the output spw (-1=all).
213 Subparameter of
214 mode='channel|velocity|frequency|channel_b'
215 Default: -1 = all channels
217 Used for regridding, together with 'start' and
218 'width'.
220 Example: nchan=3
221 start Start or end input channel (zero-based), depending on the sign of the width parameter
222 Subparameter of
223 mode='channel|velocity|frequency|channel_b'
225 Used for regridding, together with 'width' and
226 'nchan'. It can be in different units, depending
227 on the regridding mode:
228 - first input channel (mode='channel'),
229 - first velocity (mode='velocity'), or
230 - first frequency (mode='frequency').
232 Example values: '5', '0.0km/s', '1.4GHz', for
233 channel, velocity, and frequency modes,
234 respectively.
235 width Channel width of the output visibilities.
236 Subparameter of
237 mode='channel|velocity|frequency|channel_b'
239 Used for regridding, together with 'start', and
240 'nchan'. It can be in different units, depending
241 on the regridding mode: number of input channels
242 (mode='channel'), velocity (mode='velocity'), or
243 frequency (mode='frequency'.
245 Example values: '2', '1.0km/s', '1.0kHz', for
246 channel, velocity, and frequency modes,
247 respectively.
249 Note: the sign indicates whether the start
250 parameter is lower(+) or upper(-) end of the
251 range.
252 interpolation Spectral interpolation method
253 Subparameter of
254 mode='channel|velocity|frequency|channel_b'
255 Default = 'linear'
256 Options: linear, nearest, cubic, spline, fftshift
257 phasecenter Phase center direction to be used for the spectral
258 coordinate transformation.
259 Default: '' (first selected field)
260 Options: FIELD_ID (int) or center coordinate measure (str).
262 Phase direction measure or fieldid. To be used
263 in mosaics to indicate the center direction to be
264 used in the spectral coordinate transformation.
266 Examples:
267 phasecenter=6
268 phasecenter='J2000 19h30m00 -40d00m00'
269 restfreq Rest frequency to use for output visibilities.
270 Default=''
272 Occasionally it is necessary to set this (for
273 example some VLA spectral line data). For
274 example for NH_3 (1,1) put
275 restfreq='23.694496GHz'
276 outframe Output reference frame (not case-sensitive).
277 Default: '' (keep original reference frame)
278 Options: LSRK, LSRD, BARY, GALACTO, LGROUP, CMB,
279 GEO, TOPO, or SOURCE
281 SOURCE is meant for solar system work and
282 corresponds to GEO + radial velocity correction
283 for ephemeris objects.
285 Example: outframe='BARY'
286 veltype Definition of velocity (in mode)
287 Default = 'radio'
288 hanning Hanning smooth data to remove Gibbs ringing.
289 Default: False
290 Options: False|True
291 [1;42mRETURNS[1;m void
293 --------- examples -----------------------------------------------------------
297 For more information, see the task pages of cvel2 in CASA Docs:
299 https://casa.nrao.edu/casadocs/
302 """
304 _info_group_ = """manipulation"""
305 _info_desc_ = """Regrid an MS or MMS to a new spectral window, channel structure or frame"""
307 def __call__( self, vis='', outputvis='', keepmms=True, passall=False, field='', spw='', scan='', antenna='', correlation='', timerange='', intent='', array='', uvrange='', observation='', feed='', datacolumn='all', mode='channel', nchan=int(-1), start=int(0), width=int(1), interpolation='linear', phasecenter='', restfreq='', outframe='', veltype='radio', hanning=False ):
308 schema = {'vis': {'type': 'cReqPath', 'coerce': _coerce.expand_path}, 'outputvis': {'type': 'cStr', 'coerce': _coerce.to_str}, 'keepmms': {'type': 'cBool'}, 'passall': {'type': 'cBool'}, 'field': {'anyof': [{'type': 'cStr', 'coerce': _coerce.to_str}, {'type': 'cStrVec', 'coerce': [_coerce.to_list,_coerce.to_strvec]}, {'type': 'cInt'}, {'type': 'cIntVec', 'coerce': [_coerce.to_list,_coerce.to_intvec]}]}, 'spw': {'anyof': [{'type': 'cStr', 'coerce': _coerce.to_str}, {'type': 'cStrVec', 'coerce': [_coerce.to_list,_coerce.to_strvec]}, {'type': 'cInt'}, {'type': 'cIntVec', 'coerce': [_coerce.to_list,_coerce.to_intvec]}]}, 'scan': {'anyof': [{'type': 'cStr', 'coerce': _coerce.to_str}, {'type': 'cStrVec', 'coerce': [_coerce.to_list,_coerce.to_strvec]}, {'type': 'cInt'}, {'type': 'cIntVec', 'coerce': [_coerce.to_list,_coerce.to_intvec]}]}, 'antenna': {'anyof': [{'type': 'cStr', 'coerce': _coerce.to_str}, {'type': 'cStrVec', 'coerce': [_coerce.to_list,_coerce.to_strvec]}, {'type': 'cInt'}, {'type': 'cIntVec', 'coerce': [_coerce.to_list,_coerce.to_intvec]}]}, 'correlation': {'anyof': [{'type': 'cStr', 'coerce': _coerce.to_str}, {'type': 'cStrVec', 'coerce': [_coerce.to_list,_coerce.to_strvec]}]}, 'timerange': {'anyof': [{'type': 'cStr', 'coerce': _coerce.to_str}, {'type': 'cStrVec', 'coerce': [_coerce.to_list,_coerce.to_strvec]}, {'type': 'cInt'}, {'type': 'cIntVec', 'coerce': [_coerce.to_list,_coerce.to_intvec]}]}, 'intent': {'anyof': [{'type': 'cStr', 'coerce': _coerce.to_str}, {'type': 'cStrVec', 'coerce': [_coerce.to_list,_coerce.to_strvec]}, {'type': 'cInt'}, {'type': 'cIntVec', 'coerce': [_coerce.to_list,_coerce.to_intvec]}]}, 'array': {'anyof': [{'type': 'cStr', 'coerce': _coerce.to_str}, {'type': 'cStrVec', 'coerce': [_coerce.to_list,_coerce.to_strvec]}, {'type': 'cInt'}, {'type': 'cIntVec', 'coerce': [_coerce.to_list,_coerce.to_intvec]}]}, 'uvrange': {'anyof': [{'type': 'cStr', 'coerce': _coerce.to_str}, {'type': 'cStrVec', 'coerce': [_coerce.to_list,_coerce.to_strvec]}, {'type': 'cInt'}, {'type': 'cIntVec', 'coerce': [_coerce.to_list,_coerce.to_intvec]}]}, 'observation': {'anyof': [{'type': 'cStr', 'coerce': _coerce.to_str}, {'type': 'cStrVec', 'coerce': [_coerce.to_list,_coerce.to_strvec]}, {'type': 'cInt'}, {'type': 'cIntVec', 'coerce': [_coerce.to_list,_coerce.to_intvec]}]}, 'feed': {'anyof': [{'type': 'cStr', 'coerce': _coerce.to_str}, {'type': 'cStrVec', 'coerce': [_coerce.to_list,_coerce.to_strvec]}, {'type': 'cInt'}, {'type': 'cIntVec', 'coerce': [_coerce.to_list,_coerce.to_intvec]}]}, 'datacolumn': {'type': 'cStr', 'coerce': _coerce.to_str, 'allowed': [ 'DATA', 'model', 'corrected', 'LAG_DATA', 'lag_data', 'FLOAT_DATA,DATA', 'FLOAT_DATA', 'CORRECTED', 'lag_data,data', 'float_data', 'float_data,data', 'DATA,MODEL,CORRECTED', 'ALL', 'MODEL', 'all', 'data,model,corrected', 'LAG_DATA,DATA', 'data' ]}, 'mode': {'type': 'cStr', 'coerce': _coerce.to_str, 'allowed': [ 'channel', 'velocity', 'frequency', 'channel_b' ]}, 'nchan': {'type': 'cInt'}, 'start': {'type': 'cVariant', 'coerce': [_coerce.to_variant]}, 'width': {'type': 'cVariant', 'coerce': [_coerce.to_variant]}, 'interpolation': {'type': 'cStr', 'coerce': _coerce.to_str, 'allowed': [ 'nearest', 'linear', 'spline', 'fftshift', 'cubic' ]}, 'phasecenter': {'type': 'cVariant', 'coerce': [_coerce.to_variant]}, 'restfreq': {'type': 'cStr', 'coerce': _coerce.to_str}, 'outframe': {'type': 'cStr', 'coerce': _coerce.to_str, 'allowed': [ 'SOURCE', 'LSRK', 'CMB', 'geo', 'source', 'bary', 'GALACTO', 'GEO', 'TOPO', 'LSRD', 'lsrk', 'topo', 'LGROUP', 'BARY', 'lsrd', 'cmb', 'galacto', 'lgroup', '' ]}, 'veltype': {'type': 'cStr', 'coerce': _coerce.to_str, 'allowed': [ 'optical', 'radio', 'OPTICAL', 'RADIO' ]}, 'hanning': {'type': 'cBool'}}
309 doc = {'vis': vis, 'outputvis': outputvis, 'keepmms': keepmms, 'passall': passall, 'field': field, 'spw': spw, 'scan': scan, 'antenna': antenna, 'correlation': correlation, 'timerange': timerange, 'intent': intent, 'array': array, 'uvrange': uvrange, 'observation': observation, 'feed': feed, 'datacolumn': datacolumn, 'mode': mode, 'nchan': nchan, 'start': start, 'width': width, 'interpolation': interpolation, 'phasecenter': phasecenter, 'restfreq': restfreq, 'outframe': outframe, 'veltype': veltype, 'hanning': hanning}
310 assert _pc.validate(doc,schema), create_error_string(_pc.errors)
311 _logging_state_ = _start_log( 'cvel2', [ 'vis=' + repr(_pc.document['vis']), 'outputvis=' + repr(_pc.document['outputvis']), 'keepmms=' + repr(_pc.document['keepmms']), 'passall=' + repr(_pc.document['passall']), 'field=' + repr(_pc.document['field']), 'spw=' + repr(_pc.document['spw']), 'scan=' + repr(_pc.document['scan']), 'antenna=' + repr(_pc.document['antenna']), 'correlation=' + repr(_pc.document['correlation']), 'timerange=' + repr(_pc.document['timerange']), 'intent=' + repr(_pc.document['intent']), 'array=' + repr(_pc.document['array']), 'uvrange=' + repr(_pc.document['uvrange']), 'observation=' + repr(_pc.document['observation']), 'feed=' + repr(_pc.document['feed']), 'datacolumn=' + repr(_pc.document['datacolumn']), 'mode=' + repr(_pc.document['mode']), 'nchan=' + repr(_pc.document['nchan']), 'start=' + repr(_pc.document['start']), 'width=' + repr(_pc.document['width']), 'interpolation=' + repr(_pc.document['interpolation']), 'phasecenter=' + repr(_pc.document['phasecenter']), 'restfreq=' + repr(_pc.document['restfreq']), 'outframe=' + repr(_pc.document['outframe']), 'veltype=' + repr(_pc.document['veltype']), 'hanning=' + repr(_pc.document['hanning']) ] )
312 task_result = None
313 try:
314 task_result = _cvel2_t( _pc.document['vis'], _pc.document['outputvis'], _pc.document['keepmms'], _pc.document['passall'], _pc.document['field'], _pc.document['spw'], _pc.document['scan'], _pc.document['antenna'], _pc.document['correlation'], _pc.document['timerange'], _pc.document['intent'], _pc.document['array'], _pc.document['uvrange'], _pc.document['observation'], _pc.document['feed'], _pc.document['datacolumn'], _pc.document['mode'], _pc.document['nchan'], _pc.document['start'], _pc.document['width'], _pc.document['interpolation'], _pc.document['phasecenter'], _pc.document['restfreq'], _pc.document['outframe'], _pc.document['veltype'], _pc.document['hanning'] )
315 except Exception as exc:
316 _except_log('cvel2', exc)
317 raise
318 finally:
319 task_result = _end_log( _logging_state_, 'cvel2', task_result )
320 return task_result
322cvel2 = _cvel2( )