コード例 #1
0
    def apply(self):
        filename = '%s_%s' % (self.type, self.target)
        cache = load_hickle_file(
            os.path.join(self.settings['cachedir'], filename))
        if cache is not None:
            return cache

        data = self.read_raw_signal()
        if self.settings['dataset'] in ['CHBMIT', 'FB']:
            X, y = self.preprocess(data)
        elif self.settings['dataset'] in ['Kaggle2014Det']:
            X, y = self.preprocess_Kaggle2014Det(data)
        save_hickle_file(os.path.join(self.settings['cachedir'], filename),
                         [X, y])
        return X, y
コード例 #2
0
    def apply(self, save_STFT=False, dir=''):

        filename = '%s_%s' % (self.type, self.target)
        cache = load_hickle_file(
            os.path.join(self.settings['cachedir'] + '_ACS', filename))
        if cache is not None:
            return cache

        data = self.read_raw_signal()
        if self.settings['dataset'] == 'Kaggle2014Pred':
            X, y = self.preprocess_Kaggle(data)
        else:
            X, y = self.preprocess(data)
        save_hickle_file(
            os.path.join(self.settings['cachedir'] + '_ACS', filename), [X, y])

        return X, y
コード例 #3
0
    def apply(self, save_STFT=False, dir=''):
        def save_STFT_to_files(X):
            print('Start saving STFT to %s' % dir)
            pre = None  # oversampling for GAN training
            ovl_pct = 0.1  # oversampling for GAN training
            if isinstance(X, list):
                index = 0
                ovl_len = int(ovl_pct *
                              X[0].shape[-2])  # oversampling for GAN training
                ovl_num = int(np.floor(1.0 / ovl_pct) -
                              1)  # oversampling for GAN training
                for x in X:
                    for i in range(x.shape[0]):
                        fn = '%s_%s_%d_%d.npy' % (self.target, self.type,
                                                  index, i)
                        if self.settings['dataset'] in ['FB', 'CHBMIT']:
                            x_ = x[i, :, :56, :112]
                        elif self.settings['dataset'] == 'Kaggle2014Pred':
                            if 'Dog' in self.target:
                                x_ = x[i, :, :56, :96]
                            elif 'Patient' in self.target:
                                x_ = x[i, :, :112, :96]
                        elif self.settings['dataset'] == 'EpilepsiaSurf':
                            x_ = x[i, :, :, :]

                        np.save(os.path.join(dir, fn), x_)
                        # 2352, 1, 16, 59, 100 - Kaggle Dog
                        # (567, 1, 15, 119, 100) - Kaggle Patient
                        # 3020, 1, 6, 59, 114 - Freiburg
                        # Generate overlapping samples for GAN
                        if i > 0:
                            for j in range(1, ovl_num + 1):
                                fn = '%s_ovl_%s_%d_%d_%d.npy' % (
                                    self.target, self.type, index, i, j)
                                x_2 = np.concatenate((pre[:, :j * ovl_len, :],
                                                      x_[:, j * ovl_len:, :]),
                                                     axis=1)
                                assert x_2.shape == x_.shape
                                np.save(os.path.join(dir, fn), x_2)

                        pre = x_
                    index += 1
            else:
                ovl_len = int(ovl_pct *
                              X.shape[-2])  # oversampling for GAN training
                ovl_num = np.floor(
                    1.0 / ovl_pct) - 1  # oversampling for GAN training
                for i in range(X.shape[0]):
                    fn = '%s_%s_0_%d.npy' % (self.target, self.type, i)
                    if self.settings['dataset'] in ['FB', 'CHBMIT']:
                        x_ = X[i, :, :56, :112]

                    elif self.settings['dataset'] == 'Kaggle2014Pred':
                        if 'Dog' in self.target:
                            x_ = X[i, :, :56, :96]
                        elif 'Patient' in self.target:
                            x_ = X[i, :, :112, :96]

                    np.save(os.path.join(dir, fn), x_)
                    # Generate overlapping samples for GAN
                    if i > 0:
                        for j in range(1, ovl_num + 1):
                            fn = '%s_ovl_%s_%d_%d_%d.npy' % (
                                self.target, self.type, index, i, j)
                            x_2 = np.concatenate(
                                (pre[:, :j * ovl_len, :], x_[:,
                                                             j * ovl_len:, :]),
                                axis=-1)
                            assert x_2.shape == x_.shape
                            np.save(os.path.join(dir, fn), x_2)

                    pre = x_
            print('Finished saving STFT to %s' % dir)
            return None

        filename = '%s_%s' % (self.type, self.target)
        cache = load_hickle_file(
            os.path.join(self.settings['cachedir'], filename))
        if cache is not None:
            if save_STFT:
                X, _ = cache
                return save_STFT_to_files(X)
            else:
                return cache

        data = self.read_raw_signal()
        if self.settings['dataset'] == 'Kaggle2014Pred':
            X, y = self.preprocess_Kaggle(data)
        else:
            X, y = self.preprocess(data)
        save_hickle_file(os.path.join(self.settings['cachedir'], filename),
                         [X, y])

        if save_STFT:
            return save_STFT_to_files(X)
        else:
            return X, y