rm_lite.utils.fitting ===================== .. py:module:: rm_lite.utils.fitting Attributes ---------- .. autoapisummary:: rm_lite.utils.fitting.GAUSSIAN_SIGMA_TO_FWHM Classes ------- .. autoapisummary:: rm_lite.utils.fitting.FDFFitResult rm_lite.utils.fitting.FitResult rm_lite.utils.fitting.StokesIModel Functions --------- .. autoapisummary:: rm_lite.utils.fitting.best_aic_func rm_lite.utils.fitting.dynamic_fit rm_lite.utils.fitting.fit_fdf rm_lite.utils.fitting.fit_rmsf rm_lite.utils.fitting.fit_stokes_i_model rm_lite.utils.fitting.fwhm_to_sigma rm_lite.utils.fitting.gaussian rm_lite.utils.fitting.gaussian_integrand rm_lite.utils.fitting.polynomial rm_lite.utils.fitting.power_law rm_lite.utils.fitting.sigma_to_fwhm rm_lite.utils.fitting.static_fit rm_lite.utils.fitting.unit_centred_gaussian rm_lite.utils.fitting.unit_gaussian Module Contents --------------- .. py:class:: FDFFitResult Bases: :py:obj:`NamedTuple` Results of a Gaussian FDF fit .. py:attribute:: amplitude_fit :type: float Amplitude of the best fit model .. py:attribute:: mean_fit :type: float Mean (Faraday depth) of the best fit model .. py:attribute:: stddev_fit :type: float Standard deviation (Faraday depth) of the best fit model .. py:class:: FitResult Bases: :py:obj:`NamedTuple` Results of a Stokes I fit .. py:attribute:: aic :type: float Akaike Information Criterion of the fit .. py:attribute:: pcov :type: numpy.typing.ArrayLike Covariance matrix of the fit .. py:attribute:: popt :type: numpy.typing.ArrayLike Best fit parameters .. py:attribute:: stokes_i_model_func :type: StokesIModel Function of the best fit model .. py:class:: StokesIModel Bases: :py:obj:`Protocol` Base class for protocol classes. Protocol classes are defined as:: class Proto(Protocol): def meth(self) -> int: ... Such classes are primarily used with static type checkers that recognize structural subtyping (static duck-typing). For example:: class C: def meth(self) -> int: return 0 def func(x: Proto) -> int: return x.meth() func(C()) # Passes static type check See PEP 544 for details. Protocol classes decorated with @typing.runtime_checkable act as simple-minded runtime protocols that check only the presence of given attributes, ignoring their type signatures. Protocol classes can be generic, they are defined as:: class GenProto[T](Protocol): def meth(self) -> T: ... .. py:method:: __call__(x: numpy.typing.NDArray[numpy.float64], *params) -> numpy.typing.NDArray[numpy.float64] .. py:function:: best_aic_func(aics: numpy.typing.NDArray[numpy.float64], n_param: numpy.typing.NDArray[numpy.int32]) -> tuple[float, int, int] Find the best AIC for a set of AICs using Occam's razor. .. py:function:: dynamic_fit(freq_arr_hz: numpy.typing.NDArray[numpy.float64], ref_freq_hz: float, stokes_i_arr: numpy.typing.NDArray[numpy.float64], stokes_i_error_arr: numpy.typing.NDArray[numpy.float64], fit_order: int = 2, fit_type: Literal['log', 'linear'] = 'log') -> FitResult .. py:function:: fit_fdf(fdf_to_fit_arr: numpy.typing.NDArray[numpy.float64], phi_arr_radm2: numpy.typing.NDArray[numpy.float64], fwhm_fdf_radm2: float) -> FDFFitResult .. py:function:: fit_rmsf(rmsf_to_fit_arr: numpy.typing.NDArray[numpy.float64], phi_double_arr_radm2: numpy.typing.NDArray[numpy.float64], fwhm_rmsf_radm2: float) -> float .. py:function:: fit_stokes_i_model(freq_arr_hz: numpy.typing.NDArray[numpy.float64], ref_freq_hz: float, stokes_i_arr: numpy.typing.NDArray[numpy.float64], stokes_i_error_arr: numpy.typing.NDArray[numpy.float64], fit_order: int = 2, fit_type: Literal['log', 'linear'] = 'log') -> FitResult .. py:function:: fwhm_to_sigma(fwhm: float) -> float .. py:function:: gaussian(x: numpy.typing.NDArray[numpy.float64], amplitude: float | complex, mean: float, stddev: float | None = None, fwhm: float | None = None) -> numpy.typing.NDArray[numpy.float64] .. py:function:: gaussian_integrand(amplitude: float, stddev: float | None = None, fwhm: float | None = None) -> float .. py:function:: polynomial(order: int) -> StokesIModel .. py:function:: power_law(order: int) -> StokesIModel .. py:function:: sigma_to_fwhm(sigma: float) -> float .. py:function:: static_fit(freq_arr_hz: numpy.typing.NDArray[numpy.float64], ref_freq_hz: float, stokes_i_arr: numpy.typing.NDArray[numpy.float64], stokes_i_error_arr: numpy.typing.NDArray[numpy.float64], fit_order: int = 2, fit_type: Literal['log', 'linear'] = 'log') -> FitResult .. py:function:: unit_centred_gaussian(x: numpy.typing.NDArray[numpy.float64], stddev: float | None = None, fwhm: float | None = None) -> numpy.typing.NDArray[numpy.float64] .. py:function:: unit_gaussian(x: numpy.typing.NDArray[numpy.float64], mean: float, stddev: float | None = None, fwhm: float | None = None) -> numpy.typing.NDArray[numpy.float64] .. py:data:: GAUSSIAN_SIGMA_TO_FWHM