class Nettuno: '''Main Nettuno class containing EnsembleCollection and Optimizer objects''' def __init__(self, optimizer, init_filename=".nettuno", log_level=0): self.init_filename = init_filename self.ensemble_collection = EnsembleCollection(log_level) # self.optimizer = Optimizer() if optimizer == "steepest_descent": self.optimizer = SteepestDescentOptimizer(log_level) else: print "Unknown optimization algorithm: %s. Aborting." % optimizer sys.exit(1) self.read_init_file() def read_init_file(self): '''Reads configuration file''' self.ensemble_collection.read_init_file(self.init_filename) self.optimizer.read_init_file(self.init_filename) def output_init_file(self, init_file_output): '''Writes configuration file''' if init_file_output == self.init_filename: backup_name = self.init_filename + "_"+ datetime.datetime.today().isoformat("-") shutil.copyfile(self.init_filename, backup_name) if init_file_output == "stdout": print "### Nettuno settings output ###\n" print repr(self), print "###############################" else : init_file = open(self.init_filename, "w") init_file.write(repr(self)) init_file.close() def get_ensemble_collection(self): '''Retrieve EnsembleCollection object''' return self.ensemble_collection def get_optimizer(self): '''Retrieve Optimizer object''' return self.optimizer def optimize(self): '''Start optimization procedure''' if len(self.ensemble_collection) > 0: self.optimizer.optimize(self.ensemble_collection) def __repr__(self): return repr(self.optimizer) + "\n" + repr(self.ensemble_collection)