def test_FilterBankSSVEP_filters(self): # can work with filter bank paradigm = FilterBankSSVEP(filters=[(10.5, 11.5), (12.5, 13.5)]) dataset = FakeDataset(event_list=['13', '15', '17'], paradigm='ssvep') X, labels, metadata = paradigm.get_data(dataset, subjects=[1]) # X must be a 4D array with d=2 as last dimension for the 2 filters self.assertEqual(len(X.shape), 4) self.assertEqual(X.shape[-1], 2)
def test_FilterBankSSVEP_paradigm(self): # FilterBankSSVEP with all events paradigm = FilterBankSSVEP(n_classes=None) dataset = FakeDataset(event_list=['13', '15', '17', '19'], paradigm='ssvep') X, labels, metadata = paradigm.get_data(dataset, subjects=[1]) # X must be a 4D array self.assertEqual(len(X.shape), 4) # X must be a 4D array with d=4 as last dimension for the 4 events self.assertEqual(X.shape[-1], 4)
def test_FilterBankSSVEP_filters(self): # can work with filter bank paradigm = FilterBankSSVEP(filters=[(10.5, 11.5), (12.5, 13.5)]) dataset = FakeDataset(event_list=["13", "15", "17"], paradigm="ssvep") X, labels, metadata = paradigm.get_data(dataset, subjects=[1]) # X must be a 4D array with d=2 as last dimension for the 2 filters self.assertEqual(len(X.shape), 4) self.assertEqual(X.shape[-1], 2) # should return epochs epochs, _, _ = paradigm.get_data(dataset, subjects=[1], return_epochs=True) self.assertIsInstance(epochs, BaseEpochs)
def test_FilterBankSSVEP_paradigm(self): # FilterBankSSVEP with all events paradigm = FilterBankSSVEP(n_classes=None) dataset = FakeDataset(event_list=["13", "15", "17", "19"], paradigm="ssvep") X, labels, metadata = paradigm.get_data(dataset, subjects=[1]) # X must be a 4D array self.assertEqual(len(X.shape), 4) # X must be a 4D array with d=4 as last dimension for the 4 events self.assertEqual(X.shape[-1], 4) # should return epochs epochs, _, _ = paradigm.get_data(dataset, subjects=[1], return_epochs=True) self.assertIsInstance(epochs, BaseEpochs)
# # We will load the data from the first 2 subjects of the SSVEP_Exo dataset # and compare two algorithms on this set. One of the algorithm could only # process class associated with a stimulation frequency, we will thus drop # the resting class. As the resting class is the last defined class, picking # the first three classes (out of four) allows to focus only on the stimulation # frequency. n_subject = 2 # for i in range(n_subject): # SSVEPExo()._get_single_subject_data(i + 1) dataset = SSVEPExo() dataset.subject_list = dataset.subject_list[:n_subject] interval = dataset.interval paradigm = SSVEP(fmin=10, fmax=25, n_classes=3) paradigm_fb = FilterBankSSVEP(filters=None, n_classes=3) # Classes are defined by the frequency of the stimulation, here we use # the first two frequencies of the dataset, 13 and 17 Hz. # The evaluation function uses a LabelEncoder, transforming them # to 0 and 1 freqs = paradigm.used_events(dataset) ############################################################################## # Create pipelines # ---------------- # # Pipelines must be a dict of sklearn pipeline transformer. # The first pipeline uses Riemannian geometry, by building an extended # covariance matrices from the signal filtered around the considered
time_window = np.array(sample) sample, timestamp = inlet.pull_sample() sample = np.array(sample) return np.column_stack((sample, time_window)) ############################################################################### ## Option to online retraining retrain = True ## FIles to offilne base dataset = SSVEPExo(subjects=11) interval = dataset.interval paradigm_fb = FilterBankSSVEP(filters=None, n_classes=4) filtered_db = paradigm_fb.get_data(dataset, return_epochs=False) pipeline = make_pipeline( ExtendedSSVEPSignal(), Covariances(estimator="lwf"), TangentSpace(), LogisticRegression(solver="lbfgs", multi_class="auto"), ) model = pipeline.fit() # End of offline training # EEG stream on the lab network