Export format differences
Main differences between the "CSV - Full", "CSV - Lite" and EDF export formats
CSV:
CSV is an interoperable file format for storing tabular data in plain text. One file is
provided for every device signal. Supported for all Bitbrain devices. We provide two
output formats with varying levels of detail (Lite and Full).
EDF:
EDF is a standardized file format designed for storing biological signals. One file is
provided for every device. Supported for Bitbrain devices containing EEG signals. We
refer to “EDF” through the software and this document for simplicity, note however that
we specifically provide the EDF+ format.
Main differences:
- Resolution and filtering: EDF represents the signal values in 2 bytes (16 bits), which does not allow to store the EEG and PPG signals as the full range of the amplifier ADC is 24
bits. Thus, EEG and PPG signals are high pass filtered (0.1 Hz, 2nd order Butterworth
filter) when exported to EDF format. CSV formats (CSV-Lite, CSV-Full) export the full-band
signals. - Lost samples adjust: Some signal samples might be lost due to the wireless nature of the
communication. In EDF and CSV-Full, the exported signals are expanded with nan values
in case of lost samples. In CSV-Lite, additional information is provided such a sequence
number (counter) to detect these cases. - Multi-device adjust: In simultaneous multi-device recordings, the devices might start the
recording with a slight difference (even when they are commanded at the same time). In
EDF and CSV-Full, we provide a common t0 for all signals, and expand the signals with
initial nan values so that the initial sample corresponds to the same time point. In CSV
Lite, we simply provide the initial timestamp (t0) for each device signals, which might be
different.
output data formats properties | EDF | CSV-Full | CSV-Lite |
Supported devices | EEG devices (Ring or Versatile Bio not supported) |
All | All |
Full-band | No, EEG and PPG are high prefiltered (0.1 Hz) |
Yes | Yes |
Lost samples adjust | Yes | Yes | No |
Multi-device adjust | Yes | Yes | No |
Supported in SennsLite | Yes | Yes | Yes |
Supported in SennsLab | No | Yes | Yes |
EDF Format:
An EDF file for every recorded device is provided, thus containing all its signals that operate at
different sampling rates.
Example:
eeg_AF7, eeg_A1, eeg_Fp2, eeg_AF8, eeg_A2, mask_eeg, imu_1, imu_2, imu_3, imu_4, imu_5, imu_6, imu_7, imu_8, imu_9, mask_imu, spo_1, spo_2, spo_3, mask_spo
Channel | Description |
<signal_id><i> * In case of EEG signals, we provide |
Values of signal and channel i (from 1 to N). EEG and PPG signals are high pass filtered (0.1 Hz, 2nd order Butterworth filter) and clipped to (-3000, 3000) uV. |
mask_<signal_id> | Mask of boolean values (0 or 1) for each signal that indicates whether samples were lost and should be interpreted as missing values (nan). Note we include a mask channel because nan values cannot be represented in EDF format. A sample j was lost in signal eeg when mask_eeg[j] is 1. |
Header of the EDF file:
The header of the EDF file fills the following fields:
- Start date and start time (note these fields provide a resolution of seconds; for a higher
time resolution access the UTC timestamps provided in the JSON file – metadata). - Patient code
- Equipment (device type)
CSV Format:
We provide a CSV file for every recorded signal.
The first line contains a header with the name of the columns.
Examples:
CSV-Full: ch1-AF7, ch2-A1, ch3-Fp2, ch4-AF8, ch5-A2
CSV-Lite: ch1-AF7, ch2-A1, ch3-Fp2, ch4-AF8, ch5-A2, sequenceNumber, timestampReception, timestamp
The CSV file contains the following columns:
Column | Full/Lite | Description |
ch<i> * In case of EEG signals, the position is added: ch<i>-<loc> |
Full/Lite | Values of channel i (from 1 to N). |
sequenceNumber | Lite | Sequence number (counter) is incremented by 1 every block. |
timestampReception | Lite | Reception timestamp (high res., us) per block, might be null if lost online. |
timestamp | Lite | Corrected timestamp (high res., us), using the t0 computation. |
Events:
The events registered with SennsLite during the recording are exported to CSV files.
We provide a CSV file for every event type.
The first line contains a header with the name of the columns.
Examples:
timestamp, value1
The CSV file contains the following columns:
Column | Description |
timestamp | Timestamp (high res., us) when the event occurred. |
value<i> | Value/s of the event. Note that one event might have several values. For instance, one event type “quality” is provided for every device that provides the signal quality of every channel. |