src package
Core implementation of the SARA, HyperSARA and Faceted HyperSARA imaging algorithms.
List of modules
API src
- src.apply_adjoint_operator(y, G, Lambda)
 Apply part of the adjoint measurment operator (before the scaled inverse discrete Fourier transform involved in the non-uniform FFT [Fessler2003]).
- Parameters
 y (complex[:]) – Input data array (data-block).
G (sparse array) – Gridding matrix (including noise whitening operator).
Lambda (double[:]) – Reduction operator.
- Returns
 Fx – Gridded visibilities.
- Return type
 complex[:]
- src.apply_direct_operator(Fx, G, Lambda)
 Apply part of the direct measurement operator (after the scaled discrete Fourier transform involved in the non-uniform FFT [Fessler2003]).
- Parameters
 Fx (complex[:]) – Scaled discrete Fourier transform of a 2d array \(x\).
G (complex[:, :]) – Gridding matrix (including noise whitening operator).
Lambda (double[:]) – Reduction operator.
- Returns
 y – Visibility vector.
- Return type
 complex[:]
- src.apply_scaled_fourier_transform(x, A, No)
 Apply scaled Fourier transform to a wideband image cube \(x\).
- Parameters
 x (double[:, :, :]) – Input wideband image cube.
A (anonymous function) – anonymous function to compute the scaled Fourier transform of each slice of the image
No (int) – Total number of pixels in the oversampled spatial Fourier plane.
- Returns
 Fx – Matrix whose column contain the scaled Fourier transform of each slice of
x.- Return type
 double[:, :]
- src.compute_residual_images(x, y, A, At, G, W, flag_visibility_gridding, Lambda)
 Compute residual images.
Compute the residual image for each spectral channel.
- Parameters
 x (double[:, :, :]) – Wideband image cube
[N(1), N(2), L].y (cell) – Blocked visibilities
{L}{nblocks}.A (anonymous function) – Measurement operator
@[1].At (anonymous function) – Adjoint measurement operator @[1].
G (cell) – Blocked gridding matrix
{L}{nblocks}.W (cell) – Masking operators (selection of data blocks)
{L}{nblocks}.flag_visibility_gridding (bool) – Flag to activate data dimensionality reduction via visibility gridding.
Lambda (cell) – Dimensionality reduction weights
{L}{nblocks}.
- Returns
 residual_image (double[:, :, :]) – Residual image cube
[N(1), N(2), L], normalised by the peak of the PSF following convention in RI.————————————————————————-%
Code (P.-A. Thouvenin, A. Dabbech)
Last revised ([01/04/2022])
————————————————————————-%
- src.compute_sara_prior(x, Psit, n_wavelet_coefficients)
 Compute the l21-norm of the wavelet cofficients associated with the SARA dictionary.
Compute \(\Vert \boldsymbol{\Psi}^\dagger \mathbf{X} \Vert_{2,1}\) for an input wideband image \(\mathbf{X} \in \mathbb{R}^{N\times L}\), with \(\boldsymbol{\Psi}^\dagger\) the SARA dictionary [Carrillo2012].
- Parameters
 x (double[:, :, :]) – Wideband image cube
[N(1), N(2), L].Psit (anonymous function) – SARA dictionary
@[1].n_wavelet_coefficients (int) – Number of wavelet coefficients (per channel)
[1].
- Returns
 f – Value of \(\Vert \boldsymbol{\Psi}^\dagger \mathbf{X} \Vert_{2,1}\), with \(\boldsymbol{\Psi}^\dagger\) the SARA dictionary [Carrillo2012].
- Return type
 double
- src.nuclear_norm(x)
 Compute the nuclear norm of a wideband image.
Compute \(\Vert \mathbf{X} \Vert_*\) for \(\mathbf{X} \in \mathbb{R}^{N \times L}\).
- Parameters
 x (double[:, :, :]) – Wideband image cube
[N(1), N(2), L].- Returns
 f – Nuclear norm of the wideband image.
- Return type
 double
- src.proj_l2ball(x, eps, y)
 Compute the projection of the input vector \(x\) onto the \(\ell_2\) ball centered in \(y\) with radius \(\varepsilon\).
- Parameters
 x (array) – Input vector.
eps (double) – Radius of the \(\ell_2\) ball.
y (array) – Center of the \(\ell_2\) ball.
- src.sanity_check(epsilon, norm_res)
 Update the data fidelity term in the preconditioned primal-dual algorithm.
Update the data fidelity terms owned by each worked involved in the group of data nodes (with preconditioning -> projection onto an ellipsoid).
- Parameters
 epsilon (cell) – Norm of the residual
{L}{nblocks}[1].norm_res (cell) – \(\ell_2\)-ball constraints
{L}{nblocks}[1].
- Returns
 global_norm_res (double) – Square global norm of the residual.
norm_epsilon (double) – Square global norm of epsilon.
- src.update_dual_data_fidelity(v2, y, x, Fx_old, proj, A, At, G, W, pU, epsilon, elipse_proj_max_iter, elipse_proj_min_iter, elipse_proj_eps, sigma22, flag_dimensionality_reduction, Lambda)
 Update the data fidelity term in the preconditioned primal-dual algorithm.
Update the data fidelity terms owned by each worked involved in the group of data nodes (with preconditioning \(\rightarrow\) projection onto an ellipsoid).
- Parameters
 v2 (cell) – Data fidelity dual variable
{L}{nblocks}[M, 1].y (cell) – Blocks of visibilities
{L}{nblocks}[M, 1].x (double[:, :, :]) – Primal variable
[N(1), N(2), L].Fx_old (complex[:, :, :]) – Scaled Fourier transform of \(x\) from the previous iterations
[N(1), N(2), L].proj (cell) – Value of the projection at the previous global iteration, taken as a starting point
{L}{nblocks}[M, 1].A (anonymous function) – Measurement operator @[1].
At (anonymous function) – Adjoint measurement operator @[1].
G (cell) – Blocked interpolation matrix {L}{nblocks}.
W (cell) – Blocked masking operator {L}{nblocks}.
pU (cell) – Preconditioning matrices {L}{nblocks}.
epsilon (cell) – \(\ell_2\)-ball constraints {L}{nblocks}[1].
elipse_proj_max_iter (int) – Maximum number of iterations (projection onto the ellipsoid)
elipse_proj_min_iter (int) – Minimum number of iterations (projection onto the ellipsoid)
elipse_proj_eps (double) – Stopping criterion for the projection.
sigma22 (double[:]) – Step-size for the update of the dual variable (tau*sigma2).
flag_dimensionality_reduction (bool) – Flag to activate DR functionality.
Lambda (cell) – Dimensionality reduction weights {L}{nblocks}.
- Returns
 v2 (cell) – Data fidelity dual variable
{L}{nblocks}[M, 1].Ftx (double[:, :]) – Auxiliary variable for the update of the primal variable
[N(1), N(2)].Fx_old – Scaled Fourier transform of the updated image
[N(1), N(2), L].proj (cell) – Result of the projection step
{L}{nblocks}[M, 1].norm_res (cell) – Norm of the residual
{L}{nblocks}[1].global_norm_res (double) – Square global norm of the residual.
norm_epsilon (double) – Square global norm of epsilon.