def test_IsSystemRunningThroughWithAllFeatures(self):
        system = System(self.testdata)

        # Turn on features
        system.use_dependency_is_root()
        system.use_dependency_order()
        system.use_aspect()
        system.use_tense()
        system.use_same_tense()
        system.use_same_aspect()
        system.use_dependency_type()
        system.use_dct()
        system.use_type()
        system.use_same_polarity()
        system.use_polarity()
        system.use_class()
        system.use_entity_distance()
        system.use_textual_order()
        system.use_duration()
        system.use_duration_difference()
        system.use_same_pos()
        system.use_pos()
        system.use_temporal_signal()

        system.create_features()
        system.train()
        system.eval()
        self.assertTrue(True)
    def _run(self):
        data = Data()
        data.training = self.training

        system = System(data)
        system.use_best_feature_set()
        system.create_features()
        system.train()
        system.eval(quiet=True)

        self.result_event_event = system.evaluation_accuracy_event_event
        self.result_event_timex = system.evaluation_accuracy_event_timex
def measure_time(data):
    start = time.time()

    system = System(data)
    system.use_all_features()
    system.use_feature_selection()

    system.create_features()
    system.train()
    system.save_classifiers()

    system.eval()
    system.create_confidence_scores()
    system.apply_global_model()

    end = time.time()

    return end-start
    def _run_systems(self):
        for k in range(1, self.max_len+1):
            features = list(set(self._feature_series(k, self.features_event_event) + self._feature_series(k, self.features_event_timex)))
            print features

            data = Data()
            data.training = TrainingSet(False, False, "data/training/TBAQ-cleaned/TimeBank/")

            system = System(data, features)
            system.create_features()
            system.cross_validation()

            now = list(set(self._feature_series(k, self.features_event_event)))
            if k > 1:
                prev = list(set(self._feature_series(k-1, self.features_event_event)))

            if k > 1:
                if now != prev:
                    self.accuracies_event_event.append(system.crossval_accuracy_event_event)
                    print system.crossval_accuracy_event_event
            else:
                self.accuracies_event_event.append(system.crossval_accuracy_event_event)
                print system.crossval_accuracy_event_event


            now = list(set(self._feature_series(k, self.features_event_timex)))
            if k > 1:
                prev = list(set(self._feature_series(k-1, self.features_event_timex)))
            if k > 1:
                if now != prev:
                    self.accuracies_event_timex.append(system.crossval_accuracy_event_timex)
                    print system.crossval_accuracy_event_timex
            else:
                self.accuracies_event_timex.append(system.crossval_accuracy_event_timex)
                print system.crossval_accuracy_event_timex

            print
        # Leave out i for testing
        train_X, test_X = leave_out(pieces_X, i)
        train_y, test_y = leave_out(pieces_y, i)

        # Transform back to sparse
        train_X = transform_to_sparse_matrix(train_X)
        test_X = transform_to_sparse_matrix(test_X)

        clf.fit(train_X, train_y)
        predicted = clf.predict(test_X)

        accs.append(accuracy_score(test_y, predicted))

    return np.mean(accs)

data = Data()
data.training = TrainingSet(False, False, "data/training/TBAQ-cleaned/TimeBank/")

system = System(data, ["lemma", "token"])
system.create_features()

X_event_event, y_event_event = system.training_event_event
X_event_timex, y_event_timex = system.training_event_timex

X_event_event = transform_to_list(X_event_event)
X_event_timex = transform_to_list(X_event_timex)

print kfold(X_event_event, y_event_event, 5)
print kfold(X_event_timex, y_event_timex, 5)
class Distance:
    def __init__(self):
        self.data = Data()
        self.system = System(self.data)

        self.system.use_all_features()
        self.system.use_feature_selection()

        self.system.create_features()
        self.system.train()
        self.system.save_predictions_to_relations()

        self.relations = self._get_relations()

        same_sentence, not_same_sentence = self._sort_relations_after_in_same_sentence()

        print "Same sentence event-event:"
        truth, predicted = self._get_truth_and_prediction(same_sentence)
        print Result(truth, predicted)

        print "Same sentence event-timex:"
        truth, predicted = self._get_truth_and_prediction(same_sentence, event_event=False)
        print Result(truth, predicted)

        print "Not same sentence event-event:"
        truth, predicted = self._get_truth_and_prediction(not_same_sentence)
        print Result(truth, predicted)

        print "Not same sentence event-timex:"
        truth, predicted = self._get_truth_and_prediction(not_same_sentence, event_event=False)
        print Result(truth, predicted)

    def _get_truth_and_prediction(self, rels, event_event=True):
        prediction = []
        truth = []

        for rel in rels:
            if event_event and rel.is_event_event():
                prediction.append(rel.predicted_class)
                truth.append(rel.relation_type)
            elif not event_event and rel.is_event_timex():
                prediction.append(rel.predicted_class)
                truth.append(rel.relation_type)

        return truth, prediction

    def _get_relations(self):
        rels = []

        for text_obj in self.data.test.text_objects:
            for relation in text_obj.relations:
                if relation.is_event_event():
                    rels.append(relation)
                elif relation.is_event_timex():
                    rels.append(relation)

        return rels

    def _sort_relations_after_in_same_sentence(self):
        same_sentence = []
        not_same_sentence = []

        for rel in self.relations:
            if rel.source.sentence == rel.target.sentence:
                same_sentence.append(rel)
            else:
                not_same_sentence.append(rel)

        return (same_sentence, not_same_sentence)