Impedance fix / Impedance in LSL stream / Custom electrode layout
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
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
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
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.
Thank you William for pointing to that discussion.
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.
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?
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.
Yes, this is a good practice. You may be able to omit the half time measurement as the saline holder sponges stay well hydrated.
Mentioning the GUI developer, Richard @retiutut.