Daisy averaging of the live stream EEG data from the Cyton board

edited May 2019 in Cyton
Hi,

When the Daisy board is attached with Cyton, we can measure 16 channels at 125Hz.
temporally two adjacent data are averaged and sent to PC.

I was very surprised to see this specification because such a process distorts the data, and we cannot obtain the original sample data.
I'm using Cyton now and I'm afraid of the accuracy of data measured by it.

I assume that,1)  it converts the analog voltages from the electrodes to digital data in 24 bits, 2) stores them on the buffer memory, and 3) sends them to the PC over bluetooth, is it right?
Does Cython do the other *unnecessary processes* over EEG data?

Comments

  • wjcroftwjcroft Mount Shasta, CA
    Hiroki, hi.

    The Daisy sample averaging does happen with the live stream; due to limitations of the Bluetooth LE radio channel bandwidth. But when stored on the SD card, the session samples are not averaged.

    Another way to avoid the bandwidth reduction technique with live streaming, is to use the Wifi Shield.

    Regards,

    William

  • Hi William,
    ( Thank you for the reply every time I asked )

    My first question is for the Cyton board, not for the Daisy board.
    Again, does the Cython board do the other *unnecessary processes* over raw EEG data at the limited bluetooth channel?

    Next, if Cython + Daisy + WiFi Shield does not do any compression(averaging) or *unnecessary processes* over the raw EEG data, I want to use Daisy and WiFi Shield.
    I have some questions about the configuration of Cython + Daisy + WiFi Shield.

    1. Does this configuration really send the sampled raw EEG data without any *unnecessary processes*?
    “The WiFi Direct mode allows for high speed data streaming, such as 1000Hz with 16 channels with zero compression.”

    I found the following comment at line 655 of wifi.py:
    # channel samples themselves have been averaged by the board
    If this comment is true, obtained raw EEG samples will be averaged and this comment conflicts with the explanation of WiFi Shield above.

    Which is correct?

    2. Interpretation of the obtained data
    The Cyton + Daisy can stream data at 250Hz, 500Hz, 1000Hz, 2000Hz, 4000Hz, and 8000Hz.
    Let’s take the sampling rate of 250Hz.

    which captures samples from Cyton and wait for the next samples from Daisy, concatenates them, and send the combined 16-channel samples to PC.

    In this case, I assume that both of Cython and Daisy capture the EEG at 250Hz at the same time, the samples from each board will be sent to PC sequentially without any additional process(averaging). Is that right?
    In this case, I should process each sample at 500Hz on PC. Is this also right?

    3. What does ‘latency’ mean?
    “The Cyton will default to a sample rate of 1000Hz with a latency of 10ms.”

    Does this mean “the samples I obtained on PC actually the samples 10ms captured before.”?

    Another document refers to latency:

    I couldn’t understand these explanations.

    4. The intervals (and jitters) of the callbacks.
    I’ll follow the usage of wifi.py.
    When I used cyton.py, the callback function was called by about every 4ms.
    Will the callback function be called every 4ms at 250Hz ( or 1ms at 1000Hz ) when I use wifi.py? Or, the callback function will not be called every fixed time and should I make my software refer to the timestamp of the samples?
    I remember that the data from Cyton was choppy on macOS, and I’m afraid the similar phenomena might occur with the WiFi Shield.

    5. Is WiFi Shield beta?
    https://docs.openbci.com/Hardware/11-Wifi says “This product is in beta mode. The WiFi shield is known to have reliability issues across different computer configurations”.

    What does “beta” mean?
    I think I’m a well-skilled programmer and I’ll use wifi.py you provide.
    What are the reliability issues?

    with best regards,
  • wjcroftwjcroft Mount Shasta, CA
    Hiroki, hi.

    Sorry for the delayed response, got sidetracked. I'll get to a few of your points on this comment, hope to get them all.

    1. I believe the OpenBCI_Python wifi.py is a bit out of sync with regards to the access from the GUI, which can also generate LSL streams. No manipulation or averaging is done. That only applies to the RFduino BLE transmission for bandwidth reasons.

    2. Yes, the Cyton+Daisy collect all 16 channels at the exact same instant, because the two chips are clocked together.

    4. some choppiness / jitter can be expected with any modern operating system, depending on system load, radio transmission latency, etc. The sample clock on the Cyton is stabile, and does not jitter. Note however that because there is not a separate crystal clock for the sample rate, the base rate of 250 Hz may instead be something like 250.2 Hz or 249.8 Hz, etc. But you can assume that rate is constant. You do not need to refer to timestamps.

    5. the beta designation is to warn customers that some technical fiddling and finesse may be required on your part to fine tune the system. Using the shield is not as easy as using the Cyton alone. I would recommend using it with the GUI, and tell the GUI (networking widget), to output an LSL stream. That stream can then be consumed with many different BCI programs, including Python programmatic access.

    Regards,

    William

Sign In or Register to comment.