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

27 statements  

« prev     ^ index     » next       coverage.py v7.6.4, created at 2024-11-01 07:19 +0000

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

2##################### 305b0cd5f4c91d6a5f3a5696419a82d5 ############################## 

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_blcal import blcal as _blcal_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 _blcal: 

15 """ 

16 blcal ---- Calculate a baseline-based calibration solution (gain or bandpass) 

17 

18  

19 This task determines a baseline by baseline gain (time) or bandpass 

20 (freq) for all baseline pairs in the data set. For the usual 

21 antenna-based calibration of interferometric data, this task gaincal 

22 is recommended, even with only one to three baselines. For arrays 

23 with closure errors, use blcal. 

24 

25 --------- parameter descriptions --------------------------------------------- 

26 

27 vis Name of input visibility file 

28 Default: none 

29  

30 Example: vis='ngc5921.ms' 

31 caltable Name of output gain calibration table 

32 Default: none 

33  

34 Example: caltable='ngc5921.gcal' 

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

36 Default: '' (all fields) 

37  

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

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

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

41 assumed a field name. 

42  

43 Examples: 

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

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

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

47 3C295 

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

49 starting with 4C 

50 spw Select spectral window/channels 

51 Default: '' (all spectral windows and channels) 

52  

53 Examples: 

54 spw='0~2,4'; spectral windows 0,1,2,4 (all 

55 channels) 

56 spw='<2'; spectral windows less than 2 

57 (i.e. 0,1) 

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

59 INCLUSIVE 

60 spw='\*:5~61'; all spw with channels 5 to 61 

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

62 3, channels 3 to 45. 

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

64 through 6 in each. 

65 spw='0:0~10;15~60'; spectral window 0 with 

66 channels 0-10,15-60. (NOTE ';' to separate 

67 channel selections) 

68 spw='0:0~10^2,1:20~30^5'; spw 0, channels 

69 0,2,4,6,8,10, spw 1, channels 20,25,30 

70 intent Select observing intent 

71 Default: '' (no selection by intent) 

72  

73 Example: intent='\*BANDPASS\*' (selects data 

74 labelled with BANDPASS intent) 

75 selectdata Other data selection parameters 

76 Default: True 

77 Options: True|False 

78 timerange Select data based on time range 

79 Subparameter of selectdata=True 

80 Default = '' (all) 

81  

82 Examples: 

83 timerange = 

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

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

86 to first day in data set.) 

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

88 first day  

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

90 hr 30min on NEXT day 

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

92 integration of time 

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

94 uvrange Select data by baseline length. 

95 Default = '' (all) 

96  

97 Examples: 

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

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

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

101 antenna Select data based on antenna/baseline 

102 Subparameter of selectdata=True 

103 Default: '' (all) 

104  

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

106 is assumed an antenna index, otherwise, it is 

107 assumed as an antenna name 

108  

109 Examples:  

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

111 index 5 and index 6. 

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

113 antenna 5 and 6. 

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

115 indices 5-6 and 7-8 

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

117 5 

118 antenna='05'; all baselines with antenna 

119 number 05 (VLA old name) 

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

121 5,6,10 index numbers 

122 scan Scan number range 

123 Subparameter of selectdata=True 

124 Default: '' = all 

125 observation Select by observation ID(s) 

126 Subparameter of selectdata=True 

127 Default: '' = all 

128  

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

130 msselect Optional complex data selection (ignore for now) 

131 solint Solution interval 

132 Default: 'inf' (infinite, up to boundaries 

133 controlled by combine);  

134 Options: 'inf' (~infinite), 'int' (per 

135 integration), any float or integer value with or 

136 without units 

137  

138 Examples:  

139 solint='1min'; solint='60s', solint=60 (i.e., 

140 1 minute); solint='0s'; solint=0; solint='int' 

141 (i.e., per integration); solint-'-1s'; 

142 solint='inf' (i.e., ~infinite, up to 

143 boundaries enforced by combine) 

144 combine Data axes which to combine for solve 

145 Default: 'scan' (solutions will break at obs, 

146 field, and spw boundaries, but may extend over 

147 multiple scans [per obs, field, and spw] up to 

148 solint.) 

149 Options: '','obs','scan','spw',field', or any 

150 comma-separated combination in a single string 

151  

152 Example: combine='scan,spw' - Extend solutions 

153 over scan boundaries (up to the solint), and 

154 combine spws for solving 

155 freqdep Solve for frequency dependent solutions 

156 Default: False (gain; True=bandpass) 

157 Options: False|True 

158 calmode Type of solution" ('ap', 'p', 'a') 

159 Default: 'ap' (amp and phase) 

160 Options: 'p' (phase) ,'a' (amplitude), 'ap' 

161 (amplitude and phase) 

162  

163 Example: calmode='p' 

164 solnorm Normalize average solution amplitudes to 1.0 

165 Default: False (no normalization) 

166  

167 For freqdep=False, this is a global (per-spw) 

168 normalization of amplitudes (only). For 

169 freqdep=True, each baseline solution spectrum is 

170 separately normalized by its (complex) mean. 

171 gaintable Gain calibration table(s) to apply on the fly 

172 Default: '' (none) 

173  

174 Examples:  

175 gaintable='ngc5921.gcal' 

176 gaintable=['ngc5921.ampcal','ngc5921.phcal'] 

177 gainfield Select a subset of calibrators from gaintable(s) 

178 Default: '' (all sources on the sky) 

179  

180 'nearest' ==> nearest (on sky) available field in 

181 table otherwise, same syntax as field 

182  

183 Examples:  

184 gainfield='0~3' 

185 gainfield=['0~3','4~6'] 

186 interp Interpolation parmameters (in time[,freq]) for each gaintable, as a list of strings. 

187 Default: '' --> 'linear,linear' for all gaintable(s) 

188 Options: Time: 'nearest', 'linear' 

189 Freq: 'nearest', 'linear', 'cubic', 

190 'spline' 

191 Specify a list of strings, aligned with the list of caltable specified 

192 in gaintable, that contain the required interpolation parameters 

193 for each caltable. 

194  

195 - When frequency interpolation is relevant (B, Df, 

196 Xf), separate time-dependent and freq-dependent 

197 interp types with a comma (freq after the 

198 comma).  

199 - Specifications for frequency are ignored when the 

200 calibration table has no channel-dependence.  

201 - Time-dependent interp options ending in 'PD' 

202 enable a "phase delay" correction per spw for 

203 non-channel-dependent calibration types. 

204 - For multi-obsId datasets, 'perobs' can be 

205 appended to the time-dependent interpolation 

206 specification to enforce obsId boundaries when 

207 interpolating in time.  

208 - For multi-scan datasets, 'perscan' can be 

209 appended to the time-dependent interpolation 

210 specification to enforce scan boundaries when 

211 interpolating in time.  

212 - Freq-dependent interp options can have 'flag' appended 

213 to enforce channel-dependent flagging, and/or 'rel'  

214 appended to invoke relative frequency interpolation 

215  

216 Examples:  

217 interp='nearest' (in time, freq-dep will be 

218 linear, if relevant) 

219 interp='linear,cubic' (linear in time, cubic 

220 in freq) 

221 interp='linearperobs,splineflag' (linear in 

222 time per obsId, spline in freq with 

223 channelized flagging) 

224 interp='nearest,linearflagrel' (nearest in 

225 time, linear in freq with with channelized  

226 flagging and relative-frequency interpolation) 

227 interp=',spline' (spline in freq; linear in 

228 time by default) 

229 interp=['nearest,spline','linear'] (for 

230 multiple gaintables) 

231 spwmap Spectral window mappings to form for gaintable(s) 

232 default: [] (apply solutions from each calibration spw to 

233 the same MS spw only) 

234 Any available calibration spw can be mechanically mapped to any  

235 MS spw.  

236 Examples: 

237 spwmap=[0,0,1,1] means apply calibration  

238 from cal spw = 0 to MS spw 0,1 and cal spw 1 to MS spws 2,3. 

239 spwmap=[[0,0,1,1],[0,1,0,1]] (use a list of lists for multiple 

240 gaintables) 

241 parang Apply parallactic angle correction 

242 Default: False 

243  

244 If True, apply the parallactic angle correction 

245 (required for polarization calibration) 

246 

247 --------- examples ----------------------------------------------------------- 

248 

249  

250  

251 For more information, see the task pages of blcal in CASA Docs: 

252  

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

254 

255 

256 """ 

257 

258 _info_group_ = """calibration""" 

259 _info_desc_ = """Calculate a baseline-based calibration solution (gain or bandpass)""" 

260 

261 def __call__( self, vis='', caltable='', field='', spw='', intent='', selectdata=True, timerange='', uvrange='', antenna='', scan='', observation='', msselect='', solint='inf', combine='scan', freqdep=False, calmode='ap', solnorm=False, gaintable=[ ], gainfield=[ ], interp=[ ], spwmap=[ ], parang=False ): 

262 schema = {'vis': {'type': 'cReqPath', 'coerce': _coerce.expand_path}, 'caltable': {'type': 'cStr', 'coerce': _coerce.to_str}, 'field': {'type': 'cStr', 'coerce': _coerce.to_str}, 'spw': {'type': 'cStr', 'coerce': _coerce.to_str}, 'intent': {'type': 'cStr', 'coerce': _coerce.to_str}, 'selectdata': {'type': 'cBool'}, 'timerange': {'type': 'cStr', 'coerce': _coerce.to_str}, 'uvrange': {'type': 'cVariant', 'coerce': [_coerce.to_variant]}, 'antenna': {'type': 'cStr', 'coerce': _coerce.to_str}, 'scan': {'type': 'cStr', 'coerce': _coerce.to_str}, 'observation': {'anyof': [{'type': 'cStr', 'coerce': _coerce.to_str}, {'type': 'cInt'}]}, 'msselect': {'type': 'cStr', 'coerce': _coerce.to_str}, 'solint': {'type': 'cVariant', 'coerce': [_coerce.to_variant]}, 'combine': {'type': 'cStr', 'coerce': _coerce.to_str}, 'freqdep': {'type': 'cBool'}, 'calmode': {'type': 'cStr', 'coerce': _coerce.to_str, 'allowed': [ 'a', 'p', 'ap' ]}, 'solnorm': {'type': 'cBool'}, 'gaintable': {'type': 'cStrVec', 'coerce': [_coerce.to_list,_coerce.to_strvec]}, 'gainfield': {'type': 'cStrVec', 'coerce': [_coerce.to_list,_coerce.to_strvec]}, 'interp': {'type': 'cStrVec', 'coerce': [_coerce.to_list,_coerce.to_strvec]}, 'spwmap': {'type': 'cVariant', 'coerce': [_coerce.to_variant]}, 'parang': {'type': 'cBool'}} 

263 doc = {'vis': vis, 'caltable': caltable, 'field': field, 'spw': spw, 'intent': intent, 'selectdata': selectdata, 'timerange': timerange, 'uvrange': uvrange, 'antenna': antenna, 'scan': scan, 'observation': observation, 'msselect': msselect, 'solint': solint, 'combine': combine, 'freqdep': freqdep, 'calmode': calmode, 'solnorm': solnorm, 'gaintable': gaintable, 'gainfield': gainfield, 'interp': interp, 'spwmap': spwmap, 'parang': parang} 

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

265 _logging_state_ = _start_log( 'blcal', [ 'vis=' + repr(_pc.document['vis']), 'caltable=' + repr(_pc.document['caltable']), 'field=' + repr(_pc.document['field']), 'spw=' + repr(_pc.document['spw']), 'intent=' + repr(_pc.document['intent']), 'selectdata=' + repr(_pc.document['selectdata']), 'timerange=' + repr(_pc.document['timerange']), 'uvrange=' + repr(_pc.document['uvrange']), 'antenna=' + repr(_pc.document['antenna']), 'scan=' + repr(_pc.document['scan']), 'observation=' + repr(_pc.document['observation']), 'msselect=' + repr(_pc.document['msselect']), 'solint=' + repr(_pc.document['solint']), 'combine=' + repr(_pc.document['combine']), 'freqdep=' + repr(_pc.document['freqdep']), 'calmode=' + repr(_pc.document['calmode']), 'solnorm=' + repr(_pc.document['solnorm']), 'gaintable=' + repr(_pc.document['gaintable']), 'gainfield=' + repr(_pc.document['gainfield']), 'interp=' + repr(_pc.document['interp']), 'spwmap=' + repr(_pc.document['spwmap']), 'parang=' + repr(_pc.document['parang']) ] ) 

266 task_result = None 

267 try: 

268 task_result = _blcal_t( _pc.document['vis'], _pc.document['caltable'], _pc.document['field'], _pc.document['spw'], _pc.document['intent'], _pc.document['selectdata'], _pc.document['timerange'], _pc.document['uvrange'], _pc.document['antenna'], _pc.document['scan'], _pc.document['observation'], _pc.document['msselect'], _pc.document['solint'], _pc.document['combine'], _pc.document['freqdep'], _pc.document['calmode'], _pc.document['solnorm'], _pc.document['gaintable'], _pc.document['gainfield'], _pc.document['interp'], _pc.document['spwmap'], _pc.document['parang'] ) 

269 except Exception as exc: 

270 _except_log('blcal', exc) 

271 raise 

272 finally: 

273 task_result = _end_log( _logging_state_, 'blcal', task_result ) 

274 return task_result 

275 

276blcal = _blcal( ) 

277