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,