diff --git a/src/ptbench/engine/visualizer.py b/src/ptbench/engine/visualizer.py index b149f3ea329633210b913093a076aa24f62a4fcb..593b19dc6b85e2e28e9285fb076b43b04b7157e8 100644 --- a/src/ptbench/engine/visualizer.py +++ b/src/ptbench/engine/visualizer.py @@ -115,7 +115,10 @@ def run( for samples in tqdm(data_loader, desc="batches", leave=False, disable=None): includes_bboxes = True - if samples[1]["label"].item() == 0 or "radsign_bboxes" not in samples[1]: + if ( + samples[1]["label"].item() == 0 + or "radsign_bboxes" not in samples[1] + ): includes_bboxes = False else: gt_bboxes = samples[1]["radsign_bboxes"] @@ -124,10 +127,14 @@ def run( names = samples[1]["name"] - if visualize_groundtruth and not includes_bboxes and samples[1]["label"].item() == 1: - logger.warning( - f'Sample "{names[0]}" does not have bounding box information. No ground truth bounding boxes can be visualized.' - ) + if ( + visualize_groundtruth + and not includes_bboxes + and samples[1]["label"].item() == 1 + ): + logger.warning( + f'Sample "{names[0]}" does not have bounding box information. No ground truth bounding boxes can be visualized.' + ) for target_class in target_classes: input_base_path = ( @@ -152,9 +159,7 @@ def run( # Draw bounding boxes on the image if visualize_groundtruth and includes_bboxes: - img_with_boxes = draw_boxes_on_image( - img_with_boxes, gt_bboxes - ) + img_with_boxes = draw_boxes_on_image(img_with_boxes, gt_bboxes) # show_cam_on_image expects the img to be between [0, 1] rgb_img = img_with_boxes / 255.0 diff --git a/src/ptbench/scripts/calculate_road.py b/src/ptbench/scripts/calculate_road.py index 708e7254eb0d9bc8378a3a8e7d28cc161c372b96..2265ce9c86ce0bd763a5a4461fb8bce0c4b2b320 100644 --- a/src/ptbench/scripts/calculate_road.py +++ b/src/ptbench/scripts/calculate_road.py @@ -300,8 +300,8 @@ def calculate_road( """ from ..engine.device import DeviceManager - from .utils import save_sh_command from ..engine.road_calculator import run + from .utils import save_sh_command save_sh_command(output_folder / "command.sh") @@ -311,8 +311,8 @@ def calculate_road( datamodule.set_chunk_size(batch_size, 1) datamodule.drop_incomplete_batch = False - #datamodule.cache_samples = cache_samples - #datamodule.parallel = parallel + # datamodule.cache_samples = cache_samples + # datamodule.parallel = parallel datamodule.model_transforms = model.model_transforms datamodule.prepare_data() @@ -349,7 +349,7 @@ def calculate_road( csv_files, csv_writers = prepare_csv_writers( output_folder, vis_type, k, num_classes=0 ) - + logger.info(f"Calculating ROAD scores for '{k}' set...") run( diff --git a/src/ptbench/scripts/comparevis.py b/src/ptbench/scripts/comparevis.py index 08eebc129ad08b4020df4d21f7025b4d63dfc904..cdec4ad7f05b7a12f5650151d202ad69a364eb65 100644 --- a/src/ptbench/scripts/comparevis.py +++ b/src/ptbench/scripts/comparevis.py @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch> +# +# SPDX-License-Identifier: GPL-3.0-or-later + import os import click diff --git a/src/ptbench/scripts/evaluate_saliencymaps.py b/src/ptbench/scripts/evaluate_saliencymaps.py index e9cc72a9c22c088829ac0a32b65de155a64414a2..6f9312315e7bd378e0821351b07f0bbd3dbd630c 100644 --- a/src/ptbench/scripts/evaluate_saliencymaps.py +++ b/src/ptbench/scripts/evaluate_saliencymaps.py @@ -89,7 +89,7 @@ def prepare_csv_writers(input_folder, dataset_split): "-i", help="Path to the folder containing the saliency maps for a specific visualization type.", required=True, - type=click.Path( + type=click.Path( file_okay=False, dir_okay=True, writable=True, @@ -112,15 +112,15 @@ def evaluate_saliencymaps( Calculates them for each target class and split of the dataset. """ - from .utils import save_sh_command from ..engine.saliencymap_evaluator import run + from .utils import save_sh_command save_sh_command(input_folder / "command.sh") datamodule.set_chunk_size(1, 1) datamodule.drop_incomplete_batch = False - #datamodule.cache_samples = cache_samples - #datamodule.parallel = parallel + # datamodule.cache_samples = cache_samples + # datamodule.parallel = parallel datamodule.model_transforms = model.model_transforms datamodule.prepare_data() diff --git a/src/ptbench/scripts/evaluatevis.py b/src/ptbench/scripts/evaluatevis.py index e98dcad992960f8cb59b199b661591647412fbc1..ff67b7020fbea38d8bc4dc7a0ec0cc10fa1628b3 100644 --- a/src/ptbench/scripts/evaluatevis.py +++ b/src/ptbench/scripts/evaluatevis.py @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch> +# +# SPDX-License-Identifier: GPL-3.0-or-later + import click from clapper.click import verbosity_option diff --git a/src/ptbench/scripts/generate_saliencymaps.py b/src/ptbench/scripts/generate_saliencymaps.py index 411ac0d7f327b3e8d787857b5c0799dac92c00cf..0b741d306b87b2aafd3d6869ab10c059c65a7d03 100644 --- a/src/ptbench/scripts/generate_saliencymaps.py +++ b/src/ptbench/scripts/generate_saliencymaps.py @@ -2,9 +2,10 @@ # # SPDX-License-Identifier: GPL-3.0-or-later -import click import pathlib +import click + from clapper.click import ConfigCommand, ResourceOption, verbosity_option from clapper.logging import setup from pytorch_grad_cam import ( @@ -229,8 +230,8 @@ def generate_saliencymaps( on visualization technique and model.""" from ..engine.device import DeviceManager - from .utils import save_sh_command from ..engine.saliencymap_generator import run + from .utils import save_sh_command save_sh_command(output_folder / "command.sh") @@ -240,8 +241,8 @@ def generate_saliencymaps( datamodule.set_chunk_size(batch_size, 1) datamodule.drop_incomplete_batch = False - #datamodule.cache_samples = cache_samples - #datamodule.parallel = parallel + # datamodule.cache_samples = cache_samples + # datamodule.parallel = parallel datamodule.model_transforms = model.model_transforms datamodule.prepare_data() diff --git a/src/ptbench/scripts/visualize.py b/src/ptbench/scripts/visualize.py index 96bf4b0491c340de398016162f1f9b0aec1a4f4b..e26a2d464fed80534e0b9efb1c993ecc4d7ad481 100644 --- a/src/ptbench/scripts/visualize.py +++ b/src/ptbench/scripts/visualize.py @@ -45,7 +45,7 @@ logger = setup(__name__.split(".")[0], format="%(levelname)s: %(message)s") "-i", help="Path to the folder containing the saliency maps for a specific visualization type.", required=True, - type=click.Path( + type=click.Path( file_okay=False, dir_okay=True, writable=True, @@ -117,15 +117,15 @@ def visualize( ) -> None: """Generates heatmaps for input CXRs based on existing saliency maps.""" - from .utils import save_sh_command from ..engine.visualizer import run + from .utils import save_sh_command save_sh_command(input_folder / "command.sh") datamodule.set_chunk_size(1, 1) datamodule.drop_incomplete_batch = False - #datamodule.cache_samples = cache_samples - #datamodule.parallel = parallel + # datamodule.cache_samples = cache_samples + # datamodule.parallel = parallel datamodule.model_transforms = model.model_transforms datamodule.prepare_data() @@ -152,4 +152,4 @@ def visualize( else: logger.warning( 'No "datadir" found in dataset. No visualizations can be generated.' - ) \ No newline at end of file + ) diff --git a/src/ptbench/utils/cam_utils.py b/src/ptbench/utils/cam_utils.py index 156993426db9e5763d20aff546763ec65d445687..f379e644d7fb1a73059fcc6597ee77cb633ec444 100644 --- a/src/ptbench/utils/cam_utils.py +++ b/src/ptbench/utils/cam_utils.py @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch> +# +# SPDX-License-Identifier: GPL-3.0-or-later + import glob import os import shutil diff --git a/tests/test_11k.py b/tests/test_11k.py index 2bba74dcfbfb056987a9c5ccb26f7280e0938248..2812c0fd807b0f9c1351eebe006892d6a296fcfe 100644 --- a/tests/test_11k.py +++ b/tests/test_11k.py @@ -1,7 +1,6 @@ # SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch> # # SPDX-License-Identifier: GPL-3.0-or-later - """Tests for TBX11K simplified dataset split 1.""" import pytest diff --git a/tests/test_11k_RS.py b/tests/test_11k_RS.py index 601bbc4628ea752f3ad52b78cedecd64a4b215dc..1433b1306717a3f8666468a30a7d5c4dbb6e46ee 100644 --- a/tests/test_11k_RS.py +++ b/tests/test_11k_RS.py @@ -1,7 +1,6 @@ # SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch> # # SPDX-License-Identifier: GPL-3.0-or-later - """Tests for Extended TBX11K simplified dataset split 1.""" import pytest diff --git a/tests/test_11k_v2.py b/tests/test_11k_v2.py index 12662886ed4eea1a2fa654c80b9666c53e5af515..01e1f37f8171dd3e553101e4aed6f0d41d077285 100644 --- a/tests/test_11k_v2.py +++ b/tests/test_11k_v2.py @@ -1,7 +1,6 @@ # SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch> # # SPDX-License-Identifier: GPL-3.0-or-later - """Tests for TBX11K simplified dataset split 2.""" import pytest diff --git a/tests/test_11k_v2_RS.py b/tests/test_11k_v2_RS.py index c6ac2464324aee1aa45e185c13380e301a949597..a58e6abb1cf2e976d2cee125ecb6b58408adfb3d 100644 --- a/tests/test_11k_v2_RS.py +++ b/tests/test_11k_v2_RS.py @@ -1,7 +1,6 @@ # SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch> # # SPDX-License-Identifier: GPL-3.0-or-later - """Tests for Extended TBX11K simplified dataset split 2.""" import pytest diff --git a/tests/test_cam_utils.py b/tests/test_cam_utils.py index 328be392ba52d7453a1f17e9265e91b49a4c6673..5e4198fd9f2a18a7bdc534ef3fc232e18b9ac69e 100644 --- a/tests/test_cam_utils.py +++ b/tests/test_cam_utils.py @@ -1,7 +1,6 @@ # SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch> # # SPDX-License-Identifier: GPL-3.0-or-later - """Tests for the cam_utils script.""" import cv2 diff --git a/tests/test_comparevis.py b/tests/test_comparevis.py index 4540ea504136bfff541d0c6c7c93f9a39b02a255..b1d8933f63e1bd5d3ea509eb55e3423e3d7adbd8 100644 --- a/tests/test_comparevis.py +++ b/tests/test_comparevis.py @@ -1,7 +1,6 @@ # SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch> # # SPDX-License-Identifier: GPL-3.0-or-later - """Tests for the comparevis script.""" import shutil diff --git a/tests/test_visualizer.py b/tests/test_visualizer.py index 1341df98740a91a2858e0c9098714a9a7b5c7828..46d5c7eabebd1c69ca2004d82fb40056ae89fd31 100644 --- a/tests/test_visualizer.py +++ b/tests/test_visualizer.py @@ -1,5 +1,7 @@ +# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch> +# +# SPDX-License-Identifier: GPL-3.0-or-later import numpy as np -import pytest from ptbench.engine.visualizer import ( _compute_avg_saliency_focus,