How to Save Filtered Data in OpenBCI GUI?

Hi,
I've been using the OpenBCI Cyton to collect EEG data and have recently encountered some confusion. I'm hoping someone here might have some advice or suggestions.
In the OpenBCI GUI, I used the Filters option to apply a bandpass filter (5-50 Hz) and a 50/60 Hz notch filter to the EEG signal. The filtered signal looks great in the real-time display—it's clear and easy to interpret. However, when I save the data (for example, in a BDF file), it seems that what gets saved is still the unfiltered raw signal. This has been a bit of a challenge for my post-processing workflow.
I understand that the filters in the OpenBCI GUI are primarily for real-time visualization, and the saved data is always the raw, unprocessed version. When I later loaded these BDF files into EEGLAB, the signal quality was quite different from what I had seen in the GUI. I've tried post-processing in EEGLAB, but the quality of the filtered signal isn't quite the same as that displayed in the GUI.
Is there a way to save the filtered EEG data directly from the OpenBCI GUI? Or are there any recommended approaches that would allow me to save and analyze data as close as possible to what I see in the GUI after filtering?
I am aware that using LSL (Lab Streaming Layer) to output the TimeseriesFilt stream and then saving it via LabRecorder as an XDF file could work since it captures the filtered signal. However, I would prefer a simpler solution that allows me to save the filtered data directly from the GUI without extra steps.
If anyone has experience with this or knows how to modify the GUI's saving logic to save the filtered signals, I would greatly appreciate your help!
Thanks a lot!

Comments

  • wjcroftwjcroft Mount Shasta, CA

    Irving, hi.

    I don't believe the GUI has any support code for saving filtered recording files. (Other than the LSL trick you mentioned.) Mentioning Richard @retiutut.

    In signal processing EEG, it is generally recommended to minimize the number of filtering steps, as each additional DSP filtering pass introduces slight degradations in the signal quality. That is the rational for primarily outputting RAW as opposed to filtered.

    As far as your poor experience with EEGLAB, I would suggest commenting on the EEGLAB community discussion board. There may be some adjustments to the settings you are using that will solve the issue. For example, filter type, order, sequencing, etc.

    https://eeglab.org/support/
    https://eeglab.org/others/Firfilt_FAQ
    https://eeglab.org/others/EEGLAB_mailing_lists.html

    William

  • Hi,
    Thank you for your reply and support!
    I tried to use the LSL protocol in the Networking component, TimeseriesFilt, to stream and save it as an XDF file. Then, I plotted the channel data and could clearly see the EEG signal and changes. But when I tried to use the BDF file saved by the GUI and plot it, it was basically blank, and I couldn't see the EEG signal. I also tried to process the data according to the settings in timeseriesfilt and then plot it, but the quality of the EEG signal presented was poor. So, I asked you if it is possible to save the timeseriesfilt data.

  • wjcroftwjcroft Mount Shasta, CA

    You can try opening a ticket with Customer Support. Email to (contact at openbci.com). Your second comment describes a different BDF behavior than your first post. Perhaps focus on that, as the 'filtered output' option you request is less likely.

    Otherwise I still suggest posting on the EEGLAB discussion forum, asking why your filtering was not producing what you expected.

  • Hi,
    Thank you for your reply and patience!
    I can see the EEG signal through other tools by saving the original data in the bdf file, but the signal is not intuitive or clear. The reason may be that there is no gain adjustment and filtering processing, so the original data cannot be directly read and present a very intuitive effect. The file transmitted and saved through the TimeseriesFilt stream is a very intuitive and clear EEG signal, so I want to know whether it is possible to save the original data as the data set by TimeseriesFilt. In addition, if the data saved through the TimeseriesFilt stream is compared with the original data, will it lose reference and usability?

    Best wishes,

  • wjcroftwjcroft Mount Shasta, CA

    The raw recording contains a LARGE DC offset, frequently in the tens of millivolts. This is immediately removed when you filter. But without filtering looks like absurdly high sample values.

Sign In or Register to comment.