def add_hyperparam()

in add_hyperparam.py [0:0]


def add_hyperparam(args):
    """Function that renames results from `experiment` in case you added a new hyperparameter to save.
    It can also rename all results by setting `experiment=*`.
    """

    dflt_hyperparameters = OmegaConf.to_container(
        args.hyperparameters, resolve=True)
    subfolders = glob.glob(
        os.path.join(args.paths.base_dir,
                     f"tmp_results/{args.experiment}/**/run_*/"),
        recursive=True,
    )

    for subfolder in subfolders:

        relative_dir = subfolder.split("tmp_results")[-1][1:-1]
        args.experiment = relative_dir.split("/")[0]
        args.trnsf_experiment = args.experiment

        hyperparam = {
            "_".join(group.split("_")[:-1]): group.split("_")[-1]
            for group in relative_dir[len(args.experiment) + 1:].split("/")
        }

        curr_dflt_hyperparameters = dflt_hyperparameters.copy()
        curr_dflt_hyperparameters.update(hyperparam)

        hyperparam_path = hyperparam_to_path(curr_dflt_hyperparameters)
        paths = format_container(args.paths, dict(
            hyperparam_path=hyperparam_path))

        # remove the run_ as it will always be 0 in paths
        new_subfolder = "run_".join(
            paths["chckpnt_dirnames"][0].split("run_")[:-1])
        # remove rtailing slash if exist
        new_subfolder = new_subfolder.rstrip("/")

        if new_subfolder == subfolder:
            continue
        else:
            os.makedirs(
                new_subfolder.rsplit("/", 1)[0], exist_ok=True
            )  # make sure all folder until last exist

        shutil.move(subfolder, new_subfolder)