diff --git a/multiview_platform/mono_multi_view_classifiers/monoview_classifiers/random_forest.py b/multiview_platform/mono_multi_view_classifiers/monoview_classifiers/random_forest.py index 54eb985b1c1f548f6ced4458e96399a62502eaed..8b2caef15dd827e0c30ec3984512d72f6a154c65 100644 --- a/multiview_platform/mono_multi_view_classifiers/monoview_classifiers/random_forest.py +++ b/multiview_platform/mono_multi_view_classifiers/monoview_classifiers/random_forest.py @@ -10,9 +10,43 @@ __status__ = "Prototype" # Production, Development, Prototype classifier_class_name = "RandomForest" class RandomForest(RandomForestClassifier, BaseMonoviewClassifier): + """RandomForest Classifier Class + Parameters + ---------- + random_state + + n_estimators + + max_depth : int maximum of depth (default : 10) + + criterion : criteria (default : 'gini') + + kwargs + + Attributes + ---------- + param_names + + distribs + + classed_params + + weird_strings + + """ def __init__(self, random_state=None, n_estimators=10, max_depth=None, criterion='gini', **kwargs): + """ + + Parameters + ---------- + random_state + n_estimators + max_depth + criterion + kwargs + """ super(RandomForest, self).__init__( n_estimators=n_estimators, max_depth=max_depth, @@ -28,13 +62,29 @@ class RandomForest(RandomForestClassifier, BaseMonoviewClassifier): self.weird_strings = {} def canProbas(self): - """Used to know if the classifier can return label probabilities""" + """Used to know if the classifier can return label probabilities + + Returns + ------- + True + """ return True def getInterpret(self, directory, y_test): - interpretString = "" - interpretString += self.getFeatureImportance(directory) - return interpretString + """ + + Parameters + ---------- + directory + y_test + + Returns + ------- + string for interpretation interpret_string + """ + interpret_string = "" + interpret_string += self.getFeatureImportance(directory) + return interpret_string # def formatCmdArgs(args): diff --git a/multiview_platform/mono_multi_view_classifiers/monoview_classifiers/scm.py b/multiview_platform/mono_multi_view_classifiers/monoview_classifiers/scm.py index 4988a2a7e15a421e74043ab6d465a6156488e930..8cae0d38380bd850efc454dd13d4dc04b470a2df 100644 --- a/multiview_platform/mono_multi_view_classifiers/monoview_classifiers/scm.py +++ b/multiview_platform/mono_multi_view_classifiers/monoview_classifiers/scm.py @@ -44,9 +44,41 @@ __status__ = "Prototype" # Production, Development, Prototype classifier_class_name = "SCM" class SCM(scm, BaseMonoviewClassifier): + """ + SCM Classifier + Parameters + ---------- + random_state (default : None) + model_type : string (default: "conjunction") + max_rules : int number maximum of rules (default : 10) + p : float value(default : 0.1 ) + + kwarg : others arguments + + Attributes + ---------- + param_names + + distribs + + classed_params + + weird_strings + + """ def __init__(self, random_state=None, model_type="conjunction", max_rules=10, p=0.1, **kwargs): + """ + + Parameters + ---------- + random_state + model_type + max_rules + p + kwargs + """ super(SCM, self).__init__( random_state=random_state, model_type=model_type, @@ -61,7 +93,13 @@ class SCM(scm, BaseMonoviewClassifier): self.weird_strings = {} def canProbas(self): - """Used to know if the classifier can return label probabilities""" + """ + Used to know if the classifier can return label probabilities + + Returns + ------- + return False in any case + """ return False def getInterpret(self, directory, y_test): diff --git a/multiview_platform/mono_multi_view_classifiers/monoview_classifiers/scm_pregen.py b/multiview_platform/mono_multi_view_classifiers/monoview_classifiers/scm_pregen.py index ced608365e87a9f0e80daf5f2a6db941b5062808..57026c02e2ba84d4a16deac4a6f8554e02f636fc 100644 --- a/multiview_platform/mono_multi_view_classifiers/monoview_classifiers/scm_pregen.py +++ b/multiview_platform/mono_multi_view_classifiers/monoview_classifiers/scm_pregen.py @@ -14,7 +14,32 @@ __status__ = "Prototype" # Production, Development, Prototype classifier_class_name = "SCMPregen" class SCMPregen(BaseMonoviewClassifier, PregenClassifier, scm): + """ + Parameters + ---------- + random_state + model_type + max_rules + p + n_stumps + self_complemented + estimators_generator + max_depth + kwargs + + Attributes + ---------- + param_names + + distribs + classed_params + weird_strings + self_complemented + n_stumps + estimators_generator + max_depth + """ def __init__(self, random_state=None, model_type="conjunction", max_rules=10, p=0.1, n_stumps=10, self_complemented=True, estimators_generator="Stumps", max_depth=1, **kwargs): @@ -39,13 +64,46 @@ class SCMPregen(BaseMonoviewClassifier, PregenClassifier, scm): self.max_depth=1 def get_params(self, deep=True): + """ + + Parameters + ---------- + deep : boolean (default : True) not used + + Returns + ------- + parame + """ params = super(SCMPregen, self).get_params(deep) params["estimators_generator"] = self.estimators_generator params["max_depth"] = self.max_depth params["n_stumps"] = self.n_stumps return params - def fit(self, X, y, tiebreaker=None, iteration_callback=None, **fit_params): + def fit(self, X, y, tiebreaker=None, iteration_callback=None, + **fit_params): + """ + fit function + + Parameters + ---------- + X {array-like, sparse matrix}, shape (n_samples, n_features) + For kernel="precomputed", the expected shape of X is + (n_samples_test, n_samples_train). + y : { array-like, shape (n_samples,) + Target values class labels in classification + + tiebreaker + + iteration_callback : (default : None) + + fit_params : others parameters + + Returns + ------- + self : object + Returns self. + """ pregen_X, _ = self.pregen_voters(X, y) list_files = os.listdir(".") a = int(self.random_state.randint(0, 10000)) @@ -66,6 +124,20 @@ class SCMPregen(BaseMonoviewClassifier, PregenClassifier, scm): return self def predict(self, X): + """ + + Parameters + ---------- + X : {array-like, sparse matrix}, shape (n_samples, n_features) + Training vectors, where n_samples is the number of samples + and n_features is the number of features. + For kernel="precomputed", the expected shape of X is + (n_samples, n_samples). + + Returns + ------- + y_pred : array, shape (n_samples,) + """ pregen_X, _ = self.pregen_voters(X) list_files = os.listdir(".") a = int(self.random_state.randint(0, 10000)) @@ -83,12 +155,29 @@ class SCMPregen(BaseMonoviewClassifier, PregenClassifier, scm): return self.classes_[self.model_.predict(place_holder)] def canProbas(self): - """Used to know if the classifier can return label probabilities""" + """ + Used to know if the classifier can return label probabilities + Returns + ------- + False in any case + """ + return False def getInterpret(self, directory, y_test): - interpretString = "Model used : " + str(self.model_) - return interpretString + """ + + Parameters + ---------- + directory + y_test + + Returns + ------- + interpret_string string of interpretation + """ + interpret_string = "Model used : " + str(self.model_) + return interpret_string # def formatCmdArgs(args): diff --git a/multiview_platform/mono_multi_view_classifiers/monoview_classifiers/sgd.py b/multiview_platform/mono_multi_view_classifiers/monoview_classifiers/sgd.py index 22bbad8dcb3c3c8df9248597a0f7716725dca43b..f8a10d6fa5df4f5b39d4c7681fb9bc72303be47a 100644 --- a/multiview_platform/mono_multi_view_classifiers/monoview_classifiers/sgd.py +++ b/multiview_platform/mono_multi_view_classifiers/monoview_classifiers/sgd.py @@ -9,9 +9,19 @@ __status__ = "Prototype" # Production, Development, Prototype classifier_class_name = "SGD" class SGD(SGDClassifier, BaseMonoviewClassifier): + """ + Parameters + ---------- + random_state + loss + penalty + alpha + kwargs + """ def __init__(self, random_state=None, loss='hinge', penalty='l2', alpha=0.0001, **kwargs): + super(SGD, self).__init__( loss=loss, penalty=penalty, @@ -26,12 +36,31 @@ class SGD(SGDClassifier, BaseMonoviewClassifier): self.weird_strings = {} def canProbas(self): - """Used to know if the classifier can return label probabilities""" + """ + Used to know if the classifier can return label probabilities + + Returns + ------- + return True in all case + """ + return True def getInterpret(self, directory, y_test): - interpretString = "" - return interpretString + """ + + Parameters + ---------- + directory + + y_test + + Returns + ------- + interpret_string str to interpreted + """ + interpret_string = "" + return interpret_string # def formatCmdArgs(args): diff --git a/multiview_platform/mono_multi_view_classifiers/monoview_classifiers/svm_linear.py b/multiview_platform/mono_multi_view_classifiers/monoview_classifiers/svm_linear.py index 87f4c4ed4511f41e160223178f023780fa87f6e9..e26e5796256450cff500f416469900c1d08c1d46 100644 --- a/multiview_platform/mono_multi_view_classifiers/monoview_classifiers/svm_linear.py +++ b/multiview_platform/mono_multi_view_classifiers/monoview_classifiers/svm_linear.py @@ -9,8 +9,17 @@ __status__ = "Prototype" # Production, Development, Prototype classifier_class_name = "SVMLinear" class SVMLinear(SVCClassifier, BaseMonoviewClassifier): + """SVMLinear + Parameters + ---------- + random_state + C + kwargs + + """ def __init__(self, random_state=None, C=1.0, **kwargs): + super(SVMLinear, self).__init__( C=C, kernel='linear', diff --git a/multiview_platform/mono_multi_view_classifiers/monoview_classifiers/svm_poly.py b/multiview_platform/mono_multi_view_classifiers/monoview_classifiers/svm_poly.py index 386868656e84286bb1979539f1c93e197a4f011a..3d389802abb7fe0ba56a384c3e27074aef8db4c2 100644 --- a/multiview_platform/mono_multi_view_classifiers/monoview_classifiers/svm_poly.py +++ b/multiview_platform/mono_multi_view_classifiers/monoview_classifiers/svm_poly.py @@ -9,8 +9,28 @@ __status__ = "Prototype" # Production, Development, Prototype classifier_class_name = "SVMPoly" class SVMPoly(SVCClassifier, BaseMonoviewClassifier): + """ + Class of SVMPoly for SVC Classifier + Parameters + ---------- + random_state + + C + + degree + + kwargs + + Attributes + ---------- + + param_names : list of parameters names + + distribs : list of random_state distribution + """ def __init__(self, random_state=None, C=1.0, degree=3, **kwargs): + super(SVMPoly, self).__init__( C=C, kernel='poly', diff --git a/multiview_platform/mono_multi_view_classifiers/monoview_classifiers/svm_rbf.py b/multiview_platform/mono_multi_view_classifiers/monoview_classifiers/svm_rbf.py index f2ac82543e90b47a2e9126116ef98846ef765740..16727901006e0e451b18c82c8f7008f56916701b 100644 --- a/multiview_platform/mono_multi_view_classifiers/monoview_classifiers/svm_rbf.py +++ b/multiview_platform/mono_multi_view_classifiers/monoview_classifiers/svm_rbf.py @@ -9,8 +9,24 @@ __status__ = "Prototype" # Production, Development, Prototype classifier_class_name = "SVMRBF" class SVMRBF(SVCClassifier, BaseMonoviewClassifier): + """ + class SVMRBF for classifier SVCC + Parameters + ---------- + random_state + C + kwargs + + Attributes + ---------- + + param_names : list of parameters names + + distribs : list of random_state distribution + """ def __init__(self, random_state=None, C=1.0, **kwargs): + super(SVMRBF, self).__init__( C=C, kernel='rbf', @@ -27,6 +43,18 @@ class SVMRBF(SVCClassifier, BaseMonoviewClassifier): def paramsToSet(nIter, randomState): + """ + + Parameters + ---------- + nIter : int number of iterations + + randomState : + + Returns + ------- + paramsSet list of parameters dictionary with key "C" + """ paramsSet = [] for _ in range(nIter): paramsSet.append({"C": randomState.randint(1, 10000), }) diff --git a/multiview_platform/mono_multi_view_classifiers/multiview/analyze_results.py b/multiview_platform/mono_multi_view_classifiers/multiview/analyze_results.py index 2c4a90e159d9fd7b1df1500b4e429e236b430524..90637f5d70b256275e0cad083701c3f748b2a422 100644 --- a/multiview_platform/mono_multi_view_classifiers/multiview/analyze_results.py +++ b/multiview_platform/mono_multi_view_classifiers/multiview/analyze_results.py @@ -6,26 +6,60 @@ __status__ = "Prototype" # Production, Development, Prototype def printMetricScore(metricScores, metric_list): - metricScoreString = "\n\n" + """ + this function print the metrics scores + + Parameters + ---------- + metricScores : the score of metrics + + metric_list : list of metrics + + Returns + ------- + metric_score_string string constaining all metric results + """ + metric_score_string = "\n\n" for metric in metric_list: - metricModule = getattr(metrics, metric[0]) + metric_module = getattr(metrics, metric[0]) if metric[1] is not None: - metricKWARGS = dict((index, metricConfig) for index, metricConfig in + metric_kwargs = dict((index, metricConfig) for index, metricConfig in enumerate(metric[1])) else: - metricKWARGS = {} - metricScoreString += "\tFor " + metricModule.getConfig( - **metricKWARGS) + " : " - metricScoreString += "\n\t\t- Score on train : " + str( + metric_kwargs = {} + metric_score_string += "\tFor " + metric_module.getConfig( + **metric_kwargs) + " : " + metric_score_string += "\n\t\t- Score on train : " + str( metricScores[metric[0]][0]) - metricScoreString += "\n\t\t- Score on test : " + str( + metric_score_string += "\n\t\t- Score on test : " + str( metricScores[metric[0]][1]) - metricScoreString += "\n\n" - return metricScoreString + metric_score_string += "\n\n" + return metric_score_string def getTotalMetricScores(metric, trainLabels, testLabels, validationIndices, learningIndices, labels): + """ + + Parameters + ---------- + + metric : + + trainLabels : labels of train + + testLabels : labels of test + + validationIndices : + + learningIndices : + + labels : + + Returns + ------- + list of [trainScore, testScore] + """ metricModule = getattr(metrics, metric[0]) if metric[1] is not None: metricKWARGS = dict((index, metricConfig) for index, metricConfig in @@ -63,6 +97,52 @@ def execute(classifier, trainLabels, name, KFolds, hyper_param_search, nIter, metric_list, views_indices, random_state, labels, classifierModule): + """ + + Parameters + ---------- + classifier : classifier used + + trainLabels : labels of train + + testLabels : labels of test + + DATASET : + + classificationKWARGS + + classificationIndices + + labels_dictionary + + views + + nbCores + + times + + name + + KFolds + + hyper_param_search + + nIter + + metric_list + + views_indices + + random_state + + labels + + classifierModule + + Returns + ------- + retuern tuple of (stringAnalysis, imagesAnalysis, metricsScore) + """ classifier_name = classifier.short_name learningIndices, validationIndices, testIndicesMulticlass = classificationIndices diff --git a/multiview_platform/mono_multi_view_classifiers/multiview/exec_multiview.py b/multiview_platform/mono_multi_view_classifiers/multiview/exec_multiview.py index bf68fa9b1680a91779c5884d361ba888d6f1c941..7cca55ea9613cc0b33d16a6524c17789d9f31673 100644 --- a/multiview_platform/mono_multi_view_classifiers/multiview/exec_multiview.py +++ b/multiview_platform/mono_multi_view_classifiers/multiview/exec_multiview.py @@ -18,9 +18,33 @@ __author__ = "Baptiste Bauvin" __status__ = "Prototype" # Production, Development, Prototype -def init_constants(kwargs, classification_indices, metrics, name, nb_cores, k_folds, +def init_constants(kwargs, classification_indices, metrics, + name, nb_cores, k_folds, dataset_var): - """Used to init the constants""" + """ + Used to init the constants + Parameters + ---------- + kwargs : + + classification_indices : + + metrics : + + name : + + nb_cores : nint number of cares to execute + + k_folds : + + dataset_var : {array-like} shape (n_samples, n_features) + dataset variable + + Returns + ------- + tuple of (classifier_name, t_start, views_indices, + classifier_config, views, learning_rate) + """ views = kwargs["view_names"] views_indices = kwargs["view_indices"] if not metrics: @@ -39,12 +63,40 @@ def init_constants(kwargs, classification_indices, metrics, name, nb_cores, k_fo for view_index, view_name in zip(views_indices, views): logging.info("Info:\t Shape of " + str(view_name) + " :" + str( dataset_var.get_shape())) - return classifier_name, t_start, views_indices, classifier_config, views, learning_rate + return classifier_name, t_start, views_indices,\ + classifier_config, views, learning_rate def save_results(classifier, labels_dictionary, string_analysis, views, classifier_module, classification_kargs, directory, learning_rate, name, images_analysis): + """ + Save results in derectory + + Parameters + ---------- + + classifier : classifier class + + labels_dictionary : dict dictionary of labels + + string_analysis : str + + views : + + classifier_module : module of the classifier + + classification_kargs : + + directory : str directory + + learning_rate : + + name : + + images_analysis : + + """ labels_set = set(labels_dictionary.values()) logging.info(string_analysis) views_string = "-".join(views) @@ -83,6 +135,52 @@ def exec_multiview_multicore(directory, core_index, name, learning_rate, nb_fold random_state, labels, hyper_param_search=False, nb_cores=1, metrics=None, n_iter=30, **arguments): + """ + execute multiview process on + + Parameters + ---------- + + directory : indicate the directory + + core_index : + + name : name of the data file to perform + + learning_rate : + + nb_folds : + + database_type : + + path : path to the data name + + labels_dictionary + + random_state : int seed, RandomState instance, or None (default=None) + The seed of the pseudo random number generator to use when + shuffling the data. + + labels : + + hyper_param_search : + + nb_cores : in number of cores + + metrics : metric to use + + n_iter : int number of iterations + + arguments : others arguments + + Returns + ------- + exec_multiview on directory, dataset_var, name, learning_rate, nb_folds, 1, + database_type, path, labels_dictionary, + random_state, labels, + hyper_param_search=hyper_param_search, metrics=metrics, + n_iter=n_iter, **arguments + """ """Used to load an HDF5 dataset_var for each parallel job and execute multiview classification""" dataset_var = h5py.File(path + name + str(core_index) + ".hdf5", "r") return exec_multiview(directory, dataset_var, name, learning_rate, nb_folds, 1, @@ -96,7 +194,50 @@ def exec_multiview(directory, dataset_var, name, classification_indices, k_folds nb_cores, database_type, path, labels_dictionary, random_state, labels, hyper_param_search=False, metrics=None, n_iter=30, **kwargs): - """Used to execute multiview classification and result analysis""" + """Used to execute multiview classification and result analysis + + Parameters + ---------- + + directory : indicate the directory + + + dataset_var : + + name + + classification_indices + + k_folds + + nb_cores + + database_type + + path + + labels_dictionary : dict dictionary of labels + + random_state : int seed, RandomState instance, or None (default=None) + The seed of the pseudo random number generator to use when + shuffling the data. + + labels + + hyper_param_search + + metrics + + n_iter : int number of iterations + + kwargs + + Returns + ------- + + ``MultiviewResult`` + """ + logging.debug("Start:\t Initialize constants") cl_type, \ t_start, \ diff --git a/multiview_platform/mono_multi_view_classifiers/multiview/multiview_utils.py b/multiview_platform/mono_multi_view_classifiers/multiview/multiview_utils.py index 02956fa810e828b35f7e66f04d3b2ad748abd269..5a2deaa365bbab9cd1bf7796f6a550f7e837ea3f 100644 --- a/multiview_platform/mono_multi_view_classifiers/multiview/multiview_utils.py +++ b/multiview_platform/mono_multi_view_classifiers/multiview/multiview_utils.py @@ -28,13 +28,34 @@ def get_names(classed_list): class BaseMultiviewClassifier(BaseEstimator, ClassifierMixin): + """ + BaseMultiviewClassifier base of Multiview classifiers + + Parameters + ---------- + random_state : int seed, RandomState instance, or None (default=None) + The seed of the pseudo random number generator to use when + shuffling the data. + """ def __init__(self, random_state): + self.random_state = random_state self.short_name = self.__class__.__name__ self.weird_strings = {} - def genBestParams(self, detector): + def gen_best_params(self, detector): + """ + return best parameters of detector + Parameters + ---------- + detector : + + Returns + ------- + best param : dictionary with param name as key and best parameters + value + """ return dict((param_name, detector.best_params_[param_name]) for param_name in self.param_names) diff --git a/multiview_platform/mono_multi_view_classifiers/multiview_classifiers/weighted_linear_early_fusion.py b/multiview_platform/mono_multi_view_classifiers/multiview_classifiers/weighted_linear_early_fusion.py index 16d6bc241aebcca93ac2a02f3e7d77df6cdc22b3..e63ebbb63b35e5d69baa113f68889ee9ca389ce4 100644 --- a/multiview_platform/mono_multi_view_classifiers/multiview_classifiers/weighted_linear_early_fusion.py +++ b/multiview_platform/mono_multi_view_classifiers/multiview_classifiers/weighted_linear_early_fusion.py @@ -2,19 +2,36 @@ import numpy as np import inspect # from ..utils.dataset import get_v -from ..multiview.multiview_utils import BaseMultiviewClassifier, get_examples_views_indices, ConfigGenerator, get_available_monoview_classifiers -from .additions.fusion_utils import BaseFusionClassifier -from .. import monoview_classifiers +from multiview_platform.mono_multi_view_classifiers.multiview.multiview_utils import BaseMultiviewClassifier +from multiview_platform.mono_multi_view_classifiers.multiview.multiview_utils import get_examples_views_indices +from multiview_platform.mono_multi_view_classifiers.multiview.multiview_utils import ConfigGenerator +from multiview_platform.mono_multi_view_classifiers.multiview.multiview_utils import get_available_monoview_classifiers +from multiview_platform.mono_multi_view_classifiers.multiview_classifiers.additions.fusion_utils import BaseFusionClassifier + +from multiview_platform.mono_multi_view_classifiers import monoview_classifiers classifier_class_name = "WeightedLinearEarlyFusion" class WeightedLinearEarlyFusion(BaseMultiviewClassifier, BaseFusionClassifier): - + """ + WeightedLinearEarlyFusion + + Parameters + ---------- + random_state + view_weights + monoview_classifier_name + monoview_classifier_config + + Attributes + ---------- + """ def __init__(self, random_state=None, view_weights=None, monoview_classifier_name="decision_tree", monoview_classifier_config={}): + super(WeightedLinearEarlyFusion, self).__init__(random_state=random_state) self.view_weights = view_weights self.monoview_classifier_name = monoview_classifier_name diff --git a/multiview_platform/tests/__init__.py b/multiview_platform/tests/__init__.py index 3fd5c6b4ff2b4d4fa0a02e0647991fb2e204bf8d..b7887f5996bd1484d567e919608c364fe9a64c63 100644 --- a/multiview_platform/tests/__init__.py +++ b/multiview_platform/tests/__init__.py @@ -1 +1,2 @@ from . import test_ExecClassif +from .utils import rm_tmp, gen_test_dataset, tmp_path \ No newline at end of file diff --git a/multiview_platform/tests/test_ExecClassif.py b/multiview_platform/tests/test_ExecClassif.py index c3c8b6c355f351a2b000e8dc68e9cc5961c0cc83..abbcd77f933e6c9f49dc74213388551bbe85e61d 100644 --- a/multiview_platform/tests/test_ExecClassif.py +++ b/multiview_platform/tests/test_ExecClassif.py @@ -4,7 +4,7 @@ import unittest import h5py import numpy as np -from .utils import rm_tmp, tmp_path, test_dataset +from multiview_platform.tests.utils import rm_tmp, tmp_path, test_dataset from multiview_platform.mono_multi_view_classifiers import exec_classif diff --git a/multiview_platform/tests/test_mono_view/test_ExecClassifMonoView.py b/multiview_platform/tests/test_mono_view/test_ExecClassifMonoView.py index 1e1625ae0e293c550ad53e625eecc8796d440522..8b24579332aec06011ba54094b0a2a1841a0cb5e 100644 --- a/multiview_platform/tests/test_mono_view/test_ExecClassifMonoView.py +++ b/multiview_platform/tests/test_mono_view/test_ExecClassifMonoView.py @@ -5,10 +5,10 @@ import h5py import numpy as np from sklearn.model_selection import StratifiedKFold -from ..utils import rm_tmp, tmp_path +from multiview_platform.tests.utils import rm_tmp, tmp_path -from ...mono_multi_view_classifiers.monoview import exec_classif_mono_view -from ...mono_multi_view_classifiers.monoview_classifiers import decision_tree +from multiview_platform.mono_multi_view_classifiers.monoview import exec_classif_mono_view +from multiview_platform.mono_multi_view_classifiers.monoview_classifiers import decision_tree class Test_initConstants(unittest.TestCase): diff --git a/multiview_platform/tests/test_mono_view/test_MonoviewUtils.py b/multiview_platform/tests/test_mono_view/test_MonoviewUtils.py index a68c710a446bf09dbee7acc542564a775423b3b7..bdbbcf262d3e1c309fe24f2cf90cb53f940fd37c 100644 --- a/multiview_platform/tests/test_mono_view/test_MonoviewUtils.py +++ b/multiview_platform/tests/test_mono_view/test_MonoviewUtils.py @@ -4,7 +4,7 @@ import numpy as np from sklearn.model_selection import StratifiedKFold from sklearn.tree.tree import DecisionTreeClassifier -from ...mono_multi_view_classifiers.monoview import monoview_utils +from multiview_platform.mono_multi_view_classifiers.monoview import monoview_utils class Test_genTestFoldsPreds(unittest.TestCase): diff --git a/multiview_platform/tests/test_multiview_classifiers/test_additions/test_diversity_utils.py b/multiview_platform/tests/test_multiview_classifiers/test_additions/test_diversity_utils.py index c6f4c653382c48b34bcd4b072eb9bfd091e8e6b8..61595f63880c5cc1a01d5b5e96cf68cbf7c397c2 100644 --- a/multiview_platform/tests/test_multiview_classifiers/test_additions/test_diversity_utils.py +++ b/multiview_platform/tests/test_multiview_classifiers/test_additions/test_diversity_utils.py @@ -1,7 +1,7 @@ import unittest import numpy as np -from ....mono_multi_view_classifiers.multiview_classifiers.additions import diversity_utils +import multiview_platform.mono_multi_view_classifiers.multiview_classifiers.additions.diversity_utils as du class FakeDataset(): @@ -19,7 +19,7 @@ class FakeDataset(): return np.unique(self.labels[example_indices]) -class FakeDivCoupleClf(diversity_utils.CoupleDiversityFusionClassifier): +class FakeDivCoupleClf(du.CoupleDiversityFusionClassifier): def __init__(self, rs, classifier_names=None, classifiers_config=None, monoview_estimators=None): @@ -33,7 +33,7 @@ class FakeDivCoupleClf(diversity_utils.CoupleDiversityFusionClassifier): return self.rs.randint(0,100) -class FakeDivGlobalClf(diversity_utils.GlobalDiversityFusionClassifier): +class FakeDivGlobalClf(du.GlobalDiversityFusionClassifier): def __init__(self, rs, classifier_names=None, classifiers_config=None, monoview_estimators=None): diff --git a/multiview_platform/tests/test_multiview_classifiers/test_difficulty_fusion.py b/multiview_platform/tests/test_multiview_classifiers/test_difficulty_fusion.py index b49eb1f61389a4c3eb7b63b768bc9ec81dcf9ac6..ff298b8c07ed5a8225f27885ad911b935bbd17ba 100644 --- a/multiview_platform/tests/test_multiview_classifiers/test_difficulty_fusion.py +++ b/multiview_platform/tests/test_multiview_classifiers/test_difficulty_fusion.py @@ -2,7 +2,7 @@ import unittest import numpy as np -from ...mono_multi_view_classifiers.multiview_classifiers import difficulty_fusion +from multiview_platform.mono_multi_view_classifiers.multiview_classifiers import difficulty_fusion class Test_difficulty_fusion(unittest.TestCase): diff --git a/multiview_platform/tests/test_multiview_classifiers/test_disagree_fusion.py b/multiview_platform/tests/test_multiview_classifiers/test_disagree_fusion.py index 3ae051fa653f7e2ad132087682cc3fef4996f5f6..bb08e016e5ea75ac78f373ead873e8721eea31e3 100644 --- a/multiview_platform/tests/test_multiview_classifiers/test_disagree_fusion.py +++ b/multiview_platform/tests/test_multiview_classifiers/test_disagree_fusion.py @@ -3,7 +3,7 @@ import numpy as np import unittest # -from ...mono_multi_view_classifiers.multiview_classifiers import disagree_fusion +from multiview_platform.mono_multi_view_classifiers.multiview_classifiers import disagree_fusion class Test_disagree(unittest.TestCase): diff --git a/multiview_platform/tests/test_multiview_classifiers/test_double_fault_fusion.py b/multiview_platform/tests/test_multiview_classifiers/test_double_fault_fusion.py index 3a0b7f6f29edeb3ee196e7f9cb60309fec96f2b4..7e6fd3d70bd5ad84ec62aee0b3e00c8ec336cc34 100644 --- a/multiview_platform/tests/test_multiview_classifiers/test_double_fault_fusion.py +++ b/multiview_platform/tests/test_multiview_classifiers/test_double_fault_fusion.py @@ -2,7 +2,7 @@ import numpy as np import unittest -from ...mono_multi_view_classifiers.multiview_classifiers import double_fault_fusion +from multiview_platform.mono_multi_view_classifiers.multiview_classifiers import double_fault_fusion class Test_disagree(unittest.TestCase): diff --git a/multiview_platform/tests/test_multiview_classifiers/test_entropy_fusion.py b/multiview_platform/tests/test_multiview_classifiers/test_entropy_fusion.py index 765a0b793c0deab1687d540d565f7f17002b9f17..dc88bfcc3070b57707f4f8931a55ea1c337f468d 100644 --- a/multiview_platform/tests/test_multiview_classifiers/test_entropy_fusion.py +++ b/multiview_platform/tests/test_multiview_classifiers/test_entropy_fusion.py @@ -2,7 +2,7 @@ import unittest import numpy as np -from ...mono_multi_view_classifiers.multiview_classifiers import entropy_fusion +from multiview_platform.mono_multi_view_classifiers.multiview_classifiers import entropy_fusion class Test_difficulty_fusion(unittest.TestCase): diff --git a/multiview_platform/tests/test_multiview_classifiers/test_weighted_linear_early_fusion.py b/multiview_platform/tests/test_multiview_classifiers/test_weighted_linear_early_fusion.py index 65541a03c067f8e2a26e5367314b1fc89d7af9ed..c86607525dc958adf14907a8d3da190682a6adb8 100644 --- a/multiview_platform/tests/test_multiview_classifiers/test_weighted_linear_early_fusion.py +++ b/multiview_platform/tests/test_multiview_classifiers/test_weighted_linear_early_fusion.py @@ -3,7 +3,7 @@ import unittest import numpy as np import os -from ..utils import rm_tmp, tmp_path, test_dataset +from multiview_platform.tests.utils import rm_tmp, tmp_path, test_dataset from multiview_platform.mono_multi_view_classifiers.multiview_classifiers import \ weighted_linear_early_fusion diff --git a/multiview_platform/tests/test_utils/test_GetMultiviewDB.py b/multiview_platform/tests/test_utils/test_GetMultiviewDB.py index 1f1c3b0a3b6ba853dc421c98148d923635db2c6f..a61bfbf3d0e967b8d849893f52c3e7e5967d545e 100644 --- a/multiview_platform/tests/test_utils/test_GetMultiviewDB.py +++ b/multiview_platform/tests/test_utils/test_GetMultiviewDB.py @@ -4,8 +4,9 @@ import unittest import h5py import numpy as np -from ...mono_multi_view_classifiers.utils import get_multiview_db -from ..utils import rm_tmp, tmp_path, test_dataset +from multiview_platform.mono_multi_view_classifiers.utils import get_multiview_db +from multiview_platform.tests.utils import rm_tmp, tmp_path + class Test_get_classic_db_hdf5(unittest.TestCase): diff --git a/multiview_platform/tests/test_utils/test_configuration.py b/multiview_platform/tests/test_utils/test_configuration.py index 5e487e769c7dc6ecdb7753a3c61630d0c62d223f..2d2b9f41ca6c4a105ee063bb5c5cf21435aea3a7 100644 --- a/multiview_platform/tests/test_utils/test_configuration.py +++ b/multiview_platform/tests/test_utils/test_configuration.py @@ -3,17 +3,19 @@ import unittest import yaml import numpy as np -from ..utils import rm_tmp, tmp_path - +from multiview_platform.tests.utils import rm_tmp, tmp_path from multiview_platform.mono_multi_view_classifiers.utils import configuration + class Test_get_the_args(unittest.TestCase): @classmethod def setUpClass(cls): rm_tmp() cls.path_to_config_file = tmp_path+"config_temp.yml" - os.mkdir("./multiview_platform/tests/tmp_tests") + path_file = os.path.dirname(os.path.abspath(__file__)) + make_tmp_dir = os.path.join(path_file, "../tmp_tests") + os.mkdir(make_tmp_dir) data = {"Base":{"first_arg": 10, "second_arg":[12.5, 1e-06]}, "Classification":{"third_arg":True}} with open(cls.path_to_config_file, "w") as config_file: yaml.dump(data, config_file) diff --git a/multiview_platform/tests/test_utils/test_dataset.py b/multiview_platform/tests/test_utils/test_dataset.py index 381dca70e699c1383c0c50de5af172769fb41b26..dcfcb353d97ae45109c3f86c6a8d2e705f9d7207 100644 --- a/multiview_platform/tests/test_utils/test_dataset.py +++ b/multiview_platform/tests/test_utils/test_dataset.py @@ -3,9 +3,8 @@ import h5py import numpy as np import os -from ..utils import rm_tmp, tmp_path - -from ...mono_multi_view_classifiers.utils import dataset +from multiview_platform.tests.utils import rm_tmp, tmp_path +from multiview_platform.mono_multi_view_classifiers.utils import dataset class Test_Dataset(unittest.TestCase): diff --git a/multiview_platform/tests/test_utils/test_execution.py b/multiview_platform/tests/test_utils/test_execution.py index 3a351de12f7dfd5ac9846fb5fd68a96016b18599..14e064e393bb731cd42f9a37b0c01dcc197ae080 100644 --- a/multiview_platform/tests/test_utils/test_execution.py +++ b/multiview_platform/tests/test_utils/test_execution.py @@ -3,9 +3,9 @@ import unittest import numpy as np -from ..utils import rm_tmp, tmp_path +from multiview_platform.tests.utils import rm_tmp, tmp_path -from ...mono_multi_view_classifiers.utils import execution +from multiview_platform.mono_multi_view_classifiers.utils import execution class Test_parseTheArgs(unittest.TestCase): @@ -56,14 +56,14 @@ class Test_getDatabaseFunction(unittest.TestCase): def test_simple(cls): getDB = execution.get_database_function(cls.name, cls.type) - from ...mono_multi_view_classifiers.utils.get_multiview_db import \ + from multiview_platform.mono_multi_view_classifiers.utils.get_multiview_db import \ get_classic_db_csv cls.assertEqual(getDB, get_classic_db_csv) def test_hdf5(cls): cls.type = ".hdf5" getDB = execution.get_database_function(cls.name, cls.type) - from ...mono_multi_view_classifiers.utils.get_multiview_db import \ + from multiview_platform.mono_multi_view_classifiers.utils.get_multiview_db import \ get_classic_db_hdf5 cls.assertEqual(getDB, get_classic_db_hdf5) @@ -71,7 +71,7 @@ class Test_getDatabaseFunction(unittest.TestCase): cls.name = "plausible" cls.type = ".hdf5" getDB = execution.get_database_function(cls.name, cls.type) - from ...mono_multi_view_classifiers.utils.get_multiview_db import \ + from multiview_platform.mono_multi_view_classifiers.utils.get_multiview_db import \ get_plausible_db_hdf5 cls.assertEqual(getDB, get_plausible_db_hdf5) diff --git a/multiview_platform/tests/test_utils/test_hyper_parameter_search.py b/multiview_platform/tests/test_utils/test_hyper_parameter_search.py index 4917c207ce7e1cf87fbc080430df99225e306a38..b5dfe409c98f7ecc18ddeccf6eaca53216f53aed 100644 --- a/multiview_platform/tests/test_utils/test_hyper_parameter_search.py +++ b/multiview_platform/tests/test_utils/test_hyper_parameter_search.py @@ -4,12 +4,13 @@ import unittest import h5py import numpy as np from sklearn.model_selection import StratifiedKFold +from multiview_platform.tests.utils import rm_tmp, tmp_path -from ..utils import rm_tmp, tmp_path -from ...mono_multi_view_classifiers.utils.dataset import Dataset -from ...mono_multi_view_classifiers.utils import hyper_parameter_search -from ...mono_multi_view_classifiers.multiview_classifiers import weighted_linear_early_fusion +from multiview_platform.mono_multi_view_classifiers.utils.dataset import Dataset +from multiview_platform.mono_multi_view_classifiers.utils import hyper_parameter_search +from multiview_platform.mono_multi_view_classifiers.multiview_classifiers import weighted_linear_early_fusion + class Test_randomized_search(unittest.TestCase): diff --git a/multiview_platform/tests/test_utils/test_multiclass.py b/multiview_platform/tests/test_utils/test_multiclass.py index 52cac2a3c257d4e30903fe7e2ab313abe766cd57..f4ffbad929828fd04161f792366a5df1c4d6813d 100644 --- a/multiview_platform/tests/test_utils/test_multiclass.py +++ b/multiview_platform/tests/test_utils/test_multiclass.py @@ -2,7 +2,7 @@ import unittest import numpy as np -from ...mono_multi_view_classifiers.utils import multiclass +import multiview_platform.mono_multi_view_classifiers.utils.multiclass as mm class Test_genMulticlassLabels(unittest.TestCase): @@ -21,7 +21,7 @@ class Test_genMulticlassLabels(unittest.TestCase): cls.testIndices[1]]] def test_one_versus_one(cls): - multiclassLabels, labelsIndices, oldIndicesMulticlass = multiclass.gen_multiclass_labels( + multiclassLabels, labelsIndices, oldIndicesMulticlass = mm.gen_multiclass_labels( cls.labels, "oneVersusOne", cls.classification_indices) cls.assertEqual(len(multiclassLabels), 10) cls.assertEqual(labelsIndices,