mne-tools / mne-python

MNE: Magnetoencephalography (MEG) and Electroencephalography (EEG) in Python
https://mne.tools
BSD 3-Clause "New" or "Revised" License
2.72k stars 1.32k forks source link

DOC: add guidance for reading OpenBCI EEG data #9224

Open SreeHaran opened 3 years ago

SreeHaran commented 3 years ago

Describe the new feature or enhancement

OpenBCI cyton board is one of the popular tool used for collecting EEG data from brain. The EEG data collected from the cyton board are stored in txt format with the help of OpenBCI GUI. Currently, MNE doesn't have any dedicated reader for function for OpenBCI data. It would be helpful if there's a separate class containing methods for reading, visualizing the EEG data from OpenBCI cyton board.

Additional comments

You can find Sample dataset for Cyton Board - 8 channels(without diasy module) here

welcome[bot] commented 3 years ago

Hello! 👋 Thanks for opening your first issue here! ❤️ We will try to get back to you soon. 🚴🏽‍♂️

cbrnr commented 3 years ago

We've already had such a request a while back in #3134. Have you checked out the package mentioned there? It might be outdated and unmaintained, but it's probably worth checking it out first.

SreeHaran commented 3 years ago

Hey, @cbrnr in #3134, they discussed about implementing this feature with OpenBCI_Python, but it has been deprecated by OpenBCI. Is there any plan for implementing this feature in other ways?

cbrnr commented 3 years ago

Its successor seems to be BrainFlow, which even lists an example of how to integrate with MNE: https://brainflow.readthedocs.io/en/stable/Examples.html#python-mne-integration

Is this something that would work?

cbrnr commented 3 years ago

Otherwise, the data files are plain CSV files that Pandas should be able to read. You can then create an mne.io.RawArray object.

SreeHaran commented 3 years ago

Ok thank you, I'll look at it...

drammock commented 3 years ago

I've poked around online a bit, and have confirmed that the structure of the text files is not very consistent. Here is one from an OpenBCI Ganglion that is very different from the sample files posted above by @SreeHaran

https://github.com/J77M/eeg-datasets/blob/master/eyes-one-channel/01.csv

In the OpenBCI docs, they also imply, in their EEGLAB tutorial, that the number of rows to skip at the start of the file varies with the version of their software GUI that was used to record the data. For EEGLAB they recommend using MATLAB's csvread function. So it's unlikely that we'll be able to do any better. Closing as WONTFIX; users will need to use pandas.read_csv() or numpy.loadtxt() or similar, and handle units conversion / channel names / etc themselves, and then load the data into RawArray.

larsoner commented 3 years ago

I'm inclined to reopen EDIT: as a doc change and add an entry to the EEG data format table, along the lines of what I recently recommended regarding XDF. We can at least increase discoverability and give people some hints in the right direction that way.

larsoner commented 3 years ago

@cbrnr if you have experience with these data, would you be up for making a PR to improve our docs in time for 0.24 (i.e., in the next week or so)?

cbrnr commented 3 years ago

Not in the next week, but we have just bought an OpenBCI Cython board so I will definitely be making sure that I can read the data 😄!