SSVEP FFT too noisy

olillaolilla Hungary
edited May 2020 in Ganglion

For my research I am trying to get ssVEP (peak in FFT) due to visual stimulation with given frequencies. I am using Ganglion board and gold cup electrodes, 3 active electrodes are placed on the O1, O2 and Oz points (based on international 10-20 system), reference electrode is placed on one of the earlobes, the ground electrode on the other earlobe. EEG data is received from board using Python's BrainFlow package. I have faced the following problems:

  • the peak corresponding to stimulation frequency could not be seen in the FFT plot: FFT was applied using BrainFlow's fourier tarnsform after its band pass filtering (but also other python packages like numpy and scipy were used to perform on the raw data band pass filtering and fft giving unfortunatelly not the exact same result)
  • electrode contact impadance can not be lowered under 10-15 kOhm: impedances were checked with OpenBCI GUI, impedances at scalp with hair were always higher then e.g. at earlobes
    I was able to detect peaks because of blinking, if an electrode was placed on the forehead and also alpha waves were detectable by closing eyes at the occipital region.

Now, I am a bit lost, what am I doing wrong and how could I get ssVEP. On the raw data, streamed from the Ganglion board I am simply using a band pass filter (~between 4 and 40 Hz) and Fourier transform to get the frequency spectrum. I have the feeling that my data is still too noisy, the spectrum does not have a prominent peak. How could I improve the signal quality? Is it depending on the impadence values that much and should I lower them more somehow or is it possible that the board is too close to my computer and it is affecting the data that much?
Thanks a lot for helping!

Comments

  • wjcroftwjcroft Mount Shasta, CA

    Lilla, hi.

    How are you delivering the visual stimulation? If via monitor screen or LEDs (driven say by an Arduino)? It sounds like the jitter in the light stimulation is resulting in poor frequency resolution.

    Chip Audette used a movie file, rather than programmatic flashing. These have very precise timing.

    https://openbci.com/forum/index.php?p=/discussion/2485/not-seeing-fft-peaks-in-ssvep-with-openbci-psychopy-flash-generator
    https://www.google.com/search?as_q=ssvep+chip+movie&as_sitesearch=openbci.com

    Regards, William

  • olillaolilla Hungary

    Thank you for the quich answer!
    Visual stimulation is delivered via monitor screen with only one frequncy at a time for about 10 seconds. The interesting thing is that using the same stimulation method I was able to get ssVEP with other EEG headsets (not OpenBCI products), so I guess the stimulation should be OK.
    Anyway, I will try also the movie file for stimulation.

  • wjcroftwjcroft Mount Shasta, CA

    As the previous links explain, square wave flashing lights, generate 'harmonics' in addition to the fundamental frequency. Is your monitor screen IDENTICAL to the one used with the other headsets? And same program driving it? Do you still have those other headsets and can verify that they are picking up the correct response in FFT?

    Direct programmatic generation of flashing frequencies, onto a monitor, did not work for Chip Audette. It was not stabile enough; too much jitter. There may also be dependencies based on the exact laptop you are using, video drivers, OS, OS latencies, buffering, processor load, etc. etc. So when you say "using the same stimulation method", there are many variables involved.

  • olillaolilla Hungary

    Unfortunately I dont have the other used headsets and the monitor is not the same, but I adjustted the stimulation frequencies to the monitors refresh rate. I also tried other stimulation method (without the monitor) using a stroboscope application on my phone but it couldn't evoke promeninet peak in FFT.
    I tried to measure and save EEG via the OpenBCI GUI, not with the BrainFlow API and it gave promissing results, however I couldn't compare the mesured values from GUI and via API since only one of them can connect to the board at the same time.
    Is it possible, that there is a difference between data comming through direct connection and streaming from board (BrainFlow API) and the data measured and saved with GUI? Have anyone faced the same problem?

  • retiututretiutut Louisiana, USA
    edited May 2020

    Is it possible, that there is a difference between data comming through direct connection and streaming from board (BrainFlow API) and the data measured and saved with GUI? Have anyone faced the same problem?

    Currently, yes, there is a difference.

    Please wait for GUI v5 to be released next month, this is the version that uses BrainFlow. Data saved to CSV with GUI v5 will be nearly identical to data collected using BrainFlow directly, with the exception of a header that contains useful information.

    Data saved to CSV will always be unfiltered (GUI v4 and GUI v5).

  • olillaolilla Hungary
    edited June 2020

    Using OpenBCI GUI’s Networking widget and LSL for streaming data I was able to evoke ssVEP using my stimulation application, but still could not do it using BrainFlow API.

  • wjcroftwjcroft Mount Shasta, CA

    Olilla, hi.

    There is a Slack available for questions and help on Brainflow. Also recent upgrades / mods have been made to the Brainflow Ganglion library.

    https://brainflow.readthedocs.io/en/stable/AskHelp.html
    https://github.com/brainflow-dev/brainflow/pull/57 [fixes on ~ June 1]

    Regards, William

Sign In or Register to comment.