Source code for HDF5_BLS_analyse.general

import json
import numpy as np

from .analyse_backend import Analyse_backend

[docs] class Analyse_general(Analyse_backend): """This class is a class inherited from the Analyse_backend class used to store steps of analysis that are not specific to a particular type of spectrometer and that are not interesting to show in an algorithm. For example, the function to add a remarkable point to the data """
[docs] def __init__(self, y, x = None): super().__init__(y = y, x = x)
def _add_point(self, x, type_pnt, window): """ Adds points to the points dictionary and a window to the windows dictionary Parameters ---------- x : float The x-value of the point. type : str The type of the point. window : tuple The window around the point to refine its position """ #Initiate a counter to count the number of these kind of peaks i = 0 for elt in self.points: nme = elt[0].split("_")[0] if type_pnt == nme: i+=1 temp = self._save_history self._save_history = False # Add the point to the list of points and the list of windows self.points.append([f"{type_pnt}_{i}", x]) self._save_history = temp if window[0] < min(self.x): window[0] = min(self.x) if window[1] > max(self.x): window[1] = max(self.x) self.windows.append([window[0], window[1]])
[docs] def silent_clear_points(self): """ Clears the list of points and the list of windows. """ self.points = [] self.windows = []
def _refine_peak_position(self, window = None): """Refines the position of a peak based on a window surrounding it. Parameters ---------- window : list, optional The window surrounding the peak. The format is [start, end]. The default is None. Returns ------- _type_ _description_ """ # Extract the windowed abscissa and ordinate arrays wndw_x = self.x[np.where((self.x >= window[0]) & (self.x <= window[1]))] y = self.y while len(y.shape) > 1: y = np.average(y, axis = 0) wndw_y = y[np.where((self.x >= window[0]) & (self.x <= window[1]))] # Fit a quadratic polynomial to the windowed data and returns the local extremum params = np.polyfit(wndw_x, wndw_y, 2) new_x = -params[1]/(2*params[0]) return new_x
[docs] def silent_return_string_algorithm(self): """Returns a string representation of the algorithm stored in the _algorithm attribute of the class. Returns ------- str The string representation of the algorithm. """ return json.dumps(self._algorithm, indent=4)