Coverage for /wheeldirectory/casa-6.7.0-12-py3.10.el8/lib/py/lib/python3.10/site-packages/casatasks/sdatmcor.py: 56%
27 statements
« prev ^ index » next coverage.py v7.6.4, created at 2024-11-01 07:19 +0000
« prev ^ index » next coverage.py v7.6.4, created at 2024-11-01 07:19 +0000
1##################### generated by xml-casa (v2) from sdatmcor.xml ##################
2##################### e8ee8b38fa0a4cd83c694ea0c3a33a00 ##############################
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_sdatmcor import sdatmcor as _sdatmcor_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 _sdatmcor:
15 """
16 sdatmcor ---- Offline correction of residual atmospheric features
20 The task sdatmcor provides the capability of offline correction of
21 residual atmospheric features in the calibrated single-dish spectra
22 which result from the difference of elevation angle between ON_SOURCE
23 and OFF_SOURCE measurements.
25 The correction factor is derived from the atmosphere model based on
26 the atmospheric properties (temperature, pressure, etc.) measured
27 during the observation. The model is constructed by the atmosphere
28 (at) tool.
30 For spw selection, two selection parameters, spw and outputspw,
31 are available. The former specifies the data to be
32 corrected while the latter corresponds to the spw for output.
33 In practice, intersection of spw and outputspw is corrected.
34 For example, when spw='19,23' and outputspw='19', spw 23 is not
35 corrected because data for spw 23 is not written to outfile so
36 that the correction is not meaningful.
37 For data selection parameters other than spw, only data selected
38 by data selection parameters are corrected and written to the outfile.
40 Note that outfile will have the data column DATA regardless of
41 what data column exists in infile.
43 --------- parameter descriptions ---------------------------------------------
45 infile name of input MS.
46 datacolumn name of data column to be used ["data", "float_data", or "corrected"]
47 outfile name of output MS.
48 overwrite allow to overwrite the output file if already exists.
49 field Select fields. Use field id(s) or name(s).
51 If field string is a non-negative integer, it is assumed to
52 be a field index otherwise, it is assumed to be a field name.
54 Default: ''= all fields
56 Example:
57 field='0~2'; field ids 0,1,2
58 field='0,4,5~7'; field ids 0,4,5,6,7
59 field='3C286,3C295'; field named 3C286 and 3C295
60 field = '3,4C*'; field id 3, all names starting with 4C
61 spw Select spectral windows
63 Note that spw specifies the list of spw ids to apply correction.
64 Spw ids to output should be specified by outputspw.
66 Note also that channel selection is not available for this task.
68 Default: ''=all spectral windows
69 Example:
70 spw='0~2,4'; spectral windows 0,1,2,4
71 spw='<2'; spectral windows less than 2 (i.e. 0,1)
72 spw='0,10'; spw 0,10
73 scan Scan number range
75 Default: '' (all)
76 Example: scan='1~5'
77 antenna Select data based on antenna/baseline
79 If antenna string is a non-negative integer, it is
80 assumed to be an antenna index, otherwise, it is
81 considered an antenna name.
83 If specified selection doesn't contain any autocorrelation,
84 the selection will be tweaked to include autocorrelation data.
85 For example, 'PM02' will be interpreted as 'PM02&&&'.
87 Default: '' (all)
88 Example:
89 antenna='5&6'; baseline between antenna index 5 and
90 index 6.
91 antenna='VA05&VA06'; baseline between VLA antenna 5
92 and 6.
93 antenna='5&6;7&8'; baselines 5-6 and 7-8
94 antenna='5'; all baselines with antenna index 5
95 antenna='05'; all baselines with antenna number 05
96 (VLA old name)
97 antenna='5,6,9'; all baselines with antennas 5,6,9
98 index number
99 correlation Correlation (polarization) types or expression
101 Default: '' (all correlations)
102 Example: correlation='XX,YY'
103 timerange Range of time to select from data
105 timerange = 'YYYY/MM/DD/hh:mm:ss~YYYY/MM/DD/hh:mm:ss'
106 Note: if YYYY/MM/DD is missing date defaults to first
107 day in data set
109 Default: '' (all)
110 Example:
111 timerange='09:14:0~09:54:0' picks 40 min on first day
112 timerange='25:00:00~27:30:00' picks 1 hr to 3 hr
113 30min on NEXT day
114 timerange='09:44:00' pick data within one integration
115 of time
116 timerange='> 10:24:00' data after this time
117 intent Scan Intent(s)
119 Default: '' (all)
120 Example:
121 intent='TARGET_SOURCE'
122 intent='TARGET_SOURCE1,TARGET_SOURCE2'
123 intent='TARGET_POINTING*'
124 observation Observation ID range
126 Default: '' (all observations)
127 Example: observation='0~5'
128 feed feed selection
130 Default: '' (all feeds)
131 Example: feed='0,1'
132 msselect Complicated data selection using TaQL
134 Complicated data selection that cannot be supported by other
135 data selection parameters should be specified here using TaQL.
136 See Casacore Note 199 for detailed syntax of TaQL:
138 https://casacore.github.io/casacore-notes/199.html
140 Default: '' (all data)
141 Example:
142 msselect='ABS(DATA) < 1 && ANTENNA1 == ANTENNA2 + 1'
143 msselect='ROWNUMBER() < 100'
144 outputspw select spws to output, same syntax of spw.("" = all)
146 Note that outputspw specifies the list of spw ids to output.
147 Spw ids to be corrected should be specified by spw.
149 Note also that channel selection is not available for this task.
150 gainfactor Gain factor to multiply correction term.
152 In ALMA data reduction, intensity of calibrated spectra, antenna
153 temperature Ta* in unit of Kelvin, is converted to Jansky (Jy)
154 by multiplying conversion factor. This parameter is intended to
155 apply exactly the same multiplicative factor to correction term.
156 If no conversion is applied to spectral data, gainfactor should
157 be 1.0, which means that the correction is in unit of Ta*.
158 The value can be float, dict, or string. Default is 1.0.
160 Float value is interpreted as fixed factor, which is applied to all spws.
162 Dict should be the pair of spw id (key) and the factor to be applied (value).
163 Key should be string rather than int.
165 If string is given, it should be the name of caltable. For caltable,
166 inverse square of stored value is applied.
168 Default: 1.0
169 Example: 10.0
170 {'17': 45.0, '19': 43.5, '21': 42.0, '23': 40.0}
171 'k2jycal.tbl'
172 dtem_dh temperature gradient [K/km], e.g. -5.6. ("" = Tool default)
174 The value is directly passed to initialization method for ATM model.
175 Float and string types are acceptable. Float value is interpreted as
176 the value in K/km. String value should be the numeric value with unit
177 such as '-5.6K/km'.
179 Default: '' (tool default, -5.6K/km, is used)
180 h0 scale height for water [km], e.g. 2.0. ("" = Tool default)
182 The value is directly passed to initialization method for ATM model.
183 Float and string types are acceptable. Float value is interpreted as
184 the value in kilometer. String value should be the numeric value with
185 unit compatible with length, such as '2km' or '2000m'.
186 atmtype Atmospheric type.
187 The value is directly passed to initialization method for ATM model.
188 The type should be specified as integer. Available options are,
190 1: tropical
191 2: mid latitude summer (default)
192 3: mid latitude winter
193 4: subarctic summer
194 5: subarctic winter
195 atmdetail Expose parameters for detailed configuration of ATM model if True.
197 The following parameters are exposed to the user if atmdetail is True:
199 altitude
200 temperature
201 pressure
202 humidity
203 pwv
204 dp
205 dpm
206 layerboundaries
207 layertemperature
208 altitude Site altitude [m].
210 The value is directly passed to initialization method for ATM model.
211 Float and string types are acceptable. Float value is interpreted as
212 the value in meter. String value should be the numeric value with
213 unit compatible with length, such as '5km' or '5000m'.
215 Default value is taken from the input MS (ANTENNA table).
216 temperature Ambient temperature [K].
218 The value is directly passed to initialization method for ATM model.
219 Float and string types are acceptable. Float value is interpreted as
220 the value in Kelvin. String value should be the numeric value with
221 unit, such as '270K'.
223 Default value is taken from the input MS (ASDM_CALATMOSPHERE table).
224 pressure Ambient pressure [mbar].
226 The value is directly passed to initialization method for ATM model.
227 Float and string types are acceptable. Float value is interpreted as
228 the value in mbar. String value should be the numeric value with
229 unit compatible with pressure, such as '1000mbar' or '1000hPa'.
231 Default value is taken from the input MS (ASDM_CALATMOSPHERE table).
232 humidity Relative humidity [percent].
234 If the value is explicitly specified, it should range from 0 to 100.
236 Default value (-1) indicates that the value is taken from the input MS
237 (ASDM_CALATMOSPHERE table).
238 pwv Zenith water vapor [mm].
240 The value is directly passed to configuration method for ATM model.
241 Float and string types are acceptable. Float value is interpreted as
242 the value in millimeter. String value should be the numeric value with
243 the unit compatible with length, such as '0.3mm'
245 Default value is taken from the input MS (ASDM_CALWVR table).
246 dp Initial pressure step.
248 The value is directly passed to initialization method for ATM model.
249 Float and string types are acceptable. Float value is interpreted as
250 the value in mbar. String value should be the numeric value with
251 unit compatible with pressure, such as '10mbar' or '10hPa'.
253 Default value ('') indicates to use tool default (10mbar).
254 dpm Pressure multiplicative factor for steps.
256 The value is directly passed to initialization method for ATM model.
257 Default value (-1) indicates to use tool default (1.2).
258 layerboundaries Altitude of user-defined temperature profile.
260 The value is directly passed to initialization method for ATM model.
261 String, list of strings, and list of float values are acceptable.
263 For list inputs, float values are interpreted as the value in meter
264 while the string values should be the numeric value with the unit
265 compatible with length.
267 For string input, the value should be comma separated list of
268 strings consisting of numeric value and the unit compatible with
269 length.
271 Number of values should be identical to the number for layertemperature.
273 Default value ('') indicates to use tool default.
275 Example: [1000, 2000]
276 ['1km', '2km']
277 '1km,2km'
278 layertemperature User-defined temperature profile [K].
280 The value is directly passed to initialization method for ATM model.
281 String, list of strings, and list of float values are acceptable.
283 For list inputs, float values are interpreted as the value in Kelvin
284 while the string values should be the numeric value with unit.
286 For string input, the value should be comma separated list of
287 strings consisting of numeric value and unit.
289 Number of values should be identical to the number for layerboundaries.
291 Example: [250, 240]
292 ['250K', '240K']
293 '250K,240K'
295 --------- examples -----------------------------------------------------------
300 """
302 _info_group_ = """single dish"""
303 _info_desc_ = """Offline correction of residual atmospheric features"""
305 def __call__( self, infile='', datacolumn='data', outfile='', overwrite=False, field='', spw='', scan='', antenna='', correlation='', timerange='', intent='', observation='', feed='', msselect='', outputspw='', gainfactor=float(1.0), dtem_dh='', h0='', atmtype=int(2), atmdetail=False, altitude='', temperature='', pressure='', humidity=float(-1), pwv='', dp='', dpm=float(-1), layerboundaries='', layertemperature='' ):
306 schema = {'infile': {'type': 'cStr', 'coerce': _coerce.to_str}, 'datacolumn': {'type': 'cStr', 'coerce': _coerce.to_str, 'allowed': [ 'data', 'float_data', 'corrected' ]}, 'outfile': {'type': 'cStr', 'coerce': _coerce.to_str}, 'overwrite': {'type': 'cBool'}, 'field': {'type': 'cStr', 'coerce': _coerce.to_str}, 'spw': {'type': 'cStr', 'coerce': _coerce.to_str}, 'scan': {'type': 'cStr', 'coerce': _coerce.to_str}, 'antenna': {'type': 'cStr', 'coerce': _coerce.to_str}, 'correlation': {'type': 'cStr', 'coerce': _coerce.to_str}, 'timerange': {'type': 'cStr', 'coerce': _coerce.to_str}, 'intent': {'type': 'cStr', 'coerce': _coerce.to_str}, 'observation': {'type': 'cStr', 'coerce': _coerce.to_str}, 'feed': {'type': 'cStr', 'coerce': _coerce.to_str}, 'msselect': {'type': 'cStr', 'coerce': _coerce.to_str}, 'outputspw': {'type': 'cStr', 'coerce': _coerce.to_str}, 'gainfactor': {'anyof': [{'type': 'cFloat', 'coerce': _coerce.to_float}, {'type': 'cDict'}, {'type': 'cStr', 'coerce': _coerce.to_str}]}, 'dtem_dh': {'anyof': [{'type': 'cStr', 'coerce': _coerce.to_str}, {'type': 'cFloat', 'coerce': _coerce.to_float}]}, 'h0': {'anyof': [{'type': 'cStr', 'coerce': _coerce.to_str}, {'type': 'cFloat', 'coerce': _coerce.to_float}]}, 'atmtype': {'type': 'cInt'}, 'atmdetail': {'type': 'cBool'}, 'altitude': {'anyof': [{'type': 'cStr', 'coerce': _coerce.to_str}, {'type': 'cFloat', 'coerce': _coerce.to_float}]}, 'temperature': {'anyof': [{'type': 'cStr', 'coerce': _coerce.to_str}, {'type': 'cFloat', 'coerce': _coerce.to_float}]}, 'pressure': {'anyof': [{'type': 'cStr', 'coerce': _coerce.to_str}, {'type': 'cFloat', 'coerce': _coerce.to_float}]}, 'humidity': {'type': 'cFloat', 'coerce': _coerce.to_float}, 'pwv': {'anyof': [{'type': 'cStr', 'coerce': _coerce.to_str}, {'type': 'cFloat', 'coerce': _coerce.to_float}]}, 'dp': {'anyof': [{'type': 'cStr', 'coerce': _coerce.to_str}, {'type': 'cFloat', 'coerce': _coerce.to_float}]}, 'dpm': {'type': 'cFloat', 'coerce': _coerce.to_float}, 'layerboundaries': {'anyof': [{'type': 'cStr', 'coerce': _coerce.to_str}, {'type': 'cStrVec', 'coerce': [_coerce.to_list,_coerce.to_strvec]}, {'type': 'cFloatVec', 'coerce': [_coerce.to_list,_coerce.to_floatvec]}]}, 'layertemperature': {'anyof': [{'type': 'cStr', 'coerce': _coerce.to_str}, {'type': 'cStrVec', 'coerce': [_coerce.to_list,_coerce.to_strvec]}, {'type': 'cFloatVec', 'coerce': [_coerce.to_list,_coerce.to_floatvec]}]}}
307 doc = {'infile': infile, 'datacolumn': datacolumn, 'outfile': outfile, 'overwrite': overwrite, 'field': field, 'spw': spw, 'scan': scan, 'antenna': antenna, 'correlation': correlation, 'timerange': timerange, 'intent': intent, 'observation': observation, 'feed': feed, 'msselect': msselect, 'outputspw': outputspw, 'gainfactor': gainfactor, 'dtem_dh': dtem_dh, 'h0': h0, 'atmtype': atmtype, 'atmdetail': atmdetail, 'altitude': altitude, 'temperature': temperature, 'pressure': pressure, 'humidity': humidity, 'pwv': pwv, 'dp': dp, 'dpm': dpm, 'layerboundaries': layerboundaries, 'layertemperature': layertemperature}
308 assert _pc.validate(doc,schema), create_error_string(_pc.errors)
309 _logging_state_ = _start_log( 'sdatmcor', [ 'infile=' + repr(_pc.document['infile']), 'datacolumn=' + repr(_pc.document['datacolumn']), 'outfile=' + repr(_pc.document['outfile']), 'overwrite=' + repr(_pc.document['overwrite']), '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']), 'observation=' + repr(_pc.document['observation']), 'feed=' + repr(_pc.document['feed']), 'msselect=' + repr(_pc.document['msselect']), 'outputspw=' + repr(_pc.document['outputspw']), 'gainfactor=' + repr(_pc.document['gainfactor']), 'dtem_dh=' + repr(_pc.document['dtem_dh']), 'h0=' + repr(_pc.document['h0']), 'atmtype=' + repr(_pc.document['atmtype']), 'atmdetail=' + repr(_pc.document['atmdetail']), 'altitude=' + repr(_pc.document['altitude']), 'temperature=' + repr(_pc.document['temperature']), 'pressure=' + repr(_pc.document['pressure']), 'humidity=' + repr(_pc.document['humidity']), 'pwv=' + repr(_pc.document['pwv']), 'dp=' + repr(_pc.document['dp']), 'dpm=' + repr(_pc.document['dpm']), 'layerboundaries=' + repr(_pc.document['layerboundaries']), 'layertemperature=' + repr(_pc.document['layertemperature']) ] )
310 task_result = None
311 try:
312 task_result = _sdatmcor_t( _pc.document['infile'], _pc.document['datacolumn'], _pc.document['outfile'], _pc.document['overwrite'], _pc.document['field'], _pc.document['spw'], _pc.document['scan'], _pc.document['antenna'], _pc.document['correlation'], _pc.document['timerange'], _pc.document['intent'], _pc.document['observation'], _pc.document['feed'], _pc.document['msselect'], _pc.document['outputspw'], _pc.document['gainfactor'], _pc.document['dtem_dh'], _pc.document['h0'], _pc.document['atmtype'], _pc.document['atmdetail'], _pc.document['altitude'], _pc.document['temperature'], _pc.document['pressure'], _pc.document['humidity'], _pc.document['pwv'], _pc.document['dp'], _pc.document['dpm'], _pc.document['layerboundaries'], _pc.document['layertemperature'] )
313 except Exception as exc:
314 _except_log('sdatmcor', exc)
315 raise
316 finally:
317 task_result = _end_log( _logging_state_, 'sdatmcor', task_result )
318 return task_result
320sdatmcor = _sdatmcor( )