# The Signal class#

Warning

This subsection can be a bit confusing for beginners. Do not worry if you do not understand it all.

HyperSpy stores the data in the `BaseSignal`

class, that is
the object that you get when e.g. you load a single file using
`load()`

. Most of the data analysis functions are also contained in
this class or its specialized subclasses. The `BaseSignal`

class contains general functionality that is available to all the subclasses.
The subclasses provide functionality that is normally specific to a particular
type of data, e.g. the `Signal1D`

class provides
common functionality to deal with one-dimensional (e.g. spectral) data and
`exspy.signals.EELSSpectrum`

(which is a subclass of
`Signal1D`

) adds extra functionality to the
`Signal1D`

class for electron energy-loss
spectroscopy data analysis.

A signal store other objects in what are called attributes. For
examples, the data is stored in a numpy array in the
`data`

attribute, the original parameters in the
`original_metadata`

attribute, the mapped parameters
in the `metadata`

attribute and the axes
information (including calibration) can be accessed (and modified) in the
`AxesManager`

attribute.

- Basics of signals
- Ragged signals
- Binned and unbinned signals
- Indexing
- Generic tools
- Mathematical operations
- Signal operations
- Iterating over the navigation axes
- Iterating external functions with the map method
- Cropping
- Rebinning
- Interpolate to a different axis
- Squeezing
- Folding and unfolding
- Splitting and stacking
- Fast Fourier Transform (FFT)
- Inverse Fast Fourier Transform (iFFT)
- Changing the data type
- Transposing (changing signal spaces)
- Applying apodization window

- Basic statistical analysis
- Setting the noise properties
- Speeding up operations
- Complex datatype
- GPU support