You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Fantastic work! I was wondering if it's possible to feed extra EEG channels (e.g., frontal and occipital channels) to yasa.SleepStaging.
Will this further improve the staging accuracy? I read the preprint paper but only central EEG is mentioned.
Thanks!
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.
Hi Raphael,
Sorry to disturb. One more stupid question. Is yasa also supportable in detecting k-complexes and vertex sharp waves?
Or I should switch to other tools to achieve this aim?
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.
@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?
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.
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
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
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. 🤠
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.
Hi @raphaelvallat,
I was thinking why do you set only one EEG channel when running yasa.SleepStaging? Why not include more EEG channels in order to improve the performance of the model at first?
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.
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.
Just adding a comment to connect this with #236, where there's possibility of adding a new HypnogramSet class that would help perform things like majority voting on multiple scorers. The accepted answer here would be a good use case.
Repository owner locked and limited conversation to collaborators on Mar 21, 2026
Activity
raphaelvallat commentedon Oct 4, 2021
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,
Raphael
zixiao-yin commentedon Oct 5, 2021
Got it, Thanks Raphael!
zixiao-yin commentedon Oct 7, 2021
Hi Raphael,
Sorry to disturb. One more stupid question. Is yasa also supportable in detecting k-complexes and vertex sharp waves?
Or I should switch to other tools to achieve this aim?
Thank you very much!
Zixiao
raphaelvallat commentedon Oct 7, 2021
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!
Raphael
umair-hassan commentedon Jun 22, 2022
@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?
raphaelvallat commentedon Jun 24, 2022
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.
umair-hassan commentedon Jun 27, 2022
@raphaelvallat Thankyou for your assertion. I would write a pull request for this soon if no one has been assigned this issue yet then.
umair-hassan commentedon May 20, 2023
@raphaelvallat has this been completed? Otherwise I have time now to work on it!
raphaelvallat commentedon May 22, 2023
Hi @umair-hassan,
Please do feel free to work on a PR. I appreciate it!
Thanks
Raphael
Jhanyi commentedon Dec 8, 2024
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
remrama commentedon Dec 8, 2024
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. 🤠
Sleepy247365 commentedon May 20, 2025
Please let me know if multiple eeg channel analysis was ever completed. Thank you!
remrama commentedon May 21, 2025
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.
LIxxx-sketch commentedon Mar 18, 2026
Hi @raphaelvallat,
I was thinking why do you set only one EEG channel when running yasa.SleepStaging? Why not include more EEG channels in order to improve the performance of the model at first?
raphaelvallat commentedon Mar 19, 2026
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.
LIxxx-sketch commentedon Mar 20, 2026
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.
remrama commentedon Mar 21, 2026
Just adding a comment to connect this with #236, where there's possibility of adding a new
HypnogramSetclass that would help perform things like majority voting on multiple scorers. The accepted answer here would be a good use case.