Impedance fix / Impedance in LSL stream / Custom electrode layout

tkgesistkgesis Germany
edited June 3 in OpenBCI_GUI

Hello everyone,
in our experiment, we plan to use cyton+daisy with OpenBCI GUI, and stream the measurements to LSL.
1) For faster impedance checks, we start the branch https://github.com/OpenBCI/OpenBCI_GUI/tree/1204-cyton-impedance-checks-incorrect-at-low-resistances from processing.
The default thresholds for good impedance values are 750K and 2300K. In a first test, the cyton signal panel shows 50 - 120 kOhm for the channels. Are these the correct units? The values seem very high compared to recommendations from literature, which range from 5 to 10 kOhm.
Or is this just a wrong label?
2) According to the documentation, measurements are stored with 250Hz on the SD card, but only averages of pairs of two samples per channel are transmitted via radio due to limited bandwith. We use LSL for coregistration of EEG with other sensors. When we inspect the recordings (XDF files) with e.g. SigViewer , the sampling rate is shown as 125Hz. While upsampling is one general option in postprocessing, it would be helpful if the documentation explicitly stated the effective sampling rate of a 16 channel cyton+daisy setup is 125Hz. Is there any possibility to accurately align the 250Hz recording from the SD card with the 125Hz in the LSL file during postprocessing? It would be good to be able to identify sequences with poor signal and exclude these from analysis. Is it possible to include the impedance into the LSL stream (or are the impedance checks only possible while not recording?)
3) We use the https://shop.openbci.com/products/gelfree-bci-cap-kit , which has Pz, Cz and Fz positions and differs from the default electrode layout in OpenBCI GUI. How can we change the layout in OpenBCI GUI to reflect that? On https://github.com/openbci-archive/Docs/blob/master/Tutorials/023-Electrode_Cap_Tutorial.md there is a link to https://docs.openbci.com/OpenBCI Software/01-OpenBCI_GUI#the-openbci-gui-customize-your-layout but the page is not available anymore.
Especially, the labels should be set correctly also during streaming to LabStreamingLayer to avoid confusion during analysis. Is there a source of the values that would go in https://github.com/OpenBCI/OpenBCI_GUI/blob/d8543aafe2eea9d5f1394502d88bc11f43636021/OpenBCI_GUI/CytonElectrodeStatus.pde#L36 to correctly reflect the gelfree-bci-cap layout?

Ideally, we could build an executable with the adaptions (1+3), such that our experimenters do not have to run from processing.

Kind regards,
Thomas

Comments

  • wjcroftwjcroft Mount Shasta, CA

    Thomas, hi.

    Regarding your point (1), you can read some of the background on the Cyton (ADS1299 chip) impedance considerations at this comment below. This comment is from a discussion thread about what are appropriate / expected impedance values when using the dry Ultracortex electrodes. If you are using wet / gel electrodes you can expect much lower values, and no issues whatsoever.

    https://openbci.com/forum/index.php?p=/discussion/comment/13328/#Comment_13328

    From this thread,

    https://openbci.com/forum/index.php?p=/discussion/2517/expected-impedance-range-with-ultracortex-cyton-resolved

    William

  • wjcroftwjcroft Mount Shasta, CA

    Regarding point (2), it is not possible to include real-time impedance measures in the data stream. The Daisy sample rate is indeed 125 Hz as stated.

    Regarding the GUI source code impedance fix for (1), this is very close to being merged with the master branch. And a new download binary will be available at that time. Mentioning Richard @retiutut and Phil @philippitts.

    Guys, Thomas is a customer and researcher at the GESIS - Leibniz Institute for the Social Sciences in Cologne Germany.

    https://www.gesis.org/home

    William

  • wjcroftwjcroft Mount Shasta, CA

    In (3) the page you are referring to is regarding customization of the GUI layout, NOT electrode layout.

    https://docs.openbci.com/Software/OpenBCISoftware/GUIDocs/#customize-your-layout

    There HAVE BEEN some threads relating to this in the past, such as:

    https://openbci.com/forum/index.php?p=/discussion/2976/how-can-i-set-the-position-of-the-electrodes-for-the-head-map-display
    https://openbci.com/forum/index.php?p=/discussion/953/modify-gui-headmap-electrode-positions-channels

    But these seem mainly geared to the headmap display, not a general ability to reassign the channels in the LSL stream.

  • tkgesistkgesis Germany
    edited June 4

    Thank you William for pointing to that discussion.

    Regarding your point (1), you can read some of the background on the Cyton (ADS1299 chip) impedance considerations at this comment below. ... If you are using wet / gel electrodes you can expect much lower values, and no issues whatsoever.

    The range of an acceptable 'target impedance' depends on the electrodes, board and skin preparation.
    We chose the OpenBCI Gelfree Electrode Cap, as we neither wanted to use gel nor cut hair of our participants.

    The specs of the OpenBCI Gelfree Electrode Cap, (https://docs.openbci.com/AddOns/Headwear/GelfreeElectrodeCap/#technical-specifications) indicate Electrode-scalp impedance < 20 kΩ (at 10 Hz).
    Is this the 'target impedance' for that cap?

    I found this comparison table helpful , and I assumed the R-NET beeing closest to the OpenBCI Gelfree Electrode Cap.
    Brainproducts recommend a 60-100kOhm impedance for their R-NET.

    The range of 60-100kOhm seems realistic to achieve (at least with short hair), and some electrodes are even below the 20kOhm threshold.

    The recording in our experiment will not exceed 60 minutes. As the impedance check with the Cyton/Daisy board and OpenBCI-GUI has to be performed while not recording, we will check impedance at the beginning, and likely again at half time.

  • tkgesistkgesis Germany
    edited June 4

    @wjcroft said:
    But these seem mainly geared to the headmap display, not a general ability to reassign the channels in the LSL stream.

    Just thinking out loud how the different caps, electrode selection and wiring could be supported in OpenBCI GUI:
    Similar to the built-in montages in mne there would be a libary of common montages, including the 10-20-system (standard_1020 in MNE) in OpenBCI GUI. Users could choose the montage, and both, the Cyton Signal widget display and metrics used in e.g. the Head Plot widget use this montage. The montage thus needs to carry the electrode coordinates on the scalp, and include a mapping of channel numbers to electrode labels.
    The montage would also be read from the Networking / LSL Widget, and the mapping of the channel numbers to electrode labels would be fed into the LSL stream info description metadata field.

    This is compatible with https://github.com/OpenBCI/OpenBCI_GUI/issues/963

    Meanwhile, I would like to preconfigure OpenBCI GUI as much as possible for our experimenters. Any hints on how to achieve this using the Gelfree Electrode Cap (see below) by modifying the code would be appreciated.

    For example, how are data/electrode_positions_default.txt and CytonElectrodeLocations related? And which one takes precedence? It would be great if we could hard code the Gelfree Electrodes and their 2D positions, such that the Head Plot and Cyton Signal widgets match the cap. Where can I get the X/Y values that need to go there?

       ONE_N(0, 1, "1N", "EEG", 0.10000, 0.38992, "O1", 0.50000, 0.15265),
    ...
    
        SEVEN_N(6, 7, "7N", "EEG", 0.17313, 0.88820, "Pz", 0.37352, 0.15514),
        EIGHT_N(7, 8, "8N", "EEG", 0.12608, 0.88820, "Cz", 0.62530, 0.15514),
        NINE_N(8, 9, "9N", "EEG", 0.12608, 0.88820, "O2", 0.50000, 0.15265),
        TEN_N(9, 10, "10N", "EEG", 0.10000, 0.51967, "T6", 0.50000, 0.18308),
    ...
        FIFTEEN_N(14, 15, "15N", "EEG", 0.17313, 0.88820, "Fz", 0.11352, 0.11514),
        SIXTEEN_N(15, 16, "16N", "EEG", 0, 0, "n/a", 0, 0);
    

  • wjcroftwjcroft Mount Shasta, CA

    @tkgesis said:
    ...
    The range of 60-100kOhm seems realistic to achieve (at least with short hair), and some electrodes are even below the 20kOhm threshold.

    Yes this seems like the range you are looking for. I would go more by your actual measurements, than 'predictions'. Saline caps should have impedances just as low as gel or paste.

    The recording in our experiment will not exceed 60 minutes. As the impedance check with the Cyton/Daisy board and OpenBCI-GUI has to be performed while not recording, we will check impedance at the beginning, and likely again at half time.

    Yes, this is a good practice. You may be able to omit the half time measurement as the saline holder sponges stay well hydrated.

  • wjcroftwjcroft Mount Shasta, CA

    @tkgesis said:

    @wjcroft said:
    But these seem mainly geared to the headmap display, not a general ability to reassign the channels in the LSL stream.

    Just thinking out loud how the different caps, electrode selection and wiring could be supported in OpenBCI GUI:
    Similar to the built-in montages in mne there would be a libary of common montages, including the 10-20-system (standard_1020 in MNE) in OpenBCI GUI.
    ...

    Mentioning the GUI developer, Richard @retiutut.

Sign In or Register to comment.