def GetProblem(problemName, options): if not os.path.exists(options.datasets): os.mkdir(options.datasets) path = os.path.join(options.datasets, problemName + '.arff') if os.path.exists(path): return path else: logger.debug("Requesting problem " + problemName) problem = poligon.get_problem(problemName, options.algsynonim, options.algpassword) if not problem: raise Exception("Could not get problem " + problemName) _save_as_arff(problem, problemName, path) return path
def load_task_data(task, algPassword, dataFile, learnIndexes, testIndexes, algProperties): """Writes problem data, indexes and alg params into the given path""" class Indexes(object): def __init__(self, learn, test): self.test = test self.learn = learn # 1. Loading problem data problem = poligon.get_problem(task.ProblemSynonim, task.AlgSynonim, algPassword) if not problem: logger.error( 'Can\'t load problem \'{0}\' from server'.format(task.ProblemSynonim)) logger.debug( 'Problem \'{0}\' received with {1} rows'.format( task.ProblemSynonim, len(problem.DataMatrix.ArrayOfDouble))) objects, properties, classes = _save_as_arff(problem, task.ProblemSynonim, dataFile) logger.debug('Problem data saved as \'{0}\''.format(dataFile)) # 2. Saving indexes test = _save_indexes(task.TestIndexes, testIndexes) logger.debug('{0} test indexes saved'.format(len(test))) learn = _save_indexes(task.LearnIndexes, learnIndexes) logger.info('{0} learn indexes saved'.format(len(learn))) if len(test) != len(learn): logger.error('Indexes count mismatch') indexes = [] for i in range(0, len(learn)): indexes.append(Indexes(learn[i], test[i])) # 3. Writing alg properties count = _save_params(task, algProperties) logger.info('{0} alg params saved as \'{1}\''.format(count, algProperties)) return indexes #, properties, classes