braindecode.preprocessing.ApplyHilbert#
- class braindecode.preprocessing.ApplyHilbert(picks=None, envelope=False, n_jobs=None, n_fft='auto', *, verbose=None)[source]#
Braindecode preprocessor wrapper for
apply_hilbert().Compute analytic signal or envelope for a subset of channels/vertices.
- Parameters:
- picksstr | array-like | slice | None
Channels to include. Slices and lists of integers will be interpreted as channel indices. In lists, channel type strings (e.g.,
['meg', 'eeg']) will pick channels of those types, channel name strings (e.g.,['MEG0111', 'MEG2623']will pick the given channels. Can also be the string values'all'to pick all channels, or'data'to pick data channels. None (default) will pick all data channels (excluding reference MEG channels). Note that channels ininfo['bads']will be included if their names or indices are explicitly provided.- envelopebool
Compute the envelope signal of each channel/vertex. Default False. See Notes.
- n_jobsint | str
Number of jobs to run in parallel. Can be
'cuda'ifcupyis installed properly.Changed in version 1.13: Added support for CUDA.
- n_fftint | None | str
Points to use in the FFT for Hilbert transformation. The signal will be padded with zeros before computing Hilbert, then cut back to original length. If None, n == self.n_times. If ‘auto’, the next highest fast FFT length will be use.
- verbosebool | str | int | None
Control verbosity of the logging output. If
None, use the default verbosity level. See the logging documentation andmne.verbose()for details. Should only be passed as a keyword argument.
- Returns:
- selfinstance of Raw, Epochs, Evoked or SourceEstimate
The raw object with transformed data.
Notes
Parameters
If
envelope=False, the analytic signal for the channels/vertices defined inpicksis computed and the data of the Raw object is converted to a complex representation (the analytic signal is complex valued).If
envelope=True, the absolute value of the analytic signal for the channels/vertices defined inpicksis computed, resulting in the envelope signal.Warning
Do not use
envelope=Trueif you intend to compute an inverse solution from the raw data. If you want to compute the envelope in source space, useenvelope=Falseand compute the envelope after the inverse solution has been obtained.If
envelope=False, more memory is required since the original raw data as well as the analytic signal have temporarily to be stored in memory. If n_jobs > 1, more memory is required aslen(picks) * n_timesadditional time points need to be temporarily stored in memory.Also note that the
n_fftparameter will allow you to pad the signal with zeros before performing the Hilbert transform. This padding is cut off, but it may result in a slightly different result (particularly around the edges). Use at your own risk.Analytic signal
The analytic signal “x_a(t)” of “x(t)” is:
x_a = F^{-1}(F(x) 2U) = x + i y
where “F” is the Fourier transform, “U” the unit step function, and “y” the Hilbert transform of “x”. One usage of the analytic signal is the computation of the envelope signal, which is given by “e(t) = abs(x_a(t))”. Due to the linearity of Hilbert transform and the MNE inverse solution, the enevlope in source space can be obtained by computing the analytic signal in sensor space, applying the MNE inverse, and computing the envelope in source space.
Examples using braindecode.preprocessing.ApplyHilbert#
Comprehensive Preprocessing with MNE-based Classes