Signal1D Tools#
The methods described in this section are only available for one-dimensional signals in the Signal1D class.
Cropping#
The crop_signal()
crops the
the signal object along the signal axis (e.g. the spectral energy range)
in-place. If no parameter is passed, a user interface
appears in which to crop the one dimensional signal. For example:
>>> s = hs.data.two_gaussians()
>>> s.crop_signal(5, 15) # s is cropped in place
Additionally, cropping in HyperSpy can be performed using the Signal indexing syntax. For example, the following crops a signal to the 5.0-15.0 region:
>>> s = hs.data.two_gaussians()
>>> sc = s.isig[5.:15.] # s is not cropped, sc is a "cropped view" of s
It is possible to crop interactively using Region Of Interest (ROI). For example:
>>> s = hs.data.two_gaussians()
>>> roi = hs.roi.SpanROI(left=5, right=15)
>>> s.plot()
>>> sc = roi.interactive(s)
Background removal#
Added in version 1.4: zero_fill
and plot_remainder
keyword arguments and big speed
improvements.
The remove_background()
method provides
background removal capabilities through both a CLI and a GUI. The GUI displays
an interactive preview of the remainder after background subtraction. Currently,
the following background types are supported: Doniach, Exponential, Gaussian,
Lorentzian, Polynomial, Power law (default), Offset, Skew normal, Split Voigt
and Voigt. By default, the background parameters are estimated using analytical
approximations (keyword argument fast=True
). The fast option is not accurate
for most background types - except Gaussian, Offset and Power law -
but it is useful to estimate the initial fitting parameters before performing a
full fit. For better accuracy, but higher processing time, the parameters can
be estimated using curve fitting by setting fast=False
.
Example of usage:
>>> s = exspy.data.EELS_MnFe(add_powerlaw=True)
>>> s.remove_background()
Calibration#
The calibrate()
method provides a user
interface to calibrate the spectral axis.
Alignment#
The following methods use sub-pixel cross-correlation or user-provided shifts to align spectra. They support applying the same transformation to multiple files.
Integration#
To integrate signals use the integrate1D()
method.
Possibly in combination with a Region Of Interest (ROI) if interactivity is required.
Otherwise, a signal subrange for integration can also be chosen with the
isig
method.
>>> s.isig[0.2:0.5].integrate1D(axis=0)
Data smoothing#
The following methods (that include user interfaces when no arguments are passed) can perform data smoothing with different algorithms:
smooth_lowess()
(requiresstatsmodels
to be installed)
Spike removal#
spikes_removal_tool()
provides an user
interface to remove spikes from spectra. The derivative histogram
allows to
identify the appropriate threshold. It is possible to use this tool
on a specific interval of the data by slicing the data. For example, to use this tool in the signal between
indices 8 and 17:
>>> s = hs.signals.Signal1D(np.arange(5*10*20).reshape((5, 10, 20)))
>>> s.isig[8:17].spikes_removal_tool()
The options navigation_mask
or signal_mask
provide more flexibility in the
selection of the data, but these require a mask (booleen array) as parameter, which needs
to be created manually:
>>> s = hs.signals.Signal1D(np.arange(5*10*20).reshape((5, 10, 20)))
To get a signal mask, get the mean over the navigation space
>>> s_mean = s.mean()
>>> mask = s_mean > 495
>>> s.spikes_removal_tool(signal_mask=mask)
Peak finding#
A peak finding routine based on the work of T. O’Haver is available in HyperSpy
through the find_peaks1D_ohaver()
method.
Estimate peak width#
For asymmetric peaks, fitted functions <model.fitting> may not provide
an accurate description of the peak, in particular the peak width. The function
estimate_peak_width()
determines the width of a peak at a certain fraction of its maximum value.
Other methods#
Interpolate the spectra in between two positions
interpolate_in_between()
Convolve the spectra with a gaussian
gaussian_filter()
Apply a hanning taper to the spectra
hanning_taper()