def smooth_savitzky_golay(self, polynomial_order=None, window_length=None, differential_order=0): """Apply a Savitzky-Golay filter to the data in place. If `polynomial_order` or `window_length` or `differential_order` are None the method is run in interactive mode. Parameters ---------- window_length : int The length of the filter window (i.e. the number of coefficients). `window_length` must be a positive odd integer. polynomial_order : int The order of the polynomial used to fit the samples. `polyorder` must be less than `window_length`. differential_order: int, optional The order of the derivative to compute. This must be a nonnegative integer. The default is 0, which means to filter the data without differentiating. Notes ----- More information about the filter in `scipy.signal.savgol_filter`. """ if not savgol_imported: raise ImportError("scipy >= 0.14 needs to be installed to use" "this feature.") self._check_signal_dimension_equals_one() if (polynomial_order is not None and window_length is not None): axis = self.axes_manager.signal_axes[0] self.data = savgol_filter(x=self.data, window_length=window_length, polyorder=polynomial_order, deriv=differential_order, delta=axis.scale, axis=axis.index_in_array) self.events.data_changed.trigger(obj=self) else: # Interactive mode smoother = SmoothingSavitzkyGolay(self) smoother.differential_order = differential_order if polynomial_order is not None: smoother.polynomial_order = polynomial_order if window_length is not None: smoother.window_length = window_length smoother.edit_traits()
def smooth_savitzky_golay(self, polynomial_order=None, window_length=None, differential_order=0): """Apply a Savitzky-Golay filter to the data in place. If `polynomial_order` or `window_length` or `differential_order` are None the method is run in interactive mode. Parameters ---------- window_length : int The length of the filter window (i.e. the number of coefficients). `window_length` must be a positive odd integer. polynomial_order : int The order of the polynomial used to fit the samples. `polyorder` must be less than `window_length`. differential_order: int, optional The order of the derivative to compute. This must be a nonnegative integer. The default is 0, which means to filter the data without differentiating. Notes ----- More information about the filter in `scipy.signal.savgol_filter`. """ if not savgol_imported: raise ImportError("scipy >= 0.14 needs to be installed to use" "this feature.") self._check_signal_dimension_equals_one() if (polynomial_order is not None and window_length is not None): axis = self.axes_manager.signal_axes[0] self.data = savgol_filter( x=self.data, window_length=window_length, polyorder=polynomial_order, deriv=differential_order, delta=axis.scale, axis=axis.index_in_array) self.events.data_changed.trigger(obj=self) else: # Interactive mode smoother = SmoothingSavitzkyGolay(self) smoother.differential_order = differential_order if polynomial_order is not None: smoother.polynomial_order = polynomial_order if window_length is not None: smoother.window_length = window_length smoother.edit_traits()
def smooth_savitzky_golay(self, polynomial_order = None, number_of_points = None, differential_order = 0): '''Savitzky-Golay data smoothing''' if polynomial_order is not None and number_of_points is not None: for index in np.ndindex( tuple(self.axes_manager.navigation_shape)): self.axes_manager.set_not_slicing_indexes(index) self.data[self.axes_manager._getitem_tuple] = \ utils.sg(self(), number_of_points, polynomial_order, differential_order) else: smoother = SmoothingSavitzkyGolay(self) smoother.differential_order = differential_order if polynomial_order is not None: smoother.polynomial_order = polynomial_order if number_of_points is not None: smoother.number_of_points = number_of_points smoother.edit_traits()
def smooth_savitzky_golay(self, polynomial_order = None, number_of_points = None, differential_order = 0): """Savitzky-Golay data smoothing """ if (polynomial_order is not None and number_of_points) is not None: for spectrum in self: spectrum.data[:] = utils.sg(self(), number_of_points, polynomial_order, differential_order) else: smoother = SmoothingSavitzkyGolay(self) smoother.differential_order = differential_order if polynomial_order is not None: smoother.polynomial_order = polynomial_order if number_of_points is not None: smoother.number_of_points = number_of_points smoother.edit_traits()