def build_command()

in agents/run_sweep_file.py [0:0]


def build_command(base_command, parameter_vals_dict, parameter_fmt_names):
    for param in MANDATORY_PARAMETERS.keys():
        if not param in parameter_vals_dict:
            if param in DEFAULT_PARAMETERS:
                print("using default value")
                parameter_vals_dict[param] = [DEFAULT_PARAMETERS[param]]
            else:
                raise ValueError(f"Missing Parameter {param}")

    tb = parameter_vals_dict["tensorboard"][0]
    dir_ = parameter_vals_dict["dir"][0]
    parameter_fmt_names.update(MANDATORY_PARAMETERS)
    for key, values in parameter_vals_dict.items():
        if len(values) > 1:
            if not all([parameter_fmt_names[key] in i for i in (dir_, tb)]):
                raise ValueError(
                    "Runs with different " + key +
                    " will overwrite each other in tensorboard or savedir")

    keys, values = zip(*parameter_vals_dict.items())
    commands = []
    table = []
    for value_combination in product(*values):
        command = base_command
        table.append({"aliases": tuple(sorted(parameter_fmt_names.items()))})
        instance_parameters = dict(zip(keys, value_combination))
        for key, value in instance_parameters.items():
            value = subsitute_tokens(value, parameter_fmt_names, keys,
                                     value_combination)
            table[-1][key] = value
            if key == "fmt":
                continue
            if key in MANDATORY_PARAMETERS:
                if key == "dqn-rank-size":
                    if value == "optimal":
                        command = command.replace("RANKSIZE", optimal_rank_sizes[instance_parameters["eval-setup"]])
                    else:
                        command = command.replace("RANKSIZE", value)
                else:
                    command = command.replace(MANDATORY_PARAMETERS[key], str(value))
            else:
                command += " --" + key + "=" + str(value)
        # Default value params
        # command = command.replace("TEST", "0")
        # command.replace("BATCHSIZE", "512")
        commands.append(command)

    return commands, table