Source code for Hive_scripts.Hive_extract_experiment_predictions
#!/usr/bin/env python
import json
from argparse import ArgumentParser, RawTextHelpFormatter
from distutils.dir_util import copy_tree
from pathlib import Path
from textwrap import dedent
# from old_src.evaluation import get_results_summary_filepath
from Hive.utils.file_utils import subfolders
from Hive.utils.log_utils import get_logger, add_verbosity_options_to_argparser, log_lvl_from_verbosity_args
DESC = dedent(
"""
Script used to copy and save Experiment predictions, from the original experiment folder to the specified output folder.
""" # noqa: E501 W291 W605
)
EPILOG = dedent(
"""
Example call:
::
{filename} --config-file /path/to/config_file.json --output-experiment-folder /home/Experiment_Predictions
""".format( # noqa: E501 W291
filename=Path(__file__).name
)
)
[docs]def get_arg_parser():
pars = ArgumentParser(description=DESC, epilog=EPILOG, formatter_class=RawTextHelpFormatter)
pars.add_argument(
"--config-file",
type=str,
required=True,
help="File path for the configuration dictionary, used to retrieve experiment settings ",
)
pars.add_argument(
"--output-experiment-folder",
type=str,
required=True,
help="Folder path to set the output experiment folder.",
)
add_verbosity_options_to_argparser(pars)
return pars
[docs]def main():
parser = get_arg_parser()
args = vars(parser.parse_args())
logger = get_logger( # NOQA: F841
name=Path(__file__).name,
level=log_lvl_from_verbosity_args(args),
)
with open(args["config_file"]) as json_file:
config_dict = json.load(json_file)
output_path = args["output_experiment_folder"]
sections = ["validation"]
for section in sections:
prediction_directory_out = Path(output_path).joinpath(
"Task" + config_dict["Task_ID"] + "_{}".format(config_dict["Task_Name"]), section
)
prediction_directory_out.mkdir(parents=True, exist_ok=True)
prediction_directory = Path(config_dict["results_folder"]).joinpath(
"Task" + config_dict["Task_ID"] + "_{}".format(config_dict["Task_Name"]),
"RetinaUNetV001_D3V001_3d",
"consolidated",
"val_predictions_nii",
)
if prediction_directory.is_dir():
subject_predictions = subfolders(prediction_directory, join=False)
for subject_prediction in subject_predictions:
copy_tree(
str(Path(prediction_directory).joinpath(subject_prediction)),
str(Path(prediction_directory_out).joinpath(subject_prediction)),
)
if __name__ == "__main__":
main()