Calibration

Calibration is performed by fitting observed visibilities to a model visibility.

The scalar equation to be minimised is:

\[S = \sum_{t,f}^{}{\sum_{i,j}^{}{w_{t,f,i,j}\left| V_{t,f,i,j}^{\text{obs}} - J_{i}{J_{j}^{*}V}_{t,f,i,j}^{\text{mod}} \right|}^{2}}\]

The least squares fit algorithm uses an iterative substitution (or relaxation) algorithm from Larry D’Addario in the late seventies.

An extension of this approach using 2x2 antenna-based Jones matrices \(J_i\) and coherency matrices \(V_{t,f,i,j}\) has been adapted from the MWA RealTime System (Mitchell et at., 2008, IEEE JSTSP, 2, JSTSP.2008.2005327) and can be enabled with ska_sdp_func_python.calibration.solvers.solve_gaintable() option solver="jones_substitution":

\[S = \sum_{t,f}^{}{\sum_{i,j}^{}{w_{t,f,i,j}\left| V_{t,f,i,j}^{\text{obs}} - J_{i}V_{t,f,i,j}^{\text{mod}}J_{j}^{\dagger} \right|_F}^{2}}.\]

\(\left|A\right|_F^2\) is the squared Frobenius norm of matrix A, and within each solver iteration each Jones matrix undergoes independent optimisation relative to the others. Normal-equation-based solvers are also available, which carry out joint optimisation within each iteration. These are more computationally intensive but can have better convergence properties.

ska_sdp_func_python.calibration.chain_calibration Module

Functions to solve for and apply chains of antenna/station gain tables. See documentation for further information.

Functions

apply_calibration_chain(vis, gaintables[, ...])

Update the Visibility using the calibrated solutions in the form of GainTables.

calibrate_chain(vis, model_vis[, ...])

Calibrate using algorithm specified by calibration_context.

create_calibration_controls()

Create a dictionary containing default chain calibration controls.

solve_calibrate_chain(vis, model_vis[, ...])

Solve GainTables by fitting an observed visibility to a model visibility.

ska_sdp_func_python.calibration.ionosphere_solvers Module

Functions to solve for delta-TEC variations across the array

Functions

solve_ionosphere(vis, modelvis, xyz[, ...])

Solve for ionospheric delay as a function of station location.

set_cluster_maps(cluster_id)

Generate vectors to help convert between station and cluster indices.

set_coeffs_and_params(xyz, cluster_id[, ...])

Initialise coefficients and parameters.

get_param_count(param)

Return the total number of parameters across all clusters.

apply_phase_distortions(vis, param, coeff, ...)

Update visibility model with new fit solutions.

build_normal_equation(vis, modelvis, param, ...)

Build normal equations.

cluster_design_matrix(mdl_data, mask0, ant1, ...)

Generate elements of the design matrix for the current cluster.

solve_normal_equation(AA, Ab, param[, it])

Solve the normal equations and update parameters.

update_gain_table(gain_table, param, coeff, ...)

Add new solutions to gaintable.

ska_sdp_func_python.calibration.ionosphere_utils Module

Utilities to support ionospheric calibration and the generation of ionospheric phase screens.

Functions

decompose_phasescreen(x, y, r_0[, beta])

Generate eigenvectors for phase-screen pierce points.

displace_phasescreen(interpolated_screen, ...)

Distort interpolated phasescreen to maintain Kolmogorov statistics.

interpolate_phasescreen(input_screen)

Bilinear interpolation of a two dimensional phase screen.

standardise_eigenvectors(evec)

Fix arbitrary eigenvector signs.

zern(m, n, rho, phi)

Generate Zernike polynomial values.

zern_array(nm, x, y[, noll_order])

Generate an array of all Zernike polynomials up to a given degree.

ska_sdp_func_python.calibration.jones Module

Jones matrix related operations.

Functions

apply_jones(ej, cfs[, inverse, min_det])

Apply Jones matrix (or inverse).

ska_sdp_func_python.calibration.operations Module

Functions for calibration operations.

Functions

apply_gaintable(vis, gt[, inverse, use_flags])

Apply a GainTable to a Visibility. The corrected visibility is::.

apply_antenna_gains_to_visibility(vis, ...)

Apply antenna gains (Jones matrices) to a visibility array.

concatenate_gaintables(gt_list[, dim])

Concatenate a list of GainTables.

multiply_gaintables(gt, dgt[, time_tolerance])

Multiply two GainTables.

ska_sdp_func_python.calibration.solvers Module

Functions to solve for antenna/station gain.

Functions

solve_gaintable(vis[, modelvis, gain_table, ...])

Solve a gain table by fitting an observed visibility to a model visibility.

solve_antenna_gains_itsubs_matrix(gain, gwt, ...)

Solve for the antenna gains using full matrix expressions.

solve_antenna_gains_itsubs_nocrossdata(gain, ...)

Solve for the antenna gains using full matrix expressions,

solve_antenna_gains_itsubs_scalar(gain, gwt, ...)

Solve for the antenna gains.

ska_sdp_func_python.calibration.alternative_solvers Module

Alternative functions to solve for antenna/station gain.

Functions

solve_with_alternative_algorithm(solver, ...)

Solve this row (time slice) of the gain table.

jones_sub_solve(vobs, vmdl, wgt, ant1, ant2, ...)

Solve this time and frequency slice of the gain table

normal_equation_solve(vobs, vmdl, wgt, ant1, ...)

Solve this time and frequency slice of the gain table

normal_equation_solve_with_presumming(vobs, ...)

Solve this time and frequency slice of the gain table

ska_sdp_func_python.calibration.solver_utils Module

Utility functions used by solvers. Based on the Yandasoft algorithm.

Functions

gen_cdm(gXi, gYi, dXYi, dYXi, gXj, gYj, ...)

Generate Complex Diff matrix for baseline i-j.

gen_coherency_products(Som, Smm, vobs, vmdl, ...)

Accumulate jones_substitution products for antenna ant.

gen_pol_matrix(gXi, gYi, dXYi, dYXi, gXj, ...)

Generate the 4x4 gain matrix for baseline i-j.

update_design_matrix(A, dv, wobs, wmdl, gX, ...)

Update design matrix for a set of visibilities.