# Real-Time ICA on raw EEG data

**URL:** <https://mne.discourse.group/t/real-time-ica-on-raw-eeg-data/11473>\
**Category:** Support & Discussions\
**Tags:** preprocessing, eeg, ica\
**Created:** [September 4, 2025, 6:48am UTC](https://mne.discourse.group/t/real-time-ica-on-raw-eeg-data/11473 "2025-09-04T06:48:02Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![ishmam](https://avatars.discourse-cdn.com/v4/letter/i/65b543/32.png) [@ishmam](https://mne.discourse.group/u/ishmam)\
**Post date:** [September 4, 2025, 6:48am UTC](https://mne.discourse.group/t/real-time-ica-on-raw-eeg-data/11473/1 "2025-09-04T06:48:03Z")

</div>

Hello, quite new in the world of MNE. I was wondering if it was possible to implement **real-time** preprocessing (specially ICA) on EEG data?

I think the other preprocessing steps, for example bandpass-filtering, are easy to apply in real-time. Can we also do the same with ICA, where eye/muscle/heart artefacts will be discarded in real-time?

The goal:

- collect RAW eeg data in real time (no problem),
- **pre-process in real-time**
- use classifier on the preprocessed data to show output in real-time (should be no problem too)

Any help is appreciated 🙏

---

<div class="post-metadata">

**Author:** ![SBeumer](https://avatars.discourse-cdn.com/v4/letter/s/f0a364/32.png) [@SBeumer](https://mne.discourse.group/u/SBeumer)\
**Post date:** [September 4, 2025, 8:35am UTC](https://mne.discourse.group/t/real-time-ica-on-raw-eeg-data/11473/2 "2025-09-04T08:35:12Z")

</div>

In principle, ICA can be run online with some adaptations. For that, please have a look at [GitHub - goodshawn12/orica: Online Recursive Independent Component Analysis](https://github.com/goodshawn12/orica?tab=readme-ov-file)

---

<div class="post-metadata">

**Author:** ![ishmam](https://avatars.discourse-cdn.com/v4/letter/i/65b543/32.png) [@ishmam](https://mne.discourse.group/u/ishmam)\
**Post date:** [September 4, 2025, 9:06am UTC](https://mne.discourse.group/t/real-time-ica-on-raw-eeg-data/11473/3 "2025-09-04T09:06:13Z")

</div>

I have tried the REST Toolbox and ORICA before. But is it not for EEGLAB? Can I use something similar for MNE Python?

---

<div class="post-metadata">

**Author:** ![tsbinns](https://yyz2.discourse-cdn.com/free1/user_avatar/mne.discourse.group/tsbinns/32/4543_2.png) [@tsbinns](https://mne.discourse.group/u/tsbinns)\
**Post date:** [September 4, 2025, 3:55pm UTC](https://mne.discourse.group/t/real-time-ica-on-raw-eeg-data/11473/4 "2025-09-04T15:55:54Z")

</div>

A Python implementation of ORICA is available in the [SpyICA](https://github.com/alejoe91/spyica/tree/master) toolbox. The toolbox focuses on spike sorting, but I think the ICA algorithms are still compatible with any time-series data.

There are some example scripts showing how ORICA can be used, but overall the documentation isn’t extensive.

It’s not MNE, but this is the most I found when I was searching for these tools in Python before.

---

<div class="post-metadata">

**Author:** ![jerski](https://yyz2.discourse-cdn.com/free1/user_avatar/mne.discourse.group/jerski/32/4440_2.png) [@jerski](https://mne.discourse.group/u/jerski)\
**Post date:** [September 10, 2025, 11:44pm UTC](https://mne.discourse.group/t/real-time-ica-on-raw-eeg-data/11473/5 "2025-09-10T23:44:14Z")

</div>

For real-time or offline EEG the Minds AI Filter is simpler and works better than ICA on dynamic artifacts, but can also be used in conjunction: [https://www.minds-applied.com/minds-ai](https://www.minds-applied.com/minds-ai)
