示例#1
0
 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()
示例#2
0
 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()
示例#3
0
    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()
示例#4
0
    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()