Coverage for /wheeldirectory/casa-6.7.0-12-py3.10.el8/lib/py/lib/python3.10/site-packages/casatools/__casac__/calibrater.py: 62%

166 statements  

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

1# This file was automatically generated by SWIG (http://www.swig.org). 

2# Version 3.0.12 

3# 

4# Do not make changes to this file unless you know what you are doing--modify 

5# the SWIG interface file instead. 

6 

7from sys import version_info as _swig_python_version_info 

8if _swig_python_version_info >= (2, 7, 0): 

9 def swig_import_helper(): 

10 import importlib 

11 pkg = __name__.rpartition('.')[0] 

12 mname = '.'.join((pkg, '_calibrater')).lstrip('.') 

13 try: 

14 return importlib.import_module(mname) 

15 except ImportError: 

16 return importlib.import_module('_calibrater') 

17 _calibrater = swig_import_helper() 

18 del swig_import_helper 

19elif _swig_python_version_info >= (2, 6, 0): 

20 def swig_import_helper(): 

21 from os.path import dirname 

22 import imp 

23 fp = None 

24 try: 

25 fp, pathname, description = imp.find_module('_calibrater', [dirname(__file__)]) 

26 except ImportError: 

27 import _calibrater 

28 return _calibrater 

29 try: 

30 _mod = imp.load_module('_calibrater', fp, pathname, description) 

31 finally: 

32 if fp is not None: 

33 fp.close() 

34 return _mod 

35 _calibrater = swig_import_helper() 

36 del swig_import_helper 

37else: 

38 import _calibrater 

39del _swig_python_version_info 

40 

41try: 

42 _swig_property = property 

43except NameError: 

44 pass # Python < 2.2 doesn't have 'property'. 

45 

46try: 

47 import builtins as __builtin__ 

48except ImportError: 

49 import __builtin__ 

50 

51def _swig_setattr_nondynamic(self, class_type, name, value, static=1): 

52 if (name == "thisown"): 

53 return self.this.own(value) 

54 if (name == "this"): 

55 if type(value).__name__ == 'SwigPyObject': 

56 self.__dict__[name] = value 

57 return 

58 method = class_type.__swig_setmethods__.get(name, None) 

59 if method: 

60 return method(self, value) 

61 if (not static): 

62 if _newclass: 

63 object.__setattr__(self, name, value) 

64 else: 

65 self.__dict__[name] = value 

66 else: 

67 raise AttributeError("You cannot add attributes to %s" % self) 

68 

69 

70def _swig_setattr(self, class_type, name, value): 

71 return _swig_setattr_nondynamic(self, class_type, name, value, 0) 

72 

73 

74def _swig_getattr(self, class_type, name): 

75 if (name == "thisown"): 

76 return self.this.own() 

77 method = class_type.__swig_getmethods__.get(name, None) 

78 if method: 

79 return method(self) 

80 raise AttributeError("'%s' object has no attribute '%s'" % (class_type.__name__, name)) 

81 

82 

83def _swig_repr(self): 

84 try: 

85 strthis = "proxy of " + self.this.__repr__() 

86 except __builtin__.Exception: 

87 strthis = "" 

88 return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,) 

89 

90try: 

91 _object = object 

92 _newclass = 1 

93except __builtin__.Exception: 

94 class _object: 

95 pass 

96 _newclass = 0 

97 

98class calibrater(_object): 

99 """Proxy of C++ casac::calibrater class.""" 

100 

101 __swig_setmethods__ = {} 

102 __setattr__ = lambda self, name, value: _swig_setattr(self, calibrater, name, value) 

103 __swig_getmethods__ = {} 

104 __getattr__ = lambda self, name: _swig_getattr(self, calibrater, name) 

105 __repr__ = _swig_repr 

106 

107 def __init__(self): 

108 """__init__(self) -> calibrater""" 

109 this = _calibrater.new_calibrater() 

110 try: 

111 self.this.append(this) 

112 except __builtin__.Exception: 

113 self.this = this 

114 

115 def open(self, *args, **kwargs): 

116 """ 

117 open(self, _filename, _compress, _addcorr, _addmodel) -> bool 

118 

119 

120 

121 Summary: 

122 Attach MeasurementSet to the calibrater tool 

123 

124 Description: 

125 

126 

127 Attaches a MeasurementSet to the {tt calibrater} tool for further processing with 

128 other methods. 

129 

130 Input Parameters: 

131 filename MeasurementSet file name. No default 

132 compress Compress calibration columns? 

133 addcorr Add scratch columns? 

134 addmodel Add MODEL_DATA column along with CORRECTED_DATA ? 

135 

136 Example: 

137 

138 cb.open('ngc5921.ms'); 

139 

140 -------------------------------------------------------------------------------- 

141 

142 """ 

143 return _calibrater.calibrater_open(self, *args, **kwargs) 

144 

145 

146 def selectvis(self, *args, **kwargs): 

147 """ 

148 selectvis(self, _time, _spw, _scan, _field, _intent, _observation, _baseline, _uvrange, _chanmode, _nchan, _start, _step, _mstart, _mstep, _msselect) -> bool 

149 

150 

151 

152 Summary: 

153 Set the data selection for subsequent processing 

154 

155 Description: 

156 

157 

158 

159 This function provids for selection of the visibility data from the MS 

160 which will be treated by subsequent execution of the {stfaf solve} and 

161 {stfaf correct} functions. Note that data selection is not cumulative, i.e., 

162 any selection made in a previous call to {stfaf selectvis} will be overridden 

163 by the the current call. 

164 

165 Most of the {stfaf selectvis} parameters use the standardized MS Selection 

166 syntax. 

167 

168 The parameters are described below. The selected data will satisfy the 

169 logical AND of all non-trivially specified parameters. Note that the 

170 old-fashioned strided channel selection parameters are deprecated (and 

171 will soon be removed); use spw instead. Running {stfaf selectvis} with 

172 no specified parameters restores selection of the entire MS. 

173 

174 

175 begin{description} 

176 item[time] is used to specify time ranges in a stardard format 

177 

178 item[spw] is used to specify spectral window and channel selection. Currently, 

179 only a single channel range can be specified per spw. 

180 

181 item[scan] is used to specify scan numbers and ranges 

182 

183 item[observation] is used to specify observation ID(s). 

184 

185 item[field] is used to specify field names or indices 

186 

187 item[baseline] is used to specify antenna and baseline combinations 

188 

189 item[uvrange] is used to specify baseline length ranges 

190 

191 item[chanmode] is deprecated (use spw) 

192 item[nchan] is deprecated (use spw) 

193 item[start] is deprecated (use spw) 

194 item[step] is deprecated (use spw) 

195 item[mstart] is deprecated (use spw) 

196 item[mstep] is deprecated (use spw) 

197 

198 item[msselect] is used to specify a subselection of data according to 

199 Measurement Set columns in conditional combinations not possible 

200 with the standard parameters above. This parameter should be specified 

201 as a valid htmladdnormallink{TaQL}{../../notes/199/199.html} expression. 

202 If both msselect and the standard selection parameter are used together, 

203 they are combined with a logical AND, i.e., the data must jointly satisfy 

204 all {stfaf selectvis} parameters. 

205 

206 end{description} 

207 

208 Input Parameters: 

209 time Select on time 

210 spw Select on spectral window 

211 scan Select on scan 

212 field Select on field 

213 intent Select on intent or state 

214 observation Select by observation ID(s) 

215 baseline Select on antennas/baselines 

216 uvrange Select by uvrange 

217 chanmode Type of data selection: channel or velocity 

218 nchan Number of channels to select (mode='channel') 

219 start Start channel (0-relative) (mode='channel') 

220 step Step in channel number (mode='channel') 

221 mstart Start velocity (e.g. '20Km/s') 

222 mstep Step in velocity (e.g. '100m/s') 

223 msselect TAQL selection string. Default (empty) is no specific selection. 

224 

225 Example: 

226 

227 Open and select a field: 

228 

229 

230 cb.open('ngc5921.ms'); 

231 cb.selectvis(field='N5921_2'); # by complete name 

232 cb.selectvis(field='N5921*'); # with wildcard 

233 cb.selectvis(field='2'); # by index 

234 

235 

236 Select a field and a channel range: 

237 

238 

239 cb.selectvis(spw='0:10~40',field='N5921*'); 

240 

241 

242 Select using all MS Selection parameters (these parameters are 

243 over-specified somewhat, i.e., scan 6 contains only field N5921_2, 

244 etc.): 

245 

246 

247 cb.selectvis(time='>1995/04/13/10:40:00', # times greater than this 

248 spw='0:20~40', # channels 20-40 in spw 0 

249 scan='6', # scan 6 only 

250 field='N59*', # fields matching N59* 

251 baseline='1 & *', # baselines to antenna 1 

252 uvrange='>0.0klambda') # baselines greater than zero length 

253 

254 

255 

256 Reset selection to the entire dataset 

257 

258 

259 cb.selectvis() 

260 

261 -------------------------------------------------------------------------------- 

262 

263 """ 

264 return _calibrater.calibrater_selectvis(self, *args, **kwargs) 

265 

266 

267 def setmodel(self, *args, **kwargs): 

268 """ 

269 setmodel(self, _modelimage) -> bool 

270 

271 

272 

273 Summary: 

274 Set the sky model used to compute the model visibilities 

275 

276 Description: 

277 

278 

279 Name of the model image to be used as a sky model for model visibility 

280 computations. For now, this is used only by EP-Jones solver. 

281 

282 Input Parameters: 

283 modelimage Name of the model image. 

284 

285 Example: 

286 

287 cb.setmodel('mymodel'); 

288 

289 -------------------------------------------------------------------------------- 

290 

291 """ 

292 return _calibrater.calibrater_setmodel(self, *args, **kwargs) 

293 

294 

295 def setptmodel(self, *args, **kwargs): 

296 """ 

297 setptmodel(self, _stokes) -> bool 

298 

299 

300 

301 Summary: 

302 Set the point source model Stokes parameters to be used to compute the model visibilities 

303 

304 Description: 

305 

306 

307 Set a global point source model Stokes parameters to use in solving operations. 

308 

309 Input Parameters: 

310 stokes Vector of Stokes parameters. 

311 

312 Example: 

313 

314 cb.setmodel([1,1,0,0]); 

315 

316 -------------------------------------------------------------------------------- 

317 

318 """ 

319 return _calibrater.calibrater_setptmodel(self, *args, **kwargs) 

320 

321 

322 def setapply(self, *args, **kwargs): 

323 """ 

324 setapply(self, _type, _t, _table, _field, _interp, _select, _calwt, _spwmap, _opacity) -> bool 

325 

326 

327 

328 Summary: 

329 Arrange to apply calibration 

330 

331 Description: 

332 

333 

334 

335 This function is used to specify the calibration components which should be 

336 applied during subsequent execution of the {stfaf solve} and 

337 {stfaf correct} functions. This function should be executed as many 

338 times as necessary to specify all desired calibration components. 

339 

340 Each calibration component represents a separate calibration matrix 

341 correction included in the measurement equation. The different types 

342 correspond to different instrumental and atmospheric effects. 

343 Calibration components are available as calibration tables generated 

344 by previous {stfaf solve} executions (types 'B','BPOLY','G','GSPLINE', 

345 'D','DF','T','M','MF','X'), or are calculated analytically on 

346 the fly (types 'P', 'TOPAC', 'GAINCURVE'). Upon execution 

347 of {stfaf solve} or {stfaf correct}, the group of specified 

348 calibration components will be applied in the order prescribed 

349 by the Measurement Equation formalism. 

350 

351 The parameters are as follows: 

352 

353 begin{description} 

354 

355 item[type] The calibration type being specified. This is only required 

356 for analytic types ('P','TOPAC','GAINCURVE'). When specifying an existing 

357 pre-solved calibration table, it is not necessary to explicitly specify the 

358 {stfaf type}; this will be discerned from the table. (Specifying the 

359 {stfaf type} as well as the {stfaf table} will force a check that the 

360 table contains solutions of the specified type. 

361 

362 For {stfaf type='GAINCURVE'}, an elevation-dependent correction 

363 will be applied using parameters read from the data repository. 

364 Currently, this is only supported for the VLA. 

365 

366 item[t] This parameter will be used in a future release to control 

367 the range of applicability of the specified calibration. Currently, 

368 it is ignored. 

369 

370 item[table] For pre-solved calibration, the file name of the table 

371 to apply. 

372 

373 item[field] The fields to select from the specified table, using 

374 MS Selection syntax (as in selectvis). 

375 

376 item[interp] The desired type of time-dependent interpolation. Use 

377 {stfaf interp='nearest'} to calibrate each datum with the calibration 

378 value nearest in time. Use {stfaf interp='linear'} to calibrate each 

379 datum with calibration phases and amplitudes linearly interpolated 

380 from neighboring (in time) values. In the case of phase, this mode 

381 will assume that phase jumps greater than 180 degrees between neighboring 

382 points indicate a cycle slip, and the interpolated value will follow 

383 this change in cycle accordingly (i.e., the implied rate will always 

384 be less than 180 degrees per sample). Use {stfaf interp='aipslin'} 

385 to emulate the basic interpolation mode used in classic AIPS, i.e., 

386 linearly interpolated amplitudes, with phases derived from linear 

387 interpolation of the complex calibration values. While this method 

388 avoids having to track cycle slips (which is unstable for solutions 

389 with very low SNR), it will yield a phase interpolation which becomes 

390 increasingly non-linear as the spanned phase difference increases. The 

391 non-linearity mimics the behavior of {stfaf interp='nearest'} as 

392 the spanned phase difference approaches 180 degrees (the phase of the 

393 interpolated complex calibration value initially changes very slowly, 

394 then rapidly jumps to the second value at the midpoint of the interval). 

395 If the uncalibrated phase is changing this rapidly, a 'nearest' interpolation 

396 is not desirable. Usually, {stfaf interp='linear'} is the best choice. 

397 The {stfaf interp} parameter is applicable to any calibration type, 

398 as long as there are sufficient solutions available to perform the 

399 interpolation. Note that calibration solutions which have been 

400 determined for only one timestamp will default to 'nearest'. More 

401 interpolation options (e.g., 'cubic') will be added in the future. 

402 

403 item[select] Used to specify general selection of a subset of 

404 calibration measurements from the table to be applied to the 

405 visibility data. Arbitrary cross-calibration is possible by combining 

406 this function with the {stfaf setdata} function. The string 

407 specified must be a valid htmladdnormallink{TaQL}{../../notes/199/199.html} 

408 expression. 

409 

410 item[spwmap] This parameter is used to indicate how solutions 

411 derived from different spectral windows should be applied to other 

412 spectral windows. Nominally, data in each spectral window will be 

413 corrected by solutions derived from the same spectral window. This is 

414 the default behavior of {stfaf spwmap}, i.e., if {stfaf spwmap} is 

415 not specified, calibrater will insist that data be corrected by 

416 solutions from the same spw. Otherwise, {stfaf spwmap} takes a 

417 vector of integers indicating which spectral window {em solutions} to 

418 apply to which spectral window {em data}, such that {tt spwmap[j]=i} 

419 causes solutions derived from the i-th spectral window to be used to 

420 correct the j-th spectral window. For example, if (say) bandpass 

421 solutions are available for spws 0 & 2, and it is desired that these 

422 be applied to spws 1 & 3 (as well as 0 & 2), respectively, use 

423 {stfaf spwmap=[0,0,2,2]}. Even if some spws do not require an 

424 explicit {stfaf spwmap} setting, yet one or more does, it is safest 

425 to specify it explicitly for all, e.g., {stfaf spwmap=[0,1,3,3]} 

426 indicates that spw 2 will be corrected with solutions from spw 3, and 

427 the others will behave nominally. Note that if no solutions exist 

428 for any of the spws specified in {stfaf spwmap}, an error message 

429 will result. 

430 

431 item[calwt] If set True, the data weights will be calibrated 

432 along with the data. This is usually desirable. 

433 

434 item[opacity] For {stfaf type='TOPAC'}, an elevation-dependent 

435 opacity correction will be applied according to the zenith opacity value 

436 supplied in the {stfaf opacity} parameter. Currently, only one zenith 

437 opacity value can be supplied, and it is used for all antennas. 

438 

439 end{description} 

440 

441 Use the {stfaf state} function to review the list of calibration 

442 components that have been set for application. 

443 

444 Pending improvements: 

445 

446 begin{itemize} 

447 item Enable variety of interpolation modes and timescales 

448 item Allow for antenna- and time-dependent opacities 

449 end{itemize} 

450 

451 Input Parameters: 

452 type Component type 

453 t Interpolation interval (seconds) 

454 table Calibration table name 

455 field Select on field 

456 interp Interpolation type (in time) 

457 select TAQL selection string. Default is no selection. 

458 calwt Calibrate weights? 

459 spwmap Spectral windows to apply 

460 opacity Array-wide zenith opacity per antenna (for type='TOPAC') 

461 

462 Example: 

463 

464 cb.open('ngc5921.ms') 

465 cb.selectvis(field='N5921*') 

466 cb.setapply (type='G', table='gcal', field='1445*') 

467 cb.setapply (type='P') 

468 cb.correct(); 

469 cb.close(); 

470 

471 

472 In this example, we apply parallactic angle corrections and a gain 

473 calibration derived from a field whose name matches '1445*' in a caltable 

474 called 'gcal' to data for a field matching 'N5921*' 

475 

476 -------------------------------------------------------------------------------- 

477 

478 """ 

479 return _calibrater.calibrater_setapply(self, *args, **kwargs) 

480 

481 

482 def setcallib(self, *args, **kwargs): 

483 """ 

484 setcallib(self, _callib) -> bool 

485 

486 

487 

488 Summary: 

489 Arrange to apply calibration via a Cal Library 

490 

491 Description: 

492 

493 

494 

495 TBD 

496 

497 Input Parameters: 

498 callib A calibration library record 

499 

500 Example: 

501 

502 TBD 

503 

504 -------------------------------------------------------------------------------- 

505 

506 """ 

507 return _calibrater.calibrater_setcallib(self, *args, **kwargs) 

508 

509 

510 def validatecallib(self, *args, **kwargs): 

511 """ 

512 validatecallib(self, _callib) -> bool 

513 

514 

515 

516 Summary: 

517 Validate a Cal Library record 

518 

519 Description: 

520 

521 

522 

523 TBD 

524 

525 Input Parameters: 

526 callib A calibration library record 

527 

528 Example: 

529 

530 TBD 

531 

532 -------------------------------------------------------------------------------- 

533 

534 """ 

535 return _calibrater.calibrater_validatecallib(self, *args, **kwargs) 

536 

537 

538 def setsolve(self, *args, **kwargs): 

539 """ 

540 setsolve(self, _type, _t, _table, _append, _preavg, _phaseonly, _apmode, _refant, _refantmode, _minblperant, _solnorm, _normtype, _minsnr, _combine, _fillgaps, _cfcache, _painc, _fitorder, _fraction, _numedge, _radius, _smooth, _zerorates, _globalsolve, _niter, _corrcomb, _delaywindow, _ratewindow, _paramactive, _concatspws, _solmode, _rmsthresh) -> bool 

541 

542 

543 

544 Summary: 

545 Arrange to solve for calibration 

546 

547 Description: 

548 

549 

550 This function specifies the calibration component that will be solved for 

551 by the {stff solve} function. Currently, only one type can 

552 be solved for at one time. 

553 

554 Each calibration component represents a separate calibration matrix 

555 correction included in the measurement equation. The different types 

556 correspond to different instrumental and atmospheric effects. 

557 Currently, the solvable calibration components are types 'G','T','B', 'D' 

558 and 'DF', which are antenna-based, and, 'M' and 'MF', which are 

559 baseline-based. Arrange to pre-apply any existing calibration components (of 

560 types other than the solved-for one) using the {stfaf setapply} 

561 function. 

562 

563 The parameters are: 

564 

565 begin{description} 

566 item[type] Specify the calibration type you want to solve for, from 

567 'G','T','B','D','DF','M','MF'. 

568 

569 item[t] Specify the solution interval. This can be specified as an 

570 integer (units of seconds assumed) or as a string containing a value 

571 and units (e.g., '30s', '45min', '2h') or 'inf' (infinite) or 'int' 

572 (per data integration). A solution interval of 0 (with or without 

573 units) is the same as 'int' (per integration), and negative solution 

574 intervals are treated as 'inf' (infinite). 

575 

576 item[table] Specify the output calibration table name in which to 

577 store the calibration solve result. Existing tables will be 

578 deleted and replaced. 

579 

580 item[append] Append the solutions to an existing table. 

581 

582 item[preavg] Specify the amount of pre-average (in time) within 

583 the solution interval. By default, data are averaged up to 

584 the solution interval (or up to 5 minutes for 'D' solving). 

585 

586 item[phaseonly] This parameter is deprecated, use apmode. 

587 

588 item[apmode] Control generation of amplitude-only ('a'), 

589 phase-only ('p'), or amplitude-and-phase ('ap', the default) solutions. 

590 

591 item[refant] Specify an antenna (using data selection syntax) 

592 for referencing the solutions. 

593 

594 item[solnorm] Normalize the solutions by their mean post-solve. For 

595 'B', and 'MF', this is a complex normalization per solution spectrum. 

596 For other types, this is a global (per-spw) normalization of the 

597 amplitudes only. 

598 

599 item[minsnr] Specify the SNR below which solution are rejected. 

600 

601 item[combine] Specify which data axes (spw, field, scan, or some 

602 combination) on which the data should be combined to generate 

603 a single solution. E.g., combine='spw' will force combination 

604 of many spws to form a single solution (per solution interval). 

605 Similarly, combine='scan' with a long solution interval 

606 will force the combination of scans to yield individual solutions 

607 (per field and spw). Ordinarily, solutions are always broken 

608 at scans boundaries. Separate multiple combine options with 

609 commas. 

610 

611 item[fillgaps] For 'B' solutions, specify the largest solution 

612 channel gap (which arise due to flagged data) that will be filled 

613 post-solve via interpolation. Such solution gaps remain flagged 

614 by default. 

615 

616 end{description} 

617 

618 Pending improvements: 

619 

620 begin{itemize} 

621 item{Change t to solint?} 

622 item{Permit flexible specification of preavg (as for t)} 

623 end{itemize} 

624 

625 Input Parameters: 

626 type Component type 

627 t Solution interval (units optional) 

628 table Output calibration table name 

629 append Append to existing table? 

630 preavg Pre-averaging interval (in sec) 

631 phaseonly Solve only for phase? 

632 apmode Solve for 'AP', 'A' (amp-only) or 'P' (phase-only) 

633 refant Reference antenna. Default is none. 

634 refantmode Reference antenna mode 

635 minblperant Minimum number of baselines per ant for solving 

636 solnorm Normalize solution after solve 

637 normtype Solution normalization type 

638 minsnr SNR threshold for accepting solutions 

639 combine Data axes on which to combine solving (scan, spw, and/or field) 

640 fillgaps  

641 cfcache Name of the directory to be used for convolution function disk cache. This is used when type=EP. 

642 painc Parallactic Angle increment used to trigger computation of a new convolution function. This is used when type=EP. Default value implies that only one convolution function will be computed for the entire range of observation. 

643 fitorder Order of the polynomial fit, used when type='A'. 

644 fraction [SINGLE-DISH SPECIFIC] Edge detection parameter for otfraster/otf calibration. This is a number of edge points as a fraction of total number of points. 

645 numedge [SINGLE-DISH SPECIFIC] Edge detection parameter for otfraster calibration. This is a number of edge points. The value specified here comes before fraction. Note that edge points will be detected from both side of each raster row so that number of edge points is effectively twice of the specified value in each raster row. Default (-1) is to use fraction. 

646 radius [SINGLE-DISH SPECIFIC] Specifies radius of the central region of double circle gain calibration for fast scanning data. The value must be either empty or quantum string (numeric value with unit). Default ('') is to use a radius of primary beam. 

647 smooth [SINGLE-DISH SPECIFIC] Whether or not applying smoothing during double circle gain calibration for fast scanning data. Default is True. 

648 zerorates [FRINGE-FIT SPECIFIC] Zero delay-rates in fringe fitting solution tables. 

649 globalsolve [FRINGE-FIT SPECIFIC] Use global least-squares solver to improve fringe-fitting parameter estimates 

650 niter [FRINGE-FIT SPECIFIC] Maximum number of iterations for global least-squares solver 

651 corrcomb [FRINGE-FIT SPECIFIC] Combine correlations (currently supported values are 'none' and 'all')  

652 delaywindow [FRINGE-FIT SPECIFIC] Constrain FFT delay search to a window; a two-element list, units of nanoseconds 

653 ratewindow [FRINGE-FIT SPECIFIC] Constrain FFT rate search to a window; a two-element list, units of seconds per second 

654 paramactive An array of three booleans to control whether to sove for delay, fringe-rate and dispersive delay 

655 concatspws A flag to control multiband FFT behaviour in fringefit task. 

656 solmode Solving mode: '', 'L1'; add 'R' for iterative outlier excision. 

657 rmsthresh RMS threshold sequence. 

658 

659 Example: 

660 

661 cb.open('ngc5921.ms'); 

662 cb.setapply (type='P'); 

663 cb.setsolve (type='G',t='300s', refant=3, table='gcal'); 

664 cb.solve(); 

665 cb.close(); 

666 

667 

668 In this example, analytic (non-solvable) parallactic angle corrections 

669 are pre-applied before G solutions are obtained on a timescale of 300 

670 seconds. The resulting solutions are phase-referenced to antenna 3, 

671 and stored in a calibration table called 'gcal'. 

672 

673 

674 cb.reset(); 

675 cb.setapply (type='P',t=5.0); 

676 cb.setapply (type='G',table='gcal'); 

677 cb.setsolve (type='D',t=86400.0, preavg=60.0, refant=3, table='dcal'); 

678 cb.solve(); 

679 cb.close(); 

680 

681 

682 In this example, the solve/apply state of the calibrater tool is reset 

683 and then the P and G corrections (from above) are applied before 

684 solving for D solutions on a diurnal timescale. Note that the data 

685 will be averaged only to 60 seconds before the solution. The resulting 

686 D solutions are stored in a table called 'dcal'. 

687 

688 -------------------------------------------------------------------------------- 

689 

690 """ 

691 return _calibrater.calibrater_setsolve(self, *args, **kwargs) 

692 

693 

694 def setsolvegainspline(self, *args, **kwargs): 

695 """ 

696 setsolvegainspline(self, _table, _append, _mode, _splinetime, _preavg, _npointaver, _phasewrap, _refant) -> bool 

697 

698 

699 

700 Summary: 

701 Specialization of setsolve for cubic spline G (time-dependent gain) solving 

702 

703 Description: 

704 

705 

706 

707 This function is a specialization of the {stfaf setsolve} method which 

708 should be used when cubic spline G solutions are desired, e.g., when 

709 SNR on calibrators is very low. Currently, this solving mode treats 

710 dual polarization data on a per-polarization basis. The option to 

711 obtain a joint solution (a la 'T') will be provided in the future. 

712 

713 The visibility data are averaged in frequency (for multi-channel data) 

714 prior to the solution. 

715 

716 This method uses many of the basic parameters as the generic 

717 {stfaf setsolve}. Parameters unique to the spline solver are: 

718 

719 begin{description} 

720 

721 item[mode] For phase solutions only, use {stfaf mode='PHAS'}. For 

722 amplitude solutions only, use {stfaf mode='AMP'}. If both are 

723 desired, use {stfaf mode='PHASAMP'}, and both will be solved for 

724 using the same spline timescale (this mode also assumes that all 

725 calibrators have the correct relative flux densities). If solving for 

726 phase and amplitude separately (usually in this order), it is usually 

727 desirable to apply the first one when solving for the second 

728 one. Spline solution so obtained will be stored in separate 

729 calibration tables. In the near future, the {stfaf mode} parameter 

730 will be consolidated with the generic {stfaf apmode} parameter. 

731 

732 item[splinetime] The spline timescale (time between knots) is 

733 specified here. The default is 10800 seconds (3 hours). In future 

734 this parameter will be consolidated with the generic {stfaf t} 

735 parameter. The {stfaf preavg} parameter should be set to a value at 

736 least 4X shorter than the spline time (an error will occur if there is 

737 insufficient sampling within the {stfaf splinetime} timescale), and 

738 consistent with the expected coherence. Consistent with these constraints, 

739 use the largest possible value for {stfaf preavg} to optimize the SNR of 

740 the pre-solve phase-tracking algorithm. 

741 

742 item[npointaver and phasewrap] These parameters tune the 

743 phase-unwrapping algorithm when {stfaf mode $=$ 'PHAS'}. Cycle slips 

744 are detected (and removed before the spline solve) when the median 

745 phase a sequence of length {stfaf npointaver} (in integrations) 

746 differs by more than {stfaf phasewrap} degrees from the previous 

747 sequence. 

748 

749 end{description} 

750 

751 Pending improvements: 

752 

753 begin{itemize} 

754 item Consolidate more parameters with the generic {stfaf setsolve} 

755 item Introduce the generic combine options 

756 item Improve phase-tracking algorithm 

757 end{itemize} 

758 

759 Input Parameters: 

760 table Output calibration table name 

761 append Append to existing table? 

762 mode Phase or Amplitude mode? 

763 splinetime Spline timescale (sec) 

764 preavg Pre-averaging interval (in sec) 

765 npointaver  

766 phasewrap  

767 refant Reference antenna. Default is none. 

768 

769 Example: 

770 

771 cb.open('ngc5921.ms') 

772 cb.selectvis(field='1445*') 

773 cb.setsolvegainspline (table='gcalph',mode='PHAS',splinetime=3600.0,preavg=60.0)cb.solve() 

774 

775 cb.setsolvegainspline (table='gcalamp',mode='AMP',splinetime=10800.0); 

776 cb.solve(); 

777 cb.close(); 

778 

779 

780 In this example, a spline solution is first found for phase on a hourly timescale, then for amplitude on a three-hour timescale. 

781 

782 -------------------------------------------------------------------------------- 

783 

784 """ 

785 return _calibrater.calibrater_setsolvegainspline(self, *args, **kwargs) 

786 

787 

788 def setsolvebandpoly(self, *args, **kwargs): 

789 """ 

790 setsolvebandpoly(self, _table, _append, _t, _combine, _degamp, _degphase, _visnorm, _solnorm, _maskcenter, _maskedge, _refant) -> bool 

791 

792 

793 

794 Summary: 

795 Specialization of setsolve for polynomial B (bandpass) solving 

796 

797 Description: 

798 

799 

800 

801 This function is a specialization of the {stfaf setsolve} method 

802 which should be used to arrange for bandpass solving when polynomial 

803 solutions for B are desired, e.g., when per-channel SNR on calibrators 

804 is too low to obtain a useful sampled bandpass. 

805 

806 Prior to the solution, the visibility data are averaged in time, 

807 and the solution is performed for both phase and amplitude. 

808 

809 This method uses most of the same parameters as the generic 

810 {stfaf setsolve}, with a few unique additions: 

811 

812 begin{description} 

813 

814 item[degamp and degphase] The parameters permit specification 

815 of the polynomial order to use in amp and phase. Specifying 

816 0 (zero) yields constant solutions. 

817 

818 item[visnorm] This parameter is used to normalize the assembled 

819 spectral data, in a per baseline manner. If set True, this will have 

820 the effect of removing any non-frequency-dependent closure errors 

821 (e.g., as caused by source structure, or introduced by the instrument) 

822 from the data, and should be used with caution. The resulting 

823 solutions will be effectively normalized as well. When {stfaf 

824 visnorm=F} is used, closure errors in the data (as supplied to the 

825 solver) may be visible in the form of offsets between the data and 

826 solutions. For bandpass calibration, this is usually ok, as the {em 

827 shape} of the bandpass is the most important aspect of the solution. 

828 In future this parameter will be generalized and made available 

829 for other solve types. (NB: Use of {stfaf solnorm=True} still 

830 provides for post-solve normalization of the solutions.) 

831 

832 item[maskcenter and maskedge] These parameters control how many 

833 channels are ignored on-the-fly, at the center and edges of each input 

834 spectral window, respectively. To avoid edge channels, it is almost 

835 always better to flag these channels directly, or select against them 

836 in {stfaf setdata}. Aggressive use of maskedge (large values), will 

837 yield polynomial solutions which will tend to diverge at the edges 

838 (especially when the polynomial degree is also high), because maskedge 

839 does not change the frequency domain of the solutions. Such solutions 

840 should be used with caution in subsequent operations. (It is best to 

841 avoid use of maskedge.) 

842 end{description} 

843 

844 The BPOLY solution is performed for both phase and amplitude, and the 

845 result will be stored in the same table. The frequency domain of the 

846 solutions is limited to only the range of frequencies selected in 

847 {stfaf selectvis}. When correcting data with these solutions (for 

848 other solves or with {stfaf correct}), only data within this domain 

849 will be corrected. Data outside (e.g., edge channels avoided in 

850 {stfaf setdata} for the solve), will not be corrected. Therefore, 

851 the same (or narrower) channel selection is recommended for all 

852 operations using solutions produced by this function and {stfaf 

853 solve()}. 

854 

855 Note that the {stfaf combine} parmaeter can be used meaningfully with 

856 the BPOLY solver. When combine='spw', the data from multiple spws 

857 will be combined on a common frequency axis, and a single polynomial 

858 will be determined spanning them all. This is different than for 

859 ordinary sampled 'B' solutions, for which combine='spw' causes the 

860 bandpass to be combined on a common channel axis, effectively yielding 

861 a mean bandpass for the set of spws. 

862 

863 Input Parameters: 

864 table Output calibration table name 

865 append Append to existing table? 

866 t Solution interval (units optional) 

867 combine Data axes on which to combine solving (scan, spw, and/or field) 

868 degamp Polynomial degree for amplitude solution 

869 degphase Polynomial degree for phase solution 

870 visnorm Normalize data prior to solution 

871 solnorm Normalize result? 

872 maskcenter Number of channels to avoid in center of each band 

873 maskedge Fraction of channels to avoid at each band edge (in %) 

874 refant Reference antenna 

875 

876 Example: 

877 

878 cb.open('ngc5921.ms'); 

879 cb.selectvis(field='1331*') 

880 cb.setsolvebandpoly(table='bpoly',degamp=5,degphase=7); 

881 cb.solve(); 

882 cb.close(); 

883 

884 

885 In this example, amplitude (degree 5) and phase (degree 7) Chebychev 

886 polynomial bandpasses are determined using the default parameters. 

887 

888 -------------------------------------------------------------------------------- 

889 

890 """ 

891 return _calibrater.calibrater_setsolvebandpoly(self, *args, **kwargs) 

892 

893 

894 def returndict(self): 

895 """ 

896 returndict(self) -> record * 

897 

898 

899 

900 Summary: 

901 Return a dictionary describing the current calibrater state 

902 

903 Description: 

904 

905 

906 

907 Return a dictionary containing information about the current calibrater tool state. 

908 This dictionary contains the following keys: 'antennas', 'apply tables', 'field', 'intents', 'observation', 'scan', 'solve table', 'spw'. 

909 

910 Each of these keys will show which values for each of these parameters are selected. By default all of the MS is selected when opened by the calibrater tool. 

911 

912 The values of each of these keys is an array of either strings or integers. 

913 

914 

915 Example: 

916 

917 cb.open('gaincaltest2.ms') 

918 cb.selectvis(field='1') 

919 cb.returndict() 

920 

921 This would return a dictionary that looks like this: 

922 

923 {'antennas': array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]), 

924 'apply tables': array([], dtype='U16'), 

925 'field': array([1]), 

926 'intents': array(['CALIBRATE_AMPLI#ON_SOURCE', 'CALIBRATE_DELAY#ON_SOURCE', 

927 'CALIBRATE_PHASE#ON_SOURCE', 'CALIBRATE_WVR#ON_SOURCE'], 

928 dtype='U26'), 

929 'observation': array([0]), 

930 'scan': array([ 3, 5, 8, 10, 12, 15, 17, 20, 22, 24]), 

931 'solve table': array([], dtype='U16'), 

932 'spw': array([0, 1, 2, 3])} 

933 

934 -------------------------------------------------------------------------------- 

935 

936 """ 

937 return _calibrater.calibrater_returndict(self) 

938 

939 

940 def state(self): 

941 """ 

942 state(self) -> bool 

943 

944 

945 

946 Summary: 

947 Request the apply/solve state of the calibrater tool 

948 

949 Description: 

950 

951 

952 

953 Request the apply/solve state of the calibrater tool. A listing of 

954 all calibration components that have been set for application or 

955 solving is written to the logger. 

956 

957 Example: 

958 

959 cb.open('ngc5921.ms'); 

960 cb.setapply ('P', 5.0); 

961 cb.setsolve ('G', 300.0, F, 3, 'gcal_1', T); 

962 cb.state(); 

963 

964 -------------------------------------------------------------------------------- 

965 

966 """ 

967 return _calibrater.calibrater_state(self) 

968 

969 

970 def reset(self, *args, **kwargs): 

971 """ 

972 reset(self, _apply, _solve) -> bool 

973 

974 

975 

976 Summary: 

977 Reset the selected apply and/or solve components 

978 

979 Description: 

980 

981 

982 

983 Resets the apply and/or solve components previously set by setapply and 

984 setsolve. 

985 

986 Input Parameters: 

987 apply If true, unset all apply settings 

988 solve If true, unset all solve settings 

989 

990 Example: 

991 

992 cb.open('ngc5921.ms') 

993 cb.setapply ('P', 5.0) 

994 cb.setsolve ('G', 300.0, F, 3, 'gcal_1', T) 

995 cb.state() 

996 cb.reset(apply=T,solve=F); 

997 cb.state() 

998 cb.reset() 

999 

1000 -------------------------------------------------------------------------------- 

1001 

1002 """ 

1003 return _calibrater.calibrater_reset(self, *args, **kwargs) 

1004 

1005 

1006 def initcalset(self, *args, **kwargs): 

1007 """ 

1008 initcalset(self, _calset) -> bool 

1009 

1010 

1011 

1012 Summary: 

1013 Re-initialize the calibration scratch columns. 

1014 

1015 Description: 

1016 

1017 

1018 

1019 This function re-initializes the calibration scratch columns: 

1020 MODEL_DATA to unity (in total intensity, and unpolarized), and 

1021 CORRECTED_DATA to (observed) DATA. 

1022 Optionally if calset is set to 1 any model saved in the MS header to for calibration 

1023 purposes is deleted 

1024 

1025 Input Parameters: 

1026 calset if it set to 1 the model saved in the header is removed 

1027 

1028 Example: 

1029 

1030 cb.open('ngc5921.ms'); 

1031 cb.initcalset(); 

1032 cb.solve(); 

1033 

1034 -------------------------------------------------------------------------------- 

1035 

1036 """ 

1037 return _calibrater.calibrater_initcalset(self, *args, **kwargs) 

1038 

1039 

1040 def delmod(self, *args, **kwargs): 

1041 """ 

1042 delmod(self, _otf, _field, _spw, _scr) -> bool 

1043 

1044 

1045 

1046 Summary: 

1047 Delete model data representations in the MS. 

1048 

1049 Description: 

1050 

1051 

1052 

1053 This method can be used to delete the model visibility 

1054 data representations in the MS. The 'otf' representation is 

1055 the new (as of v3.4) 'scratch-less' model data, stored as 

1056 keywords in the MS header containing model data formation 

1057 instructions. It is generated by the im tool (setjy, ft, and clean 

1058 methods; usescratch=F in im.open), and if present, overrides the 

1059 old-fashioned MODEL_DATA column (if present). If a user 

1060 wishes to use the MODEL_DATA column _after_ having operated 

1061 with the 'otf' representation, this method can be used 

1062 to delete the 'otf' represenatation to make the MODEL_DATA 

1063 column visible. (Create the MODEL_DATA column by using 

1064 usescratch=T in the im tool, or by running the cb.open 

1065 with addmodel=T.) 

1066 

1067 If otf=T, the user may selectively remove only a selection of fields model from the MS by specifying the field parameter. Similarly if the field parameter is specified, selected spws model for those fields may be deleted by specifying the spw. 

1068 

1069 

1070 For convenience, this method also provides a means for 

1071 deleting the MODEL_DATA column by setting scr=T. 

1072 

1073 Input Parameters: 

1074 otf If T, delete the otf model data keywords 

1075 field Select on field 

1076 spw Select on spw only if field is defined 

1077 scr If T, delete the MODEL_DATA column 

1078 

1079 Example: 

1080 

1081 cb.open('ngc5921.ms'); 

1082 cb.delmod(otf=T,scr=F); # delete only the otf model for all fields 

1083 cb.solve(); 

1084 

1085 cb.open('n4826.ms') 

1086 cb.delmod(otf=T, field='1') 

1087 #delete otf model of field 1 only, all other fields model are untouched 

1088 #if present 

1089 cb.open('n4826.ms') 

1090 cb.delmod(otf=T, field='1', spw='2') 

1091 #delete otf model of field 1 and spectralwindow 2 only. 

1092 

1093 ####NOTE doing: 

1094 cb.delmod(otf=T, field='', spw='2') 

1095 

1096 #will delete all otf models and spw will be ignored 

1097 

1098 -------------------------------------------------------------------------------- 

1099 

1100 """ 

1101 return _calibrater.calibrater_delmod(self, *args, **kwargs) 

1102 

1103 

1104 def solve(self): 

1105 """ 

1106 solve(self) -> bool 

1107 

1108 

1109 

1110 Summary: 

1111 Solve for the selected calibration components 

1112 

1113 Description: 

1114 

1115 

1116 Execution of this function initiates a solve for the calibration component 

1117 specified in a previous {stfaf setsolve} execution. Existing calibration 

1118 components (as specified in one or more {stfaf setapply} executions) will 

1119 be appropriately applied to the observed and model data according to their 

1120 position in the Measurement Equation, and their commutation properties. 

1121 

1122 Example: 

1123 

1124 cb.open('ngc5921.ms'); 

1125 cb.setapply ('P', t=10) 

1126 cb.setsolve ('G', 300.0, F, 3, 'gcal_1', T); 

1127 cb.solve(); 

1128 cb.close(); 

1129 

1130 -------------------------------------------------------------------------------- 

1131 

1132 """ 

1133 return _calibrater.calibrater_solve(self) 

1134 

1135 

1136 def correct(self, *args, **kwargs): 

1137 """ 

1138 correct(self, _applymode) -> bool 

1139 

1140 

1141 

1142 Summary: 

1143 Apply calibration information 

1144 

1145 Description: 

1146 

1147 

1148 

1149 This function applies the calibration components specified via one or 

1150 more invocations of the {stff setapply} function to the observed 

1151 visibility data and writes the result to the CORRECTED_DATA column 

1152 of the Measurement Set. 

1153 

1154 Input Parameters: 

1155 applymode Correction cal/flag mode: ''='calflag','cal','flag','trial' 

1156 

1157 Example: 

1158 

1159 cb.open('ngc5921.ms'); 

1160 cb.selectvis(field='1445*') 

1161 cb.setapply ('G', 10.0, 'gcal_1') 

1162 cb.correct(); 

1163 cb.close(); 

1164 

1165 -------------------------------------------------------------------------------- 

1166 

1167 """ 

1168 return _calibrater.calibrater_correct(self, *args, **kwargs) 

1169 

1170 

1171 def corrupt(self): 

1172 """ 

1173 corrupt(self) -> bool 

1174 

1175 

1176 

1177 Summary: 

1178 Corrupt model with calibration tables 

1179 

1180 Description: 

1181 

1182 

1183 

1184 This function applies the calibration components specified via one or 

1185 more invocations of the {stff setapply} function to the model 

1186 visibility data and (over-)writes the result to the MODEL_DATA column of the 

1187 Measurement Set. 

1188 

1189 Example: 

1190 

1191 cb.open('ngc5921.ms') 

1192 cb.selectvis(field='1445*') 

1193 cb.setapply ('G', 10.0, 'gcal_1') 

1194 cb.corrupt() 

1195 cb.close() 

1196 

1197 -------------------------------------------------------------------------------- 

1198 

1199 """ 

1200 return _calibrater.calibrater_corrupt(self) 

1201 

1202 

1203 def initweights(self, *args, **kwargs): 

1204 """ 

1205 initweights(self, _wtmode, _dowtsp, _tsystable, _gainfield, _interp, _spwmap) -> bool 

1206 

1207 

1208 

1209 Summary: 

1210 Initialize MS weight info in various ways. 

1211 

1212 Description: 

1213 

1214 

1215 

1216 This function initializes the MS weight info in various ways. 

1217 

1218 If wtmode='ones', SIGMA and WEIGHT will be initialized with 1.0, 

1219 globally. 

1220 

1221 If wtmode='nyq' (the default), SIGMA and WEIGHT will be initialized 

1222 according to bandwidth and integration time. This is the 

1223 theoretically correct mode for raw normalized visibilities. 

1224 

1225 If wtmode='sigma', WEIGHT will be initialized according to the 

1226 existing SIGMA column. 

1227 

1228 If mode='weight', WEIGHT_SPECTRUM will be initialized according to the 

1229 existing WEIGHT column; dowtspec=T must be specified in this case. 

1230 

1231 For the above wtmodes, if dowtspec=T (or if the WEIGHT_SPECTRUM column 

1232 already exists), the WEIGHT_SPECTRUM column will be initialized 

1233 (uniformly in channel), in a manner consistent with the WEIGHT column. 

1234 If the WEIGHT_SPECTRUM column does not exist, dowtsp=T will force its 

1235 creation. 

1236 

1237 The follow modes should be used with extreme care: If 

1238 wtmode='delwtsp', the WEIGHT_SPECTRUM column will be deleted (if it 

1239 exists). If wtmode='delsigsp', the SIGMA_SPECTRUM column will be 

1240 deleted (if it exists). Note that creation of SIGMA_SPECTRUM is not 

1241 supported via this method. 

1242 

1243 Note that this method does not support any prior selection. 

1244 Intialization of the weight information must currently be done 

1245 globally or not at all. This is to maintain consistency. 

1246 

1247 Input Parameters: 

1248 wtmode Initialization mode 

1249 dowtsp Initialize WEIGHT_SPECTRUM column 

1250 tsystable Tsys calibration table to apply on the fly 

1251 gainfield Select a subset of calibrators from Tsys caltable 

1252 interp Interp type in time[,freq]. default==linear,linear 

1253 spwmap Spectral windows combinations to form for gaintables(s) 

1254 

1255 Example: 

1256 

1257 cb.open('ngc5921.ms') 

1258 cb.initweights() 

1259 cb.close() 

1260 

1261 -------------------------------------------------------------------------------- 

1262 

1263 """ 

1264 return _calibrater.calibrater_initweights(self, *args, **kwargs) 

1265 

1266 

1267 def fluxscale(self, *args, **kwargs): 

1268 """ 

1269 fluxscale(self, _tablein, _reference, _tableout, _transfer, _listfile, _append, _refspwmap, _gainthreshold, _antenna, _timerange, _scan, _incremental, _fitorder, _display) -> record * 

1270 

1271 

1272 

1273 Summary: 

1274 Bootstrap the flux density scale from standard calibrators 

1275 

1276 Description: 

1277 

1278 

1279 

1280 This function is used to bootstrap the amplitude scale the 

1281 calibration solutions according to specified reference calibrator(s) 

1282 of known flux density. This is necessary when the flux densities 

1283 of some of your calibrators were unknown (and thus were assumed 

1284 to be 1 Jy) during G solving. 

1285 

1286 The bootstrapping is achieved by comparing the median gain norm of the 

1287 calibration solutions derived for the calibrators specified in {stfaf 

1288 reference} (one or more sources with known flux densities at the time 

1289 of G solving) with that of the calibrators specified in {stfaf 

1290 transfer}, and enforcing the assumption that the antenna gains are 

1291 constant, on average. The gain solutions for the transfer sources are 

1292 then re-scaled accordingly. The {stfaf reference} and {stfaf transfer} 

1293 parameters may be specified using the general field selection syntax 

1294 (as in {stfaf field} in {stfaf selectvis}). 

1295 

1296 If no {tt transfer} fields are specified, then the solutions for 

1297 all non-reference fields in {tt tablein} will be re-scaled. 

1298 

1299 If no {tt tableout} is specified the input table will be overwritten 

1300 with the scaled solutions. Note that the resulting table will only 

1301 contain solutions for those fields implicit in the {tt reference} and 

1302 {tt transfer} specifications. Use {tt append=T} to append the scaled 

1303 solutions to an existing table. 

1304 

1305 Use the {stfaf refspwmap} parameter to indicate how data for 

1306 different spectral windows should be matched in calculating the flux 

1307 density scale factor for {stfaf transfer} fields. The default 

1308 behavior for {tt refspwmap} is to insist on precisely matching 

1309 spectral windows for {tt reference} and {tt transfer} fields. When 

1310 specified, the {stfaf refspwmap} parameter takes a vector of integers 

1311 indicating which spectral window solutions to use as the reference for 

1312 others, such that {tt refspwmap[j]=i} causes solutions (from reference 

1313 fields) observed in the i-th spectral window to be used to reference 

1314 solutions (from transfer fields) observed in the j-th spectral window. 

1315 For example, for the case of a total of 4 spectral windows: if the 

1316 {tt reference} fields were observed only in spw=2 & 4, and the {tt 

1317 transfer} fields were observed variously in all 4 spws, specify {tt 

1318 refspwmap=[2,2,4,4]}. This will ensure that {tt transfer} fields 

1319 observed in spws 1,2,3,4 will be referenced to {tt reference} field 

1320 data from spws 2,2,4,4, respectively. Note that if the {tt transfer} 

1321 fields were observed only in spws 1 & 3, the same specification would 

1322 work, but {tt refspwmap=[2,2,4]} would suffice. In this case, 

1323 nothing need be specified for the 4th spw (there are no transfer 

1324 fields there), and specifying 2 for the 2nd spw is actually 

1325 inconsequential (though required so that the specification of 4 for spw 3 

1326 is properly interpretted). 

1327 

1328 The gain values used in the flux scaling determination skewed by 

1329 outliers. The parameters, {tt gainthreshold} and {tt antenna} can be used 

1330 to limit the input gain solutions to be included in the flux scale determination. 

1331 Use the {tt gainthreshold} is a threshold in % from the median values of the 

1332 gain solutions to be used. Use the {tt antenna} to select or de-selesect (using the 

1333 MSSelection syntax) antenna(s). Futher refinements on the selection based on 

1334 timerange and scan are possible. 

1335 

1336 The derived flux densities for the transfer fields will be reported in 

1337 the logger, and returned to the Python dictionary specified in {tt 

1338 fluxd}. This will be an 2D array of shape [number-of-spectral-windows 

1339 X number-of-fields]. When mulitple spectral windows are involved the spectral 

1340 index will also be reported by fitting the determined flux densities across 

1341 the freuquencies. The order of a polynomcial to be fitted can be specified with 

1342 {tt fitorder}. 

1343 

1344 Note that elevation-dependent gain effects may render the basic 

1345 assumption used here invalid, and so should be corrected for prior to 

1346 solving for G, using types 'TOPAC' or 'GAINCURVE' in {tt setapply}. 

1347 

1348 Note that the visibility data itself is not used directly by this 

1349 function. 

1350 

1351 Pending improvements: 

1352 

1353 begin{itemize} 

1354 item Allow antenna and uv-distance selection to improve results for 

1355 resolved calibrators 

1356 item Set the visibility model according to the flux density results 

1357 item An option to use the data to derive the relative flux densities 

1358 end{itemize} 

1359 

1360 Input Parameters: 

1361 tablein Input calibration table name 

1362 reference Reference calibrator field names (comma-separated) 

1363 tableout Output calibration table name. Default is input calibration table name. 

1364 transfer Transfer source field names (comma-separated). Default is all other fields. 

1365 listfile Name of listfile that contains the fit information. Default is '' (no file). 

1366 append Append to existing table? 

1367 refspwmap List of alternate spw for referencing 

1368 gainthreshold Threshold of gain amplitudes with respect to the median value to be used in flux scale calculation. Default: -1.0 (no threshold) 

1369 antenna antenna selection/de-selection in flux scale calculation. Default: ''(include all antennas) 

1370 timerange timerage sub-selection with antenna selection in flux scale calculation. Default: ''(include all) 

1371 scan scan sub-selection with antenna selection in flux scale calculation. Default: ''(include all) 

1372 incremental create a incremental caltable 

1373 fitorder order for spectral fitting for multiple spws 

1374 display display statistics of the flux ratios 

1375 

1376 Example: 

1377 

1378 cb.open('ngc5921.ms') 

1379 cb.selectvis(field='1331*,1445*') 

1380 cb.setsolve(type='G',table='gcal',t='inf') 

1381 cb.solve() 

1382 cb.fluxscale (tablein='gcal', tableout='flxcal', 

1383 reference='1331*', transfer='1445*'); 

1384 cb.close(); 

1385 

1386 

1387 This example generates a calibration table containing {tt G} 

1388 solutuions ('gcal') and then writes a re-scaled version, using 

1389 1335+305 as the reference calibrator, to derive properly scaled 

1390 amplitude calibration for the transfer source, 1445+099. We have 

1391 assumed that 1331+305 has already had its MODEL_DATA set to 

1392 the correct flux density. 

1393 

1394 -------------------------------------------------------------------------------- 

1395 

1396 """ 

1397 return _calibrater.calibrater_fluxscale(self, *args, **kwargs) 

1398 

1399 

1400 def accumulate(self, *args, **kwargs): 

1401 """ 

1402 accumulate(self, _tablein, _incrtable, _tableout, _field, _calfield, _interp, _t, _spwmap) -> bool 

1403 

1404 

1405 

1406 Summary: 

1407 Accumulate incremental calibration solutions into a cumulative calibration table 

1408 

1409 Description: 

1410 

1411 

1412 

1413 This function enables cumulative calibration using {tt calibrater}. 

1414 It is the analog of the task ``CLCAL'' in classic AIPS. 

1415 

1416 The {tt accumulate} function is useful when: 

1417 

1418 begin{itemize} 

1419 item a calibration solution of a particular type already exists, 

1420 item an incremental calibration solution {em of the same type} is desired 

1421 (an incremental solution in this context means derived independently 

1422 from, or determined with respect to, the first) 

1423 item the first calibration cannot be implicitly recovered in the course 

1424 of obtaining the incremental solution 

1425 end{itemize} 

1426 

1427 For example, a phase-only ``G'' self-calibration on a target source 

1428 may be desired to tweak the full amplitude and phase ``G'' calibration 

1429 already obtained from a calibrator. The initial calibration (from the 

1430 calibrator) contains amplitude information, and so must be carried 

1431 forward, yet the phase-only solution itself cannot (by definition) 

1432 recover this information, as a full amplitude and phase 

1433 self-calibration would. In this case, the initial solution must be 

1434 applied while solving for the phase-only solution, then the two 

1435 solutions combined to form a {em cumulative} calibration embodying 

1436 the net effect of both. In terms of the Measaurement Equation, the net 

1437 calibration is the {em product} of the initial and incremental 

1438 solutions. 

1439 

1440 The analog of {tt accumulate} in classic AIPS is the use of CLCAL to 

1441 combine a series of (incremental) SN calibration tables to form 

1442 successive (cumulative) CL calibration tables. 

1443 

1444 Cumulative calibration tables also provide a means of generating 

1445 carefully interpolated calibration, on variable user-defined 

1446 timescales, that can be examined prior to application to the data with 

1447 {tt setapply} and {tt correct}. The solutions for different fields 

1448 and/or spectral windows can be interpolated in different ways, with 

1449 all solutions stored in the same table. 

1450 

1451 The only difference between incremental and cumulative calibration 

1452 tables is that incremental tables are generated directly from the data 

1453 via {tt solve} or (in the near future) from other ancilliary data 

1454 (e.g. weather information), and cumulative tables are generated from 

1455 other cumulative and incremental tables via {tt accumulate}. In all 

1456 other respects (internal format, application to data via {tt 

1457 setapply} and {tt correct}, plotting with {tt plotcal}, etc.), they 

1458 are the same, and therefore interchangable. Thus, {tt accumulate} and 

1459 cumulative calibration tables need only be used when circumstances 

1460 require it. 

1461 

1462 The {tt accumulate} function represents a generalization on the 

1463 classic AIPS CLCAL model of cumulative calibration in that its 

1464 application is not limited to accumulation of ``G'' solutions (SN/CL 

1465 tables classic AIPS are the analog of ``G'' (and, implicitly, ``T'') 

1466 in {tt aips++}). In principle, any basic calibration type can be 

1467 accumulated (onto itself), as long as the result of the accumulation 

1468 (matrix product) is of the same type. This is true of all the basic 

1469 types, except ``D''. Accumulation is currently supported for ``B'', 

1470 ``G'', and ``T'', and, in future, ``F'' (ionospheric Faraday 

1471 rotation), ``J'' (generic full-polarization calibration), 

1472 fringe-fitting, and perhaps others. Accumulation of certain 

1473 specialized types (e.g., ``GSPLINE'', ``TOPAC'', etc.) onto the basic 

1474 types will be supported in the near future. The treatment of various 

1475 calibration from ancilliary data (e.g., system temperatures, weather 

1476 data, WVR, etc.), as they become available, will also make use of {tt 

1477 accumulate} to achieve the net calibration. 

1478 

1479 Note that accumulation only makes sense if treatment of a uniquely 

1480 incremental solution is required (as described above), or if a careful 

1481 interpolation or sampling of a solution is desired. In all other 

1482 cases, re-solving for the type in question will suffice to form 

1483 the net calibration of that type. For example, the product of 

1484 an existing ``G'' solution and an amplitude and phase ``G'' self-cal 

1485 (solved with the existing solution applied), is equivalent to full 

1486 amplitude and phase ``G'' selfcal (with no prior solution applied), 

1487 as long as the timescale of this solution is at least as short as 

1488 that of the existing solution. 

1489 

1490 Use of {tt accumulate} is straightforward: 

1491 

1492 The {tt tablein} parameter is used to specify the existing cumulative 

1493 calibration table to which an incremental table is to be applied. 

1494 Initially, no such table exists, and {tt accumulate} will generate 

1495 one from scratch (on-the-fly), using the timescale (in seconds) 

1496 specified by the parameter {tt t}. These nominal solutions will 

1497 be unit-amplitude, zero-phase (i.e., unit matrix) calibration, 

1498 ready to be adjusted by accumulation. When {tt t} is negative (the 

1499 default), the table name specified in {tt tablein} must exist and 

1500 will be used. 

1501 

1502 The {tt incrtable} parameter is used to specify the incremental table 

1503 that should be applied to {tt tablein}. The calibration type of 

1504 {tt incrtable} sets the type assumed in the operation, so {tt 

1505 tablein} must be of the same type. If it is not, {tt accumulate} 

1506 will exit with an error message. (Certain combinations of types 

1507 and subtypes will be supported by accumulate in the future.) 

1508 

1509 The {tt tableout} parameter is used to specify the name of the output 

1510 table to write. If un-specified (or ``''), then {tt tablein} will be 

1511 overwritten. Use this feature with care, since an error here will 

1512 require building up the cumulative table from the most recent distinct 

1513 version (if any). 

1514 

1515 The {tt field} parameter specifies those field names (standard 

1516 selection syntax) in {tt tablein} to which the incremental solution 

1517 should be applied. The solutions for other fields will be passed to 

1518 {tt tableout} unaltered. If the cumulative table was created from 

1519 scratch in this run of {tt accumulate}, then these solutions will be 

1520 unit-amplitude, zero-phase, as described above. 

1521 

1522 The {tt calfield} parameter is used to specify the fields (standard 

1523 selection syntax) to select from {tt incrtable} to use when applying 

1524 to {tt tablein}. Together, use of {tt field} and {tt calfield} 

1525 permit completely flexible combinations of calibration accumulation 

1526 with respect to fields. Multiple runs of {tt accumulate} can be used 

1527 to generate a single table with many combinations. In future, a 

1528 ``self'' mode will be enabled that will simplify the accumulation of 

1529 field-specific solutions. 

1530 

1531 The {tt interp} parameter is used to specify the interpolation type 

1532 to use on the incremental solutions, as in {tt setapply}. The 

1533 currently available interpolation types are ``nearest'', ``linear'', 

1534 and ``aipslin''. See the {tt setapply} URM documentation for more 

1535 details. 

1536 

1537 The {tt spwmap} parameter enables accumulating solutions from 

1538 differing spectral windows. See {tt setapply} for details 

1539 on how spwmap works. 

1540 

1541 Pending improvements: 

1542 

1543 begin{itemize} 

1544 item Implement a ``self'' mode (independent of interpolation type), 

1545 to simplify or eliminate use of the {tt field} and {tt calfield} 

1546 parameters in some contexts (e.g., self-cal) 

1547 item More interpolation modes, e.g., ``cubic'', and interpolation 

1548 timescale (timerange to permit interpolation) 

1549 item Handle propogation (or not) of bad/flagged solutions 

1550 item Support of specialized types (e.g., TOPAC) onto the basic 

1551 types 

1552 item Smoothing (probably a separate function) 

1553 end{itemize} 

1554 

1555 Input Parameters: 

1556 tablein Input cumulative calibration table name 

1557 incrtable Input incremental calibration table name 

1558 tableout Output cumulative calibration table name. Default is input table name. 

1559 field List of fields (names) to update in input cumulative table. Default is all. 

1560 calfield List of fields (names) in incremental table to use. Default is use all. 

1561 interp Interpolation mode to use on incremental solutions 

1562 t Cumulative table timescale when creating from scratch 

1563 spwmap Spectral windows to apply 

1564 

1565 Example: 

1566 

1567 cb.open('ap366.sim'); 

1568 

1569 # obtain G solutions from calibrator 

1570 cb.selectvis(msselect='FIELD_ID IN [9,11]'); 

1571 cb.setsolve(type='G',table='cal.G0',t=300); 

1572 cb.solve() 

1573 

1574 # obtain proper flux density scale 

1575 cb.fluxscale (tablein='cal.G0', tableout='cal.G1', 

1576 reference='1328+307', transfer='0917+624'); 

1577 

1578 # generate cumulative table for target source on 20s timescale 

1579 cb.accumulate(tablein='',incrtable='cal.G1',tableout='cal.cG0', 

1580 field='0957+561',calfield='0917+624', 

1581 interp='linear',t=20); 

1582 

1583 # apply this calibration to target 

1584 cb.selectvis(msselect='FIELD_ID==10'); 

1585 cb.setapply(type='G',table='cal.cG0',interp='linear') 

1586 cb.correct(); 

1587 

1588 # (image target with imager tool) 

1589 

1590 # phase-selfcal target on 60s timescale 

1591 cb.selectvis(msselect='FIELD_ID==10'); 

1592 cb.setapply(type='G',table='cal.cG0',interp='linear') 

1593 cb.setsolve(type='G',table='cal.G2',t=60,phaseonly=T); 

1594 cb.solve(); 

1595 

1596 # accumulate new solution onto existing one 

1597 cb.accumulate(tablein='cal.cG0',incrtable='cal.G2',tableout='cal.cG1', 

1598 field='0957+561',calfield='0957+561', 

1599 interp='linear'); 

1600 

1601 # apply new cumulative solution to data 

1602 cb.setapply(type='G',table='cal.cG1',interp='linear') 

1603 cb.correct(); 

1604 

1605 # (another round of imaging, etc.) 

1606 

1607 cb.close(); 

1608 

1609 -------------------------------------------------------------------------------- 

1610 

1611 """ 

1612 return _calibrater.calibrater_accumulate(self, *args, **kwargs) 

1613 

1614 

1615 def activityrec(self): 

1616 """ 

1617 activityrec(self) -> record * 

1618 

1619 

1620 

1621 Summary: 

1622 Returns a record containing properties of recent activity 

1623 

1624 Description: 

1625 

1626 

1627 

1628 This funtion enables returning generic information about recent activity. 

1629 

1630 

1631 Pending improvements: 

1632 

1633 begin{itemize} 

1634 item ?? 

1635 end{itemize} 

1636 

1637 Example: 

1638 

1639 TBD 

1640 

1641 -------------------------------------------------------------------------------- 

1642 

1643 """ 

1644 return _calibrater.calibrater_activityrec(self) 

1645 

1646 

1647 def specifycal(self, *args, **kwargs): 

1648 """ 

1649 specifycal(self, _caltable, _time, _spw, _antenna, _pol, _caltype, _parameter, _infile, _uniform) -> bool 

1650 

1651 

1652 

1653 Summary: 

1654 Externally specify calibration of various types 

1655 

1656 Description: 

1657 

1658 

1659 

1660 This function enables specifying calibration parameters externally. 

1661 

1662 Input Parameters: 

1663 caltable The calibration table name 

1664 time Calibration timestamp 

1665 spw Calibration spw(s) 

1666 antenna Calibration antenna(s) 

1667 pol Calibration polarization 

1668 caltype Calibration timestamp 

1669 parameter Calibration parameters 

1670 infile Ancillary input file 

1671 uniform Assume uniform calibration values across the array 

1672 

1673 Example: 

1674 

1675 cb.open('ap366.sim'); 

1676 

1677 (TBD) 

1678 

1679 cb.close(); 

1680 

1681 -------------------------------------------------------------------------------- 

1682 

1683 """ 

1684 return _calibrater.calibrater_specifycal(self, *args, **kwargs) 

1685 

1686 

1687 def smooth(self, *args, **kwargs): 

1688 """ 

1689 smooth(self, _tablein, _tableout, _field, _smoothtype, _smoothtime) -> bool 

1690 

1691 

1692 

1693 Summary: 

1694 Produce a smoothed calibration table 

1695 

1696 Description: 

1697 

1698 

1699 

1700 This function provides for time-dependent smoothing of sampled 

1701 calibration solutions. Currently supported types are 'G', 'B', and 'T'. 

1702 (Smoothing on the frequency axis for 'B' will be supported in the near 

1703 future.) 

1704 

1705 Two (sliding) smoothing types are currenlty supported: 'median' or 

1706 'mean', one of these options should be specified in {stfaf 

1707 smoothtype}. The full width (in seconds) of the smoothing filter 

1708 should be specified in {stfaf smoothtime}. Amplitude and 

1709 (ambiguity-corrected) phase are smoothed separately. 

1710 

1711 Use {stfaf field} to limit the smoothing operation to a subset of the 

1712 fields (standard selection syntax) found in the calibration table 

1713 (other fields will pass to the output table unsmoothed). If {stfaf 

1714 field} is left blank, all fields in the table will be smoothed. 

1715 

1716 The smoothing is always done independently for each field, but 

1717 scan boundaries are not observed. Thus, if the {stfaf smoothtime} 

1718 is large enough, smoothing may occur over many boundaries. 

1719 

1720 Flagged solutions in the input table will not participate in the 

1721 smoothing calculation, but will be replaced with smoothed values 

1722 if the smoothing window covers one or more unflagged solutions when 

1723 centered on the flagged point. 

1724 

1725 Pending improvements: 

1726 

1727 begin{itemize} 

1728 item Add other smoothtypes? 

1729 item Add spw and other selection on input table 

1730 item Add A/P toggle 

1731 end{itemize} 

1732 

1733 Input Parameters: 

1734 tablein Input calibration table 

1735 tableout Output calibration table 

1736 field Limit smoothing to these fields (default is all fields) 

1737 smoothtype The smoothing type: 'mean' or 'median' 

1738 smoothtime Smoothing filter time constant (sec) 

1739 

1740 Example: 

1741 

1742 cb.open('ngc5921.ms'); 

1743 cb.smooth(tablein='in.gcal',tableout='out.gcal', 

1744 smoothtype='median',smoothtime=60); 

1745 cb.close(); 

1746 

1747 

1748 In this example, 'G' solutions for all fields in the table 'in.gcal' are 

1749 smoothed using a median filter with a full-width of 60 seconds, 

1750 and the result written to 'out.gcal'. 

1751 

1752 -------------------------------------------------------------------------------- 

1753 

1754 """ 

1755 return _calibrater.calibrater_smooth(self, *args, **kwargs) 

1756 

1757 

1758 def rerefant(self, *args, **kwargs): 

1759 """ 

1760 rerefant(self, _tablein, _tableout, _refantmode, _refant) -> bool 

1761 

1762 

1763 

1764 Summary: 

1765 Apply a new reference antenna 

1766 

1767 Description: 

1768 

1769 

1770 

1771 TBD 

1772 

1773 Pending improvements: 

1774 

1775 begin{itemize} 

1776 item TBD 

1777 end{itemize} 

1778 

1779 Input Parameters: 

1780 tablein Input calibration table 

1781 tableout Output calibration table 

1782 refantmode The refant application mode 

1783 refant Reference antenna. Default is none. 

1784 

1785 Example: 

1786 

1787 cb.open('ngc5921.ms'); 

1788 cb.rerefant(tablein='in.gcal',tableout='out.gcal', 

1789 refantmode='median',refant='4') 

1790 cb.close(); 

1791 

1792 -------------------------------------------------------------------------------- 

1793 

1794 """ 

1795 return _calibrater.calibrater_rerefant(self, *args, **kwargs) 

1796 

1797 

1798 def listcal(self, *args, **kwargs): 

1799 """ 

1800 listcal(self, _caltable, _field, _antenna, _spw, _listfile, _pagerows) -> bool 

1801 

1802 

1803 

1804 Summary: 

1805 List the contents of a calibration table  

1806 

1807 Description: 

1808 

1809 

1810 

1811 calibrater.listcal() lists antenna gain solutions in tabular 

1812 form. The table is organized as follows. Solutions are output by 

1813 begin{enumerate} 

1814 item Spectral window, 

1815 item Antenna, 

1816 item Time, 

1817 item Channel, 

1818 item and Polarization. 

1819 end{enumerate} 

1820 The inner-most loop is over polarization. 

1821 A ``Spw Header'' row is printed each time the spectral window changes. 

1822 In addition to listing the spectral window ID (SpwID), the Spw Header 

1823 also lists the date of observation (Date), the calibration table name (CalTable), and the measurement 

1824 set name (MS name). A lower-level ``antenna header'' is printed each time the antenna 

1825 names change or every `pagerows' of output, whichever comes first. 

1826 The antenna header column are described here: 

1827 

1828 begin{tabular}{ll} 

1829 hline hline 

1830 Column Name & Description  

1831 hline 

1832 Ant & Antenna name  

1833 Time & Visibility timestamp corresponding to gain solution  

1834 Field & Field name  

1835 Chn & Channel number  

1836 Amp & Complex solution amplitude  

1837 Phs & Complex solution phase  

1838 F & Flag  

1839 hline hline 

1840 end{tabular} 

1841 

1842 Elements of the ``F'' column contain an `F' when the datum is flagged, 

1843 and ` ' (whitespace) when the datum is not flagged. 

1844 

1845 Presently, the polarization mode names (for example: R, L) 

1846 are not given, but the ordering of the polrization modes (left-to-right) is 

1847 equivalent to the order output by task listobs (see ``Feeds'' in listobs output). 

1848 

1849 Input Parameters: 

1850 caltable Calibration table to list 

1851 field Field names or indices to list: ''==>all 

1852 antenna Antenna/Baseline to list: ''==>all 

1853 spw Spectral windows and channels: ''==>all, spw='10:8~20' 

1854 listfile Send output to file: ''==>send to terminal) 

1855 pagerows Rows per page 

1856 

1857 Example: 

1858 

1859 Input: 

1860 

1861 The following example imports a UVFITS file, performs a bandpass calibration, 

1862 and displays a subset of the resulting calibration table. 

1863 

1864 pathname=os.environ.get('CASAPATH').split()[0] # Get path to CASA home dir 

1865 fitsdata=pathname+'/data/demo/NGC5921.fits' # Select uv-data (FITS) file 

1866 msdata='NGC5921.ms' # MS name; write to current directory 

1867 importuvfits(fitsfile=fitsdata, vis=msdata) # import FITS data to MS 

1868 setjy(vis=msdata) # Create model data for flux calibrator 

1869 caldata=msdata+'.bcal' # Calibration table name 

1870 bandpass(vis=msdata, caltable=caldata) # Bandpass calibration 

1871 cb.open(msdata) # Open MS in cb 

1872 cb.listcal(caltable=caldata, field='N5921_2, 0, 1', antenna='1~5;10~13;20~22', spw='0:4~6', pagerows=0) # List a subset of calibration factors 

1873 

1874 Output: 

1875 

1876 SpwID = 0, Date = 1995/04/13, CalTable = NGC5921.ms.bcal (B Jones), MS name = /users/jcrossle/NRAO/casa/NGC5921.ms 

1877 ------------------------------------------------------------------------------------------------------------------------------------------------------- 

1878 | Ant = 1 | Ant = 2 | Ant = 3 | Ant = 4 | 

1879 Time Field Chn| Amp Phs F Amp Phs F| Amp Phs F Amp Phs F| Amp Phs F Amp Phs F| Amp Phs F Amp Phs F| 

1880 ----------|---------------|---|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| 

1881 09:21:46.0 1331+30500002_0 4|0.294 5.3 0.264 3.5 0.296 105.9 0.287 -111.9 0.276 -66.0 0.264 -24.5 0.269 165.8 0.281 -108.6 

1882 09:21:46.0 1331+30500002_0 5|0.303 5.3 0.279 0.6 0.305 107.0 0.298 -111.6 0.283 -64.2 0.274 -23.3 0.280 166.8 0.291 -108.9 

1883 09:21:46.0 1331+30500002_0 6|0.307 5.6 0.287 -1.6 0.309 107.5 0.303 -111.5 0.287 -63.2 0.280 -22.6 0.284 167.8 0.296 -108.8 

1884 10:05:27.9 1445+09900002_0 4|0.467 7.6 0.419 2.7 0.473 107.7 0.455 -112.3 0.437 -63.5 0.413 -24.8 0.427 168.2 0.446 -108.8 

1885 10:05:27.9 1445+09900002_0 5|0.472 7.3 0.440 0.0 0.486 109.1 0.471 -111.8 0.451 -62.6 0.436 -23.1 0.435 169.4 0.453 -108.5 

1886 10:05:27.9 1445+09900002_0 6|0.486 8.4 0.453 -2.4 0.482 110.0 0.478 -111.4 0.452 -60.7 0.443 -23.1 0.446 169.6 0.468 -108.6 

1887 10:09:05.3 N5921_2 4|0.082 50.0 0.074 34.7 0.097 -74.5 0.083 54.4 0.070 131.3 0.080 150.7 0.085 81.0 0.095 150.6 

1888 10:09:05.3 N5921_2 5|0.074 62.7 0.084 24.3 0.114 -73.1 0.093 47.3 0.066 119.9 0.069 154.9 0.099 81.2 0.085 147.4 

1889 10:09:05.3 N5921_2 6|0.079 44.4 0.081 21.7 0.092 -66.3 0.101 48.0 0.089 125.6 0.060 154.0 0.099 83.1 0.097 152.7 

1890 | Ant = 5 | Ant = 10 | Ant = 11 | Ant = 12 | 

1891 Time Field Chn| Amp Phs F Amp Phs F| Amp Phs F Amp Phs F| Amp Phs F Amp Phs F| Amp Phs F Amp Phs F| 

1892 ----------|---------------|---|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| 

1893 09:21:46.0 1331+30500002_0 4|0.261 -26.0 0.285 -107.1 0.279 -149.5 0.263 2.9 0.274 -102.5 0.257 -7.0 0.289 174.3 0.309 -139.2 

1894 09:21:46.0 1331+30500002_0 5|0.269 -26.1 0.295 -107.2 0.288 -148.8 0.274 2.3 0.283 -100.9 0.271 -6.8 0.307 173.1 0.319 -138.2 

1895 09:21:46.0 1331+30500002_0 6|0.272 -26.1 0.300 -107.0 0.293 -148.7 0.281 2.0 0.287 -99.7 0.280 -6.7 0.312 171.2 0.326 -137.2 

1896 10:05:27.9 1445+09900002_0 4|0.416 -24.0 0.450 -106.4 0.437 -147.3 0.414 3.2 0.433 -99.6 0.412 -6.8 0.456 175.9 0.477 -140.0 

1897 10:05:27.9 1445+09900002_0 5|0.421 -22.6 0.478 -106.1 0.453 -147.4 0.433 2.0 0.453 -98.1 0.433 -6.7 0.481 174.4 0.491 -138.9 

1898 10:05:27.9 1445+09900002_0 6|0.436 -22.7 0.478 -106.7 0.459 -146.6 0.443 2.4 0.457 -97.1 0.450 -7.0 0.486 173.5 0.510 -137.7 

1899 10:09:05.3 N5921_2 4|0.074 95.0 0.085 -4.2 0.083 109.6 0.084 -116.6 0.081 63.2 0.071 131.2 0.050 -55.4 0.083 -27.4 

1900 10:09:05.3 N5921_2 5|0.071 96.8 0.084 -13.7 0.086 104.3 0.100 -116.4 0.099 61.7 0.084 145.1 0.091 -76.1 0.087 -33.6 

1901 10:09:05.3 N5921_2 6|0.082 84.9 0.078 -5.3 0.101 109.1 0.102 -109.9 0.087 60.1 0.107 130.4 0.085 -75.5 0.080 -31.2 

1902 | Ant = 13 | Ant = 20 | Ant = 21 | Ant = 22 | 

1903 Time Field Chn| Amp Phs F Amp Phs F| Amp Phs F Amp Phs F| Amp Phs F Amp Phs F| Amp Phs F Amp Phs F| 

1904 ----------|---------------|---|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| 

1905 09:21:46.0 1331+30500002_0 4|0.285 -169.5 0.277 -90.4 0.254 -36.0 0.290 70.9 0.286 -97.8 0.305 108.8 0.273 -84.6 0.224 -124.2 

1906 09:21:46.0 1331+30500002_0 5|0.296 -168.9 0.287 -90.5 0.269 -38.6 0.300 71.0 0.296 -97.8 0.317 108.2 0.284 -85.8 0.243 -127.6 

1907 09:21:46.0 1331+30500002_0 6|0.301 -168.7 0.291 -90.3 0.278 -39.9 0.306 70.9 0.302 -97.8 0.326 107.2 0.289 -86.6 0.255 -129.7 

1908 10:05:27.9 1445+09900002_0 4|0.448 -167.2 0.434 -90.7 0.401 -34.4 0.456 70.8 0.457 -95.5 0.485 108.9 0.431 -82.1 0.361 -123.9 

1909 10:05:27.9 1445+09900002_0 5|0.466 -166.5 0.457 -91.1 0.423 -36.6 0.470 70.8 0.471 -96.6 0.506 108.1 0.448 -83.2 0.393 -126.7 

1910 10:05:27.9 1445+09900002_0 6|0.473 -166.9 0.464 -91.1 0.436 -37.8 0.485 70.2 0.476 -96.6 0.521 108.0 0.447 -83.2 0.410 -130.0 

1911 10:09:05.3 N5921_2 4|0.097 83.0 0.087 143.5 0.080 43.1 0.094 144.2 0.087 168.7 0.092 1.4 0.111 76.1 0.079 18.9 

1912 10:09:05.3 N5921_2 5|0.100 87.4 0.094 137.0 0.061 54.7 0.098 153.3 0.094 178.6 0.096 -3.7 0.101 64.6 0.091 9.5 

1913 10:09:05.3 N5921_2 6|0.099 93.3 0.122 140.5 0.077 51.3 0.090 151.7 0.083 -179.6 0.100 2.2 0.095 61.3 0.108 0.4 

1914 

1915 Listed 108 antenna solutions. 

1916 

1917 -------------------------------------------------------------------------------- 

1918 

1919 """ 

1920 return _calibrater.calibrater_listcal(self, *args, **kwargs) 

1921 

1922 

1923 def posangcal(self, *args, **kwargs): 

1924 """ 

1925 posangcal(self, _posangcor, _tablein, _tableout) -> bool 

1926 

1927 

1928 

1929 Summary: 

1930 Apply position angle calibration to an existing cal table 

1931 

1932 Description: 

1933 

1934 

1935 

1936 This function is used to apply position angle calibration for 

1937 observations made using circularly polarized feeds. According to the 

1938 Measurement Equation formalism, this correction should be applied to a 

1939 {tt D} (instrumental polarization) calibration table. 

1940 

1941 If no {tt D} calibration is performed (and thus no such table is 

1942 available), the correction can be applied to a {tt G} table, but it 

1943 should NEVER be applied to both, and always applied to a {tt D} table 

1944 if one is available. An input table must be specified. If no output 

1945 table is specified, then the input table will be modified in place. 

1946 

1947 Specify, as a vector of values, a position angle adjustment (in degrees) 

1948 for each spectral window. If only one value is specified, it will be 

1949 duplicated to all spectral windows; otherwise, the number of values 

1950 specified must match the number of spectral windows. The sign 

1951 convention for the position angle adjustment is such that the specified 

1952 value is the that which, when added to the position angle implied by the 

1953 data, will yield the correct position angle. For example, if {tt G-}, 

1954 {tt D-}, and {tt P-}calibrated data for 3c286 suggests a position 

1955 angle of 45 degrees, the posangcor value should be -12 degrees as this 

1956 will yield the correct position angle of 33 degrees when added. In 

1957 general, posangcor equals correct position angle minus observed position 

1958 angle. 

1959 

1960 A future version of this function will have an option to recognize 

1961 standard position angle calibrators and determine the correction 

1962 automatically. 

1963 

1964 (NB: It may be desirable to use solutions for 'X' to handle 

1965 position angle calibration, rather than this method.) 

1966 

1967 Input Parameters: 

1968 posangcor Position angle corrections (degrees) 

1969 tablein Input calibration table name 

1970 tableout Output calibration table name. Default is input table name. 

1971 

1972 Example: 

1973 

1974 cb.open('polcal.ms'); 

1975 cb.posangcal(tablein='3C286.dcal', tableout='3C286.dpacal', 

1976 posangcor=[-12.0, 54.0]); 

1977 cb.close(); 

1978 

1979 

1980 This example takes an existing calibration table containing {tt D} 

1981 Jones matrices, and applies a position angle calibration of 45 and 54 

1982 degrees to spectral windows 1 & 2, respectively, writing the result 

1983 to a new table. The observed position angles for 3C286 must have been 

1984 45 and -21 degrees; the corrections specified yield the correct value 

1985 of 33 degrees when added to the observed values. 

1986 

1987 -------------------------------------------------------------------------------- 

1988 

1989 """ 

1990 return _calibrater.calibrater_posangcal(self, *args, **kwargs) 

1991 

1992 

1993 def linpolcor(self, *args, **kwargs): 

1994 """ 

1995 linpolcor(self, _tablein, _tableout, _fields) -> bool 

1996 

1997 

1998 

1999 Summary: 

2000 Correct the gain table for linear polarization of the calibrator 

2001 

2002 Description: 

2003 

2004 

2005 

2006 THIS METHOD IS CURRENTLY DISABLED. 

2007 

2008 This function can be used to correct the gains derived from secondary 

2009 calibrators with unknown or variable polarization. It should only be 

2010 used for arrays with linear (X/Y) feeds and an Alt-Az mount for which 

2011 the observed polarization varies with feed position angle on the sky. 

2012 

2013 The function fits the gains with a sine and cosine term in feed position 

2014 angle and extracts the Q and U components of the secondary calibrator. 

2015 This is only possible if there is sufficient range in the position angle 

2016 (i.e., minimum of about 6 scans spanning at least 90 degrees in position 

2017 angle). Check the error of the fit to judge if the fit was succesfull, 

2018 it should generally be smaller than 0.5%. 

2019 

2020 Use the {stfaf fields} argument to select calibrator fields to be 

2021 fitted. The function takes a calibration table as input, and can write 

2022 the adjusted gain solutions to the same table on output, or create a new 

2023 table containing these results. The function also prints the derived 

2024 polarization for each field for each spectral window. 

2025 

2026 Input Parameters: 

2027 tablein Input calibration table name 

2028 tableout Output calibration table name 

2029 fields Calibrator field names 

2030 

2031 Example: 

2032 

2033 cb.open('atca.ms'); 

2034 cb.linpolcor(tablein='atca.gcal', tableout='atca.gcal2', 

2035 fields='2254-367'); 

2036 cb.close(); 

2037 

2038 

2039 This example takes an existing calibration table containing {tt G} 

2040 Jones matrices, and writes a corrected output table, correcting only 

2041 gains derived from 2254-367 for linear polarization. 

2042 

2043 -------------------------------------------------------------------------------- 

2044 

2045 """ 

2046 return _calibrater.calibrater_linpolcor(self, *args, **kwargs) 

2047 

2048 

2049 def plotcal(self, *args, **kwargs): 

2050 """ 

2051 plotcal(self, _antennas, _fields, _spwids, _plottype, _tablename, _polarization, _multiplot, _nx, _ny, _psfile) -> bool 

2052 

2053 

2054 

2055 Summary: 

2056 Plot a calibration table 

2057 

2058 Description: 

2059 

2060 

2061 

2062 This function plots a calibration table either to a plotter or 

2063 to a file. 

2064 

2065 The argument {stfaf plottype} can take the following values 

2066 for all types of solutions: 

2067 begin{description} 

2068 item[AMP] Gain Amplitude vs. Time 

2069 item[1/AMP] Inverse Gain Amplitude vs. Time (useful for 

2070 comparing with classic AIPS) 

2071 item[PHASE] Gain Phase vs. Time 

2072 item[RI] Gain Real vs. Imaginary 

2073 item[RLPHASE] Right/Left Gain phase difference (if polarizations are R,L) 

2074 item[XYPHASE] X/Y Gain phase difference (if polarizations are X,Y) 

2075 end{description} 

2076 

2077 The argument {stfaf plottype} can take the following values 

2078 for D tables 

2079 

2080 begin{description} 

2081 item[DAMP] Cross-polarized Gain Amplitude vs. Time 

2082 item[DPHASE] Cross-polarized Gain Phase vs. Time 

2083 item[DRI] Cross-polarized Gain Real vs. Imaginary 

2084 end{description} 

2085 

2086 The quality of the solutions can be examined with the following 

2087 {stfaf plottype} choices: 

2088 begin{description} 

2089 item[FIT] Fit per spectral window 

2090 item[FITWGT] Fit weight per spectral window 

2091 item[TOTALFIT] Total fit 

2092 end{description} 

2093 

2094 By default, all antennas (as specified in the antennas argument) will 

2095 appear on the same plot. Separate plots (all with the same scale) 

2096 for each antenna can be activated by setting multiplot=T. The multiplot 

2097 argument only separates plots by antenna (not, e.g., by the field_id(s) 

2098 specified in the fields argument). If multiplot=T, the nx and ny 

2099 arguments can be used to specify the number of plots per page. 

2100 

2101 At the moment, only one polarization can be plotted per execution. 

2102 This restriction will be relaxed in the near future. 

2103 

2104 For B solutions, the plotting will loop over timestamps (if more than 

2105 one). 

2106 

2107 A hardcopy plot can be created by specifying the texttt{psfile} 

2108 argument (which is especially useful for batch processing when a 

2109 display screen is not available). This will cause the plot to be 

2110 written to a PostScript file which can be subsequently sent to a 

2111 printer. 

2112 

2113 Input Parameters: 

2114 antennas Antennas to plot. Default is none. 

2115 fields Fields to plot. Default is none. 

2116 spwids Spectral windows id.'s to plot. Default is none. 

2117 plottype Plot type 

2118 tablename Calibration table name 

2119 polarization Polarization to plot 

2120 multiplot Turn on separate antenna plots 

2121 nx If multiplot=T, number of plots on horizontal axis 

2122 ny If multiplot=T, number of plots on vertical axis 

2123 psfile Name of output PostScript file to write plot to. Default is to send plot to the screen. 

2124 

2125 Example: 

2126 

2127 cb.open('ngc5921.ms'); 

2128 cb.plotcal(plottype='PHASE', tablename='gcal', antennas=[1,3], polarization=2); 

2129 cb.close(); 

2130 

2131 -------------------------------------------------------------------------------- 

2132 

2133 """ 

2134 return _calibrater.calibrater_plotcal(self, *args, **kwargs) 

2135 

2136 

2137 def modelfit(self, *args, **kwargs): 

2138 """ 

2139 modelfit(self, _vary, _niter, _compshape, _par, _file) -> std::vector< double > 

2140 

2141 

2142 

2143 Summary: 

2144 Model fitting 

2145 

2146 Description: 

2147 

2148 

2149 

2150 This method fits single-component models (points, elliptical Gaussians or elliptical Disks_ 

2151 to the CORRECTED_DATA of the selected field. A first guess for the component 

2152 parameters may be specified in the {stfaf par} parameter. 

2153 

2154 Input Parameters: 

2155 vary If specified where T, let this parameter (in par) vary in fit 

2156 niter Number of non-linear fitting iterations 

2157 compshape Component shape, P=point G=gaussian 

2158 par Initial guess for fit parameters (default is for 'P)'I flux, rel RA, rel Dec, 1,0, 0.0, 0.0 are defaults 

2159 file If specified, output componentslist file name, if empty don't write componentslist file 

2160 

2161 Example: 

2162 

2163 cb.open('ngc5921.ms'); 

2164 cb.selectvis(field='1331*') 

2165 cb.modelfit(compshape='P',par=[15.0,0.0,0.0]) 

2166 cb.close(); 

2167 

2168 

2169 This example fits a point source mode using 15.0 Jy at the origin (phase center) 

2170 as a first guess. 

2171 

2172 

2173 

2174 cb.open('ngc5921.ms'); 

2175 cb.selectvis(field='1331*') 

2176 cb.modelfit(compshape='G',par=[15.0,0.0,0.0,2.0,1.0,0.0]) 

2177 cb.close(); 

2178 

2179 

2180 This example fits a Guassian model with a starting 

2181 guess of 15 Jy at the phase center (0,0), with 2.0 arcsec major axis, 

2182 1.0 axial ratio, at position angle 0.0 deg. 

2183 

2184 -------------------------------------------------------------------------------- 

2185 

2186 """ 

2187 return _calibrater.calibrater_modelfit(self, *args, **kwargs) 

2188 

2189 

2190 def createcaltable(self, *args, **kwargs): 

2191 """ 

2192 createcaltable(self, _caltable, _partype, _caltype, _singlechan) -> bool 

2193 

2194 

2195 

2196 Summary: 

2197 Create an empty calibration table 

2198 

2199 Description: 

2200 

2201 

2202 Creates an empty calibration table that can subsequently be filled 

2203 with by using the table tool. 

2204 

2205 Input Parameters: 

2206 caltable Calibration table name 

2207 partype Parameter type name 

2208 caltype Calibration type name 

2209 singlechan Create a calibration table with frequency-independent parameters? 

2210 

2211 Example: 

2212 

2213 cb.open('ngc5921.ms',F,F,F) # don't add MODEL_DATA, etc. 

2214 cb.createcaltable('ngc5921.gcal', 'Complex', 'G Jones', True) 

2215 cb.close() 

2216 

2217 -------------------------------------------------------------------------------- 

2218 

2219 """ 

2220 return _calibrater.calibrater_createcaltable(self, *args, **kwargs) 

2221 

2222 

2223 def updatecaltable(self, *args, **kwargs): 

2224 """ 

2225 updatecaltable(self, _caltable) -> bool 

2226 

2227 

2228 

2229 Summary: 

2230 Caltable modernizer. 

2231 

2232 Description: 

2233 

2234 

2235 This method can be used to update a caltable (from v3.4 or later) 

2236 to the current version of CASA. 

2237 

2238 The following updates are currently supported. 

2239 

2240 o At CASA v4.1.0, the OBSERVATION subtable and OBSERVATION_ID column 

2241 were added to caltables. This method adds trivial versions of 

2242 these elements to pre-v4.1 caltables. 

2243 

2244 Input Parameters: 

2245 caltable Name of the caltable. 

2246 

2247 Example: 

2248 

2249 cb.updatecaltable('mycaltable'); 

2250 

2251 -------------------------------------------------------------------------------- 

2252 

2253 """ 

2254 return _calibrater.calibrater_updatecaltable(self, *args, **kwargs) 

2255 

2256 

2257 def close(self): 

2258 """ 

2259 close(self) -> bool 

2260 

2261 

2262 

2263 Summary: 

2264 Close the calibrater tool 

2265 

2266 Description: 

2267 

2268 

2269 Close the {tt calibrater} tool, which is hardly ever necessary. 

2270 

2271 Example: 

2272 

2273 cb.open('ngc5921.ms'); 

2274 cb.close(); 

2275 

2276 -------------------------------------------------------------------------------- 

2277 

2278 """ 

2279 return _calibrater.calibrater_close(self) 

2280 

2281 

2282 def done(self): 

2283 """ 

2284 done(self) -> bool 

2285 

2286 

2287 

2288 Summary: 

2289 Destroy the calibrater tool 

2290 

2291 Description: 

2292 

2293 

2294 This function is redundant with the {stfaf close} method. 

2295 

2296 Example: 

2297 

2298 cb.open('ngc5921.ms'); 

2299 cb.done(); 

2300 

2301 -------------------------------------------------------------------------------- 

2302 

2303 """ 

2304 return _calibrater.calibrater_done(self) 

2305 

2306 

2307 def parsecallibfile(self, *args, **kwargs): 

2308 """ 

2309 parsecallibfile(self, _filein) -> record * 

2310 

2311 

2312 

2313 Summary: 

2314 Bootstrap the flux density scale from standard calibrators 

2315 

2316 Description: 

2317 

2318 

2319 

2320 TBD 

2321 

2322 Input Parameters: 

2323 filein Input cal library file name 

2324 

2325 Example: 

2326 

2327 TBD 

2328 

2329 -------------------------------------------------------------------------------- 

2330 

2331 """ 

2332 return _calibrater.calibrater_parsecallibfile(self, *args, **kwargs) 

2333 

2334 

2335 def setcorrdepflags(self, *args, **kwargs): 

2336 """ 

2337 setcorrdepflags(self, _corrdepflags) -> bool 

2338 

2339 

2340 

2341 Summary: 

2342 Control use of correlation-dependent flags 

2343 

2344 Description: 

2345 

2346 

2347 

2348 TBD 

2349 

2350 Input Parameters: 

2351 corrdepflags Turn correlation dependent flags on/off (true/false) 

2352 

2353 Example: 

2354 

2355 TBD 

2356 

2357 -------------------------------------------------------------------------------- 

2358 

2359 """ 

2360 return _calibrater.calibrater_setcorrdepflags(self, *args, **kwargs) 

2361 

2362 

2363 def setvi(self, *args, **kwargs): 

2364 """ 

2365 setvi(self, _old, _quiet) -> bool 

2366 

2367 

2368 

2369 Summary: 

2370 TEMPORARY method to control use of new VI2 regime 

2371 

2372 Description: 

2373 

2374 

2375 Use this method to control whether the modern (old=False) or old-style (old=True) 

2376 VisibilityIterator is used by the calibration application. General users should 

2377 avoid use of this function unless they understand what this means. 

2378 

2379 This method will be removed from the calibrater tool in v5.1. 

2380 

2381 Input Parameters: 

2382 old Use old-style VI, if old=True, else use new VI2 

2383 quiet Warn in logger, if quiet=False 

2384 

2385 Example: 

2386 

2387 cb.setvi(True) 

2388 cb.open('ngc5921.ms') 

2389 

2390 -------------------------------------------------------------------------------- 

2391 

2392 """ 

2393 return _calibrater.calibrater_setvi(self, *args, **kwargs) 

2394 

2395 __swig_destroy__ = _calibrater.delete_calibrater 

2396 __del__ = lambda self: None 

2397calibrater_swigregister = _calibrater.calibrater_swigregister 

2398calibrater_swigregister(calibrater) 

2399 

2400# This file is compatible with both classic and new-style classes. 

2401 

2402