EigenVisIter

class EigenVisIter : public kotekan::Stage

Perform eigen factorization of the visibilities.

This task performs the factorization of the visibility matrix into num_ev eigenvectors and eigenvalues and stores them in reserve space in the VisBuffer. They are stored in descending order of the eigenvalue.

This is performed by using a subspace iteration method with an augmented Rayleigh-Ritz step and a progressive matrix completion of masked values.

Buffers

  • in_buf The stream to eigen decompose.

    • Format: VisBuffer structured

    • Metadata: VisMetadata

  • out_buf Output stream with the calculated eigen-pairs.

    • Format: VisBuffer structured

    • Metadata: VisMetadata

Metrics

  • kotekan_eigenvisiter_comp_time_seconds Time required to find eigenvectors. An exponential moving average over ~10 samples.

  • kotekan_eigenvisiter_eigenvalue The value of each eigenvalue calculated, or the RMS.

  • kotekan_eigenvisiter_iterations Number of iterations required to compute the last sample.

  • kotekan_eigenvisiter_eigenvalue_convergence Eigenvalue convergence parameter of the last sample.

  • kotekan_eigenvisiter_eigenvector_convergence Eigenvector convergence parameter of the last sample.

Author

Richard Shaw, Kiyoshi Masui

Param num_elements:

Int. The number of elements (i.e. inputs) in the correlator data.

Param block_size:

Int. The block size of the packed data.

Param num_ev:

UInt. The number of eigenvectors to be calculated as an approximation to the visibilities.

Param bands_filled:

List of pairs of ints, default empty. Ranges of diagonal bands to mask out before the factorization. These are iteratively filled within the eigen decomposition code.

Param block_fill_size:

UInt, default 0. Mask out blocks of this size on the diagonal.

Param exclude_inputs:

List of UInts, optional. Inputs to exclude (rows and columns to set to zero) in visibilities prior to factorization.

Param tol_eval:

Float, default 1e-6. Fractional change in evals must be less than this for convergence.

Param tol_evec:

Float, default 1e-5. Total eigenvector overlap must be less than this.

Param max_iterations:

UInt. Maximum number of iterations to compute.

Param num_ev_conv:

UInt. Test only the top num_ev_conv eigenpairs for convergence.

Param krylov:

UInt, default 2. Size of the Krylov basis to use.

Param subspace:

UInt, default 3. Number of subspace iteration substeps.

Public Functions

EigenVisIter(kotekan::Config &config, const std::string &unique_name, kotekan::bufferContainer &buffer_container)
virtual ~EigenVisIter() = default
virtual void main_thread() override