Source code for ewoksfluo.xrffit.fit
"""Different implementations of the core XRF fit function.
- `ewoksfluo.xrffit.fit.fast_fit.fit_xrf_spectra`: solve a linear system of equations to fit several spectra.
- `ewoksfluo.xrffit.fit.slow_fit.fit_xrf_spectra`: fit several XRF spectra one-by-one.
- `ewoksfluo.xrffit.fit.fast_fit_native.fit_xrf_spectra`: same as `fast_fit` but using the PyMca batch API for fast fitting.
- `ewoksfluo.xrffit.fit.slow_fit_native.fit_xrf_spectra`: same as `slow_fit` but using the PyMca batch API for slow fitting.
- `ewoksfluo.xrffit.fit.fast_fit_native.fit_xrf_spectra_legacy`: same as `fast_fit_native` but before HDF5 support.
- `ewoksfluo.xrffit.fit.slow_fit_native.fit_xrf_spectra_legacy`: same as `slow_fit_native` but before HDF5 support.
All functions can be called through `ewoksfluo.xrffit.fit.fit_xrf_spectra`.
"""
from typing import Optional
import numpy
from ..pymca_config import PyMcaXrfConfiguration
from . import fast_fit
from . import fast_fit_native
from . import slow_fit
from . import slow_fit_native
from .types import XRFBatchFitResult
[docs]
def fit_xrf_spectra(
xrf_spectra: numpy.ndarray,
configuration: PyMcaXrfConfiguration,
quantification: Optional[bool] = None,
individual_weights: Optional[bool] = None,
live_times: Optional[numpy.ndarray] = None,
positive_peak_areas: Optional[bool] = None,
diagnostics: Optional[bool] = None,
fast_fitting: Optional[bool] = None,
native_fitting: Optional[bool] = None,
native_legacy_fitting: Optional[bool] = None,
) -> XRFBatchFitResult:
"""
:param xrf_spectra: shape `(num_spectra, num_channels)`
:param configuration: PyMca configuration.
:param quantification: Calculate mass fractions from peak area's.
:param individual_weights: When fitting with weights, use the weight of each
spectrum (slow) instead of the average weight.
:param live_times: 1D array with one value for each XRF spectrum.
Only used for mass fractions with fundamental parameters.
:param positive_peak_areas:
:param diagnostics: fit model and residuals.
:param fast_fitting: Fast fitting means fit all spectra by solving a single linear system of equations.
:param native_fitting: Use native PyMca batch processing.
:param native_legacy_fitting: Use legacy native PyMca batch processing.
"""
if fast_fitting:
if native_legacy_fitting:
_fit = fast_fit_native.fit_xrf_spectra_legacy
elif native_fitting:
_fit = fast_fit_native.fit_xrf_spectra
else:
_fit = fast_fit.fit_xrf_spectra
else:
if native_legacy_fitting:
_fit = slow_fit_native.fit_xrf_spectra_legacy
elif native_fitting:
_fit = slow_fit_native.fit_xrf_spectra
else:
_fit = slow_fit.fit_xrf_spectra
return _fit(
xrf_spectra,
configuration,
quantification=quantification,
individual_weights=individual_weights,
live_times=live_times,
positive_peak_areas=positive_peak_areas,
diagnostics=diagnostics,
)