Source code for monai_physio.cli.download_data

"""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())