diff --git a/Code/MonoMultiViewClassifiers/ExecClassif.py b/Code/MonoMultiViewClassifiers/ExecClassif.py index 4dd5ee2792f67128706cc1b062ddcb0c85dc72e7..d1be6b7a2fc9543355090b4bb38fb355747ff85e 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 2e9bab0809974050ec19d6f1ddccd7691c45ad02..c5f17c0f8e71715c99885b3355766abc9821e7b0 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 e8d0b30809fa4fb04537f9c69ac38701e697b817..661b44cdf5c8679c80b3bb83287c93cf0f87e7de 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 7eed810f6c3d7ca0b0dc5960110c9a42a097192f..53e33323e2132619b0b2764b6736f0f0acda5f14 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 f0fc97adc37a2a9d1a2455e081a3e73f772c8c65..8bbd0830cf0726bd3df3fd0fa4f120876627e912 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 bc6cdc28e596c60b098ef493cbf199206e9a0673..03d92693e7f06109d9830c1855ee2b66ae807d9a 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 30da0f52f074690b68e86f0c2070feef345140e8..f6445eacd83d0f845cc8cae2e922b642b2b13b98 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 406f941a59b9076de41d8ad57cb259426dc3e715..3636ca90ab36db2f57b006402a3c6767d9395117 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 966b0ca3f9c2ddcb976f6ef32e430412337beebd..6b0b06926b8305f95734cb1e72e513442475b026 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 406f941a59b9076de41d8ad57cb259426dc3e715..3636ca90ab36db2f57b006402a3c6767d9395117 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 05526fdb7d31c1383397e87fa548d33e98b98178..87d7d3a07388f1cad5b6e2db469cdf8bec2aa5aa 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 18fa2efda9bcac8310653acb6dfa3ec274dc9938..28139df754f29c2ccc1fd6f728c2e7c3feb455a0 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 13f8ef38e9112abb6b4dbfca63a2eb58354c47bd..874f3ce549dba3ffd5054779f8a9feac93b34190 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 67fe9de36bef451e807afd5bebf524100535612a..8db5fdbaef4faa4a8cb43a126042d1abb03bbc24 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 35836ea88e1b7d8acd406d1015e72f15a92e366a..d4cf238de2272a225cf5fc1b651aeeff31f9a370 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 dc5c70168e7ed6a28f7337016e582b7b37da2c7b..b38eead51807bf71bdd4c627effb3fd27c0f9b75 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 1ce96122099018db9edb7c6669dbbc45887c0ba4..a2a1bd164089e3288cb2ed952e13d9475d44b4e7 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 6f1882a5fa962e4bb3088570cbc9c5c2489e08e9..00562135e6cd34d359f1bce174a9072681365d66 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 842d824c6b28acf620ca3b31f973f2a924bd9415..5baa4d9cca647d122ac24808c64040829eb58200 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 d4ebb75dd82f03b7f77f1de07e38b9232ff0e787..7552f068f7fcafc341ab2c669b9b9229064b67e6 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 bd0becc0f5148821458ab5a428df7d3b568b74e1..0da83a60a688660cf17a2ac2974e4b8abf4a790b 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__":