Source code for scippneutron.peaks._common

# SPDX-License-Identifier: BSD-3-Clause
# Copyright (c) 2024 Scipp contributors (https://github.com/scipp)
from __future__ import annotations

from dataclasses import dataclass


[docs] @dataclass(kw_only=True, slots=True) class FitParameters: """Parameters for fitting peaks.""" guess_background_fraction: float = 0.5 """The fraction of fit windows used for estimating the background. Determines what fraction of each fit window is used for estimating the initial parameters for background fits. E.g., a value of 0.5 means that half the range is used for the background; specifically first and last quarter of the window. Initial parameters for the peak are estimated from the remainder of the window. """ neighbor_separation_factor: float = 1 / 3 r"""Determines how close fit windows may be to neighboring peaks. The fit window for a peak with initial estimate :math:`p_i` is shrunk to the exclusive interval :math:`(p_i - \Delta, p_i + \Delta)` if it is smaller than the given fit window, where .. math:: \Delta = (p_{i+1} - p_{i-1}) \cdot \mathsf{neighbor\_separation\_factor} is based on the separation between the left and right neighbor estimate of the peak. Importantly, this uses the peak *estimates*, not the actual fitted peak positions. """
[docs] @dataclass(kw_only=True, slots=True) class FitRequirements: """Requirements that fitted models must satisfy to be considered successful.""" min_p_value: float = 0.01 """Minimum for the p-value of the fit. See :attr:`FitResult.p_value`. """ max_peak_width_factor: float = 1.0 r"""Maximum allowed width of peaks relative to fit window. The full width at half maximum of fitted peaks must satisfy .. math:: \mathsf{FWHM} < \mathsf{max\_peak\_width\_factor} \cdot \mathsf{window\_width} """ min_peak_width_factor: float = 1.0 r"""Minimum allowed width of peaks relative to coordinate spacing. The full width at half maximum of fitted peaks must satisfy .. math:: \mathsf{FWHM} < \mathsf{min\_peak\_width\_factor} \cdot \Delta_{\mathsf{coord}} where :math:`\Delta_{\mathsf{coord}}` is the spacing of the coordinate around the peak center. """