|
@@ -1,5 +1,4 @@
|
|
|
import numpy as np
|
|
|
-import mne
|
|
|
import itertools
|
|
|
from datetime import datetime
|
|
|
import joblib
|
|
@@ -11,32 +10,6 @@ import os
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
|
|
|
-def events_filter(epoch_data, fs, events):
|
|
|
- """
|
|
|
- 按照hg能量去除异常数据
|
|
|
- """
|
|
|
- def exclude_outlier(epoch_data, lower=1.5, upper=1.5):
|
|
|
- epoch_power = np.sqrt(np.mean(epoch_data ** 2, axis=(1, 2)))
|
|
|
- mean_, std_ = epoch_power.mean(), epoch_power.std()
|
|
|
- indices = (epoch_power < mean_ + upper * std_) & (epoch_power > mean_ - lower * std_)
|
|
|
- return indices
|
|
|
-
|
|
|
- # extract hg
|
|
|
- epoch_hg = mne.filter.filter_data(epoch_data, fs, 60, 90)
|
|
|
-
|
|
|
- ind_cls = np.unique(events[:, 2])
|
|
|
- mov_ind = [i for i in ind_cls if i != 0]
|
|
|
- rest_ind = 0
|
|
|
- epoch_rest = epoch_hg[events[:, 2] == rest_ind]
|
|
|
- rest_indices = np.flatnonzero(events[:, 2] == rest_ind)
|
|
|
- epoch_mov = epoch_hg[np.isin(events[:, 2], mov_ind)]
|
|
|
- mov_indices = np.flatnonzero(np.isin(events[:, 2], mov_ind))
|
|
|
-
|
|
|
- rest_filtered_indices = rest_indices[exclude_outlier(epoch_rest, 1.5, 1.5)]
|
|
|
- mov_filtered_indices = mov_indices[exclude_outlier(epoch_mov, 1., 2)]
|
|
|
- return np.sort(np.concatenate((rest_filtered_indices, mov_filtered_indices)))
|
|
|
-
|
|
|
-
|
|
|
def event_to_stim_channel(events, time_length, trial_length=None):
|
|
|
x = np.zeros(time_length, dtype=np.int32)
|
|
|
if trial_length is not None:
|