rm_lite.utils.multiscale ======================== .. py:module:: rm_lite.utils.multiscale .. autoapi-nested-parse:: RM-ms-clean utils Attributes ---------- .. autoapisummary:: rm_lite.utils.multiscale.KERNEL_FUNCS rm_lite.utils.multiscale.MSG rm_lite.utils.multiscale.TQDM_OUT Functions --------- .. autoapisummary:: rm_lite.utils.multiscale._scale_bias_function rm_lite.utils.multiscale.convolve_fdf_scale rm_lite.utils.multiscale.find_significant_scale rm_lite.utils.multiscale.gaussian_scale_kernel_function rm_lite.utils.multiscale.hanning rm_lite.utils.multiscale.multiscale_cycle rm_lite.utils.multiscale.multiscale_minor_loop rm_lite.utils.multiscale.mutliscale_rmclean rm_lite.utils.multiscale.scale_bias_function rm_lite.utils.multiscale.scale_bias_function_cornwell rm_lite.utils.multiscale.tapered_quad_kernel_function Module Contents --------------- .. py:function:: _scale_bias_function(scale: float, scale_0: float, scale_bias: float) -> float Offringa et al. (2017) scale-bias function. :param scale: Scale parameter (relative to PSF FWHM) :type scale: float :param scale_0: The first non-zero scale parameter :type scale_0: float :param scale_bias: The scale-bias parameter :type scale_bias: float :returns: Weighting factor per scale :rtype: float .. py:function:: 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. :param scale: Scale parameter (relative to PSF FWHM) :type scale: float :param fwhm: FWHM of the RMSF :type fwhm: float :param fdf_arr: FDF array (complex) :type fdf_arr: NDArray[np.float64] :param phi_double_arr_radm2: Double-length Faraday depth array (rad/m^2) :type phi_double_arr_radm2: NDArray[np.float64] :param kernel: Kernel function :type kernel: Literal["tapered_quad", "gaussian"] :raises ValueError: If an invalid normalization method is provided :returns: Convolved FDF array :rtype: NDArray[np.float64] .. py:function:: 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] .. py:function:: 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. :param phi_double_arr_radm2: Phi array in rad/m^2 :type phi_double_arr_radm2: NDArray[np.float64] :param scale: Scale (in FWHM units) :type scale: float :param rmsf_fwhm: RMSF FWHM in rad/m^2 :type rmsf_fwhm: float :returns: Kernel function array (sum normalised) :rtype: NDArray[np.float64] .. py:function:: hanning(x_arr: numpy.typing.NDArray[numpy.float64], length: float) -> numpy.typing.NDArray[numpy.float64] Hanning window function. :param x_arr: Array of x values :type x_arr: NDArray[np.float64] :param length: Length of the window :type length: float :returns: Hanning window function array :rtype: NDArray[np.float64] .. py:function:: 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 .. py:function:: 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 .. py:function:: 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 .. py:function:: scale_bias_function(scales: numpy.typing.NDArray[numpy.float64], scale_bias: float) -> numpy.typing.NDArray[numpy.float64] Offringa et al. (2017) scale-bias function. :param scales: Scale parameters (relative to PSF FWHM) :type scales: NDArray[np.float64] :param scale_bias: The scale-bias parameter :type scale_bias: float :returns: Weighting factors per scale :rtype: NDArray[np.float64] .. py:function:: scale_bias_function_cornwell(scales: numpy.typing.NDArray[numpy.float64]) -> numpy.typing.NDArray[numpy.float64] .. py:function:: 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. :param phi_double_arr_radm2: Phi array in rad/m^2 :type phi_double_arr_radm2: NDArray[np.float64] :param scale: Scale (in FWHM units) :type scale: float :param rmsf_fwhm: RMSF FWHM in rad/m^2 :type rmsf_fwhm: float :returns: Kernel function array (sum normalised) :rtype: NDArray[np.float64] .. py:data:: KERNEL_FUNCS :type: dict[str, Callable] .. py:data:: MSG :value: 'This module is not yet implemented.' .. py:data:: TQDM_OUT