EEG records exploring¶
BCI-Framework store the record by default using the data format defined by OpenBCI-Stream, this makes it a lot easy to extract and crop data based on markers. We are working with a run generated by the 4-Class motor imagery (Arrows).
[1]:
from openbci_stream.utils.hdf5 import HDF5Reader
filename = "record-04_10_21-18_07_25.h5"
file = HDF5Reader(filename)
print(file)
file.close()
==================================================
record-04_10_21-18_07_25.h5
2021-04-10 18:07:25.843257
==================================================
MARKERS: ['Up', 'Bottom', 'Left', 'Right']
SAMPLE_RATE: 1000
STREAMING_SAMPLE_RATE: 100
DATETIME: 1618096045.843257
MONTAGE: standard_1020
CHANNELS: {1: 'Fp1', 2: 'Fp2', 3: 'T3', 4: 'C3', 5: 'C4', 6: 'T4', 7: 'O1', 8: 'O2'}
START-OFFSET: 11.801958084106445
SHAPE: [8, 259700]
END-OFFSET: 12.935876846313477
==================================================
Notice the 4 markers, and the channels.
MNE epochs¶
get_epochs()
return an mne.EpochsArray
object:
[2]:
with HDF5Reader(filename) as file:
epochs = file.get_epochs(tmin=-2, duration=6)
epochs.info
[2]:
<Info | 8 non-empty values
bads: []
ch_names: C3, Fp1, Fp2, C4, T3, T4, O2, O1
chs: 8 EEG
custom_ref_applied: False
dig: 11 items (3 Cardinal, 8 EEG)
highpass: 0.0 Hz
lowpass: 500.0 Hz
meas_date: unspecified
nchan: 8
projs: []
sfreq: 1000.0 Hz
>
Export to EDF¶
[3]:
with HDF5Reader(filename) as file:
file.to_edf(filename.replace('.h5', '.edf'))
RAW ndarray
objects¶
get_data()
return a standard array (epochs, channels, time)
and their respective (classes
):
[4]:
with HDF5Reader(filename) as file:
data, classes = file.get_data(tmin=-2, duration=6)
data.shape, classes.shape
[4]:
((40, 8, 6000), (40,))