Extra eeg channels in automatic sleep staging #240
-
|
Fantastic work! I was wondering if it's possible to feed extra EEG channels (e.g., frontal and occipital channels) to yasa.SleepStaging. |
Beta Was this translation helpful? Give feedback.
Replies: 17 comments
-
|
Hi @zixiao-yin, thank you :-) For now only a single EEG channel is supported, preferentially C4-M1 or C3-M2. Adding support for multiple EEG channels in the core algorithm should be pretty straightforward, however we'll also need to retrain the classifier (see https://github.com/raphaelvallat/yasa_classifier). I don't think this will be implemented in the near future. Thanks, |
Beta Was this translation helpful? Give feedback.
-
|
Got it, Thanks Raphael! |
Beta Was this translation helpful? Give feedback.
-
|
Hi Raphael, Thank you very much! |
Beta Was this translation helpful? Give feedback.
-
|
Hi @zixiao-yin, You should be able to detect k-complexes with the yasa.sw_detect function. Make sure that you limit the detection to N2 sleep. Detection of sharp waves is not implemented. Thanks! |
Beta Was this translation helpful? Give feedback.
-
|
@raphaelvallat Just adding some weight to this issue. I think it will be quite useful to have the sleep stage in this way. I was thinking we may also generate two different hypnograms (using two different channels, one at a time of course given the current limitation) and combine the hypnograms on base of this probability index to yield in one final hypnogram? What do you think? |
Beta Was this translation helpful? Give feedback.
-
|
Thanks @umair-hassan — I think this is a great idea. It will be better than having to re-train a separate classifier for 2, 3, ... n EEG channels, both in terms of ease-of-implementation, maintenance of the algorithm and maybe even accuracy. This should be pretty straightforward to do outside of YASA with the current implementation btw, but we could automatize this "majority voting" step within the SleepStaging class. |
Beta Was this translation helpful? Give feedback.
-
|
@raphaelvallat Thankyou for your assertion. I would write a pull request for this soon if no one has been assigned this issue yet then. |
Beta Was this translation helpful? Give feedback.
-
|
@raphaelvallat has this been completed? Otherwise I have time now to work on it! |
Beta Was this translation helpful? Give feedback.
-
|
Hi @umair-hassan, Please do feel free to work on a PR. I appreciate it! Thanks |
Beta Was this translation helpful? Give feedback.
-
|
Thanks for the great package :) Reviving the question on K-complexes, are there consensus to say that K-complexes are simply N2 slow oscillations? while I do find some papers supporting this point, there are many others saying otherwise. There are also definitions for the KC waveform to be of complete reverse shape i.e. strong surface positive followed by strong surface negative) I have attached some screengrab from papers
Halasz1998_Hierarchy_of_micro_arousals_and_the_microstructure_of_sleep.pdf
https://www.scientificbulletin.upb.ro/rev_docs_arhiva/full782_186975.pdf of course they could easily be montage choices etc, but would be great if the detection could also take the reverse shaped waveform into accounrt. Happy to contribute of course |
Beta Was this translation helpful? Give feedback.
-
|
I just copy/pasted the K-complex detection posts into a new Issue in #184 so that we can keep the conversation here limited to automatic sleep staging with extra EEG channels. 🤠 |
Beta Was this translation helpful? Give feedback.
-
Please let me know if multiple eeg channel analysis was ever completed. Thank you! |
Beta Was this translation helpful? Give feedback.
-
|
Thanks for checking in @Sleepy247365. This feature has not been implemented yet, and I don't think it's in super-high demand right now (but others please chime in if it's something you are eager to see). This conversation is a few years old so I doubt anyone is actively pursueing it, but it could definitely become a feature if anyone wants to pick it up. |
Beta Was this translation helpful? Give feedback.
-
|
Hi @raphaelvallat, |
Beta Was this translation helpful? Give feedback.
-
|
Hi @LIxxx-sketch, as discussed earlier in this thread, a model that natively support multiple EEG channels would require a full retraining and represent a significant effort on our side. A simpler workaround for now is to run SleepStaging N times with N different EEG channels (keeping the EOG and EMG constant). Furthermore, YASA's SleepStaging algorithm was intentionally designed to be lightweight, requiring only a single EEG channel. There are more accurate, deep learning-based algorithms out there that leverage all the available EEG channels, such as U-Sleep or gssc. |
Beta Was this translation helpful? Give feedback.
-
|
Hi @raphaelvallat, Thank you so much for answering my question! I see, the reason you designed it this way is to keep the model lightweight by using only one EEG channel. I am very interested in using YASA to run SleepStaging N times with N different EEG channels. And then, as discussed earlier in the thread, I'm going to do the 'majority voting' outside the YASA to see how it works. |
Beta Was this translation helpful? Give feedback.
-
|
Just adding a comment to connect this with #236, where there's possibility of adding a new |
Beta Was this translation helpful? Give feedback.



Hi @LIxxx-sketch, as discussed earlier in this thread, a model that natively support multiple EEG channels would require a full retraining and represent a significant effort on our side. A simpler workaround for now is to run SleepStaging N times with N different EEG channels (keeping the EOG and EMG constant).
Furthermore, YASA's SleepStaging algorithm was intentionally designed to be lightweight, requiring only a single EEG channel. There are more accurate, deep learning-based algorithms out there that leverage all the available EEG channels, such as U-Sleep or gssc.