From b1240a8e9cf3500fe74338394e12652ef306b258 Mon Sep 17 00:00:00 2001 From: bbauvin <baptiste.bauvin@centrale-marseille.fr> Date: Mon, 23 Oct 2017 14:48:49 -0400 Subject: [PATCH] python3 usable --- Code/MonoMultiViewClassifiers/ExecClassif.py | 6 +++--- .../Metrics/__init__.py | 4 +++- .../Monoview/ExecClassifMonoView.py | 6 +++--- .../Monoview/MonoviewUtils.py | 2 +- .../Monoview/__init__.py | 2 +- .../MonoviewClassifiers/__init__.py | 2 +- .../Multiview/Fusion/FusionModule.py | 2 +- .../Methods/EarlyFusionPackage/__init__.py | 2 +- .../LateFusionPackage/MajorityVoting.py | 2 +- .../Methods/LateFusionPackage/__init__.py | 2 +- .../Multiview/Fusion/analyzeResults.py | 4 ++-- .../Multiview/GetMultiviewDb.py | 10 +++++----- .../Mumbo/Classifiers/DecisionTree.py | 2 +- .../Multiview/Mumbo/Classifiers/__init__.py | 2 +- .../Multiview/Mumbo/MumboModule.py | 2 +- .../Multiview/Mumbo/analyzeResults.py | 2 +- .../MonoMultiViewClassifiers/utils/Dataset.py | 4 ++-- .../utils/Interpret.py | 4 ++-- .../utils/__init__.py | 2 +- .../utils/execution.py | 6 +++--- Code/Versions.py | 20 ++++++++++++------- 21 files changed, 48 insertions(+), 40 deletions(-) diff --git a/Code/MonoMultiViewClassifiers/ExecClassif.py b/Code/MonoMultiViewClassifiers/ExecClassif.py index 4dd5ee27..d1be6b7a 100644 --- a/Code/MonoMultiViewClassifiers/ExecClassif.py +++ b/Code/MonoMultiViewClassifiers/ExecClassif.py @@ -22,7 +22,7 @@ from . import MonoviewClassifiers from .Multiview.ExecMultiview import ExecMultiview, ExecMultiview_multicore from .Monoview.ExecClassifMonoView import ExecMonoview, ExecMonoview_multicore from .Multiview import GetMultiviewDb as DB -from ResultAnalysis import resultAnalysis, analyzeLabels, analyzeIterResults, analyzeIterLabels, genNamesFromRes +from .ResultAnalysis import resultAnalysis, analyzeLabels, analyzeIterResults, analyzeIterLabels, genNamesFromRes from .utils import execution, Dataset # Author-Info @@ -87,7 +87,7 @@ def initMonoviewKWARGS(args, classifiersNames): for classifiersName in classifiersNames: classifierModule = getattr(MonoviewClassifiers, classifiersName) monoviewKWARGS[classifiersName + "KWARGSInit"] = classifierModule.getKWARGS( - [(key, value) for key, value in vars(args).iteritems() if key.startswith("CL_" + classifiersName)]) + [(key, value) for key, value in vars(args).items() if key.startswith("CL_" + classifiersName)]) return monoviewKWARGS @@ -295,7 +295,7 @@ def execClassif(arguments): views, viewsIndices, allViews = execution.initViews(DATASET, args) if not views: - raise ValueError, "Empty views list, modify selected views to match dataset " + args.views + raise ValueError("Empty views list, modify selected views to match dataset " + args.views) NB_VIEW = len(views) NB_CLASS = DATASET.get("Metadata").attrs["nbClass"] diff --git a/Code/MonoMultiViewClassifiers/Metrics/__init__.py b/Code/MonoMultiViewClassifiers/Metrics/__init__.py index 2e9bab08..c5f17c0f 100644 --- a/Code/MonoMultiViewClassifiers/Metrics/__init__.py +++ b/Code/MonoMultiViewClassifiers/Metrics/__init__.py @@ -1,8 +1,10 @@ import os +modules = [] for module in os.listdir(os.path.dirname(os.path.realpath(__file__))): if module == '__init__.py' or module[-3:] != '.py': continue - __import__(module[:-3], locals(), globals()) + __import__(module[:-3], locals(), globals(), [], 1) + pass del module del os diff --git a/Code/MonoMultiViewClassifiers/Monoview/ExecClassifMonoView.py b/Code/MonoMultiViewClassifiers/Monoview/ExecClassifMonoView.py index e8d0b308..661b44cd 100644 --- a/Code/MonoMultiViewClassifiers/Monoview/ExecClassifMonoView.py +++ b/Code/MonoMultiViewClassifiers/Monoview/ExecClassifMonoView.py @@ -16,13 +16,13 @@ import h5py # Import own modules from .. import MonoviewClassifiers -from analyzeResult import execute +from .analyzeResult import execute from ..utils.Dataset import getValue, extractSubset # Author-Info __author__ = "Nikolas Huelsmann, Baptiste BAUVIN" __status__ = "Prototype" # Production, Development, Prototype -__date__ = 2016 - 03 - 25 +# __date__ = 2016 - 03 - 25 def ExecMonoview_multicore(directory, name, labelsNames, classificationIndices, KFolds, datasetFileIndex, databaseType, @@ -114,7 +114,7 @@ def ExecMonoview(directory, X, Y, name, labelsNames, classificationIndices, KFol clKWARGS, labelsNames, X.shape, y_train, y_train_pred, y_test, y_test_pred, t_end, randomState, cl_res, outputFileName) - cl_desc = [value for key, value in sorted(clKWARGS.iteritems())] + cl_desc = [value for key, value in sorted(clKWARGS.items())] logging.debug("Done:\t Getting Results") logging.info(stringAnalysis) # labelsString = "-".join(labelsNames) diff --git a/Code/MonoMultiViewClassifiers/Monoview/MonoviewUtils.py b/Code/MonoMultiViewClassifiers/Monoview/MonoviewUtils.py index 7eed810f..53e33323 100644 --- a/Code/MonoMultiViewClassifiers/Monoview/MonoviewUtils.py +++ b/Code/MonoMultiViewClassifiers/Monoview/MonoviewUtils.py @@ -17,7 +17,7 @@ import numpy as np # Author-Info __author__ = "Nikolas Huelsmann, Baptiste Bauvin" __status__ = "Prototype" # Production, Development, Prototype -__date__ = 2016 - 03 - 25 +# __date__ = 2016 - 03 - 25 def isUseful(labelSupports, index, CLASS_LABELS, labelDict): diff --git a/Code/MonoMultiViewClassifiers/Monoview/__init__.py b/Code/MonoMultiViewClassifiers/Monoview/__init__.py index f0fc97ad..8bbd0830 100644 --- a/Code/MonoMultiViewClassifiers/Monoview/__init__.py +++ b/Code/MonoMultiViewClassifiers/Monoview/__init__.py @@ -1 +1 @@ -from . import ExecClassifMonoView, MonoviewUtils +from . import ExecClassifMonoView, MonoviewUtils, analyzeResult diff --git a/Code/MonoMultiViewClassifiers/MonoviewClassifiers/__init__.py b/Code/MonoMultiViewClassifiers/MonoviewClassifiers/__init__.py index bc6cdc28..03d92693 100644 --- a/Code/MonoMultiViewClassifiers/MonoviewClassifiers/__init__.py +++ b/Code/MonoMultiViewClassifiers/MonoviewClassifiers/__init__.py @@ -2,7 +2,7 @@ import os for module in os.listdir(os.path.dirname(os.path.realpath(__file__))): if module == '__init__.py' or module[-3:] != '.py': continue - __import__(module[:-3], locals(), globals()) + __import__(module[:-3], locals(), globals(), [],1) del module del os diff --git a/Code/MonoMultiViewClassifiers/Multiview/Fusion/FusionModule.py b/Code/MonoMultiViewClassifiers/Multiview/Fusion/FusionModule.py index 30da0f52..f6445eac 100644 --- a/Code/MonoMultiViewClassifiers/Multiview/Fusion/FusionModule.py +++ b/Code/MonoMultiViewClassifiers/Multiview/Fusion/FusionModule.py @@ -158,7 +158,7 @@ class FusionClass: fusionMethodClass = getattr(fusionMethodModule, fusionMethod) nbCores = NB_CORES classifierKWARGS = dict( - (key, value) for key, value in kwargs.iteritems() if key not in ['fusionType', 'fusionMethod']) + (key, value) for key, value in kwargs.items() if key not in ['fusionType', 'fusionMethod']) self.classifier = fusionMethodClass(randomState, NB_CORES=nbCores, **classifierKWARGS) def setParams(self, paramsSet): diff --git a/Code/MonoMultiViewClassifiers/Multiview/Fusion/Methods/EarlyFusionPackage/__init__.py b/Code/MonoMultiViewClassifiers/Multiview/Fusion/Methods/EarlyFusionPackage/__init__.py index 406f941a..3636ca90 100644 --- a/Code/MonoMultiViewClassifiers/Multiview/Fusion/Methods/EarlyFusionPackage/__init__.py +++ b/Code/MonoMultiViewClassifiers/Multiview/Fusion/Methods/EarlyFusionPackage/__init__.py @@ -3,6 +3,6 @@ import os for module in os.listdir(os.path.dirname(os.path.realpath(__file__))): if module == '__init__.py' or module[-3:] != '.py': continue - __import__(module[:-3], locals(), globals()) + __import__(module[:-3], locals(), globals(), [], 1) del module del os diff --git a/Code/MonoMultiViewClassifiers/Multiview/Fusion/Methods/LateFusionPackage/MajorityVoting.py b/Code/MonoMultiViewClassifiers/Multiview/Fusion/Methods/LateFusionPackage/MajorityVoting.py index 966b0ca3..6b0b0692 100644 --- a/Code/MonoMultiViewClassifiers/Multiview/Fusion/Methods/LateFusionPackage/MajorityVoting.py +++ b/Code/MonoMultiViewClassifiers/Multiview/Fusion/Methods/LateFusionPackage/MajorityVoting.py @@ -86,7 +86,7 @@ class MajorityVoting(LateFusionClassifier): try: assert nbMaximum != nbView except: - print "Majority voting can't decide, each classifier has voted for a different class" + print("Majority voting can't decide, each classifier has voted for a different class") raise predictedLabels = np.argmax(votes, axis=1) # Can be upgraded by restarting a new classification process if diff --git a/Code/MonoMultiViewClassifiers/Multiview/Fusion/Methods/LateFusionPackage/__init__.py b/Code/MonoMultiViewClassifiers/Multiview/Fusion/Methods/LateFusionPackage/__init__.py index 406f941a..3636ca90 100644 --- a/Code/MonoMultiViewClassifiers/Multiview/Fusion/Methods/LateFusionPackage/__init__.py +++ b/Code/MonoMultiViewClassifiers/Multiview/Fusion/Methods/LateFusionPackage/__init__.py @@ -3,6 +3,6 @@ import os for module in os.listdir(os.path.dirname(os.path.realpath(__file__))): if module == '__init__.py' or module[-3:] != '.py': continue - __import__(module[:-3], locals(), globals()) + __import__(module[:-3], locals(), globals(), [], 1) del module del os diff --git a/Code/MonoMultiViewClassifiers/Multiview/Fusion/analyzeResults.py b/Code/MonoMultiViewClassifiers/Multiview/Fusion/analyzeResults.py index 05526fdb..87d7d3a0 100644 --- a/Code/MonoMultiViewClassifiers/Multiview/Fusion/analyzeResults.py +++ b/Code/MonoMultiViewClassifiers/Multiview/Fusion/analyzeResults.py @@ -4,7 +4,7 @@ import matplotlib # matplotlib.use('Agg') import operator -import Methods.LateFusion +from .Methods import LateFusion from ... import Metrics # Author-Info @@ -88,7 +88,7 @@ def execute(classifier, trainLabels, " folds\n\nClassification configuration : \n\t-Algorithm used : " + fusionType + " " + fusionConfiguration if fusionType == "LateFusion": - stringAnalysis += Methods.LateFusion.getScores(classifier) + stringAnalysis += LateFusion.getScores(classifier) metricsScores = getMetricsScores(metrics, trainLabels, testLabels, DATASET, validationIndices, learningIndices) stringAnalysis += printMetricScore(metricsScores, metrics) diff --git a/Code/MonoMultiViewClassifiers/Multiview/GetMultiviewDb.py b/Code/MonoMultiViewClassifiers/Multiview/GetMultiviewDb.py index 18fa2efd..28139df7 100644 --- a/Code/MonoMultiViewClassifiers/Multiview/GetMultiviewDb.py +++ b/Code/MonoMultiViewClassifiers/Multiview/GetMultiviewDb.py @@ -36,13 +36,13 @@ def getPlausibleDBhdf5(features, pathF, name, NB_CLASS, LABELS_NAME, nbView=3, if exc.errno != errno.EEXIST: raise datasetFile = h5py.File(pathF + "/Plausible.hdf5", "w") - CLASS_LABELS = np.array([0 for i in range(datasetLength / 2)] + [1 for i in range(datasetLength / 2)]) + CLASS_LABELS = np.array([0 for i in range(int(datasetLength / 2))] + [1 for i in range(int(datasetLength / 2))]) for viewIndex in range(nbView): - viewData = np.array([np.zeros(nbFeatures) for i in range(datasetLength / 2)] + [np.ones(nbFeatures) + viewData = np.array([np.zeros(nbFeatures) for i in range(int(datasetLength / 2))] + [np.ones(nbFeatures) for i in - range(datasetLength / 2)]) - fakeTrueIndices = randomState.randint(0, datasetLength / 2 - 1, datasetLength / 5) - fakeFalseIndices = randomState.randint(datasetLength / 2, datasetLength - 1, datasetLength / 5) + range(int(datasetLength / 2))]) + fakeTrueIndices = randomState.randint(0, int(datasetLength / 2) - 1, int(datasetLength / 5)) + fakeFalseIndices = randomState.randint(int(datasetLength / 2), datasetLength - 1, int(datasetLength / 5)) viewData[fakeTrueIndices] = np.ones((len(fakeTrueIndices), nbFeatures)) viewData[fakeFalseIndices] = np.zeros((len(fakeFalseIndices), nbFeatures)) diff --git a/Code/MonoMultiViewClassifiers/Multiview/Mumbo/Classifiers/DecisionTree.py b/Code/MonoMultiViewClassifiers/Multiview/Mumbo/Classifiers/DecisionTree.py index 13f8ef38..874f3ce5 100644 --- a/Code/MonoMultiViewClassifiers/Multiview/Mumbo/Classifiers/DecisionTree.py +++ b/Code/MonoMultiViewClassifiers/Multiview/Mumbo/Classifiers/DecisionTree.py @@ -2,7 +2,7 @@ import sklearn from sklearn.base import BaseEstimator, ClassifierMixin import numpy as np # from ModifiedMulticlass import OneVsRestClassifier -from SubSampling import subSample +from .SubSampling import subSample import logging # Add weights diff --git a/Code/MonoMultiViewClassifiers/Multiview/Mumbo/Classifiers/__init__.py b/Code/MonoMultiViewClassifiers/Multiview/Mumbo/Classifiers/__init__.py index 67fe9de3..8db5fdba 100644 --- a/Code/MonoMultiViewClassifiers/Multiview/Mumbo/Classifiers/__init__.py +++ b/Code/MonoMultiViewClassifiers/Multiview/Mumbo/Classifiers/__init__.py @@ -8,6 +8,6 @@ import os for module in os.listdir(os.path.dirname(os.path.realpath(__file__))): if module == '__init__.py' or module[-3:] != '.py': continue - __import__(module[:-3], locals(), globals()) + __import__(module[:-3], locals(), globals(), [], 1) del module del os diff --git a/Code/MonoMultiViewClassifiers/Multiview/Mumbo/MumboModule.py b/Code/MonoMultiViewClassifiers/Multiview/Mumbo/MumboModule.py index 35836ea8..d4cf238d 100644 --- a/Code/MonoMultiViewClassifiers/Multiview/Mumbo/MumboModule.py +++ b/Code/MonoMultiViewClassifiers/Multiview/Mumbo/MumboModule.py @@ -7,7 +7,7 @@ import pkgutil import logging from sklearn.metrics import accuracy_score -import Classifiers +from . import Classifiers from ...utils.Dataset import getV # Author-Info diff --git a/Code/MonoMultiViewClassifiers/Multiview/Mumbo/analyzeResults.py b/Code/MonoMultiViewClassifiers/Multiview/Mumbo/analyzeResults.py index dc5c7016..b38eead5 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 -import Classifiers +from . import Classifiers from ... import Metrics from ...utils.Dataset import getV, getShape diff --git a/Code/MonoMultiViewClassifiers/utils/Dataset.py b/Code/MonoMultiViewClassifiers/utils/Dataset.py index 1ce96122..a2a1bd16 100644 --- a/Code/MonoMultiViewClassifiers/utils/Dataset.py +++ b/Code/MonoMultiViewClassifiers/utils/Dataset.py @@ -92,7 +92,7 @@ def confirm(resp=True, timeout=15): if not ans: return resp if ans not in ['y', 'Y', 'n', 'N']: - print 'please enter y or n.' + print('please enter y or n.') if ans == 'y' or ans == 'Y': return True if ans == 'n' or ans == 'N': @@ -100,7 +100,7 @@ def confirm(resp=True, timeout=15): def input_(timeout=15): - print "You have " + str(timeout) + " seconds to stop the script by typing n" + print("You have " + str(timeout) + " seconds to stop the script by typing n") i, o, e = select.select([sys.stdin], [], [], timeout) if i: return sys.stdin.readline().strip() diff --git a/Code/MonoMultiViewClassifiers/utils/Interpret.py b/Code/MonoMultiViewClassifiers/utils/Interpret.py index 6f1882a5..00562135 100644 --- a/Code/MonoMultiViewClassifiers/utils/Interpret.py +++ b/Code/MonoMultiViewClassifiers/utils/Interpret.py @@ -1,7 +1,7 @@ import numpy as np import matplotlib.pyplot as plt from matplotlib.ticker import FuncFormatter -import cPickle +import pickle def percent(x, pos): @@ -26,7 +26,7 @@ def getFeatureImportance(classifier, directory, interpretString=""): for featureIndex, featureImportance in enumerate(featureImportances) if featureImportance != 0) with open(directory+'-feature_importances.pickle', 'wb') as handle: - cPickle.dump(featuresImportancesDict, handle) + pickle.dump(featuresImportancesDict, handle) interpretString += "Feature importances : \n" for featureIndex, featureImportance in zip(featureIndicesSorted, featureImportancesSorted): if featureImportance>0: diff --git a/Code/MonoMultiViewClassifiers/utils/__init__.py b/Code/MonoMultiViewClassifiers/utils/__init__.py index 842d824c..5baa4d9c 100644 --- a/Code/MonoMultiViewClassifiers/utils/__init__.py +++ b/Code/MonoMultiViewClassifiers/utils/__init__.py @@ -1 +1 @@ -from . import Dataset, execution, HyperParameterSearch, Transformations +from . import Dataset, execution, HyperParameterSearch, Transformations, Interpret diff --git a/Code/MonoMultiViewClassifiers/utils/execution.py b/Code/MonoMultiViewClassifiers/utils/execution.py index d4ebb75d..7552f068 100644 --- a/Code/MonoMultiViewClassifiers/utils/execution.py +++ b/Code/MonoMultiViewClassifiers/utils/execution.py @@ -1,6 +1,6 @@ import argparse import numpy as np -import cPickle +import pickle import time import os import errno @@ -192,9 +192,9 @@ def initRandomState(randomStateArg, directory): except ValueError: fileName = randomStateArg with open(fileName, 'rb') as handle: - randomState = cPickle.load(handle) + randomState = pickle.load(handle) with open(directory + "randomState.pickle", "wb") as handle: - cPickle.dump(randomState, handle) + pickle.dump(randomState, handle) return randomState diff --git a/Code/Versions.py b/Code/Versions.py index bd0becc0..0da83a60 100644 --- a/Code/Versions.py +++ b/Code/Versions.py @@ -12,7 +12,7 @@ # Author-Info __author__ = "Baptiste Bauvin" __status__ = "Prototype" # Production, Development, Prototype -__date__ = 2016 - 03 - 25 +# __date__ = 2016 - 03 - 25 def testVersions(): @@ -96,14 +96,20 @@ def testVersions(): isUpToDate = False toInstall.append("h5py") - # try: - # import graphviz # - # except: - # isUpToDate = False - # toInstall.append("graphviz") + try: + import graphviz # + except: + isUpToDate = False + toInstall.append("graphviz") + + try: + import pickle # + except: + isUpToDate = False + toInstall.append("pickle") if not isUpToDate: - print "You can't run at the moment, please install the following modules : \n"+ "\n".join(toInstall) + print("You can't run at the moment, please install the following modules : \n"+ "\n".join(toInstall)) quit() if __name__== "__main__": -- GitLab