コード例 #1
0
ファイル: experiment.py プロジェクト: robintibor/braindecode
 def init_training_vars(self):
     self.filterbands = generate_filterbank(min_freq=self.min_freq,
         max_freq=self.max_freq, last_low_freq=self.last_low_freq, 
         low_width=self.low_width, low_overlap=self.low_overlap,
         high_width=self.high_width, high_overlap=self.high_overlap,
         low_bound=self.low_bound)
     assert filterbank_is_stable(self.filterbands, self.filt_order, 
         self.cnt.fs), (
             "Expect filter bank to be stable given filter order.")
     n_classes = len(self.marker_def)
     self.class_pairs = list(itertools.combinations(range(n_classes),2))
     # use only number of clean trials to split folds
     n_clean_trials = len(self.clean_trials)
     if self.restricted_n_trials is not None:
         n_clean_trials = int(n_clean_trials * self.restricted_n_trials)
     if not self.shuffle:
         folds = KFold(n_clean_trials, n_folds=self.n_folds, 
             shuffle=False)
     else:
         rng = RandomState(903372376)
         folds = KFold(n_clean_trials, n_folds=self.n_folds, 
             shuffle=True, random_state=rng)
         
     # remap to original indices in unclean set(!)
     self.folds = map(lambda fold: 
         {'train': self.clean_trials[fold[0]], 
          'test': self.clean_trials[fold[1]]},
         folds)
     if self.only_last_fold:
         self.folds = self.folds[-1:]
コード例 #2
0
ファイル: experiment.py プロジェクト: vatthaphon/braindevel
    def init_training_vars(self):
        self.filterbands = generate_filterbank(
            min_freq=self.min_freq,
            max_freq=self.max_freq,
            last_low_freq=self.last_low_freq,
            low_width=self.low_width,
            low_overlap=self.low_overlap,
            high_width=self.high_width,
            high_overlap=self.high_overlap,
            low_bound=self.low_bound)
        assert filterbank_is_stable(
            self.filterbands, self.filt_order, self.cnt.fs), (
                "Expect filter bank to be stable given filter order.")
        # check if number of selected features is not too large
        if self.n_selected_features is not None:
            n_spatial_filters = self.n_top_bottom_csp_filters
            if n_spatial_filters is None:
                n_spatial_filters = len(self.sensor_names)
            n_max_features = len(self.filterbands) * n_spatial_filters
            assert n_max_features >= self.n_selected_features, (
                "Cannot select more features than will be originally created "
                "Originally: {:d}, requested: {:d}".format(
                    n_max_features, self.n_selected_features))

        n_classes = len(self.marker_def)
        self.class_pairs = list(itertools.combinations(range(n_classes), 2))
        # use only number of clean trials to split folds
        n_clean_trials = len(self.clean_trials)
        if self.restricted_n_trials is not None:
            if self.restricted_n_trials <= 1:
                n_clean_trials = int(n_clean_trials * self.restricted_n_trials)
            else:
                n_clean_trials = min(n_clean_trials, self.restricted_n_trials)
        if not self.shuffle:
            folds = KFold(n_clean_trials, n_folds=self.n_folds, shuffle=False)
        else:
            rng = RandomState(903372376)
            folds = KFold(n_clean_trials,
                          n_folds=self.n_folds,
                          shuffle=True,
                          random_state=rng)

        # remap to original indices in unclean set(!)
        self.folds = map(
            lambda fold: {
                'train': self.clean_trials[fold[0]],
                'test': self.clean_trials[fold[1]]
            }, folds)
        if self.only_last_fold:
            self.folds = self.folds[-1:]
コード例 #3
0
ファイル: experiment.py プロジェクト: robintibor/braindecode
    def init_training_vars(self):
        assert self.n_folds is None, "Cannot use folds on train test split"
        assert self.restricted_n_trials is None, "Not implemented yet"
        self.filterbands = generate_filterbank(min_freq=self.min_freq,
            max_freq=self.max_freq, last_low_freq=self.last_low_freq, 
            low_width=self.low_width, low_overlap=self.low_overlap,
            high_width=self.high_width, high_overlap=self.high_overlap,
            low_bound=self.low_bound)
        assert filterbank_is_stable(self.filterbands, self.filt_order, 
            self.cnt.fs), (
                "Expect filter bank to be stable given filter order.")
        self.class_pairs = list(itertools.combinations([0,1,2,3],2))
        train_fold = range(len(self.cnt.markers))
        test_fold = np.arange(len(self.test_cnt.markers)) + len(train_fold)
        self.folds = [{'train': train_fold, 'test': test_fold}]
        assert np.intersect1d(self.folds[0]['test'], 
            self.folds[0]['train']).size == 0

        # merge cnts!!
        self.cnt = append_cnt(self.cnt, self.test_cnt)
コード例 #4
0
ファイル: experiment.py プロジェクト: vatthaphon/braindevel
    def init_training_vars(self):
        assert self.n_folds is None, "Cannot use folds on train test split"
        assert self.restricted_n_trials is None, "Not implemented yet"
        self.filterbands = generate_filterbank(
            min_freq=self.min_freq,
            max_freq=self.max_freq,
            last_low_freq=self.last_low_freq,
            low_width=self.low_width,
            low_overlap=self.low_overlap,
            high_width=self.high_width,
            high_overlap=self.high_overlap,
            low_bound=self.low_bound)
        assert filterbank_is_stable(
            self.filterbands, self.filt_order, self.cnt.fs), (
                "Expect filter bank to be stable given filter order.")
        # check if number of selected features is not too large

        if self.n_selected_features is not None:
            n_spatial_filters = self.n_top_bottom_csp_filters
            if n_spatial_filters is None:
                n_spatial_filters = len(self.sensor_names)
            n_max_features = len(self.filterbands) * n_spatial_filters
            assert n_max_features >= self.n_selected_features, (
                "Cannot select more features than will be originally created "
                "Originally: {:d}, requested: {:d}".format(
                    n_max_features, self.n_selected_features))
        n_classes = len(self.marker_def)
        self.class_pairs = list(itertools.combinations(range(n_classes), 2))
        # check that markers are all for trials
        for _, mrk_code in self.cnt.markers + self.test_cnt.markers:
            assert mrk_code in list(itertools.chain(*self.marker_def.values()))
        train_fold = range(len(self.cnt.markers))
        test_fold = np.arange(len(self.test_cnt.markers)) + len(train_fold)
        self.folds = [{'train': train_fold, 'test': test_fold}]
        assert np.intersect1d(self.folds[0]['test'],
                              self.folds[0]['train']).size == 0

        # merge cnts!!
        self.cnt = append_cnt(self.cnt, self.test_cnt)
コード例 #5
0
ファイル: filterbank.py プロジェクト: vatthaphon/braindevel
 def create_filterbank(self):
     log.info("Creating filterbank...")
     # Create filterbands and array for holding
     # filterband trials 
     self.filterbands = generate_filterbank(self.min_freq, self.max_freq,
         self.last_low_freq, self.low_width, self.high_width)
     segment_length =  (self.signal_processor.segment_ival[1] -
         self.signal_processor.segment_ival[0])
     num_samples = segment_length  * self.signal_processor.cnt.fs / 1000.0
     assert num_samples.is_integer()
     num_samples = int(num_samples)
     full_epo_data = np.empty((len(self.clean_trials), num_samples, 
         len(self.sensor_names), len(self.filterbands)), dtype=np.float32)
     # Fill filterbank
     self.fill_filterbank_data(full_epo_data)
     # Transform to wyrm epoched dataset
     clean_markers = [m for i,m in enumerate(self.signal_processor.cnt.markers) \
         if i not in self.rejected_trials]
     del self.signal_processor.cnt
     new_epo = Data(data=full_epo_data, 
         axes=self.filterband_axes, names=self.filterband_names,
         units=self.filterband_names)
     new_epo.markers = clean_markers
     self.signal_processor.epo = new_epo
コード例 #6
0
ファイル: envelopes.py プロジェクト: vatthaphon/braindevel
def envelope_filterbank():
    filterbands = generate_filterbank(min_freq=1, max_freq=115,
        last_low_freq=31, low_width=6, low_overlap=3,
        high_width=8, high_overlap=4, low_bound=0.)
    return filterbands