Ejemplo n.º 1
0
    def create_accuracies_matrix(classifiers_list, features_list, dataset):

        classifiers_dict = create_dict(classifiers_list)
        features_dict = create_dict(features_list)
        config = Configuration_BCI.Configuration_BCI('BCI_Framework', dataset)

        subjects_dict = create_dict(config.configuration["subject_names_str"])

        opt_error_matrix = np.zeros(shape=(len(classifiers_dict),
                                           len(features_dict),
                                           len(subjects_dict)))
        cv_error_matrix = np.zeros(
            (len(classifiers_dict), len(features_dict), len(subjects_dict)))
        n_csps = -1
        if config.configuration['number_of_channels'] > 5:
            n_csps = 1

        for classifier in classifiers_dict.keys():
            for feature in features_dict.keys():
                bcic = Main.Main('BCI_Framework', dataset, classifier, feature,
                                 'ALL', n_csps, 'python')

                for subject in bcic.config.configuration['subject_names_str']:
                    temp, temp, cv_err = bcic.find_learners_optimal_params(
                        subject)
                    opt_error = bcic.find_opt_error(subject)
                    opt_error_matrix[classifiers_dict[classifier],
                                     features_dict[feature],
                                     subjects_dict[subject]] = opt_error
                    cv_error_matrix[classifiers_dict[classifier],
                                    features_dict[feature],
                                    subjects_dict[subject]] = cv_err

        return cv_error_matrix, opt_error_matrix
    def __init__(self, dir, learner_name, feature_extractor_name,
                 dataset_name):  #, channels, number_of_csps):
        """  """
        self.logging = logging

        #         number_of_csps = int(number_of_csps)
        self.config = Configuration_BCI.Configuration_BCI(
            dir, dataset_name)  #, channels)
        #         self.config.set_numberof_channels(number_of_csps)

        if self.config.configuration['logging_level_str'] == 'INFO':
            self.logging.basicConfig(format='%(asctime)s %(message)s',
                                     level=logging.INFO)
        else:
            self.logging.basicConfig(level=logging.NOTSET)

        self.logging.info('begin creating Simple_Job_Runner')

        self.results_path = self.config.configuration['results_path_str']
        self.results_opt_path = self.config.configuration[
            'results_opt_path_str']

        self.results_path, self.results_opt_path = Single_Job_Runner.set_results_path(
            self.results_path, self.results_opt_path, learner_name,
            feature_extractor_name)
        self.feature_matrix_path = os.path.join(
            self.config.configuration['feature_matrix_dir_name_str'],
            feature_extractor_name)

        self.my_Learner_Manager = Learner_Manager.Learner_Manager(
            self.config, learner_name, feature_extractor_name)

        self.logging.info(
            'Simple_Job_Runner instance created, learning algorithm is: %s resutls_path is: %s results_opt_path is: %s',
            learner_name, self.results_path, self.results_opt_path)
Ejemplo n.º 3
0
    def __init__(self,
                 dir,
                 dataset_name,
                 learner_name,
                 feature_extractor_name,
                 optimization_type,
                 BO_selection_type,
                 channels='ALL',
                 number_of_CSPs=-1):
        """"""
        self.dir = dir
        self.dataset_name = dataset_name
        self.config = Configuration_BCI.Configuration_BCI(
            dir, self.dataset_name)
        self.config.set_channel_type(channels, number_of_CSPs)
        self.logging = logging

        if self.config.configuration['logging_level_str'] == 'INFO':
            self.logging.basicConfig(format='%(asctime)s %(message)s',
                                     level=logging.INFO)
        else:
            self.logging.basicConfig(level=logging.CRITICAL)

        self.learner_name = learner_name
        self.feature_extractor_name = feature_extractor_name
        self.channels = channels
        self.number_of_CSPs = number_of_CSPs
        self.myPython_path = 'python'

        self.optimization_type = optimization_type
        self.BO_selection_type = BO_selection_type

        self.results_path = self.config.configuration['results_path_str']
        self.opt_results_path = self.config.configuration[
            'results_opt_path_str']

        self.bash_script = [
            "#!/bin/bash\n", "#PBS -S /bin/bash\n",
            "#PBS -M [email protected]\n", "#PBS -m bea\n",
            "#PBS -l mem=4gb\n", "module load application/python/2.7.3\n",
            "module load python/2.7.5.anaconda\n",
            "module load python/2.7.3\n", 'cd $PBS_O_WORKDIR',
            '\n echo "Current working directory is `pwd`"\n',
            'echo "Starting: run at: `date`"\n',
            self.myPython_path + " ./BCI_Framework/Single_Job_runner.py",
            'echo "Program finished with exit code $? at: `date`"\n'
        ]

        self.python_run_cmd_ind = 11
        self.set_results_path()

        self.logging.info(
            'dataset: %s learning algorithm: %s feature extraction method: %s channels: %s Number of CSPs: %s python path: %s'
            + ' results path: %s optimal results path: %s', self.dataset_name,
            self.learner_name, self.feature_extractor_name, self.channels,
            self.number_of_CSPs, self.myPython_path, self.results_path,
            self.opt_results_path)
Ejemplo n.º 4
0
def generate_all_candidates(dataset_name, optimization_type):

    ##########################################################################################################################################################
    # the following code block generates potential candidates for Bayesian Optimizer

    # different BO types
    # type 1 -> only search for time window
    # type 2 -> search for time and frequency window
    # type 3 -> search for time window  and channels
    # type 4 -> search for time window and search for frequency window and channels
    # type 3-1 -> search for time window and search for frequency window for each channel separately
    # type 5 -> search for time window and search for frequency window for each channel separately
    BO_type = optimization_type
    config = Configuration_BCI.Configuration_BCI('BCI_Framework', dataset_name)

    sampling_rate = config.configuration['sampling_rate']
    all_subjects_candidates_list = []

    for subj_ind, subj in enumerate(config.configuration['subject_names_str']):

        mv_size = config.configuration['movement_trial_size_list'][subj_ind]
        all_mvs_have_same_lebngth = all(
            map(lambda x: x == mv_size,
                config.configuration['movement_trial_size_list']))
        n_channels = config.configuration['number_of_channels']

        candidates_list = []

        if BO_type == 1:

            window_start_list = map(
                int, np.arange(0, mv_size - sampling_rate,
                               sampling_rate / 4.0))
            window_length_list = map(
                int,
                np.arange(0.75 * sampling_rate, mv_size + 1,
                          sampling_rate / 4.0))
            window_list = generate_window_list_time(window_start_list,
                                                    window_length_list,
                                                    mv_size)
            candidates_list = window_list

#             all_initial_cands = read_initial_candidates('BCI_Framework/BO_type1_initial_candidates.txt', config)

        elif BO_type == 2:

            window_start_list = map(
                int, np.arange(0, mv_size - sampling_rate,
                               sampling_rate / 4.0))
            window_length_list = map(
                int,
                np.arange(0.75 * sampling_rate, mv_size + 1,
                          sampling_rate / 4.0))
            window_list_mv = generate_window_list_time(window_start_list,
                                                       window_length_list,
                                                       mv_size)
            candidates_list.append(window_list_mv)

            #             window_start_list_freq = np.arange(2, 6, 0.5)
            #             window_length_list_freq = np.arange(26, 30, 0.75)
            #             window_list_freq = generate_window_list_freq(window_start_list_freq, window_length_list_freq, 32)
            #             window_list_freq = zip(window_list_freq, window_list_freq)
            #             window_list_freq = revise_candidates(window_list_freq, 0)
            window_list_freq = []
            alpha_beta_candidates = []

            window_start_list_freq = np.arange(7, 9.5, 0.5)
            window_length_list_freq = np.arange(4, 6, 0.75)
            window_list_freq_alpha = generate_window_list_freq(
                window_start_list_freq, window_length_list_freq, 14)
            alpha_beta_candidates.append(window_list_freq_alpha)

            window_start_list_freq = np.arange(15, 19, 0.5)
            window_length_list_freq = np.arange(5, 10, 0.75)
            window_list_freq_beta = generate_window_list_freq(
                window_start_list_freq, window_length_list_freq, 26)
            alpha_beta_candidates.append(window_list_freq_beta)

            raw_candidates_alpha_beta = list(
                itertools.product(*alpha_beta_candidates))
            candidates_list_alpha_beta = revise_candidates(
                raw_candidates_alpha_beta, BO_type)

            window_list_freq = window_list_freq + candidates_list_alpha_beta

            candidates_list.append(window_list_freq)

#             candidates_list.append(candidates_list_alpha_beta)
#             all_initial_cands = read_initial_candidates('BCI_Framework/BO_type2_initial_candidates.txt', config)

        elif BO_type == 3:

            window_start_list = map(
                int, np.arange(0, mv_size - sampling_rate,
                               sampling_rate / 4.0))
            window_length_list = map(
                int,
                np.arange(0.75 * sampling_rate, mv_size + 1,
                          sampling_rate / 4.0))
            window_list_mv = generate_window_list_time(window_start_list,
                                                       window_length_list,
                                                       mv_size)
            candidates_list.append(window_list_mv)

            #             channels_list = [['ALL'], ['CSP2'], ['CSP4'], ['CSP6'], ['CS']]
            channels_list = [
                [0], [1], [2], [3], [4]
            ]  #???????????????????????????????????????????????????????????????????????????????????????????
            candidates_list.append(channels_list)
#             all_initial_cands = read_initial_candidates('BCI_Framework/BO_type3_initial_candidates.txt', config)

        elif BO_type == 4:

            window_start_list = map(
                int, np.arange(0, mv_size - sampling_rate,
                               sampling_rate / 4.0))
            window_length_list = map(
                int,
                np.arange(0.75 * sampling_rate, mv_size + 1,
                          sampling_rate / 4.0))
            window_list_mv = generate_window_list_time(window_start_list,
                                                       window_length_list,
                                                       mv_size)
            candidates_list.append(window_list_mv)

            window_start_list_freq = np.arange(2, 6, 0.5)
            window_length_list_freq = np.arange(26, 30, 0.75)
            window_list_freq = generate_window_list_freq(
                window_start_list_freq, window_length_list_freq, 32)
            window_list_freq = zip(window_list_freq, window_list_freq)
            window_list_freq = revise_candidates(window_list_freq, 0)

            alpha_beta_candidates = []

            window_start_list_freq = np.arange(7, 9.5, 0.5)
            window_length_list_freq = np.arange(4, 6, 0.75)
            window_list_freq_alpha = generate_window_list_freq(
                window_start_list_freq, window_length_list_freq, 14)
            alpha_beta_candidates.append(window_list_freq_alpha)

            window_start_list_freq = np.arange(15, 19, 0.5)
            window_length_list_freq = np.arange(5, 10, 0.75)
            window_list_freq_beta = generate_window_list_freq(
                window_start_list_freq, window_length_list_freq, 26)
            alpha_beta_candidates.append(window_list_freq_beta)

            raw_candidates_alpha_beta = list(
                itertools.product(*alpha_beta_candidates))
            candidates_list_alpha_beta = revise_candidates(
                raw_candidates_alpha_beta, BO_type)

            window_list_freq = window_list_freq + candidates_list_alpha_beta

            candidates_list.append(window_list_freq)

            channels_list = [
                [0], [1], [2], [3], [4]
            ]  #???????????????????????????????????????????????????????????????????????????????????????????
            candidates_list.append(channels_list)

#             all_initial_cands = read_initial_candidates('BCI_Framework/BO_type4_initial_candidates.txt', config)

#         elif BO_type == 5:
#
#             window_start_list = map(int, np.arange(0, mv_size - sampling_rate, sampling_rate/4.0))
#             window_length_list = map(int, np.arange(0.75 * sampling_rate, mv_size+1, sampling_rate/4.0))
#             window_list_mv = generate_window_list_time(window_start_list, window_length_list, mv_size)
#             candidates_list.append(window_list_mv)
#
#             indices_list = generate_channel_indices(n_channels)
#             candidates_list.append(indices_list)
#             all_initial_cands = read_initial_candidates('BCI_Framework/BO_type4_initial_candidates.txt', config)

        if BO_type != 1:
            raw_candidates = list(itertools.product(*candidates_list))
            candidates_list = revise_candidates(raw_candidates, BO_type)


#         candidates_list = all_initial_cands + candidates_list ################################################
#         Job_Params.n_initial_candidates = len(all_initial_cands) ############################################

        all_subjects_candidates_list.append(candidates_list)
        if all_mvs_have_same_lebngth:
            break

    ##########################################################################################################################################################
    return all_subjects_candidates_list, 0
Ejemplo n.º 5
0
                    print dataset, feature, bo_type, optimization_type

                    class Job_Params:
                        job_dir = '../Candidates'
                        num_all_jobs = 40
                        dataset = dataset

                        from random import randrange
                        seed = randrange(50)
                        classifier_name = classifier
                        feature_extraction = feature
                        n_concurrent_jobs = 1
                        chooser_module = bo_type

                    Job_Params.n_initial_candidates = 0
                    config = Configuration_BCI.Configuration_BCI(
                        'BCI_Framework', dataset)
                    complete_jobs = np.zeros(
                        config.configuration['number_of_subjects'])

                    all_mvs_have_same_lebngth = all(
                        map(
                            lambda x: x == config.configuration[
                                'movement_trial_size_list'][0],
                            config.configuration['movement_trial_size_list']))

                    for subj_ind, subj in enumerate(
                            config.configuration['subject_names_str']):

                        if all_mvs_have_same_lebngth:
                            all_subjects_candidates_list = all_subjects_candidates_dict[
                                (dataset_ind, optimization_type)][0]
import sys
sys.path.append('./BCI_Framework')
import Configuration_BCI
import os

if __name__ == '__main__':

    classifiers_dict = {
        'Boosting': 0,
        'LogisticRegression': 1,
        'RANDOM_FOREST': 2,
        'SVM': 3,
        'LDA': 4,
        'QDA': 5,
        'MLP': 6
    }
    features_dict = {'BP': 0, 'logbp': 1, 'morlet': 2, 'AR': 3}

    config = Configuration_BCI.Configuration_BCI("BCI_Framework", 'SM2', 'CSP')

    for classifier in classifiers_dict.keys():
        for feature in features_dict.keys():

            print classifier + '-' + feature + '-' + str(
                len(
                    os.listdir(config.configuration['results_path_str'] + '/' +
                               classifier + '/' + feature)))
Ejemplo n.º 7
0
os.chdir('../bci_framework')
sys.path.append('./BCI_Framework')

import Main
import Configuration_BCI
import numpy as np

import spearmint_lite


class Job_Params:
    job_dir = 'BCI_Framework'
    num_all_jobs = 100
    dataset = 'BCICIV2b'
    seed = 1
    classifier_name = 'LogisticRegression'
    feature_extraction = 'BP'
    n_concurrent_jobs = 3
    chooser_module = "GPEIOptChooser"
    n_initial_candidates = 12


if __name__ == '__main__':

    BO_type = 2
    config = Configuration_BCI.Configuration_BCI('BCI_Framework', 'BCICIV2b')

    sp = spearmint_lite.spearmint_lite(Job_Params, [], config, BO_type)
    params = [687.0, 1.0, 1.5, 3.5]
    subj = '100'
    sp.run_job(params, subj)
Ejemplo n.º 8
0
    pass
    sig_mat_pow = np.exp2(sig_mat)
    pow_sig_mat = np.zeros(shape=(sig_mat_pow.shape[0] - window_size,
                                  sig_mat_pow.shape[1]))
    for i in range(len(sig_mat_pow) - window_size):
        pow_sig_mat[i, :] = np.sum(sig_mat_pow[i:i + window_size, :], axis=0)

    return pow_sig_mat


if __name__ == '__main__':

    channels = 'C34'
    number_of_CSPs = -1
    params_list = [0, 0, 0, 0, -1, 0]
    config = Configuration_BCI.Configuration_BCI('./BCI_Framework', 'BCICIV2a',
                                                 channels)
    for subject_ind, subject in enumerate(
            config.configuration['subject_names_str']):

        dp = Data_Proc.Data_Preprocessor(config, channels, subject, 'raw',
                                         number_of_CSPs)

        raw_X, raw_Y = dp.load_dataset_train(subject)
        filters = ['delta', 'alpha', 'beta']
        cutoff_frequencies_low = np.array([[4, 8., 16.], [4, 8., 16.]])
        cutoff_frequencies_high = np.array([[8, 12., 24.], [8, 12., 24.]])
        for filt_number in range(cutoff_frequencies_low.shape[1]):

            cutoff_freq_low = cutoff_frequencies_low[:, filt_number]
            cutoff_freq_high = cutoff_frequencies_high[:, filt_number]
Ejemplo n.º 9
0
os.chdir('../bci_framework')
sys.path.append('./BCI_Framework')

import Configuration_BCI
import Main
import Single_Job_runner as SJR
import numpy as np

if __name__ == '__main__':

    feature_list = ['BP', 'AR', 'logbp', 'morlet', 'wackerman']
    dataset_name = 'BCICIII3b'
    myPython_path = 'python'
    dir = 'BCI_Framework'
    config = Configuration_BCI.Configuration_BCI(dir, dataset_name)

    list_of_classifiers = config.configuration['durations_dict'].keys()
    for subject in config.configuration['subject_names_str']:

        for feature in feature_list:
            minimum = np.inf

            for classifier_name in list_of_classifiers:

                bcic = Main.Main(dir, dataset_name, classifier_name, feature,
                                 'ALL', -1, myPython_path)
                res_dir = os.path.join(
                    config.configuration['results_path_str'],
                    classifier_name + '/' + feature)
                #                 if os.path.exists(res_dir):