Source code for PyMAIA_scripts.PyMAIA_downsample_modality

#!/usr/bin/env python

import datetime
import json
import os
from argparse import ArgumentParser, RawTextHelpFormatter
from pathlib import Path
from textwrap import dedent

from PyMAIA.utils.file_utils import subfolders
from PyMAIA.utils.log_utils import add_verbosity_options_to_argparser
from PyMAIA.utils.volume_utils import resample_image

TIMESTAMP = "{:%Y-%m-%d_%H-%M-%S}".format(datetime.datetime.now())

DESC = dedent(
    """
    Script to downsample the modality of a given NIFTI dataset, using another modality as reference.
    """  # noqa: E501
)
EPILOG = dedent(
    """
    Example call:
    ::
        {filename}  --data-folder /PATH/TO/NIFTI_DATASET --input-modality _CT.nii.gz --ref-modality _PET.nii.gz --output-modality _downsampled_CT.nii.gz
    """.format(  # noqa: E501
        filename=Path(__file__).stem
    )
)


[docs] def get_arg_parser(): pars = ArgumentParser(description=DESC, epilog=EPILOG, formatter_class=RawTextHelpFormatter) pars.add_argument( "--data-folder", type=str, required=True, help="Patient NIFTI dataset folder.", ) pars.add_argument( "--input-modality", type=str, required=True, help="Input modality suffix.", ) pars.add_argument( "--ref-modality", type=str, required=True, help="Reference modality suffix.", ) pars.add_argument( "--output-modality", type=str, required=True, help="Output modality suffix.", ) add_verbosity_options_to_argparser(pars) return pars
[docs] def main(): parser = get_arg_parser() arguments = vars(parser.parse_args()) subjects = subfolders(arguments["data_folder"], join=False) input_modality = arguments["input_modality"] ref_modality = arguments["ref_modality"] output_modality = arguments["output_modality"] for subject in subjects: input_filename = os.path.join(arguments["data_folder"], subject, str(subject + input_modality)) ref_filename = os.path.join(arguments["data_folder"], subject, str(subject + ref_modality)) output_filename = os.path.join(arguments["data_folder"], subject, str(subject + output_modality)) resample_image(input_filename, ref_filename, output_filename) print("Subject: ", subject, " downsampling done.")
if __name__ == "__main__": main()