From 2138c1db0a7091d180d7ceb587feeadb8fb9e8c6 Mon Sep 17 00:00:00 2001 From: bbauvin <baptiste.bauvin@centrale-marseille.fr> Date: Wed, 18 Oct 2017 12:10:38 -0400 Subject: [PATCH] Tests are working --- Code/MonoMultiViewClassifiers/ExecClassif.py | 5 ++-- .../Multiview/ExecMultiview.py | 26 +++++++++---------- .../Fusion/{Fusion.py => FusionModule.py} | 9 ++++--- .../Multiview/Fusion/Methods/__init__.py | 6 ++++- .../Multiview/Fusion/__init__.py | 4 +-- .../Mumbo/{Mumbo.py => MumboModule.py} | 4 +-- .../Multiview/Mumbo/__init__.py | 4 +-- .../Multiview/Mumbo/analyzeResults.py | 4 +-- .../Multiview/__init__.py | 4 +-- .../utils/HyperParameterSearch.py | 8 +++--- Code/Tests/poulet.py | 1 - Code/Tests/test_poulet.py | 7 +++++ 12 files changed, 46 insertions(+), 36 deletions(-) rename Code/MonoMultiViewClassifiers/Multiview/Fusion/{Fusion.py => FusionModule.py} (99%) rename Code/MonoMultiViewClassifiers/Multiview/Mumbo/{Mumbo.py => MumboModule.py} (99%) delete mode 100644 Code/Tests/poulet.py create mode 100644 Code/Tests/test_poulet.py diff --git a/Code/MonoMultiViewClassifiers/ExecClassif.py b/Code/MonoMultiViewClassifiers/ExecClassif.py index 9e172a8c..af290957 100644 --- a/Code/MonoMultiViewClassifiers/ExecClassif.py +++ b/Code/MonoMultiViewClassifiers/ExecClassif.py @@ -30,7 +30,6 @@ __author__ = "Baptiste Bauvin" __status__ = "Prototype" # Production, Development, Prototype - def initBenchmark(args): """Used to create a list of all the algorithm packages names used for the benchmark Needs args.CL_type, args.CL_algos_multiview, args.MU_types, args.FU_types, args.FU_late_methods, @@ -47,7 +46,7 @@ def initBenchmark(args): benchmark["Multiview"] = dict((multiviewPackageName, "_") for multiviewPackageName in allMultiviewPackages) for multiviewPackageName in allMultiviewPackages: multiviewPackage = getattr(Multiview, multiviewPackageName) - multiviewModule = getattr(multiviewPackage, multiviewPackageName) + multiviewModule = getattr(multiviewPackage, multiviewPackageName+"Module") benchmark = multiviewModule.getBenchmark(benchmark, args=args) if "Multiview" in args.CL_type: @@ -131,7 +130,7 @@ def initMultiviewArguments(args, benchmark, views, viewsIndices, argumentDiction if "Multiview" in benchmark: for multiviewAlgoName in benchmark["Multiview"]: multiviewPackage = getattr(Multiview, multiviewAlgoName) - mutliviewModule = getattr(multiviewPackage, multiviewAlgoName) + mutliviewModule = getattr(multiviewPackage, multiviewAlgoName+"Module") multiviewArguments += mutliviewModule.getArgs(args, benchmark, views, viewsIndices, randomState, directory, resultsMonoview, classificationIndices) argumentDictionaries["Multiview"] = multiviewArguments diff --git a/Code/MonoMultiViewClassifiers/Multiview/ExecMultiview.py b/Code/MonoMultiViewClassifiers/Multiview/ExecMultiview.py index ef27e9f9..806b1474 100644 --- a/Code/MonoMultiViewClassifiers/Multiview/ExecMultiview.py +++ b/Code/MonoMultiViewClassifiers/Multiview/ExecMultiview.py @@ -1,8 +1,8 @@ import sys import os.path import errno -sys.path.append( - os.path.abspath(os.path.join(os.path.dirname(__file__), os.path.pardir))) +# sys.path.append( +# os.path.abspath(os.path.join(os.path.dirname(__file__), os.path.pardir))) import os import logging import time @@ -11,6 +11,7 @@ import imp from ..utils.Dataset import getShape from ..utils import HyperParameterSearch +from . import Fusion, Mumbo # from . import * # Author-Info @@ -51,19 +52,18 @@ def ExecMultiview(directory, DATASET, name, classificationIndices, KFolds, nbCor extractionTime = time.time() - t_start learningIndices, validationIndices = classificationIndices - packageDirectories = [entry for entry in os.listdir("MonoMultiViewClassifiers/Multiview/") if os.path.isdir("MonoMultiViewClassifiers/Multiview/"+entry)] - for packageDirectory in packageDirectories: - if packageDirectory == CL_type: - classifierModule = imp.load_source(CL_type, "MonoMultiViewClassifiers/Multiview/"+packageDirectory+"/"+CL_type+".py") - analysisModule = imp.load_source(CL_type, "MonoMultiViewClassifiers/Multiview/"+packageDirectory+"/analyzeResults.py") - import pdb; pdb.set_trace() - # classifierPackage = getattr(locals(), CL_type) # Permet d'appeler un module avec une string - # classifierModule = getattr(classifierPackage, CL_type) - classifierClass = getattr(classifierModule, CL_type) - # analysisModule = getattr(classifierPackage, "analyzeResults") + # packageDirectories = [entry for entry in os.listdir("MonoMultiViewClassifiers/Multiview/") if os.path.isdir("MonoMultiViewClassifiers/Multiview/"+entry)] + # for packageDirectory in packageDirectories: + # if packageDirectory == CL_type: + # classifierModule = imp.find_module(CL_type, "MonoMultiViewClassifiers/Multiview/"+packageDirectory+"/"+CL_type+".py") + # analysisModule = imp.load_source(CL_type, "MonoMultiViewClassifiers/Multiview/"+packageDirectory+"/analyzeResults.py") + classifierPackage = globals()[CL_type] # Permet d'appeler un module avec une string + classifierModule = getattr(classifierPackage, CL_type+"Module") + classifierClass = getattr(classifierModule, CL_type+"Class") + analysisModule = getattr(classifierPackage, "analyzeResults") if hyperParamSearch != "None": - classifier = HyperParameterSearch.searchBestSettings(DATASET, classifierModule, CL_type, metrics, learningIndices, KFolds, randomState, + classifier = HyperParameterSearch.searchBestSettings(DATASET, classifierPackage, CL_type, metrics, learningIndices, KFolds, randomState, viewsIndices=viewsIndices, searchingTool=hyperParamSearch, nIter=nIter, **classificationKWARGS) else: diff --git a/Code/MonoMultiViewClassifiers/Multiview/Fusion/Fusion.py b/Code/MonoMultiViewClassifiers/Multiview/Fusion/FusionModule.py similarity index 99% rename from Code/MonoMultiViewClassifiers/Multiview/Fusion/Fusion.py rename to Code/MonoMultiViewClassifiers/Multiview/Fusion/FusionModule.py index c6442c56..30da0f52 100644 --- a/Code/MonoMultiViewClassifiers/Multiview/Fusion/Fusion.py +++ b/Code/MonoMultiViewClassifiers/Multiview/Fusion/FusionModule.py @@ -3,8 +3,11 @@ import logging import pkgutil # from Methods import * -import pdb;pdb.set_trace() -import Methods + +try: + from . import Methods +except ValueError: + import pdb;pdb.set_trace() from ... import MonoviewClassifiers from ...utils.Dataset import getV @@ -146,7 +149,7 @@ def getCLString(classificationKWARGS): classificationKWARGS["classifiersNames"] -class Fusion: +class FusionClass: def __init__(self, randomState, NB_CORES=1, **kwargs): fusionType = kwargs['fusionType'] fusionMethod = kwargs['fusionMethod'] diff --git a/Code/MonoMultiViewClassifiers/Multiview/Fusion/Methods/__init__.py b/Code/MonoMultiViewClassifiers/Multiview/Fusion/Methods/__init__.py index c7ee5473..a09dbec1 100644 --- a/Code/MonoMultiViewClassifiers/Multiview/Fusion/Methods/__init__.py +++ b/Code/MonoMultiViewClassifiers/Multiview/Fusion/Methods/__init__.py @@ -1,3 +1,7 @@ -from . import EarlyFusion, LateFusion, LateFusionPackage, EarlyFusionPackage +# import pdb;pdb.set_trace() +from . import EarlyFusion +from . import LateFusion +from . import LateFusionPackage +from . import EarlyFusionPackage __all__ = ["EarlyFusionPackage", "LateFusionPackage"] diff --git a/Code/MonoMultiViewClassifiers/Multiview/Fusion/__init__.py b/Code/MonoMultiViewClassifiers/Multiview/Fusion/__init__.py index dd2810a4..f1ba7157 100644 --- a/Code/MonoMultiViewClassifiers/Multiview/Fusion/__init__.py +++ b/Code/MonoMultiViewClassifiers/Multiview/Fusion/__init__.py @@ -1,3 +1,3 @@ -from . import Fusion, analyzeResults, Methods +from . import FusionModule, analyzeResults, Methods -__all__ = ["Fusion", "Methods"] +__all__ = ["FusionModule.py", "Methods"] diff --git a/Code/MonoMultiViewClassifiers/Multiview/Mumbo/Mumbo.py b/Code/MonoMultiViewClassifiers/Multiview/Mumbo/MumboModule.py similarity index 99% rename from Code/MonoMultiViewClassifiers/Multiview/Mumbo/Mumbo.py rename to Code/MonoMultiViewClassifiers/Multiview/Mumbo/MumboModule.py index b4cc4cb3..35836ea8 100644 --- a/Code/MonoMultiViewClassifiers/Multiview/Mumbo/Mumbo.py +++ b/Code/MonoMultiViewClassifiers/Multiview/Mumbo/MumboModule.py @@ -124,7 +124,7 @@ def gridSearch_hdf5(DATASET, viewIndices, classificationKWARGS, learningIndices, for classifierIndex, classifierName in enumerate(classifiersNames): logging.debug("\tStart:\t Random search for " + classifierName + " on " + DATASET.get("View" + str(viewIndices[classifierIndex])).attrs["name"]) - classifierModule = globals()[classifierName] # Permet d'appeler une fonction avec une string + classifierModule = getattr(Classifiers, classifierName) # Permet d'appeler une fonction avec une string classifierGridSearch = getattr(classifierModule, "hyperParamSearch") bestSettings.append(classifierGridSearch(getV(DATASET, viewIndices[classifierIndex], learningIndices), DATASET.get("Labels").value[learningIndices], randomState, @@ -140,7 +140,7 @@ def getCLString(classificationKWARGS): return "Mumbo-" + "-".join(classificationKWARGS["classifiersNames"]) -class Mumbo: +class MumboClass: def __init__(self, randomState, NB_CORES=1, **kwargs): self.maxIter = kwargs["maxIter"] self.minIter = kwargs["minIter"] diff --git a/Code/MonoMultiViewClassifiers/Multiview/Mumbo/__init__.py b/Code/MonoMultiViewClassifiers/Multiview/Mumbo/__init__.py index 5f2e3464..059b8c71 100644 --- a/Code/MonoMultiViewClassifiers/Multiview/Mumbo/__init__.py +++ b/Code/MonoMultiViewClassifiers/Multiview/Mumbo/__init__.py @@ -1,3 +1,3 @@ -from . import Mumbo, analyzeResults +from . import MumboModule, analyzeResults -__all__ = ["Mumbo", "Classifiers"] +__all__ = ["MumboModule.py", "Classifiers"] diff --git a/Code/MonoMultiViewClassifiers/Multiview/Mumbo/analyzeResults.py b/Code/MonoMultiViewClassifiers/Multiview/Mumbo/analyzeResults.py index d06276eb..dc5c7016 100644 --- a/Code/MonoMultiViewClassifiers/Multiview/Mumbo/analyzeResults.py +++ b/Code/MonoMultiViewClassifiers/Multiview/Mumbo/analyzeResults.py @@ -6,7 +6,7 @@ from datetime import timedelta as hms # import logging # import Mumbo -# from Classifiers import * +import Classifiers from ... import Metrics from ...utils.Dataset import getV, getShape @@ -92,7 +92,7 @@ def getAlgoConfig(classifier, classificationKWARGS, nbCores, viewNames, hyperPar minIter = classificationKWARGS["minIter"] threshold = classificationKWARGS["threshold"] extractionTime, classificationTime = times - weakClassifierConfigs = [getattr(globals()[classifierName], 'getConfig')(classifiersConfig) for classifiersConfig, + weakClassifierConfigs = [getattr(getattr(Classifiers, classifierName), 'getConfig')(classifiersConfig) for classifiersConfig, classifierName in zip(classifier.classifiersConfigs, classifier.classifiersNames)] classifierAnalysis = [classifierName + " " + weakClassifierConfig + "on " + feature for classifierName, diff --git a/Code/MonoMultiViewClassifiers/Multiview/__init__.py b/Code/MonoMultiViewClassifiers/Multiview/__init__.py index 55fdc627..47661078 100644 --- a/Code/MonoMultiViewClassifiers/Multiview/__init__.py +++ b/Code/MonoMultiViewClassifiers/Multiview/__init__.py @@ -1,6 +1,4 @@ -from . import GetMultiviewDb#, ExecMultiview, Mumbo, Fusion -# import pdb;pdb.set_trace() - +from . import GetMultiviewDb from . import ExecMultiview from . import Mumbo from . import Fusion diff --git a/Code/MonoMultiViewClassifiers/utils/HyperParameterSearch.py b/Code/MonoMultiViewClassifiers/utils/HyperParameterSearch.py index ddb0b434..bdc430ad 100644 --- a/Code/MonoMultiViewClassifiers/utils/HyperParameterSearch.py +++ b/Code/MonoMultiViewClassifiers/utils/HyperParameterSearch.py @@ -6,13 +6,13 @@ import itertools from .. import Metrics -def searchBestSettings(dataset, classifierName, metrics, iLearningIndices, iKFolds, randomState, viewsIndices=None, +def searchBestSettings(dataset, classifierPackage, classifierName, metrics, iLearningIndices, iKFolds, randomState, viewsIndices=None, searchingTool="hyperParamSearch", nIter=1, **kwargs): if viewsIndices is None: viewsIndices = range(dataset.get("Metadata").attrs["nbView"]) thismodule = sys.modules[__name__] searchingToolMethod = getattr(thismodule, searchingTool) - bestSettings = searchingToolMethod(dataset, classifierName, metrics, iLearningIndices, iKFolds, randomState, + bestSettings = searchingToolMethod(dataset, classifierPackage, classifierName, metrics, iLearningIndices, iKFolds, randomState, viewsIndices=viewsIndices, nIter=nIter, **kwargs) return bestSettings # or well set clasifier ? @@ -32,8 +32,8 @@ def randomizedSearch(dataset, classifierPackage, classifierName, metrics, learni metricKWARGS = dict((index, metricConfig) for index, metricConfig in enumerate(metric[1])) else: metricKWARGS = {} - classifierModule = getattr(classifierPackage, classifierName) - classifierClass = getattr(classifierModule, classifierName) + classifierModule = getattr(classifierPackage, classifierName+"Module") + classifierClass = getattr(classifierModule, classifierName+"Class") if classifierName != "Mumbo": paramsSets = classifierModule.genParamsSets(classificationKWARGS, randomState, nIter=nIter) if metricModule.getConfig()[-14] == "h": diff --git a/Code/Tests/poulet.py b/Code/Tests/poulet.py deleted file mode 100644 index 0733701a..00000000 --- a/Code/Tests/poulet.py +++ /dev/null @@ -1 +0,0 @@ -print "essai2" \ No newline at end of file diff --git a/Code/Tests/test_poulet.py b/Code/Tests/test_poulet.py new file mode 100644 index 00000000..31e6debf --- /dev/null +++ b/Code/Tests/test_poulet.py @@ -0,0 +1,7 @@ +import unittest + + +class TestFromage(unittest.TestCase): + + def test_fromage(self): + self.assertEqual(1,1) \ No newline at end of file -- GitLab