rm_lite.utils.multiscale

RM-ms-clean utils

Attributes

Functions

_scale_bias_function(→ float)

Offringa et al. (2017) scale-bias function.

convolve_fdf_scale(→ numpy.typing.NDArray[numpy.float64])

Convolve the FDF with a Gaussian kernel.

find_significant_scale(→ tuple[float, float])

gaussian_scale_kernel_function(...)

Gaussian scale kernel function.

hanning(→ numpy.typing.NDArray[numpy.float64])

Hanning window function.

multiscale_cycle(→ rm_lite.utils.clean.CleanLoopResults)

multiscale_minor_loop(...)

mutliscale_rmclean(→ rm_lite.utils.clean.RMCleanResults)

scale_bias_function(→ numpy.typing.NDArray[numpy.float64])

Offringa et al. (2017) scale-bias function.

scale_bias_function_cornwell(...)

tapered_quad_kernel_function(...)

Tapered quadratic kernel function.

Module Contents

rm_lite.utils.multiscale._scale_bias_function(scale: float, scale_0: float, scale_bias: float) float

Offringa et al. (2017) scale-bias function.

Parameters:
  • scale (float) – Scale parameter (relative to PSF FWHM)

  • scale_0 (float) – The first non-zero scale parameter

  • scale_bias (float) – The scale-bias parameter

Returns:

Weighting factor per scale

Return type:

float

rm_lite.utils.multiscale.convolve_fdf_scale(scale: float, fwhm: float, fdf_arr: numpy.typing.NDArray[numpy.float64], phi_double_arr_radm2: numpy.typing.NDArray[numpy.float64], kernel: Literal['tapered_quad', 'gaussian'] = 'gaussian', sum_normalised: bool = True) numpy.typing.NDArray[numpy.float64]

Convolve the FDF with a Gaussian kernel.

Parameters:
  • scale (float) – Scale parameter (relative to PSF FWHM)

  • fwhm (float) – FWHM of the RMSF

  • fdf_arr (NDArray[np.float64]) – FDF array (complex)

  • phi_double_arr_radm2 (NDArray[np.float64]) – Double-length Faraday depth array (rad/m^2)

  • kernel (Literal["tapered_quad", "gaussian"]) – Kernel function

Raises:

ValueError – If an invalid normalization method is provided

Returns:

Convolved FDF array

Return type:

NDArray[np.float64]

rm_lite.utils.multiscale.find_significant_scale(scales: numpy.typing.NDArray[numpy.float64], scale_bias: float, fdf_arr: numpy.typing.NDArray[numpy.float64], phi_double_arr_radm2: numpy.typing.NDArray[numpy.float64], fwhm: float, kernel: Literal['tapered_quad', 'gaussian'] = 'gaussian') tuple[float, float]
rm_lite.utils.multiscale.gaussian_scale_kernel_function(phi_double_arr_radm2: numpy.typing.NDArray[numpy.float64], scale: float, rmsf_fwhm: float, sum_normalised: bool = True) numpy.typing.NDArray[numpy.float64]

Gaussian scale kernel function.

Parameters:
  • phi_double_arr_radm2 (NDArray[np.float64]) – Phi array in rad/m^2

  • scale (float) – Scale (in FWHM units)

  • rmsf_fwhm (float) – RMSF FWHM in rad/m^2

Returns:

Kernel function array (sum normalised)

Return type:

NDArray[np.float64]

rm_lite.utils.multiscale.hanning(x_arr: numpy.typing.NDArray[numpy.float64], length: float) numpy.typing.NDArray[numpy.float64]

Hanning window function.

Parameters:
  • x_arr (NDArray[np.float64]) – Array of x values

  • length (float) – Length of the window

Returns:

Hanning window function array

Return type:

NDArray[np.float64]

rm_lite.utils.multiscale.multiscale_cycle(scales: numpy.typing.NDArray[numpy.float64], scale_bias: float, phi_arr_radm2: numpy.typing.NDArray[numpy.float64], phi_double_arr_radm2: numpy.typing.NDArray[numpy.float64], dirty_fdf_spectrum: numpy.typing.NDArray[numpy.float64], rmsf_spectrum: numpy.typing.NDArray[numpy.float64], rmsf_fwhm: float, mask: float, threshold: float, max_iter: int, max_iter_sub_minor: int, gain: float, kernel: Literal['tapered_quad', 'gaussian'] = 'gaussian') rm_lite.utils.clean.CleanLoopResults
rm_lite.utils.multiscale.multiscale_minor_loop(scales: numpy.typing.NDArray[numpy.float64], scale_bias: float, resid_fdf_spectrum_mask: numpy.ma.MaskedArray, phi_arr_radm2: numpy.typing.NDArray[numpy.float64], phi_double_arr_radm2: numpy.typing.NDArray[numpy.float64], rmsf_spectrum: numpy.typing.NDArray[numpy.float64], rmsf_fwhm: float, max_iter: int, max_iter_sub_minor: int, gain: float, mask: float, threshold: float, start_iter: int = 0, update_mask: bool = True, kernel: Literal['tapered_quad', 'gaussian'] = 'gaussian') rm_lite.utils.clean.MinorLoopResults
rm_lite.utils.multiscale.mutliscale_rmclean(freq_arr_hz: numpy.typing.NDArray[numpy.float64], dirty_fdf_arr: numpy.typing.NDArray[numpy.float64], phi_arr_radm2: numpy.typing.NDArray[numpy.float64], rmsf_arr: numpy.typing.NDArray[numpy.float64], phi_double_arr_radm2: numpy.typing.NDArray[numpy.float64], fwhm_rmsf_arr: numpy.typing.NDArray[numpy.float64], mask: float, threshold: float, max_iter: int = 1000, max_iter_sub_minor: int = 10000, gain: float = 0.1, scale_bias: float = 0.9, scales: numpy.typing.NDArray[numpy.float64] | None = None, mask_arr: numpy.typing.NDArray[numpy.float64] | None = None, kernel: Literal['tapered_quad', 'gaussian'] = 'gaussian') rm_lite.utils.clean.RMCleanResults
rm_lite.utils.multiscale.scale_bias_function(scales: numpy.typing.NDArray[numpy.float64], scale_bias: float) numpy.typing.NDArray[numpy.float64]

Offringa et al. (2017) scale-bias function.

Parameters:
  • scales (NDArray[np.float64]) – Scale parameters (relative to PSF FWHM)

  • scale_bias (float) – The scale-bias parameter

Returns:

Weighting factors per scale

Return type:

NDArray[np.float64]

rm_lite.utils.multiscale.scale_bias_function_cornwell(scales: numpy.typing.NDArray[numpy.float64]) numpy.typing.NDArray[numpy.float64]
rm_lite.utils.multiscale.tapered_quad_kernel_function(phi_double_arr_radm2: numpy.typing.NDArray[numpy.float64], scale: float, rmsf_fwhm: float, sum_normalised: bool = True) numpy.typing.NDArray[numpy.float64]

Tapered quadratic kernel function.

Parameters:
  • phi_double_arr_radm2 (NDArray[np.float64]) – Phi array in rad/m^2

  • scale (float) – Scale (in FWHM units)

  • rmsf_fwhm (float) – RMSF FWHM in rad/m^2

Returns:

Kernel function array (sum normalised)

Return type:

NDArray[np.float64]

rm_lite.utils.multiscale.KERNEL_FUNCS: dict[str, Callable]
rm_lite.utils.multiscale.MSG = 'This module is not yet implemented.'
rm_lite.utils.multiscale.TQDM_OUT