"""Command-line interface for downloading MONAI Physio example data."""
from __future__ import annotations
import argparse
import sys
from pathlib import Path
from typing import Optional
from ..download_data import DownloadData
SLICER_HEART_CT = "Slicer-Heart-CT"
KCL_HEART_MODEL = "KCL-Heart-Model"
CHOP_VALVE4D = "CHOP-Valve4D"
CHEST_CT = "Chest-CT"
TCIA_4D_LUNG = "TCIA-4DLung"
DUKE_HEART_4D_LABELMAPS = "Duke-Heart-4DLabelmaps"
PHYSICSNEMO_MGN_LUNG_MOTION = "PhysicsNeMo-MGN-Lung-Motion"
[docs]
def main(argv: Optional[list[str]] = None) -> int:
"""Download a supported MONAI Physio example dataset."""
parser = argparse.ArgumentParser(
description="Download MONAI Physio example data",
formatter_class=argparse.RawDescriptionHelpFormatter,
epilog=f"""
Examples:
%(prog)s {SLICER_HEART_CT} --directory data/Slicer-Heart-CT
%(prog)s {KCL_HEART_MODEL} --directory data/KCL-Heart-Model
%(prog)s {CHOP_VALVE4D} --directory data/CHOP-Valve4D
%(prog)s {CHEST_CT} --directory data/Chest-CT
%(prog)s {TCIA_4D_LUNG} --directory data/TCIA-4DLung
%(prog)s {DUKE_HEART_4D_LABELMAPS} --directory data/Duke-Heart-4DLabelmaps
%(prog)s {PHYSICSNEMO_MGN_LUNG_MOTION} --directory tutorials/network_weights
""",
)
parser.add_argument(
"data_name",
nargs="?",
choices=[
SLICER_HEART_CT,
KCL_HEART_MODEL,
CHOP_VALVE4D,
CHEST_CT,
TCIA_4D_LUNG,
DUKE_HEART_4D_LABELMAPS,
PHYSICSNEMO_MGN_LUNG_MOTION,
],
default=None,
help="Dataset to download",
)
parser.add_argument(
"--directory",
default=None,
help="Directory where data will be stored (default: data/<data_name>)",
)
args = parser.parse_args(argv)
if args.data_name is None:
parser.print_help()
return 1
default_directory = (
"tutorials/network_weights"
if args.data_name == PHYSICSNEMO_MGN_LUNG_MOTION
else f"data/{args.data_name}"
)
directory = args.directory or default_directory
output_dir = Path(directory)
if args.data_name == SLICER_HEART_CT:
data_file = DownloadData.DownloadSlicerHeartCTData(output_dir)
print(f"Downloaded {SLICER_HEART_CT} to: {data_file}")
return 0
if args.data_name == KCL_HEART_MODEL:
data_dir = DownloadData.DownloadKCLHeartModelData(output_dir)
print(f"Downloaded {KCL_HEART_MODEL} to: {data_dir}")
return 0
if args.data_name == CHOP_VALVE4D:
data_dir = DownloadData.DownloadCHOPValve4DData(output_dir)
print(f"Downloaded {CHOP_VALVE4D} to: {data_dir}")
return 0
if args.data_name == CHEST_CT:
data_file = DownloadData.DownloadChestCTData(output_dir)
print(f"Downloaded {CHEST_CT} to: {data_file}")
return 0
if args.data_name == TCIA_4D_LUNG:
data_dir = DownloadData.DownloadTCIA4DLungData(output_dir)
print(f"Downloaded {TCIA_4D_LUNG} to: {data_dir}")
return 0
if args.data_name == DUKE_HEART_4D_LABELMAPS:
data_dir = DownloadData.DownloadDukeHeart4DLabelmapsData(output_dir)
print(f"Downloaded {DUKE_HEART_4D_LABELMAPS} to: {data_dir}")
return 0
if args.data_name == PHYSICSNEMO_MGN_LUNG_MOTION:
data_dir = DownloadData.DownloadPhysicsNeMoMGNLungMotionData(output_dir)
print(f"Downloaded {PHYSICSNEMO_MGN_LUNG_MOTION} to: {data_dir}")
return 0
parser.error(f"Unsupported dataset: {args.data_name}")
if __name__ == "__main__":
sys.exit(main())