def execute(self, base_path, signal, subjects, window, window_overlap, selector, use_classifiers, with_all_signals, times):
        self.subjects = subjects
        self.window = window
        self.window_overlap = window_overlap
        self.selector = selector
        self.with_all_signals = with_all_signals

        predicts_rf = []
        predicts_clf = []
        predicts_nbrs = []
        predicts_shooter = []
        testings = []

        for sub in subjects:
            print('sujeito = ', sub)
            training_labels, training_features = self.get_data(base_path, signal, sub, 'training')
            testing_labels, testing_features = self.get_data(base_path, signal, sub, 'testing')

            if (np.isscalar(training_features[0])):
                training_features = training_features.reshape(-1,1)
                testing_features = testing_features.reshape(-1,1)

            testings.insert(sub, testing_labels)

            if 'forest' in use_classifiers:
                rf = RandomForestClassifier(n_estimators=100, max_depth=5, oob_score=True)
                rf = rf.fit(training_features, training_labels)
                predictions = rf.predict(testing_features)
                predicts_rf.insert(sub, predictions)
                predicts_rf_subject = predictions

            if 'svm' in use_classifiers:
                clf = svm.SVC(gamma='scale', C=4)
                clf = clf.fit(training_features, training_labels)
                predictions = clf.predict(testing_features)
                predicts_clf.insert(sub, predictions)
                predicts_clf_subject = predictions
        
            if 'knn' in use_classifiers:
                knn = KNeighborsClassifier(n_neighbors=11, weights='distance', algorithm='auto', metric='euclidean')
                knn = knn.fit(training_features, training_labels)
                predictions = knn.predict(testing_features)
                predicts_nbrs.insert(sub, predictions)
                predicts_nbrs_subject = predictions
            
            if 'shooter' in use_classifiers:
                shoot2 = Shooter()
                predictions = shoot2.choose(predicts_rf_subject, predicts_nbrs_subject, predicts_clf_subject)
                predicts_shooter.insert(sub, predictions)

        return predicts_rf, predicts_clf, predicts_nbrs, predicts_shooter, testings
    def one_classifier_and_decision(self, selection, number):
        print('Begining ' + str(number) + ' - todos com decisão ' + selection +
              ' ')
        shoot2 = Shooter()

        ecg_predicts_rf, ecg_predicts_clf, ecg_predicts_nbrs, ecg_predicts_shooter, ecg_testings = self.individual(
            'ecg', selection, 0, True, ['svm'])
        eda_predicts_rf, eda_predicts_clf, eda_predicts_nbrs, eda_predicts_shooter, eda_testings = self.individual(
            'eda', selection, 0, True, ['forest'])
        # emg_predicts_rf, emg_predicts_clf, emg_predicts_nbrs, emg_predicts_shooter, emg_testings = self.individual('emg', selection, 0, True, ['svm'])
        resp_predicts_rf, resp_predicts_clf, resp_predicts_nbrs, resp_predicts_shooter, resp_testings = self.individual(
            'resp', selection, 0, True, ['svm'])

        # decision_predicts = []
        # i = 0
        # j = 0
        # for i in range(self.CLASSIFICATION_TIMES):
        #     decision_predicts.insert(i, [])
        #     for j in range(len(self.BASE_SUBJECTS)):
        #         decisao = shoot2.choose(ecg_predicts_clf[i][j], eda_predicts_rf[i][j], emg_predicts_clf[i][j])
        #         decision_predicts[i].insert(j, decisao)

        # evaluate = Evaluator()
        # evaluate.report(self.BASE_SUBJECTS, self.CLASSIFICATION_TIMES, ecg_testings, ecg_predicts_clf, eda_predicts_rf, emg_predicts_clf, decision_predicts, '/Volumes/My Passport/TCC/Resultados3/TODOS_' + str(number) + '_' + selection + '_1.csv')

        decision_predicts2 = []
        i = 0
        j = 0
        for i in range(self.CLASSIFICATION_TIMES):
            decision_predicts2.insert(i, [])
            for j in range(len(self.BASE_SUBJECTS)):
                decisao = shoot2.choose(ecg_predicts_clf[i][j],
                                        eda_predicts_rf[i][j],
                                        resp_predicts_clf[i][j])
                decision_predicts2[i].insert(j, decisao)

        evaluate = Evaluator()
        evaluate.report(
            self.BASE_SUBJECTS, self.CLASSIFICATION_TIMES, ecg_testings,
            ecg_predicts_clf, eda_predicts_rf, resp_predicts_clf,
            decision_predicts2, '/Volumes/My Passport/TCC/Resultados3/TODOS_' +
            str(number) + '_' + selection + '_2.csv')