Coverage for /wheeldirectory/casa-6.7.0-12-py3.10.el8/lib/py/lib/python3.10/site-packages/casatasks/split.py: 89%

27 statements  

« prev     ^ index     » next       coverage.py v7.6.4, created at 2024-10-31 17:39 +0000

1##################### generated by xml-casa (v2) from split.xml ##################### 

2##################### 153f85b9b5e0c34f95358068857257ea ############################## 

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_split import split as _split_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 

13 

14class _split: 

15 """ 

16 split ---- Create a visibility subset from an existing visibility set 

17 

18  

19 Split is the general purpose program to make a new data set that is a 

20 subset or averaged form of an existing data set. General selection 

21 parameters are included, and one or all of the various data columns 

22 (DATA, LAG_DATA and/or FLOAT_DATA, MODEL_DATA and/or CORRECTED_DATA) 

23 can be selected. 

24  

25 Split is often used after the initial calibration of the data to make 

26 a smaller Measurement Set with only the data that will be used in 

27 further flagging, imaging and/or self-calibration. Split can average 

28 over frequency (channels) and time (integrations). 

29  

30 The split task uses the MSTransform framework underneath. Split also 

31 supports the Multi-MS (MMS) format as input. 

32 

33 --------- parameter descriptions --------------------------------------------- 

34 

35 vis Name of input visibility file 

36 Default: none 

37  

38 Example: vis='ngc5921.ms' 

39 outputvis Name of output visibility file 

40 Default: '' (same as vis) 

41  

42 Example: outputvis='ngc5921_out.ms' 

43  

44 IMPORTANT: if a .flagversions file with the name 

45 of the output MS exist, this task will exit with 

46 an error. The user needs to rename or remove the 

47 existing flagbackup or choose a different output 

48 name for the MS. 

49 keepmms Create a Multi-MS as the output if the input is a 

50 Multi-MS. 

51 Default: True 

52 Options: True|False 

53  

54 By default it will create a Multi-MS when the 

55 input is a Multi-MS. The output Multi-MS will 

56 have the same partition axis of the input 

57 MMS. See CASA Docs for more information on 

58 the MMS format. 

59  

60 NOTE: It is not possible to do time average with 

61 combine='scan' if the input MMS was partitioned 

62 with separationaxis='scan' or 'auto'. In this 

63 case, the task will abort with an error. 

64 field Select field using field id(s) or field name(s) 

65 Default: '' (all fields) 

66  

67 Use 'go listobs' to obtain the list id's or 

68 names. If field string is a non-negative integer, 

69 it is assumed a field index, otherwise, it is 

70 assumed a field name. 

71  

72 Examples: 

73 field='0~2'; field ids 0,1,2 

74 field='0,4,5~7'; field ids 0,4,5,6,7 

75 field='3C286,3C295'; field named 3C286 and 

76 3C295 

77 field = '3,4C\*'; field id 3, all names 

78 starting with 4C 

79 spw Select spectral window/channels 

80 Default: ''=all spectral windows and channels 

81  

82 Examples: 

83 spw='0~2,4'; spectral windows 0,1,2,4 (all channels) 

84 spw='<2'; spectral windows less than 2 (i.e. 0,1) 

85 spw='0:5~61'; spw 0, channels 5 to 61 

86 spw='0,10,3:3~45'; spw 0,10 all channels, spw 

87 3 - chans 3 to 45. 

88 spw='0~2:2~6'; spw 0,1,2 with channels 2 

89 through 6 in each. 

90 spw = '\*:3~64' channels 3 through 64 for all sp id's 

91 spw = ' :3~64' will NOT work. 

92  

93 NOTE: mstransform does not support multiple 

94 channel ranges per spectral window (';'). 

95 scan Scan number range 

96 Subparameter of selectdata=True 

97 Default: '' = all 

98 antenna Select data based on antenna/baseline 

99 Subparameter of selectdata=True 

100 Default: '' (all) 

101  

102 If antenna string is a non-negative integer, it 

103 is assumed an antenna index, otherwise, it is 

104 assumed as an antenna name 

105  

106 Examples:  

107 antenna='5&6'; baseline between antenna 

108 index 5 and index 6. 

109 antenna='VA05&VA06'; baseline between VLA 

110 antenna 5 and 6. 

111 antenna='5&6;7&8'; baselines with 

112 indices 5-6 and 7-8 

113 antenna='5'; all baselines with antenna index 

114 5 

115 antenna='05'; all baselines with antenna 

116 number 05 (VLA old name) 

117 antenna='5,6,10'; all baselines with antennas 

118 5,6,10 index numbers 

119 correlation Select data based on correlation 

120 Default: '' ==> all 

121  

122 Example: correlation="XX,YY". 

123 timerange Select data based on time range 

124 Subparameter of selectdata=True 

125 Default = '' (all) 

126  

127 Examples: 

128 timerange = 

129 'YYYY/MM/DD/hh:mm:ss~YYYY/MM/DD/hh:mm:ss' 

130 (Note: if YYYY/MM/DD is missing date defaults 

131 to first day in data set.) 

132 timerange='09:14:0~09:54:0' picks 40 min on 

133 first day  

134 timerange= '25:00:00~27:30:00' picks 1 hr to 3 

135 hr 30min on NEXT day 

136 timerange='09:44:00' pick data within one 

137 integration of time 

138 timerange='>10:24:00' data after this time 

139 intent Select observing intent 

140 Default: '' (no selection by intent) 

141  

142 Example: intent='*BANDPASS*' (selects data 

143 labelled with BANDPASS intent) 

144 array (Sub)array number range 

145 Default: '' (all) 

146 uvrange Select data by baseline length. 

147 Default = '' (all) 

148  

149 Examples: 

150 uvrange='0~1000klambda'; uvrange from 0-1000 kilo-lambda 

151 uvrange='>4klambda';uvranges greater than 4 kilo-lambda 

152 uvrange='0~1000km'; uvrange in kilometers 

153 observation Select by observation ID(s) 

154 Subparameter of selectdata=True 

155 Default: '' = all 

156  

157 Example: observation='0~2,4' 

158 feed Selection based on the feed  

159 NOT IMPLEMENTED YET! 

160 Default: '' = all 

161 datacolumn Which data column(s) to use for processing 

162 (case-insensitive). 

163 Default: 'corrected' 

164 Options: 'data', 'model', 'corrected', 

165 'all','float_data', 'lag_data', 

166 'float_data,data', 'lag_data,data' 

167  

168 Example: datacolumn='data' 

169  

170 NOTE: 'all' = whichever of the above that are 

171 present. If the requested column does not exist, 

172 the task will exit with an error. 

173 keepflags Keep *completely flagged rows* instead of dropping them. 

174 Default: True (keep completely flagged rows in 

175 the output) 

176 Options: True|False 

177  

178 Keepflags has no effect on partially flagged 

179 rows. All of the channels and correlations of a 

180 row must be flagged for it to be droppable, and a 

181 row must be well defined to be keepable. 

182  

183 IMPORTANT: Regardless of this parameter, flagged 

184 data is never included in channel averaging. On 

185 the other hand, partially flagged rows will 

186 always be included in time averaging. The average 

187 value of the flagged data for averages containing 

188 ONLY flagged data in the relevant output channel 

189 will be written to the output with the 

190 corresponding flag set to True, while only 

191 unflagged data is used on averages where there is 

192 some unflagged data with the flag set to False. 

193 width Number of channels to average to form one output channel 

194 If a list is given, each bin will apply to one 

195 spw in the selection. 

196 Default: 1 (no channel average) 

197 Options: (int)|[int] 

198  

199 Example: chanbin=[2,3] => average 2 channels 

200 of 1st selected spectral window and 3 in the 

201 second one. 

202 timebin Bin width for time averaging 

203 Default: '0s' 

204  

205 Bin width for time averaging. When timebin is 

206 greater than 0s, the task will average data in 

207 time. Flagged data will be included in the 

208 average calculation, unless the parameter 

209 keepflags is set to False. In this case only 

210 partially flagged rows will be used in the 

211 average. 

212 combine Let the timebin span across scan, state or both. 

213 Default: '' (separate time bins by both of the 

214 above) 

215 Options: 'scan', 'state', 'state,scan' 

216  

217 State is equivalent to sub-scans. One scan may 

218 have several state ids. For ALMA MSs, the 

219 sub-scans are limited to about 30s duration 

220 each. In these cases, the task will automatically 

221 add state to the combine parameter. To see the 

222 number of states in an MS, use the msmd tool. See 

223 help msmd. 

224  

225 Examples:  

226  

227 - combine = 'scan'; can be useful when the scan 

228 number goes up with each integration as in 

229 many WSRT MSs. 

230 - combine = ['scan', 'state']: disregard scan 

231 and state numbers when time averaging. 

232 - combine = 'state,scan'; same as above. 

233  

234 NOTE: It is not possible to do time average with 

235 combine='scan' if the input MMS was partitioned 

236 with separationaxis='scan' or 'auto'. In this 

237 case, the task will abort with an error. 

238 

239 --------- examples ----------------------------------------------------------- 

240 

241  

242  

243 For more information, see the task pages of split in CASA Docs: 

244  

245 https://casa.nrao.edu/casadocs/ 

246 

247 

248 """ 

249 

250 _info_group_ = """manipulation""" 

251 _info_desc_ = """Create a visibility subset from an existing visibility set""" 

252 

253 def __call__( self, vis='', outputvis='', keepmms=True, field='', spw='', scan='', antenna='', correlation='', timerange='', intent='', array='', uvrange='', observation='', feed='', datacolumn='corrected', keepflags=True, width=int(1), timebin='0s', combine='' ): 

254 schema = {'vis': {'type': 'cReqPath', 'coerce': _coerce.expand_path}, 'outputvis': {'type': 'cPath', 'coerce': _coerce.expand_path}, 'keepmms': {'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' ]}, 'keepflags': {'type': 'cBool'}, 'width': {'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]}]}, 'timebin': {'type': 'cStr', 'coerce': _coerce.to_str}, 'combine': {'anyof': [{'type': 'cStr', 'coerce': _coerce.to_str}, {'type': 'cStrVec', 'coerce': [_coerce.to_list,_coerce.to_strvec]}]}} 

255 doc = {'vis': vis, 'outputvis': outputvis, 'keepmms': keepmms, 'field': field, 'spw': spw, 'scan': scan, 'antenna': antenna, 'correlation': correlation, 'timerange': timerange, 'intent': intent, 'array': array, 'uvrange': uvrange, 'observation': observation, 'feed': feed, 'datacolumn': datacolumn, 'keepflags': keepflags, 'width': width, 'timebin': timebin, 'combine': combine} 

256 assert _pc.validate(doc,schema), create_error_string(_pc.errors) 

257 _logging_state_ = _start_log( 'split', [ 'vis=' + repr(_pc.document['vis']), 'outputvis=' + repr(_pc.document['outputvis']), 'keepmms=' + repr(_pc.document['keepmms']), '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']), 'keepflags=' + repr(_pc.document['keepflags']), 'width=' + repr(_pc.document['width']), 'timebin=' + repr(_pc.document['timebin']), 'combine=' + repr(_pc.document['combine']) ] ) 

258 task_result = None 

259 try: 

260 task_result = _split_t( _pc.document['vis'], _pc.document['outputvis'], _pc.document['keepmms'], _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['keepflags'], _pc.document['width'], _pc.document['timebin'], _pc.document['combine'] ) 

261 except Exception as exc: 

262 _except_log('split', exc) 

263 raise 

264 finally: 

265 task_result = _end_log( _logging_state_, 'split', task_result ) 

266 return task_result 

267 

268split = _split( ) 

269