def create_management_objects(dir_tree, logger, pbar, config): # Creates directory tres if dir_tree is None: dir_tree = DirectoryTree(alg_name=config.alg_name, task_name=config.task_name, desc=config.desc, seed=config.seed, root=config.root_dir) dir_tree.create_directories() # Creates logger and prints config if logger is None: logger = create_logger('MASTER', config.log_level, dir_tree.seed_dir / 'logger.out') logger.debug(config_to_str(config)) # Creates a progress-bar if pbar == "default_pbar": pbar = tqdm() if pbar is not None: pbar.n = 0 pbar.desc += f'{dir_tree.storage_dir.name}/{dir_tree.experiment_dir.name}/{dir_tree.seed_dir.name}' pbar.total = config.max_episodes return dir_tree, logger, pbar
def create_experiment_dir(storage_name_id, config, config_unique_dict, SEEDS, root_dir, git_hashes=None): # Determine experiment number tmp_dir_tree = DirectoryTree(id=storage_name_id, alg_name=config.alg_name, task_name=config.task_name, desc=config.desc, seed=1, git_hashes=git_hashes, root=root_dir) experiment_num = int(tmp_dir_tree.experiment_dir.name.strip('experiment')) # For each seed in these experiments, creates a directory for seed in SEEDS: config.seed = seed config_unique_dict['seed'] = seed # Creates the experiment directory dir_tree = DirectoryTree(id=storage_name_id, alg_name=config.alg_name, task_name=config.task_name, desc=config.desc, seed=config.seed, experiment_num=experiment_num, git_hashes=git_hashes, root=root_dir) dir_tree.create_directories() # Saves the config as json file (to be run later) save_config_to_json(config, filename=str(dir_tree.seed_dir / 'config.json')) # Saves a dictionary of what makes each seed_dir unique (just for display on graphs) validate_config_unique(config, config_unique_dict) save_dict_to_json(config_unique_dict, filename=str(dir_tree.seed_dir / 'config_unique.json')) # Creates empty file UNHATCHED meaning that the experiment is ready to be run open(str(dir_tree.seed_dir / 'UNHATCHED'), 'w+').close() return dir_tree