# 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,))