Spaces:
Paused
Paused
File size: 2,110 Bytes
5fb57bc a1a4d73 5fb57bc 814f7d2 5fb57bc | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | """Installed command-line interface for FlowPK workflows."""
from __future__ import annotations
import argparse
import sys
from importlib import import_module
from pathlib import Path
from typing import Sequence
from pff_pk.training.runtime import bootstrap
_COMMANDS = {
"run": "pff_pk.pipeline.experiment",
"train": "pff_pk.pipeline.train",
"posttrain": "pff_pk.pipeline.curriculum",
"consolidate": "pff_pk.pipeline.consolidate",
}
_EVALUATION_COMMANDS = {
"annotate-lenuzza-censoring": "pff_pk.commands.annotate_lenuzza_censoring",
"sample-generation": "pff_pk.commands.generate_empirical_samples",
"plot-trajectories": "pff_pk.commands.plot_empirical_trajectories_from_samples",
"plot-vpc": "pff_pk.commands.plot_empirical_vpc_from_samples",
"plot-tsne": "pff_pk.commands.plot_empirical_tsne",
"evaluate-generation": "pff_pk.commands.compare_generation_models",
"evaluate-validation": "pff_pk.commands.evaluate_validation_bank",
"evaluate-vpc": "pff_pk.commands.evaluate_pharmpy_vpc",
"upload-vpc": "pff_pk.commands.upload_vpc_artifacts",
"upload-empirical": "pff_pk.commands.upload_empirical_artifacts",
}
def build_parser() -> argparse.ArgumentParser:
parser = argparse.ArgumentParser(
prog="pff-pk",
description="Train, sample, evaluate, plot, and publish FlowPK runs.",
)
parser.add_argument(
"command",
choices=(*_COMMANDS, *_EVALUATION_COMMANDS),
help="workflow to run",
)
parser.add_argument("arguments", nargs=argparse.REMAINDER)
return parser
def main(argv: Sequence[str] | None = None) -> None:
args = build_parser().parse_args(argv)
bootstrap(Path.cwd())
if args.command in _COMMANDS:
module = import_module(_COMMANDS[args.command])
module.main(args.arguments)
return
module = import_module(_EVALUATION_COMMANDS[args.command])
previous = sys.argv
try:
sys.argv = [f"pff-pk {args.command}", *args.arguments]
module.main()
finally:
sys.argv = previous
if __name__ == "__main__":
main()
|