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,