def create_parser()

in vihds/run_xval.py [0:0]


def create_parser(with_split: bool):
    parser = argparse.ArgumentParser(description="VI-HDS")
    parser.add_argument("yaml", type=str, help="Name of yaml spec file")
    parser.add_argument(
        "--experiment",
        type=str,
        default="unnamed",
        help="Name for experiment, also location of tensorboard and saved results",
    )
    parser.add_argument("--seed", type=int, default=None, help="Random seed (default: 0)")
    parser.add_argument("--epochs", type=int, default=1000, help="Training epochs")
    parser.add_argument("--test_epoch", type=int, default=20, help="Frequency of calling test")
    parser.add_argument("--plot_epoch", type=int, default=100, help="Frequency of plotting figures")
    parser.add_argument(
        "--train_samples", type=int, default=200, help="Number of samples from q, per datapoint, during training",
    )
    parser.add_argument(
        "--test_samples", type=int, default=1000, help="Number of samples from q, per datapoint, during testing",
    )
    parser.add_argument("--dreg", type=bool, default=True, help="Use DReG estimator")
    parser.add_argument(
        "--precision_hidden_layers", type=int, default=None, help="Number of hidden layers to use in neural precisions",
    )
    parser.add_argument(
        "--verbose", action="store_true", default=False, help="Print more information about parameter setup",
    )
    parser.add_argument("--gpu", type=int, default=None, help="Use GPU device (default None is CPU mode")
    if with_split:
        # We make --heldout (heldout device) and --split mutually exclusive. Really we'd like to say it's allowed
        # to specify *either* --heldout *or* --split and/or --folds, but argparse isn't expressive enough for that.
        # So if the user specifies --heldout and --folds, there won't be a complaint here, but --folds will be ignored.
        group = parser.add_mutually_exclusive_group()
        group.add_argument("--heldout", type=str, help="name of held-out device, e.g. R33S32_Y81C76")
        group.add_argument(
            "--split", type=int, default=1, help="Specify split in 1:folds for cross-validation",
        )
        group.add_argument(
            "--figures", action="store_true", default=False, help="Create figures (default: False)",
        )
    parser.add_argument("--folds", type=int, default=4, help="Cross-validation folds")
    return parser