TIME_WINDOW, EPOCH_SIZE) # Pre-processing print("Pre-processing ...") print("Applying 5º order Butterworth bandpass filter (7-30 Hz)") b, a = signal.butter(5, [7, 30], btype="bandpass", fs=FS) data.left_data = signal.filtfilt(b, a, data.left_data, axis=1) data.right_data = signal.filtfilt(b, a, data.right_data, axis=1) print("Spatial-filtering ...") data.X = np.concatenate((data.left_data, data.right_data)) csp = CSP(average_trial_covariance=True, n_components=CSP_COMPONENTS) csp.fit(data.left_data, data.right_data) data.Z = np.array([csp.project(x) for x in data.X]) # print(data.Z.shape) #(399,700,2) # 첫번째 trial의 채널 1 # plot.specgram(pd.DataFrame(data.Z[0]).iloc[:,0], NFFT=64, Fs=250, noverlap=32) # 기존 # plot.specgram(pd.DataFrame(data.Z[0]).iloc[:,0], NFFT=32, Fs=250, noverlap=16) # plot.show() # Feature extraction print("Extracting features ...") data.F = np.zeros((data.X.shape[0], 2, CSP_COMPONENTS)) for n_epoch in range(0, data.X.shape[0]): epoch = data.Z[n_epoch] # Calculate the wavelet features
outlines="skirt", show_names=True) # Load training data print("Loading data ...") left_data_file = f"{DATA_FOLDER}/left-hand-subject-{subject}.csv" right_data_file = f"{DATA_FOLDER}/right-hand-subject-{subject}.csv" eeg = read_eeg_file(left_data_file, right_data_file, TIME_LENGTH, TIME_WINDOW, EPOCH_SIZE) apply_bandpass_filter(eeg) n_epoch = 25 left_epoch = eeg.left_data[n_epoch, :, :] right_epoch = eeg.right_data[n_epoch, :, :] ch_names = ["FC1", "FC2", "C1", "C2", "C3", "C4", "CP1", "CP2"] # # plot_topomap(ch_names, left_epoch) # plot_topomap(ch_names, right_epoch) csp = CSP(average_trial_covariance=True, n_components=8) csp.fit(eeg.left_data, eeg.right_data) left_epoch_projected = csp.project(left_epoch) right_epoch_projected = csp.project(right_epoch) plot_topomap(ch_names, left_epoch_projected) plot_topomap(ch_names, right_epoch_projected)