Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Empirical Mode Decomposition to features extraction functions #39

Open
GuillaumeCorda opened this issue Jun 12, 2018 · 9 comments
Open

Comments

@GuillaumeCorda
Copy link
Contributor

I think it would be nice to have the possibility to compute the intrinsic mode functions thanks to the Empirical Mode Decomposition method. It is highly efficient for analyzing nonlinear and non-stationary data such as EEG signals.
This could be later integrated into a sub-module of mne-features containing all the functions allowing a signal decomposition.

@jbschiratti
Copy link
Collaborator

Thank you @GuillaumeCorda for opening this issue.

From what I understand, the number of IMF (intrinsic mode functions) obtained using the EMD algorithm is data-dependent, meaning that two consecutive epochs may have a different number of IMF. How would you address this problem? (i.e. which features would you extract from the IMFs?)

@GuillaumeCorda
Copy link
Contributor Author

The EMD would be used as a first step. The IMFs obtained have a well behaved Hilbert transform that allows us to extract meaningful instantaneous frequencies. We could then compute the mean, variance etc. of those frequencies in order to do a classification task (seizure/non seizure for instance).

@agramfort
Copy link
Member

agramfort commented Jun 12, 2018 via email

@jbschiratti
Copy link
Collaborator

jbschiratti commented Jun 12, 2018

Yes! AFAIK, the multivariate EMD takes as input as multivariate signal and outputs a certain number of signals called intrinsic mode functions (IMF), which have the same dimension as the input signal.

I'm wondering if it wouldn't be more relevant to use the EMD algorithm before epoching the signal. This way, the epoching and feature extraction could be performed on each IMF as well as on the raw data.

@agramfort
Copy link
Member

agramfort commented Jun 12, 2018 via email

@jbschiratti
Copy link
Collaborator

Since the EMD should be applied before epoching, shouldn't it be considered for MNE rather than MNE-features? By design, MNE-features assumes that the data is already epoched.

@agramfort
Copy link
Member

agramfort commented Jun 13, 2018 via email

@jbschiratti
Copy link
Collaborator

I agree!

@GuillaumeCorda Using existing implementations (or clean versions of these implementations) (Univariate/Bivariate EMD ; Multivariate EMD), you could write an example (to be put under mne_features/examples) showing how EMD and MNE-features can be efficiently combined. The example could be written using MNE sample data or the Bonn IEEG dataset (used in mne_features/examples/plot_seizure_example.py, see ref ).

@pchholak
Copy link

Indeed, EMD itself results in data-dependent IMFs that can be different in number and moreover, neighboring IMFs may have the same time-scale activity as the one contained in the others at some other time. However, if the goal is to get a time-frequency-energy plot after taking a Hilbert-Huang Transform (HHT), this does not matter because if one of the IMFs captures a particular activity localized in time, then the other IMFs won't. Therefore, if the end goal is to get the frequency response, it does not matter different IMFs are found for different data. At the end, all time-scales (or frequencies) are captured in all the IMFs put together which is the input to the HHT.

It would definitely be useful to have EMD-HHT inbuilt in MNE like other time-frequency plots as it is most suitable for non-stationary and nonlinear data such as M/EEG.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants