Exemplo n.º 1
0
def _find_analogue_trigger_limit_sd(raw, events, anapick, tmin=-0.2, tmax=0.0):
    epochs = Epochs(raw,
                    events,
                    tmin=tmin,
                    tmax=tmax,
                    picks=anapick,
                    baseline=(None, 0),
                    preload=True)
    epochs._data = np.sqrt(epochs._data**2)  # RECTIFY!
    ave = epochs.average(picks=[0])
    sde = epochs.standard_error(picks=[0])
    return (ave.data.mean(),
            5.0 * sde.data[0, np.where(sde.times < 0)].mean() *
            np.sqrt(epochs.events.shape[0]))
def _get_epochs(subject):
    # if already computed, lets load it from disk
    epo_fname = paths('epochs_vhp', subject=subject)
    if op.exists(epo_fname):
        return load('epochs_vhp', subject=subject, preload=True)

    # high pass filter and epoch
    for block in range(1, 6):

        raw = load('sss', subject=subject, block=block, preload=True)

        # Explicit picking of channel to ensure same channels across subjects
        picks = [
            'STI101', 'EEG060', 'EOG061', 'EOG062', 'ECG063', 'EEG064',
            'MISC004'
        ]

        # Potentially add forgotten channels
        ch_type = dict(STI='stim', EEG='eeg', EOG='eog', ECG='ecg', MIS='misc')
        missing_chans = list()
        for channel in picks:
            if channel not in raw.ch_names:
                missing_chans.append(channel)
        if missing_chans:
            info = create_info(missing_chans, raw.info['sfreq'],
                               [ch_type[ch[:3]] for ch in missing_chans])
            raw.add_channels([
                RawArray(np.zeros(
                    (len(missing_chans), raw.n_times)), info, raw.first_samp)
            ],
                             force_update_info=True)

        # Select same channels order across subjects
        picks = [np.where(np.array(raw.ch_names) == ch)[0][0] for ch in picks]
        picks = np.r_[np.arange(306), picks]

        # Filtered
        raw.filter(2, 30, l_trans_bandwidth=.5, filter_length='30s', n_jobs=1)

        # Ensure same sampling rate
        if raw.info['sfreq'] != 1000.0:
            raw.resample(1000.0)

        # Select events
        events = find_events(raw, stim_channel='STI101', shortest_event=1)
        sel = np.where(events[:, 2] <= 255)[0]
        events = events[sel, :]

        # Compensate for delay (as measured manually with photodiod
        events[1, :] += int(.050 * raw.info['sfreq'])

        # Epoch continuous data
        this_epochs = Epochs(raw,
                             events,
                             reject=None,
                             tmin=-.200,
                             tmax=1.6,
                             picks=picks,
                             baseline=None,
                             decim=10)
        save(this_epochs, 'epo_block', subject=subject, block=block)
        this_epochs._data = None
        raw.data = None
        del this_epochs, raw

    epochs = list()
    for block in range(1, 6):
        this_epochs = load('epo_block', subject=subject, block=block)
        epochs.append(this_epochs)
    epochs = concatenate_epochs(epochs)

    # save for faster retest
    save(epochs, 'epochs_vhp', subject=subject, overwrite=True, upload=False)

    return epochs
Exemplo n.º 3
0
data= dataset.get_data()

df = pd.DataFrame()

l_freq = 0.; h_freq = 38.

#get Epochs
datasets = []
for subj_id, subj_data in data.items():
    epochs_list = []
    for sess_id, sess_data in subj_data.items():
        for run_id, raw in sess_data.items():
            events = find_events(raw)
            onset,offset = dataset.interval
            events[:,0] += onset*250
            raw2 = raw.pick_types(eeg=True, meg=False, stim=False)
            raw2 = raw2.filter(l_freq,h_freq)

            epoch = Epochs(raw2, events, event_id=dataset.event_id, tmin=-0.5, tmax=4)
            epoch._data = epoch.get_data()
            #epoch.load_data()
            epochs_list.append(epoch)
    epochs = mne.concatenate_epochs(epochs_list)
    #epoch to torch.Dataset
    datasets.append(BcicDataset(epochs,subj_id))



with open('bcic_datasets_[0,38].pkl', 'wb', ) as f:
    dill.dump(datasets, f)
def _get_epochs(subject):
    # if already computed, lets load it from disk
    epo_fname = paths('epochs_vhp', subject=subject)
    if op.exists(epo_fname):
        return load('epochs_vhp', subject=subject, preload=True)

    # high pass filter and epoch
    for block in range(1, 6):

        raw = load('sss', subject=subject, block=block, preload=True)

        # Explicit picking of channel to ensure same channels across subjects
        picks = ['STI101', 'EEG060', 'EOG061', 'EOG062', 'ECG063', 'EEG064',
                 'MISC004']

        # Potentially add forgotten channels
        ch_type = dict(STI='stim', EEG='eeg', EOG='eog', ECG='ecg',
                       MIS='misc')
        missing_chans = list()
        for channel in picks:
            if channel not in raw.ch_names:
                missing_chans.append(channel)
        if missing_chans:
            info = create_info(missing_chans, raw.info['sfreq'],
                               [ch_type[ch[:3]] for ch in missing_chans])
            raw.add_channels([RawArray(
                np.zeros((len(missing_chans), raw.n_times)), info,
                raw.first_samp)], force_update_info=True)

        # Select same channels order across subjects
        picks = [np.where(np.array(raw.ch_names) == ch)[0][0] for ch in picks]
        picks = np.r_[np.arange(306), picks]

        # Filtered
        raw.filter(2, 30, l_trans_bandwidth=.5, filter_length='30s',
                   n_jobs=1)

        # Ensure same sampling rate
        if raw.info['sfreq'] != 1000.0:
            raw.resample(1000.0)

        # Select events
        events = find_events(raw, stim_channel='STI101', shortest_event=1)
        sel = np.where(events[:, 2] <= 255)[0]
        events = events[sel, :]

        # Compensate for delay (as measured manually with photodiod
        events[1, :] += int(.050 * raw.info['sfreq'])

        # Epoch continuous data
        this_epochs = Epochs(raw, events, reject=None, tmin=-.200, tmax=1.6,
                             picks=picks, baseline=None, decim=10)
        save(this_epochs, 'epo_block', subject=subject, block=block)
        this_epochs._data = None
        raw.data = None
        del this_epochs, raw

    epochs = list()
    for block in range(1, 6):
        this_epochs = load('epo_block', subject=subject, block=block)
        epochs.append(this_epochs)
    epochs = concatenate_epochs(epochs)

    # save for faster retest
    save(epochs, 'epochs_vhp', subject=subject, overwrite=True, upload=False)

    return epochs