Source code for pymultifit.fitters.utilities_f

"""Created on Aug 18 23:52:19 2024"""

__all__ = ['parameter_logic', 'sanity_check']

from typing import List, Tuple, Union

import numpy as np

# SAFEGUARD:
xy_values = Union[List[float], np.ndarray]
xy_tuple = Tuple[np.ndarray, np.ndarray]
indexType = Union[int, List[int], None]


[docs] def sanity_check(x_values: xy_values, y_values: xy_values) -> xy_tuple: """ Convert input lists to NumPy arrays if necessary. Parameters ---------- x_values : list of float or np.ndarray Input x-values that will be converted to a NumPy array if they are in list format. y_values : list of float or np.ndarray Input y-values that will be converted to a NumPy array if they are in list format. Returns ------- x_values : np.ndarray The x-values as a NumPy array. y_values : np.ndarray The y-values as a NumPy array. """ if isinstance(x_values, list): x_values = np.array(x_values) if isinstance(y_values, list): y_values = np.array(y_values) return x_values, y_values
[docs] def parameter_logic(par_array: np.ndarray, n_par: int, selected_models: indexType) -> np.ndarray: """ Extract parameter values from a given function based on the number of parameters per fit and selected indices. Parameters ---------- par_array : np.ndarray A 2D array where the first column contains the parameter values and the second contains its standard errors. n_par : int The number of parameters per fit (e.g., amplitude, mu, sigma, etc.). selected_models : int, list of int, or None Indices of model components to extract. - If None, selects all components. - If int or list of int, selects the specified components (1-based indexing). Returns ------- np.ndarray A 2D array containing the selected parameter values for the specified mean and error values for the fit. """ indices = np.array(selected_models) - 1 if selected_models is not None else slice(None) return par_array.reshape(-1, n_par)[indices]