diff --git a/helpers/visceral_make_splits.py b/helpers/visceral_make_splits.py
new file mode 100644
index 0000000000000000000000000000000000000000..1cbe3f56f0bf101555265ad22743dd64a1c45092
--- /dev/null
+++ b/helpers/visceral_make_splits.py
@@ -0,0 +1,118 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+"""Generate visceral default JSON dataset for 3d binary classification tasks in mednet.
+
+Arguments of the scripts are as follow:
+    root-of-preprocessed-visceral-dataset
+        Full path to the root of the  preprocessed visceral dataset.
+        Filenames in the resulting json are relative to this path.
+        See output format below.
+    output-folder
+        Full path to the folder where to output the default.json file containing the default split of data.
+    organ_1_id
+        Integer representing the ID of the first organ to include in the split dataset.
+        This organ will be labeled as 0 for the binary classification task.
+        For example, 237 corresponds to bladder.
+    organ_2_id
+        Integer representing the ID of the second organ to include in the split dataset.
+        This organ will be labeled as 1 for the binary classification task.
+        For example, 237 corresponds to bladder.
+
+Output format is the following:
+
+.. code:: json
+
+   {
+     "train": [
+       [
+         "<size>/<filename>",
+         # label is one of:
+         # 0: organ_1 / 1: organ_2
+         <label>,
+       ],
+       ...
+     ],
+     "validation": [
+       # same format as for train
+       ...
+     ]
+     "test": [
+       # same format as for train
+       ...
+     ]
+"""
+
+import json
+import os
+import pathlib
+import sys
+
+from sklearn.model_selection import train_test_split
+
+
+def split_files(
+    files: list[str],
+    train_size: float = 0.7,
+    test_size: float = 0.2,
+    validation_size: float = 0.1,
+):
+    train_files, temp_files = train_test_split(files, test_size=(1 - train_size))
+    test_files, validation_files = train_test_split(
+        temp_files, test_size=(validation_size / (test_size + validation_size))
+    )
+    return train_files, test_files, validation_files
+
+
+def save_to_json(
+    train_files: list[str],
+    test_files: list[str],
+    validation_files: list[str],
+    output_file: str,
+    organ_1_id: str,
+):
+    data = {
+        "train": [
+            [filename, 0 if organ_1_id in filename else 1] for filename in train_files
+        ],
+        "test": [
+            [filename, 0 if organ_1_id in filename else 1] for filename in test_files
+        ],
+        "validation": [
+            [filename, 0 if organ_1_id in filename else 1]
+            for filename in validation_files
+        ],
+    }
+
+    with pathlib.Path(output_file).open("w") as json_file:
+        json.dump(data, json_file, indent=2)
+
+
+def main():
+    if len(sys.argv) != 6:
+        print(__doc__)
+        print(
+            f"Usage: python3 {sys.argv[0]} <root-of-preprocessed-visceral-dataset> <output-folder> <organ_1_id> <organ_2_id> <size>"
+        )
+        sys.exit(0)
+
+    root_folder = sys.argv[1]
+    output_folder = sys.argv[2]
+    organ_1_id = sys.argv[3]
+    organ_2_id = sys.argv[4]
+    size = sys.argv[5]
+    output_file = pathlib.Path(output_folder) / "default.json"
+    input_folder = pathlib.Path(root_folder) / size
+    files = [
+        f"{size}/{file}"
+        for file in os.listdir(input_folder)
+        if organ_1_id in file or organ_2_id in file
+    ]
+    train_files, test_files, validation_files = split_files(files)
+
+    save_to_json(train_files, test_files, validation_files, output_file, organ_1_id)
+    print(f"Data saved to {output_file}")
+
+
+if __name__ == "__main__":
+    main()
diff --git a/helpers/visceral_preprocess.py b/helpers/visceral_preprocess.py
new file mode 100644
index 0000000000000000000000000000000000000000..3391f5128db47970f3948cfd558388e95566bbe2
--- /dev/null
+++ b/helpers/visceral_preprocess.py
@@ -0,0 +1,180 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+"""Preprocess visceral dataset to prepare volume cubes for organ classification using 3D cnn.
+Example of use: 'python visceral_preprocess.py /idiap/temp/ojimenez/previous-projects/VISCERAL /idiap/home/ypannatier/visceral/preprocessed 237 16 '.
+
+Arguments of the scripts are as follow:
+    root-of-visceral-dataset
+        Full path to the root of the visceral dataset.
+    output_folder_path
+        Full path to the folder where the prepared cubes will be saved.
+        Note that the script will create a subfolder corresponding to the desired size of cube to avoid mixing volumes of different sizes.
+    organ_id
+        Integer representing the ID of the organ to process in the visceral dataset. For example, 237 corresponds to bladder.
+    size
+        Integer representing the size of the volume cube that will be output. Each volume will be of dimension SIZExSIZExSIZE.
+"""
+
+import os
+import pathlib
+import sys
+
+import torch
+import torchio as tio
+
+
+def get_mask_cube(mask_path: str, size: int) -> torch.Tensor:
+    """Create a mask of dimension SIZExSIZExSIZE from the input mask at the center of the non-zero area.
+
+    Parameters
+    ----------
+    mask_path
+        A string representing the full path to the mask file.
+    size
+        An integer representing the size of the cube.
+
+    Returns
+    -------
+    Tensor
+        The mask tensor representing a volume of dimension SIZExSIZExSIZE.
+    """
+    mask_image = tio.ScalarImage(mask_path)
+    mask_data = mask_image.data.bool().squeeze()
+    mask_image.unload()
+    ones_coords = torch.nonzero(mask_data)
+    center = torch.mean(ones_coords.float(), dim=0).long()
+    half_size = int(size) // 2
+    start_coords = center - half_size
+    end_coords = center + half_size
+    result = torch.zeros_like(mask_data)
+    slices = [
+        slice(max(0, start), min(end, dim))
+        for start, end, dim in zip(start_coords, end_coords, mask_data.shape)
+    ]
+    result[slices[0], slices[1], slices[2]] = 1
+    return result
+
+
+def get_masks(mask_paths: list[str], filters: list[str], volume_ids: list[str]):
+    """Find the list of usable masks corresponding to the desired organ.
+
+    Parameters
+    ----------
+    mask_paths
+        A list of strings representing the folders in which to search for masks.
+    filters
+        A list of strings corresponding to a substring of mask's file name. A valid mask must match one of the filters.
+        Each filter should contains the organ id.
+        Example: To get the white/black CT scans corresponding to an organ: "_1_CT_wb_{organ_id}".
+    volume_ids
+        A list containing the list of all patient ids retrieved from the volume dataset.
+        Valid masks must start by one of entry of volume ids.
+
+    Returns
+    -------
+    The list of valid masks as a list of strings. Each list contains 2 entries. First, the path to the mask folder, second the mask file name.
+    """
+    masks = []
+    for mask_path in mask_paths:
+        for mask_filter in filters:
+            available_masks = os.listdir(mask_path)
+            for mask in available_masks:
+                if (
+                    mask.endswith(".nii.gz")
+                    and mask_filter in mask
+                    and mask.split("_")[0] in volume_ids
+                ):
+                    masks.append([mask_path, mask])
+    return masks
+
+
+def main():
+    if len(sys.argv) != 5:
+        print(__doc__)
+        print(
+            f"Usage: python3 {sys.argv[0]} <root-of-visceral-dataset> <output_folder_path> <organ_id> <size>"
+        )
+        sys.exit(0)
+
+    root_path = sys.argv[1]
+    output_path = sys.argv[2]
+    organ_id = sys.argv[3]
+    size = sys.argv[4]
+
+    filters = [f"_1_CTce_ThAb_{organ_id}", f"_1_CT_wb_{organ_id}", f"_1_{organ_id}"]
+
+    annot_2_mask_path = (
+        pathlib.Path(root_path)
+        / "annotations"
+        / "Anatomy2"
+        / "anat2-trainingset"
+        / "Anat2_Segmentations"
+    )
+
+    annot_3_mask_path = (
+        pathlib.Path(root_path)
+        / "annotations"
+        / "Anatomy3"
+        / "Visceral-QC-testset"
+        / "qc-anat3-testset-segmentations"
+    )
+
+    silver_corpus_mask_path = (
+        pathlib.Path(root_path)
+        / "annotations"
+        / "SilverCorpus"
+        / "AnatomySilverCorpus"
+        / "BinarySegmentations"
+    )
+
+    mask_paths = [annot_2_mask_path, annot_3_mask_path, silver_corpus_mask_path]
+    volume_path = (
+        pathlib.Path(root_path)
+        / "volumes_for_annotation"
+        / "GeoS_oriented_Volumes(Annotators)"
+    )
+    output_size_path = pathlib.Path(output_path) / size
+
+    # Ensure required output folders exist
+    output_size_path.mkdir(parents=True, exist_ok=True)
+
+    volumes = os.listdir(volume_path)
+    volume_ids = [volume.split("_")[0] for volume in volumes]
+
+    masks = get_masks(mask_paths, filters, volume_ids)
+
+    print(f"Found {len(masks)} volumes to process...")
+    print("Generating volumes...")
+    for i, mask in enumerate(masks):
+        if i % 10 == 0:
+            print(f"Generated volumes: {i}/{len(masks)}")
+
+        patient_id = f'{mask[1].split("_")[0]}_1'
+        full_path = pathlib.Path(mask[0]) / mask[1]
+        volume_name = [volume for volume in volumes if patient_id in volume][0]
+        volume_full_path = pathlib.Path(volume_path) / volume_name
+        output_full_path = pathlib.Path(output_size_path) / mask[1]
+
+        if pathlib.Path.exists(output_full_path):
+            continue
+
+        try:
+            mask_cube = get_mask_cube(full_path, size)
+
+            volume_image = tio.ScalarImage(volume_full_path)
+            volume_data = volume_image.data.squeeze()
+            volume_image.unload()
+            volume_data = (
+                volume_data[mask_cube == 1]
+                .reshape(int(size), int(size), int(size))
+                .unsqueeze(0)
+            )
+            cropped_volume = tio.ScalarImage(tensor=volume_data)
+            cropped_volume.save(output_full_path)
+        except Exception as e:
+            print(f"Error: {e} while processing {full_path}")
+
+
+if __name__ == "__main__":
+    main()
diff --git a/pixi.lock b/pixi.lock
index ec588a12e2e1d4cf8caaa0ade8459d5c5834d85a..b992a9e41a8834d01f8eb042c0a07369879372cd 100644
--- a/pixi.lock
+++ b/pixi.lock
@@ -65,10 +65,12 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/double-conversion-3.3.0-h59595ed_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/editables-0.5-pyhd8ed1ab_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/linux-64/eigen-3.4.0-h00ab1b0_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.0-pyhd8ed1ab_2.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.2-h59595ed_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/ffmpeg-6.1.1-gpl_he44c6f3_112.conda
+      - conda: https://conda.anaconda.org/conda-forge/linux-64/fftw-3.3.10-nompi_hf1063bd_110.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.15.1-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/fmt-10.2.1-h00ab1b0_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2
@@ -112,6 +114,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.5-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.0-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.23.3-pyhd8ed1ab_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/noarch/humanize-4.9.0-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/hyperlink-21.0.0-pyhd3deb0d_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-73.2-h59595ed_0.conda
@@ -184,6 +187,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwy-1.1.0-h00ab1b0_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/libidn2-2.3.7-hd590300_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/linux-64/libitk-5.3.0-h26001f5_8.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/libjxl-0.10.2-hcae5a98_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/libkml-1.3.0-h01aab08_1018.conda
@@ -261,6 +265,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/linux-64/nettle-3.9.1-h7ab15ed_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.3-pyhd8ed1ab_1.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/nh3-0.2.17-py312h4b3b743_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/noarch/nibabel-5.2.1-pyha770c72_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/nspr-4.35-h27087fc_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/nss-3.100-hca3bf56_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda
@@ -326,6 +331,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/linux-64/secretstorage-3.3.3-py312h7900ff3_2.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-70.0.0-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/linux-64/simpleitk-2.3.1-py312h30efb56_2.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.0-pyhd8ed1ab_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.0-hdb0a2a9_1.conda
@@ -347,6 +353,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-w-1.0.0-pyhd8ed1ab_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.12.5-pyha770c72_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/noarch/torchio-0.19.7-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/torchmetrics-1.4.0.post0-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/pytorch/linux-64/torchvision-0.17.2-py312_cpu.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.66.4-pyhd8ed1ab_0.conda
@@ -454,10 +461,12 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.8-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/editables-0.5-pyhd8ed1ab_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/osx-arm64/eigen-3.4.0-h1995070_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.0-pyhd8ed1ab_2.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/expat-2.6.2-hebf3989_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ffmpeg-6.1.1-gpl_hc16618e_112.conda
+      - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fftw-3.3.10-nompi_h6637ab6_110.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.15.1-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fmt-10.2.1-h2ffa867_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2
@@ -496,6 +505,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.5-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.0-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.23.3-pyhd8ed1ab_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/noarch/humanize-4.9.0-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/hyperlink-21.0.0-pyhd3deb0d_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-73.2-hc8870d7_0.conda
@@ -558,6 +568,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libidn2-2.3.7-h93a5062_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.22.5-h8fbad5d_2.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-devel-0.22.5-h8fbad5d_2.conda
+      - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libitk-5.3.0-h5b48add_8.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjxl-0.10.2-h07599a0_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libkml-1.3.0-h1eb4d9f_1018.conda
@@ -618,6 +629,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nettle-3.9.1-h40ed0f5_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.3-pyhd8ed1ab_1.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nh3-0.2.17-py312h5280bc4_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/noarch/nibabel-5.2.1-pyha770c72_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nspr-4.35-hb7217d7_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nss-3.100-hc6e9f88_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda
@@ -679,6 +691,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.13.1-py312h14ffa8f_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-70.0.0-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/osx-arm64/simpleitk-2.3.1-py312h650e478_2.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.0-pyhd8ed1ab_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.0-hd04f947_1.conda
@@ -700,6 +713,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-w-1.0.0-pyhd8ed1ab_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.12.5-pyha770c72_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/noarch/torchio-0.19.7-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/torchmetrics-1.4.0.post0-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/pytorch/osx-arm64/torchvision-0.17.2-py312_cpu.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.66.4-pyhd8ed1ab_0.conda
@@ -816,11 +830,13 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/double-conversion-3.3.0-h59595ed_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/editables-0.5-pyhd8ed1ab_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/linux-64/eigen-3.4.0-h00ab1b0_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.0-pyhd8ed1ab_2.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.2-h59595ed_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/fancycompleter-0.9.1-py312h7900ff3_1007.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/ffmpeg-6.1.1-gpl_he44c6f3_112.conda
+      - conda: https://conda.anaconda.org/conda-forge/linux-64/fftw-3.3.10-nompi_hf1063bd_110.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.15.1-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/fmt-10.2.1-h00ab1b0_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2
@@ -865,6 +881,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.5-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.0-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.23.3-pyhd8ed1ab_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/noarch/humanize-4.9.0-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/hyperlink-21.0.0-pyhd3deb0d_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-73.2-h59595ed_0.conda
@@ -946,6 +963,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwy-1.1.0-h00ab1b0_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/libidn2-2.3.7-hd590300_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/linux-64/libitk-5.3.0-h26001f5_8.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/libjxl-0.10.2-hcae5a98_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/libkml-1.3.0-h01aab08_1018.conda
@@ -1029,6 +1047,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/linux-64/nettle-3.9.1-h7ab15ed_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.3-pyhd8ed1ab_1.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/nh3-0.2.17-py312h4b3b743_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/noarch/nibabel-5.2.1-pyha770c72_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/nspr-4.35-h27087fc_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/nss-3.100-hca3bf56_0.conda
@@ -1105,6 +1124,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/linux-64/secretstorage-3.3.3-py312h7900ff3_2.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-70.0.0-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/linux-64/simpleitk-2.3.1-py312h30efb56_2.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.0-pyhd8ed1ab_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.0-hdb0a2a9_1.conda
@@ -1141,6 +1161,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-w-1.0.0-pyhd8ed1ab_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.12.5-pyha770c72_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/noarch/torchio-0.19.7-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/torchmetrics-1.4.0.post0-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/pytorch/linux-64/torchvision-0.17.2-py312_cu121.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.66.4-pyhd8ed1ab_0.conda
@@ -1264,11 +1285,13 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.8-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/editables-0.5-pyhd8ed1ab_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/osx-arm64/eigen-3.4.0-h1995070_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.0-pyhd8ed1ab_2.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/expat-2.6.2-hebf3989_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fancycompleter-0.9.1-py312h81bd7bf_1007.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ffmpeg-6.1.1-gpl_hc16618e_112.conda
+      - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fftw-3.3.10-nompi_h6637ab6_110.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.15.1-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fmt-10.2.1-h2ffa867_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2
@@ -1308,6 +1331,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.5-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.0-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.23.3-pyhd8ed1ab_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/noarch/humanize-4.9.0-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/hyperlink-21.0.0-pyhd3deb0d_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-73.2-hc8870d7_0.conda
@@ -1373,6 +1397,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libidn2-2.3.7-h93a5062_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.22.5-h8fbad5d_2.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-devel-0.22.5-h8fbad5d_2.conda
+      - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libitk-5.3.0-h5b48add_8.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjxl-0.10.2-h07599a0_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libkml-1.3.0-h1eb4d9f_1018.conda
@@ -1436,6 +1461,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nettle-3.9.1-h40ed0f5_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.3-pyhd8ed1ab_1.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nh3-0.2.17-py312h5280bc4_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/noarch/nibabel-5.2.1-pyha770c72_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nspr-4.35-hb7217d7_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nss-3.100-hc6e9f88_0.conda
@@ -1506,6 +1532,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.13.1-py312h14ffa8f_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-70.0.0-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/osx-arm64/simpleitk-2.3.1-py312h650e478_2.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.0-pyhd8ed1ab_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.0-hd04f947_1.conda
@@ -1542,6 +1569,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-w-1.0.0-pyhd8ed1ab_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.12.5-pyha770c72_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/noarch/torchio-0.19.7-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/torchmetrics-1.4.0.post0-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/pytorch/osx-arm64/torchvision-0.17.2-py312_cpu.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.66.4-pyhd8ed1ab_0.conda
@@ -1651,9 +1679,11 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.14-pyh1a96a4e_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/double-conversion-3.3.0-h59595ed_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/linux-64/eigen-3.4.0-h00ab1b0_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.2-h59595ed_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/ffmpeg-6.1.1-gpl_he44c6f3_112.conda
+      - conda: https://conda.anaconda.org/conda-forge/linux-64/fftw-3.3.10-nompi_hf1063bd_110.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.15.1-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/fmt-10.2.1-h00ab1b0_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2
@@ -1690,12 +1720,14 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf4-4.2.15-h2a13503_7.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.3-nompi_hdf9ad27_105.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.23.3-pyhd8ed1ab_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/noarch/humanize-4.9.0-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-73.2-h59595ed_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.7-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/imagecodecs-2024.6.1-py312h083dece_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/imageio-2.34.1-pyh4b66e23_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/imath-3.1.11-hfc55251_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-6.10.0-pyha770c72_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.0-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/jasper-4.2.4-h536e39c_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.4.2-pyhd8ed1ab_0.conda
@@ -1759,6 +1791,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwy-1.1.0-h00ab1b0_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/libidn2-2.3.7-hd590300_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/linux-64/libitk-5.3.0-h26001f5_8.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/libjxl-0.10.2-hcae5a98_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/libkml-1.3.0-h01aab08_1018.conda
@@ -1835,6 +1868,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h59595ed_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/nettle-3.9.1-h7ab15ed_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.3-pyhd8ed1ab_1.conda
+      - conda: https://conda.anaconda.org/conda-forge/noarch/nibabel-5.2.1-pyha770c72_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/nspr-4.35-h27087fc_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/nss-3.100-hca3bf56_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda
@@ -1888,6 +1922,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/linux-64/scikit-learn-1.5.0-py312h1fcc3ea_1.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.13.1-py312hc2bc53b_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-70.0.0-pyhd8ed1ab_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/linux-64/simpleitk-2.3.1-py312h30efb56_2.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.0-pyhd8ed1ab_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.0-hdb0a2a9_1.conda
@@ -1907,6 +1942,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-w-1.0.0-pyhd8ed1ab_0.tar.bz2
+      - conda: https://conda.anaconda.org/conda-forge/noarch/torchio-0.19.7-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/torchmetrics-1.4.0.post0-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/pytorch/linux-64/torchvision-0.17.2-py312_cu121.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.66.4-pyhd8ed1ab_0.conda
@@ -1999,9 +2035,11 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/dav1d-1.2.1-hb547adb_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.14-pyh1a96a4e_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/osx-arm64/eigen-3.4.0-h1995070_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/expat-2.6.2-hebf3989_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ffmpeg-6.1.1-gpl_hc16618e_112.conda
+      - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fftw-3.3.10-nompi_h6637ab6_110.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.15.1-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fmt-10.2.1-h2ffa867_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2
@@ -2033,12 +2071,14 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hdf4-4.2.15-h2ee6834_7.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hdf5-1.14.3-nompi_hec07895_105.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.23.3-pyhd8ed1ab_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/noarch/humanize-4.9.0-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-73.2-hc8870d7_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.7-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/imagecodecs-2024.6.1-py312h3901bda_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/imageio-2.34.1-pyh4b66e23_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/imath-3.1.11-h1059232_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-6.10.0-pyha770c72_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.0-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jasper-4.2.4-h6c4e4ef_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.4.2-pyhd8ed1ab_0.conda
@@ -2087,6 +2127,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libidn2-2.3.7-h93a5062_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.22.5-h8fbad5d_2.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-devel-0.22.5-h8fbad5d_2.conda
+      - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libitk-5.3.0-h5b48add_8.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjxl-0.10.2-h07599a0_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libkml-1.3.0-h1eb4d9f_1018.conda
@@ -2143,6 +2184,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-hb89a1cb_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nettle-3.9.1-h40ed0f5_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.3-pyhd8ed1ab_1.conda
+      - conda: https://conda.anaconda.org/conda-forge/noarch/nibabel-5.2.1-pyha770c72_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nspr-4.35-hb7217d7_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nss-3.100-hc6e9f88_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda
@@ -2189,6 +2231,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scikit-learn-1.5.0-py312h1b546db_1.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.13.1-py312h14ffa8f_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-70.0.0-pyhd8ed1ab_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/osx-arm64/simpleitk-2.3.1-py312h650e478_2.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.0-pyhd8ed1ab_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.0-hd04f947_1.conda
@@ -2208,6 +2251,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-w-1.0.0-pyhd8ed1ab_0.tar.bz2
+      - conda: https://conda.anaconda.org/conda-forge/noarch/torchio-0.19.7-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/torchmetrics-1.4.0.post0-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/pytorch/osx-arm64/torchvision-0.17.2-py312_cpu.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.66.4-pyhd8ed1ab_0.conda
@@ -2301,9 +2345,11 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.14-pyh1a96a4e_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/double-conversion-3.3.0-h59595ed_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/linux-64/eigen-3.4.0-h00ab1b0_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.2-h59595ed_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/ffmpeg-6.1.1-gpl_he44c6f3_112.conda
+      - conda: https://conda.anaconda.org/conda-forge/linux-64/fftw-3.3.10-nompi_hf1063bd_110.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.15.1-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/fmt-10.2.1-h00ab1b0_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2
@@ -2340,12 +2386,14 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf4-4.2.15-h2a13503_7.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.3-nompi_hdf9ad27_105.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.23.3-pyhd8ed1ab_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/noarch/humanize-4.9.0-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-73.2-h59595ed_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.7-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/imagecodecs-2024.6.1-py312h083dece_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/imageio-2.34.1-pyh4b66e23_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/imath-3.1.11-hfc55251_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-6.10.0-pyha770c72_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.0-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/jasper-4.2.4-h536e39c_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.4.2-pyhd8ed1ab_0.conda
@@ -2409,6 +2457,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwy-1.1.0-h00ab1b0_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/libidn2-2.3.7-hd590300_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/linux-64/libitk-5.3.0-h26001f5_8.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/libjxl-0.10.2-hcae5a98_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/libkml-1.3.0-h01aab08_1018.conda
@@ -2485,6 +2534,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h59595ed_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/nettle-3.9.1-h7ab15ed_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.3-pyhd8ed1ab_1.conda
+      - conda: https://conda.anaconda.org/conda-forge/noarch/nibabel-5.2.1-pyha770c72_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/nspr-4.35-h27087fc_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/nss-3.100-hca3bf56_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda
@@ -2538,6 +2588,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/linux-64/scikit-learn-1.5.0-py312h1fcc3ea_1.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.13.1-py312hc2bc53b_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-70.0.0-pyhd8ed1ab_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/linux-64/simpleitk-2.3.1-py312h30efb56_2.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.0-pyhd8ed1ab_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.0-hdb0a2a9_1.conda
@@ -2557,6 +2608,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-w-1.0.0-pyhd8ed1ab_0.tar.bz2
+      - conda: https://conda.anaconda.org/conda-forge/noarch/torchio-0.19.7-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/torchmetrics-1.4.0.post0-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/pytorch/linux-64/torchvision-0.17.2-py312_cu121.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.66.4-pyhd8ed1ab_0.conda
@@ -2650,9 +2702,11 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/dav1d-1.2.1-hb547adb_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.14-pyh1a96a4e_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/osx-arm64/eigen-3.4.0-h1995070_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/expat-2.6.2-hebf3989_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ffmpeg-6.1.1-gpl_hc16618e_112.conda
+      - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fftw-3.3.10-nompi_h6637ab6_110.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.15.1-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fmt-10.2.1-h2ffa867_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2
@@ -2684,12 +2738,14 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hdf4-4.2.15-h2ee6834_7.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hdf5-1.14.3-nompi_hec07895_105.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.23.3-pyhd8ed1ab_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/noarch/humanize-4.9.0-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-73.2-hc8870d7_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.7-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/imagecodecs-2024.6.1-py312h3901bda_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/imageio-2.34.1-pyh4b66e23_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/imath-3.1.11-h1059232_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-6.10.0-pyha770c72_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.0-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jasper-4.2.4-h6c4e4ef_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.4.2-pyhd8ed1ab_0.conda
@@ -2738,6 +2794,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libidn2-2.3.7-h93a5062_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.22.5-h8fbad5d_2.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-devel-0.22.5-h8fbad5d_2.conda
+      - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libitk-5.3.0-h5b48add_8.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjxl-0.10.2-h07599a0_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libkml-1.3.0-h1eb4d9f_1018.conda
@@ -2794,6 +2851,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-hb89a1cb_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nettle-3.9.1-h40ed0f5_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.3-pyhd8ed1ab_1.conda
+      - conda: https://conda.anaconda.org/conda-forge/noarch/nibabel-5.2.1-pyha770c72_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nspr-4.35-hb7217d7_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nss-3.100-hc6e9f88_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda
@@ -2840,6 +2898,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scikit-learn-1.5.0-py312h1b546db_1.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.13.1-py312h14ffa8f_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-70.0.0-pyhd8ed1ab_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/osx-arm64/simpleitk-2.3.1-py312h650e478_2.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.0-pyhd8ed1ab_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.0-hd04f947_1.conda
@@ -2859,6 +2918,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-w-1.0.0-pyhd8ed1ab_0.tar.bz2
+      - conda: https://conda.anaconda.org/conda-forge/noarch/torchio-0.19.7-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/torchmetrics-1.4.0.post0-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/pytorch/osx-arm64/torchvision-0.17.2-py312_cpu.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.66.4-pyhd8ed1ab_0.conda
@@ -2963,11 +3023,13 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/double-conversion-3.3.0-h59595ed_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/editables-0.5-pyhd8ed1ab_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/linux-64/eigen-3.4.0-h00ab1b0_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.0-pyhd8ed1ab_2.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.2-h59595ed_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/fancycompleter-0.9.1-py312h7900ff3_1007.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/ffmpeg-6.1.1-gpl_he44c6f3_112.conda
+      - conda: https://conda.anaconda.org/conda-forge/linux-64/fftw-3.3.10-nompi_hf1063bd_110.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.15.1-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/fmt-10.2.1-h00ab1b0_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2
@@ -3012,6 +3074,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.5-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.0-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.23.3-pyhd8ed1ab_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/noarch/humanize-4.9.0-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/hyperlink-21.0.0-pyhd3deb0d_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-73.2-h59595ed_0.conda
@@ -3087,6 +3150,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwy-1.1.0-h00ab1b0_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/libidn2-2.3.7-hd590300_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/linux-64/libitk-5.3.0-h26001f5_8.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/libjxl-0.10.2-hcae5a98_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/libkml-1.3.0-h01aab08_1018.conda
@@ -3167,6 +3231,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/linux-64/nettle-3.9.1-h7ab15ed_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.3-pyhd8ed1ab_1.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/nh3-0.2.17-py312h4b3b743_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/noarch/nibabel-5.2.1-pyha770c72_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/nspr-4.35-h27087fc_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/nss-3.100-hca3bf56_0.conda
@@ -3241,6 +3306,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/linux-64/secretstorage-3.3.3-py312h7900ff3_2.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-70.0.0-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/linux-64/simpleitk-2.3.1-py312h30efb56_2.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.0-pyhd8ed1ab_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.0-hdb0a2a9_1.conda
@@ -3277,6 +3343,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-w-1.0.0-pyhd8ed1ab_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.12.5-pyha770c72_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/noarch/torchio-0.19.7-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/torchmetrics-1.4.0.post0-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/pytorch/linux-64/torchvision-0.17.2-py312_cpu.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.66.4-pyhd8ed1ab_0.conda
@@ -3399,11 +3466,13 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.8-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/editables-0.5-pyhd8ed1ab_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/osx-arm64/eigen-3.4.0-h1995070_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.0-pyhd8ed1ab_2.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/expat-2.6.2-hebf3989_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fancycompleter-0.9.1-py312h81bd7bf_1007.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ffmpeg-6.1.1-gpl_hc16618e_112.conda
+      - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fftw-3.3.10-nompi_h6637ab6_110.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.15.1-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fmt-10.2.1-h2ffa867_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2
@@ -3443,6 +3512,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.5-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.0-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.23.3-pyhd8ed1ab_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/noarch/humanize-4.9.0-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/hyperlink-21.0.0-pyhd3deb0d_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-73.2-hc8870d7_0.conda
@@ -3508,6 +3578,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libidn2-2.3.7-h93a5062_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.22.5-h8fbad5d_2.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-devel-0.22.5-h8fbad5d_2.conda
+      - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libitk-5.3.0-h5b48add_8.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjxl-0.10.2-h07599a0_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libkml-1.3.0-h1eb4d9f_1018.conda
@@ -3571,6 +3642,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nettle-3.9.1-h40ed0f5_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.3-pyhd8ed1ab_1.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nh3-0.2.17-py312h5280bc4_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/noarch/nibabel-5.2.1-pyha770c72_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nspr-4.35-hb7217d7_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nss-3.100-hc6e9f88_0.conda
@@ -3641,6 +3713,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.13.1-py312h14ffa8f_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-70.0.0-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/osx-arm64/simpleitk-2.3.1-py312h650e478_2.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.0-pyhd8ed1ab_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.0-hd04f947_1.conda
@@ -3677,6 +3750,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-w-1.0.0-pyhd8ed1ab_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.12.5-pyha770c72_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/noarch/torchio-0.19.7-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/torchmetrics-1.4.0.post0-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/pytorch/osx-arm64/torchvision-0.17.2-py312_cpu.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.66.4-pyhd8ed1ab_0.conda
@@ -3783,9 +3857,11 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.14-pyh1a96a4e_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.8-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/double-conversion-3.3.0-h59595ed_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/linux-64/eigen-3.4.0-h00ab1b0_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.2-h59595ed_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/ffmpeg-6.1.1-gpl_he44c6f3_112.conda
+      - conda: https://conda.anaconda.org/conda-forge/linux-64/fftw-3.3.10-nompi_hf1063bd_110.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.15.1-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/fmt-10.2.1-h00ab1b0_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2
@@ -3822,6 +3898,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf4-4.2.15-h2a13503_7.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.3-nompi_hdf9ad27_105.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.23.3-pyhd8ed1ab_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/noarch/humanize-4.9.0-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-73.2-h59595ed_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.5.36-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.7-pyhd8ed1ab_0.conda
@@ -3829,6 +3906,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/noarch/imageio-2.34.1-pyh4b66e23_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/imath-3.1.11-hfc55251_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-6.10.0-pyha770c72_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.0-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/jasper-4.2.4-h536e39c_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.4.2-pyhd8ed1ab_0.conda
@@ -3886,6 +3964,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwy-1.1.0-h00ab1b0_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/libidn2-2.3.7-hd590300_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/linux-64/libitk-5.3.0-h26001f5_8.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/libjxl-0.10.2-hcae5a98_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/libkml-1.3.0-h01aab08_1018.conda
@@ -3960,6 +4039,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h59595ed_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/nettle-3.9.1-h7ab15ed_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.3-pyhd8ed1ab_1.conda
+      - conda: https://conda.anaconda.org/conda-forge/noarch/nibabel-5.2.1-pyha770c72_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/nspr-4.35-h27087fc_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/nss-3.100-hca3bf56_0.conda
@@ -4018,6 +4098,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/linux-64/scikit-learn-1.5.0-py312h1fcc3ea_1.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.13.1-py312hc2bc53b_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-70.0.0-pyhd8ed1ab_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/linux-64/simpleitk-2.3.1-py312h30efb56_2.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.0-pyhd8ed1ab_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.0-hdb0a2a9_1.conda
@@ -4037,6 +4118,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-w-1.0.0-pyhd8ed1ab_0.tar.bz2
+      - conda: https://conda.anaconda.org/conda-forge/noarch/torchio-0.19.7-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/torchmetrics-1.4.0.post0-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/pytorch/linux-64/torchvision-0.17.2-py312_cpu.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.66.4-pyhd8ed1ab_0.conda
@@ -4136,9 +4218,11 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/dav1d-1.2.1-hb547adb_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.14-pyh1a96a4e_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.8-pyhd8ed1ab_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/osx-arm64/eigen-3.4.0-h1995070_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/expat-2.6.2-hebf3989_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ffmpeg-6.1.1-gpl_hc16618e_112.conda
+      - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fftw-3.3.10-nompi_h6637ab6_110.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.15.1-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fmt-10.2.1-h2ffa867_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2
@@ -4170,6 +4254,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hdf4-4.2.15-h2ee6834_7.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hdf5-1.14.3-nompi_hec07895_105.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.23.3-pyhd8ed1ab_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/noarch/humanize-4.9.0-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-73.2-hc8870d7_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.5.36-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.7-pyhd8ed1ab_0.conda
@@ -4177,6 +4262,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/noarch/imageio-2.34.1-pyh4b66e23_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/imath-3.1.11-h1059232_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-6.10.0-pyha770c72_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.0-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jasper-4.2.4-h6c4e4ef_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.4.2-pyhd8ed1ab_0.conda
@@ -4225,6 +4311,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libidn2-2.3.7-h93a5062_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.22.5-h8fbad5d_2.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-devel-0.22.5-h8fbad5d_2.conda
+      - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libitk-5.3.0-h5b48add_8.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjxl-0.10.2-h07599a0_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libkml-1.3.0-h1eb4d9f_1018.conda
@@ -4282,6 +4369,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-hb89a1cb_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nettle-3.9.1-h40ed0f5_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.3-pyhd8ed1ab_1.conda
+      - conda: https://conda.anaconda.org/conda-forge/noarch/nibabel-5.2.1-pyha770c72_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nspr-4.35-hb7217d7_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nss-3.100-hc6e9f88_0.conda
@@ -4335,6 +4423,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scikit-learn-1.5.0-py312h1b546db_1.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.13.1-py312h14ffa8f_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-70.0.0-pyhd8ed1ab_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/osx-arm64/simpleitk-2.3.1-py312h650e478_2.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.0-pyhd8ed1ab_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.0-hd04f947_1.conda
@@ -4354,6 +4443,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-w-1.0.0-pyhd8ed1ab_0.tar.bz2
+      - conda: https://conda.anaconda.org/conda-forge/noarch/torchio-0.19.7-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/torchmetrics-1.4.0.post0-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/pytorch/osx-arm64/torchvision-0.17.2-py312_cpu.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.66.4-pyhd8ed1ab_0.conda
@@ -4441,10 +4531,12 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.14-pyh1a96a4e_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/double-conversion-3.3.0-h59595ed_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/linux-64/eigen-3.4.0-h00ab1b0_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.0-pyhd8ed1ab_2.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.2-h59595ed_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/ffmpeg-6.1.1-gpl_he44c6f3_112.conda
+      - conda: https://conda.anaconda.org/conda-forge/linux-64/fftw-3.3.10-nompi_hf1063bd_110.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.15.1-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/fmt-10.2.1-h00ab1b0_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2
@@ -4481,12 +4573,14 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf4-4.2.15-h2a13503_7.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.3-nompi_hdf9ad27_105.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.23.3-pyhd8ed1ab_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/noarch/humanize-4.9.0-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-73.2-h59595ed_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.7-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/imagecodecs-2024.6.1-py311h60053b1_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/imageio-2.34.1-pyh4b66e23_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/imath-3.1.11-hfc55251_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-6.10.0-pyha770c72_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.0-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/jasper-4.2.4-h536e39c_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda
@@ -4545,6 +4639,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwy-1.1.0-h00ab1b0_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/libidn2-2.3.7-hd590300_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/linux-64/libitk-5.3.0-h26001f5_8.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/libjxl-0.10.2-hcae5a98_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/libkml-1.3.0-h01aab08_1018.conda
@@ -4618,6 +4713,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h59595ed_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/nettle-3.9.1-h7ab15ed_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.3-pyhd8ed1ab_1.conda
+      - conda: https://conda.anaconda.org/conda-forge/noarch/nibabel-5.2.1-pyha770c72_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/nspr-4.35-h27087fc_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/nss-3.100-hca3bf56_0.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda
@@ -4672,6 +4768,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/linux-64/scikit-learn-1.5.0-py311he08f58d_1.conda
       - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.13.1-py311h517d4fd_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-70.0.0-pyhd8ed1ab_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/linux-64/simpleitk-2.3.1-py311hb755f60_2.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.0-pyhd8ed1ab_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.0-hdb0a2a9_1.conda
@@ -4692,6 +4789,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-w-1.0.0-pyhd8ed1ab_0.tar.bz2
+      - conda: https://conda.anaconda.org/conda-forge/noarch/torchio-0.19.7-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/torchmetrics-1.4.0.post0-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/pytorch/linux-64/torchvision-0.17.2-py311_cpu.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.66.4-pyhd8ed1ab_0.conda
@@ -4785,10 +4883,12 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/dav1d-1.2.1-hb547adb_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.14-pyh1a96a4e_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/osx-arm64/eigen-3.4.0-h1995070_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.0-pyhd8ed1ab_2.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/expat-2.6.2-hebf3989_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ffmpeg-6.1.1-gpl_hc16618e_112.conda
+      - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fftw-3.3.10-nompi_h6637ab6_110.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.15.1-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fmt-10.2.1-h2ffa867_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2
@@ -4820,12 +4920,14 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hdf4-4.2.15-h2ee6834_7.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hdf5-1.14.3-nompi_hec07895_105.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.23.3-pyhd8ed1ab_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/noarch/humanize-4.9.0-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-73.2-hc8870d7_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.7-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/imagecodecs-2024.6.1-py311h038a4eb_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/imageio-2.34.1-pyh4b66e23_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/imath-3.1.11-h1059232_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-6.10.0-pyha770c72_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.0-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jasper-4.2.4-h6c4e4ef_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda
@@ -4875,6 +4977,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libidn2-2.3.7-h93a5062_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.22.5-h8fbad5d_2.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-devel-0.22.5-h8fbad5d_2.conda
+      - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libitk-5.3.0-h5b48add_8.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjxl-0.10.2-h07599a0_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libkml-1.3.0-h1eb4d9f_1018.conda
@@ -4931,6 +5034,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-hb89a1cb_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nettle-3.9.1-h40ed0f5_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.3-pyhd8ed1ab_1.conda
+      - conda: https://conda.anaconda.org/conda-forge/noarch/nibabel-5.2.1-pyha770c72_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nspr-4.35-hb7217d7_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nss-3.100-hc6e9f88_0.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py311h7125741_0.conda
@@ -4980,6 +5084,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scikit-learn-1.5.0-py311hbfb48bc_1.conda
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.13.1-py311hceeca8c_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-70.0.0-pyhd8ed1ab_0.conda
+      - conda: https://conda.anaconda.org/conda-forge/osx-arm64/simpleitk-2.3.1-py311hbaf5611_2.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.0-pyhd8ed1ab_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.0-hd04f947_1.conda
@@ -5000,6 +5105,7 @@ environments:
       - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-w-1.0.0-pyhd8ed1ab_0.tar.bz2
+      - conda: https://conda.anaconda.org/conda-forge/noarch/torchio-0.19.7-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/conda-forge/noarch/torchmetrics-1.4.0.post0-pyhd8ed1ab_0.conda
       - conda: https://conda.anaconda.org/pytorch/osx-arm64/torchvision-0.17.2-py311_cpu.tar.bz2
       - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.66.4-pyhd8ed1ab_0.conda
@@ -7196,6 +7302,37 @@ packages:
   - pkg:pypi/editables?source=conda-forge-mapping
   size: 10988
   timestamp: 1705857085102
+- kind: conda
+  name: eigen
+  version: 3.4.0
+  build: h00ab1b0_0
+  subdir: linux-64
+  url: https://conda.anaconda.org/conda-forge/linux-64/eigen-3.4.0-h00ab1b0_0.conda
+  sha256: 53b15a98aadbe0704479bacaf7a5618fcb32d1577be320630674574241639b34
+  md5: b1b879d6d093f55dd40d58b5eb2f0699
+  depends:
+  - libgcc-ng >=12
+  - libstdcxx-ng >=12
+  license: MPL-2.0
+  license_family: MOZILLA
+  purls: []
+  size: 1088433
+  timestamp: 1690272126173
+- kind: conda
+  name: eigen
+  version: 3.4.0
+  build: h1995070_0
+  subdir: osx-arm64
+  url: https://conda.anaconda.org/conda-forge/osx-arm64/eigen-3.4.0-h1995070_0.conda
+  sha256: c20b3677b16d8907343fce68e7c437184fef7f5ed0a765c104b775f8a485c5c9
+  md5: 3691ea3ff568ba38826389bafc717909
+  depends:
+  - libcxx >=15.0.7
+  license: MPL-2.0
+  license_family: MOZILLA
+  purls: []
+  size: 1087751
+  timestamp: 1690275869049
 - kind: conda
   name: entrypoints
   version: '0.4'
@@ -7403,6 +7540,46 @@ packages:
   purls: []
   size: 9788322
   timestamp: 1716145697248
+- kind: conda
+  name: fftw
+  version: 3.3.10
+  build: nompi_h6637ab6_110
+  build_number: 110
+  subdir: osx-arm64
+  url: https://conda.anaconda.org/conda-forge/osx-arm64/fftw-3.3.10-nompi_h6637ab6_110.conda
+  sha256: ba72f1d9384584c774d4e58ff3174818a20687f817e5edde3e0d23edff88fd72
+  md5: 622f99e8f4820c2ca1b208a3bb6ed5e6
+  depends:
+  - __osx >=11.0
+  - libcxx >=16
+  - libgfortran 5.*
+  - libgfortran5 >=12.3.0
+  - libgfortran5 >=13.2.0
+  - llvm-openmp >=16.0.6
+  license: GPL-2.0-or-later
+  license_family: GPL
+  purls: []
+  size: 763281
+  timestamp: 1717758160882
+- kind: conda
+  name: fftw
+  version: 3.3.10
+  build: nompi_hf1063bd_110
+  build_number: 110
+  subdir: linux-64
+  url: https://conda.anaconda.org/conda-forge/linux-64/fftw-3.3.10-nompi_hf1063bd_110.conda
+  sha256: 3cc58c9d9a8cc0089e3839ae5ff7ba4ddfc6df99d5f6a147fe90ea963bc6fe45
+  md5: ee3e687b78b778db7b304e5b00a4dca6
+  depends:
+  - libgcc-ng >=12
+  - libgfortran-ng
+  - libgfortran5 >=12.3.0
+  - libstdcxx-ng >=12
+  license: GPL-2.0-or-later
+  license_family: GPL
+  purls: []
+  size: 2075171
+  timestamp: 1717757963922
 - kind: conda
   name: filelock
   version: 3.15.1
@@ -8726,6 +8903,23 @@ packages:
   - pkg:pypi/huggingface-hub?source=conda-forge-mapping
   size: 250766
   timestamp: 1717617646190
+- kind: conda
+  name: humanize
+  version: 4.9.0
+  build: pyhd8ed1ab_0
+  subdir: noarch
+  noarch: python
+  url: https://conda.anaconda.org/conda-forge/noarch/humanize-4.9.0-pyhd8ed1ab_0.conda
+  sha256: 2764840b7ef7219af1288b27dfddbacc383fdf88af70980a355afdb2780f3c30
+  md5: f15cf5f33b0eca7b02c468ddb0cbf1ad
+  depends:
+  - python >=3.8
+  license: MIT
+  license_family: MIT
+  purls:
+  - pkg:pypi/humanize?source=conda-forge-mapping
+  size: 65116
+  timestamp: 1700608057210
 - kind: conda
   name: hyperframe
   version: 6.0.1
@@ -11260,6 +11454,62 @@ packages:
   purls: []
   size: 38616
   timestamp: 1712512805567
+- kind: conda
+  name: libitk
+  version: 5.3.0
+  build: h26001f5_8
+  build_number: 8
+  subdir: linux-64
+  url: https://conda.anaconda.org/conda-forge/linux-64/libitk-5.3.0-h26001f5_8.conda
+  sha256: 644b8e9c250b91ee38f72345c9d62c1dc3bd3e3d3a2ef9f3b991cef420152d73
+  md5: 26827b546cbbb741100a5be2c0c00c3b
+  depends:
+  - eigen
+  - expat
+  - fftw >=3.3.10,<4.0a0
+  - hdf5 >=1.14.2,<1.14.4.0a0
+  - libexpat >=2.5.0,<3.0a0
+  - libgcc-ng >=12
+  - libjpeg-turbo >=3.0.0,<4.0a0
+  - libpng >=1.6.39,<1.7.0a0
+  - libstdcxx-ng >=12
+  - libtiff >=4.6.0,<4.7.0a0
+  - libzlib >=1.2.13,<2.0.0a0
+  - tbb >=2021.10.0
+  - zlib
+  license: Apache-2.0
+  license_family: APACHE
+  purls: []
+  size: 10643159
+  timestamp: 1701489133491
+- kind: conda
+  name: libitk
+  version: 5.3.0
+  build: h5b48add_8
+  build_number: 8
+  subdir: osx-arm64
+  url: https://conda.anaconda.org/conda-forge/osx-arm64/libitk-5.3.0-h5b48add_8.conda
+  sha256: ca6ec870258201dbf245be9eab510e3400938a132f73e45078c10a87e798609d
+  md5: c2a0d8202f305efe9aa65f8395e374fb
+  depends:
+  - __osx >=10.9
+  - eigen
+  - expat
+  - fftw >=3.3.10,<4.0a0
+  - hdf5 >=1.14.2,<1.14.4.0a0
+  - libcxx >=16.0.6
+  - libexpat >=2.5.0,<3.0a0
+  - libjpeg-turbo >=3.0.0,<4.0a0
+  - libpng >=1.6.39,<1.7.0a0
+  - libtiff >=4.6.0,<4.7.0a0
+  - libzlib >=1.2.13,<2.0.0a0
+  - tbb >=2021.10.0
+  - zlib
+  license: Apache-2.0
+  license_family: APACHE
+  purls: []
+  size: 7110110
+  timestamp: 1701490808724
 - kind: conda
   name: libjpeg-turbo
   version: 3.0.0
@@ -13618,7 +13868,7 @@ packages:
   timestamp: 1704317789138
 - kind: pypi
   name: mednet
-  version: 1.0.1.dev214+g1aab338.d20240613
+  version: 1.0.0b0
   path: .
   sha256: adff5bafa9edc506fbd485c396d2aefee9bfc29400b78e6d5950749ff33906ae
   requires_dist:
@@ -14162,6 +14412,26 @@ packages:
   - pkg:pypi/nh3?source=conda-forge-mapping
   size: 582437
   timestamp: 1711545995406
+- kind: conda
+  name: nibabel
+  version: 5.2.1
+  build: pyha770c72_0
+  subdir: noarch
+  noarch: python
+  url: https://conda.anaconda.org/conda-forge/noarch/nibabel-5.2.1-pyha770c72_0.conda
+  sha256: b5dd6d6ad4ba7c005567033c5ed6ecfbc34624c4d45fdd1882d5aeb9e5f04873
+  md5: 95ea4b21646fda1e2a34e0ddd895c9cc
+  depends:
+  - importlib_resources >=1.3
+  - numpy >=1.20
+  - packaging >=17
+  - python >=3.8
+  license: MIT
+  license_family: MIT
+  purls:
+  - pkg:pypi/nibabel?source=conda-forge-mapping
+  size: 2746114
+  timestamp: 1709044860369
 - kind: conda
   name: nodeenv
   version: 1.9.1
@@ -17203,6 +17473,92 @@ packages:
   - pkg:pypi/shellingham?source=conda-forge-mapping
   size: 14568
   timestamp: 1698144516278
+- kind: conda
+  name: simpleitk
+  version: 2.3.1
+  build: py311hb755f60_2
+  build_number: 2
+  subdir: linux-64
+  url: https://conda.anaconda.org/conda-forge/linux-64/simpleitk-2.3.1-py311hb755f60_2.conda
+  sha256: e0de95d1741616cd16d55366f4bb1914f03f0c752d87e5f1175622ff4615f977
+  md5: 7d9e0a06161dd3e2ac1645b795c40828
+  depends:
+  - libgcc-ng >=12
+  - libitk 5.3.0 h26001f5_8
+  - libstdcxx-ng >=12
+  - python >=3.11,<3.12.0a0
+  - python_abi 3.11.* *_cp311
+  license: Apache-2.0
+  license_family: APACHE
+  purls:
+  - pkg:pypi/simpleitk?source=conda-forge-mapping
+  size: 27193823
+  timestamp: 1701806692083
+- kind: conda
+  name: simpleitk
+  version: 2.3.1
+  build: py311hbaf5611_2
+  build_number: 2
+  subdir: osx-arm64
+  url: https://conda.anaconda.org/conda-forge/osx-arm64/simpleitk-2.3.1-py311hbaf5611_2.conda
+  sha256: 171f109f9b4b1168fe507f537b540254f59676950082d272f19b2874156ce8ba
+  md5: 08d5361ed17fc065e5c09299a68fb9b7
+  depends:
+  - __osx >=10.9
+  - libcxx >=16.0.6
+  - libitk 5.3.0 h5b48add_8
+  - python >=3.11,<3.12.0a0
+  - python >=3.11,<3.12.0a0 *_cpython
+  - python_abi 3.11.* *_cp311
+  license: Apache-2.0
+  license_family: APACHE
+  purls:
+  - pkg:pypi/simpleitk?source=conda-forge-mapping
+  size: 19036652
+  timestamp: 1701806985204
+- kind: conda
+  name: simpleitk
+  version: 2.3.1
+  build: py312h30efb56_2
+  build_number: 2
+  subdir: linux-64
+  url: https://conda.anaconda.org/conda-forge/linux-64/simpleitk-2.3.1-py312h30efb56_2.conda
+  sha256: 451728343600bd5a32321276bee00270d88c9d95ca24cf10717d4c182a017250
+  md5: c438d05b72c796456fb18da5aec4670d
+  depends:
+  - libgcc-ng >=12
+  - libitk 5.3.0 h26001f5_8
+  - libstdcxx-ng >=12
+  - python >=3.12,<3.13.0a0
+  - python_abi 3.12.* *_cp312
+  license: Apache-2.0
+  license_family: APACHE
+  purls:
+  - pkg:pypi/simpleitk?source=conda-forge-mapping
+  size: 26877326
+  timestamp: 1701806680140
+- kind: conda
+  name: simpleitk
+  version: 2.3.1
+  build: py312h650e478_2
+  build_number: 2
+  subdir: osx-arm64
+  url: https://conda.anaconda.org/conda-forge/osx-arm64/simpleitk-2.3.1-py312h650e478_2.conda
+  sha256: 60d2fa628b0badf8754a65d2dd7c62b75000a0b6dbec1c2e646b43f000842c99
+  md5: 3bc7cdff84074fa0844ae28ff84ec47f
+  depends:
+  - __osx >=10.9
+  - libcxx >=16.0.6
+  - libitk 5.3.0 h5b48add_8
+  - python >=3.12,<3.13.0a0
+  - python >=3.12,<3.13.0a0 *_cpython
+  - python_abi 3.12.* *_cp312
+  license: Apache-2.0
+  license_family: APACHE
+  purls:
+  - pkg:pypi/simpleitk?source=conda-forge-mapping
+  size: 18932800
+  timestamp: 1701807038993
 - kind: conda
   name: six
   version: 1.16.0
@@ -18090,6 +18446,32 @@ packages:
   - pkg:pypi/tomlkit?source=conda-forge-mapping
   size: 37297
   timestamp: 1715185504185
+- kind: conda
+  name: torchio
+  version: 0.19.7
+  build: pyhd8ed1ab_0
+  subdir: noarch
+  noarch: python
+  url: https://conda.anaconda.org/conda-forge/noarch/torchio-0.19.7-pyhd8ed1ab_0.conda
+  sha256: 9a5b75348350c0d976aa3752a9a1d712657010982df12401aef2b38424a54a0a
+  md5: d705b713c7e60f4729adca64ad457e4c
+  depends:
+  - click
+  - deprecated >=1.2.5
+  - humanize
+  - nibabel
+  - numpy
+  - python >=3.6,<3.13
+  - pytorch >=1.7
+  - scipy
+  - setuptools
+  - simpleitk !=2.0.*
+  - tqdm
+  license: Apache-2.0
+  purls:
+  - pkg:pypi/torchio?source=conda-forge-mapping
+  size: 120934
+  timestamp: 1718407590308
 - kind: conda
   name: torchmetrics
   version: 1.4.0.post0
diff --git a/pyproject.toml b/pyproject.toml
index c5a5be4282f3acd6ab15c74fdc1d7dcc72869a40..b182482621e3cd4e3ef7356b1d3fe14227dc171e 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -102,6 +102,7 @@ tensorboard = "*"
 torchvision = { version = "~=0.17.2", channel = "pytorch" }
 tqdm = "*"
 versioningit = "*"
+torchio = ">=0.19.7,<0.20"
 
 [tool.pixi.feature.self.pypi-dependencies]
 mednet = { path = ".", editable = true }
@@ -245,6 +246,9 @@ alexnet-pretrained = "mednet.config.models.alexnet_pretrained"
 densenet = "mednet.config.models.densenet"
 densenet-pretrained = "mednet.config.models.densenet_pretrained"
 
+# 3D models
+cnn3d = "mednet.config.models.cnn3d"
+
 # lists of data augmentations
 affine = "mednet.config.augmentations.affine"
 elastic = "mednet.config.augmentations.elastic"
@@ -409,6 +413,9 @@ nih-cxr14-padchest = "mednet.config.data.nih_cxr14_padchest.idiap"
 # montgomery-shenzhen-indian-padchest aggregated dataset
 montgomery-shenzhen-indian-padchest = "mednet.config.data.montgomery_shenzhen_indian_padchest.default"
 
+# VISCERAL dataset
+visceral = "mednet.config.data.visceral.default"
+
 [tool.ruff]
 line-length = 88
 target-version = "py310"
diff --git a/src/mednet/config/data/visceral/__init__.py b/src/mednet/config/data/visceral/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/src/mednet/config/data/visceral/datamodule.py b/src/mednet/config/data/visceral/datamodule.py
new file mode 100644
index 0000000000000000000000000000000000000000..023962cf76d8b98b948739aaf5ceedf31ad9d881
--- /dev/null
+++ b/src/mednet/config/data/visceral/datamodule.py
@@ -0,0 +1,117 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+"""VISCERAL dataset for 3D organ classification (only lungs and bladders).
+
+Loaded samples are not full scans but 16x16x16 volumes of organs.
+Database reference:
+"""
+
+import os
+import pathlib
+
+import torchio as tio
+
+from ....data.datamodule import CachingDataModule
+from ....data.split import make_split
+from ....data.typing import RawDataLoader as _BaseRawDataLoader
+from ....data.typing import Sample
+from ....utils.rc import load_rc
+
+CONFIGURATION_KEY_DATADIR = "datadir." + (__name__.rsplit(".", 2)[-2])
+"""Key to search for in the configuration file for the root directory of this
+database."""
+
+
+class RawDataLoader(_BaseRawDataLoader):
+    """A specialized raw-data-loader for the VISCERAL dataset."""
+
+    datadir: pathlib.Path
+    """This variable contains the base directory where the database raw data is
+    stored."""
+
+    def __init__(self) -> None:
+        self.datadir = pathlib.Path(
+            load_rc().get(
+                CONFIGURATION_KEY_DATADIR,
+                os.path.realpath(os.curdir),
+            ),
+        )
+
+    def sample(self, sample: tuple[str, int]) -> Sample:
+        """Load a single volume sample from the disk.
+
+        Parameters
+        ----------
+        sample
+            A tuple containing the path suffix, within the dataset root folder,
+            where to find the volume to be loaded and an integer, representing
+            the sample label.
+
+        Returns
+        -------
+            The sample representation.
+        """
+        clamp = tio.Clamp(out_min=-1000, out_max=2000)
+        rescale = tio.RescaleIntensity(percentiles=(0.5, 99.5))
+        preprocess = tio.Compose([clamp, rescale])
+        image = tio.ScalarImage(self.datadir / sample[0])
+        image = preprocess(image)
+        tensor = image.data
+        return tensor, dict(label=sample[1], name=sample[0])
+
+    def label(self, sample: tuple[str, int]) -> int:
+        """Load a single image sample label from the disk.
+
+        Parameters
+        ----------
+        sample
+            A tuple containing the path suffix, within the dataset root folder,
+            where to find the image to be loaded, and an integer, representing
+            the sample label.
+
+        Returns
+        -------
+        int
+            The integer label associated with the sample.
+        """
+
+        return sample[1]
+
+
+class DataModule(CachingDataModule):
+    """VISCERAL DataModule for 3D organ binary classification.
+
+    Data specifications:
+
+    * Raw data input (on disk):
+
+      * NIfTI volumes
+      * resolution: 16x16x16
+
+    * Output image:
+
+      * Transforms:
+
+        * Load raw NIfTI with :py:mod:`torchio`
+        * Clamp and Rescale intensity
+        * Convert to torch tensor
+
+      * Final specifications
+
+        * 32-bit floats, cubes 16x16x16 pixels
+        * Labels: 0 (bladder), 1 (lung)
+
+    Parameters
+    ----------
+    split_filename
+        Name of the .json file containing the split to load.
+    """
+
+    def __init__(self, split_filename: str):
+        super().__init__(
+            make_split(__package__, split_filename),
+            raw_data_loader=RawDataLoader(),
+            database_name=__package__.split(".")[-1],
+            split_name=pathlib.Path(split_filename).stem,
+        )
diff --git a/src/mednet/config/data/visceral/default.json b/src/mednet/config/data/visceral/default.json
new file mode 100644
index 0000000000000000000000000000000000000000..6bd8d5bdf56098c3037b4d545cae504cac96293c
--- /dev/null
+++ b/src/mednet/config/data/visceral/default.json
@@ -0,0 +1,353 @@
+{
+    "train": [
+        ["16/10000013_1_1302_117.nii.gz",1],
+        ["16/10000164_1_1302_117.nii.gz",1],
+        ["16/10000115_1_1302_117.nii.gz",1],
+        ["16/10000072_1_237_117.nii.gz",0],
+        ["16/10000148_1_CTce_ThAb_1302_6.nii.gz",1],
+        ["16/10000022_1_CT_wb_1302_4.nii.gz",1],
+        ["16/10000163_1_237_117.nii.gz",0],
+        ["16/10000005_1_CT_wb_1302_7.nii.gz",1],
+        ["16/10000113_1_CTce_ThAb_1302_6.nii.gz",1],
+        ["16/10000140_1_CTce_ThAb_237_5.nii.gz",0],
+        ["16/10000137_1_CTce_ThAb_237_7.nii.gz",0],
+        ["16/10000009_1_237_117.nii.gz",0],
+        ["16/10000090_1_CT_wb_1302_6.nii.gz",1],
+        ["16/10000115_1_237_117.nii.gz",0],
+        ["16/10000101_1_237_117.nii.gz",0],
+        ["16/10000168_1_1302_117.nii.gz",1],
+        ["16/10000054_1_1302_117.nii.gz",1],
+        ["16/10000059_1_237_117.nii.gz",0],
+        ["16/10000178_1_237_117.nii.gz",0],
+        ["16/10000053_1_237_117.nii.gz",0],
+        ["16/10000043_1_1302_117.nii.gz",1],
+        ["16/10000018_1_CT_wb_1302_4.nii.gz",1],
+        ["16/10000165_1_1302_117.nii.gz",1],
+        ["16/10000070_1_1302_117.nii.gz",1],
+        ["16/10000113_1_CTce_ThAb_237_6.nii.gz",0],
+        ["16/10000080_1_CT_wb_237_7.nii.gz",0],
+        ["16/10000145_1_CTce_ThAb_237_9.nii.gz",0],
+        ["16/10000140_1_CTce_ThAb_1302_5.nii.gz",1],
+        ["16/10000075_1_1302_117.nii.gz",1],
+        ["16/10000046_1_237_117.nii.gz",0],
+        ["16/10000108_1_CTce_ThAb_237_4.nii.gz",0],
+        ["16/10000109_1_CTce_ThAb_237_6.nii.gz",0],
+        ["16/10000055_1_1302_117.nii.gz",1],
+        ["16/10000004_1_1302_117.nii.gz",1],
+        ["16/10000150_1_237_117.nii.gz",0],
+        ["16/10000040_1_1302_117.nii.gz",1],
+        ["16/10000158_1_237_117.nii.gz",0],
+        ["16/10000183_1_1302_117.nii.gz",1],
+        ["16/10000025_1_CT_wb_237_8.nii.gz",0],
+        ["16/10000064_1_1302_117.nii.gz",1],
+        ["16/10000193_1_1302_117.nii.gz",1],
+        ["16/10000122_1_1302_117.nii.gz",1],
+        ["16/10000105_1_CTce_ThAb_237_4.nii.gz",0],
+        ["16/10000034_1_237_117.nii.gz",0],
+        ["16/10000112_1_CTce_ThAb_1302_8.nii.gz",1],
+        ["16/10000119_1_237_117.nii.gz",0],
+        ["16/10000138_1_CTce_ThAb_1302_8.nii.gz",1],
+        ["16/10000172_1_237_117.nii.gz",0],
+        ["16/10000072_1_1302_117.nii.gz",1],
+        ["16/10000012_1_1302_117.nii.gz",1],
+        ["16/10000078_1_1302_117.nii.gz",1],
+        ["16/10000096_1_CT_wb_1302_8.nii.gz",1],
+        ["16/10000125_1_1302_117.nii.gz",1],
+        ["16/10000191_1_1302_117.nii.gz",1],
+        ["16/10000055_1_237_117.nii.gz",0],
+        ["16/10000049_1_1302_117.nii.gz",1],
+        ["16/10000141_1_CTce_ThAb_237_5.nii.gz",0],
+        ["16/10000006_1_CT_wb_1302_8.nii.gz",1],
+        ["16/10000087_1_CT_wb_1302_4.nii.gz",1],
+        ["16/10000070_1_237_117.nii.gz",0],
+        ["16/10000080_1_CT_wb_1302_7.nii.gz",1],
+        ["16/10000015_1_CT_wb_1302_6.nii.gz",1],
+        ["16/10000011_1_CT_wb_237_7.nii.gz",0],
+        ["16/10000159_1_1302_117.nii.gz",1],
+        ["16/10000077_1_237_117.nii.gz",0],
+        ["16/10000087_1_CT_wb_237_4.nii.gz",0],
+        ["16/10000088_1_CT_wb_1302_4.nii.gz",1],
+        ["16/10000116_1_1302_117.nii.gz",1],
+        ["16/10000077_1_1302_117.nii.gz",1],
+        ["16/10000056_1_237_117.nii.gz",0],
+        ["16/10000054_1_237_117.nii.gz",0],
+        ["16/10000151_1_237_117.nii.gz",0],
+        ["16/10000032_1_1302_117.nii.gz",1],
+        ["16/10000051_1_237_117.nii.gz",0],
+        ["16/10000153_1_1302_117.nii.gz",1],
+        ["16/10000019_1_CT_wb_237_6.nii.gz",0],
+        ["16/10000044_1_237_117.nii.gz",0],
+        ["16/10000175_1_237_117.nii.gz",0],
+        ["16/10000143_1_CTce_ThAb_1302_7.nii.gz",1],
+        ["16/10000160_1_1302_117.nii.gz",1],
+        ["16/10000169_1_1302_117.nii.gz",1],
+        ["16/10000048_1_1302_117.nii.gz",1],
+        ["16/10000203_1_1302_117.nii.gz",1],
+        ["16/10000099_1_CT_wb_1302_5.nii.gz",1],
+        ["16/10000157_1_1302_117.nii.gz",1],
+        ["16/10000046_1_1302_117.nii.gz",1],
+        ["16/10000147_1_CTce_ThAb_1302_8.nii.gz",1],
+        ["16/10000095_1_CT_wb_237_7.nii.gz",0],
+        ["16/10000190_1_237_117.nii.gz",0],
+        ["16/10000179_1_237_117.nii.gz",0],
+        ["16/10000007_1_1302_117.nii.gz",1],
+        ["16/10000189_1_1302_117.nii.gz",1],
+        ["16/10000156_1_1302_117.nii.gz",1],
+        ["16/10000076_1_237_117.nii.gz",0],
+        ["16/10000196_1_237_117.nii.gz",0],
+        ["16/10000150_1_1302_117.nii.gz",1],
+        ["16/10000106_1_CTce_ThAb_237_7.nii.gz",0],
+        ["16/10000200_1_237_117.nii.gz",0],
+        ["16/10000023_1_CT_wb_1302_6.nii.gz",1],
+        ["16/10000168_1_237_117.nii.gz",0],
+        ["16/10000104_1_CTce_ThAb_237_7.nii.gz",0],
+        ["16/10000138_1_CTce_ThAb_237_9.nii.gz",0],
+        ["16/10000068_1_1302_117.nii.gz",1],
+        ["16/10000041_1_237_117.nii.gz",0],
+        ["16/10000154_1_1302_117.nii.gz",1],
+        ["16/10000136_1_CTce_ThAb_237_7.nii.gz",0],
+        ["16/10000189_1_237_117.nii.gz",0],
+        ["16/10000188_1_237_117.nii.gz",0],
+        ["16/10000091_1_1302_117.nii.gz",1],
+        ["16/10000117_1_1302_117.nii.gz",1],
+        ["16/10000179_1_1302_117.nii.gz",1],
+        ["16/10000129_1_CTce_ThAb_1302_5.nii.gz",1],
+        ["16/10000088_1_CT_wb_237_4.nii.gz",0],
+        ["16/10000081_1_CT_wb_1302_6.nii.gz",1],
+        ["16/10000127_1_CTce_ThAb_1302_4.nii.gz",1],
+        ["16/10000161_1_1302_117.nii.gz",1],
+        ["16/10000192_1_237_117.nii.gz",0],
+        ["16/10000162_1_1302_117.nii.gz",1],
+        ["16/10000123_1_237_117.nii.gz",0],
+        ["16/10000194_1_1302_117.nii.gz",1],
+        ["16/10000104_1_CTce_ThAb_1302_7.nii.gz",1],
+        ["16/10000142_1_CTce_ThAb_237_7.nii.gz",0],
+        ["16/10000124_1_1302_117.nii.gz",1],
+        ["16/10000038_1_237_117.nii.gz",0],
+        ["16/10000090_1_CT_wb_237_6.nii.gz",0],
+        ["16/10000126_1_237_117.nii.gz",0],
+        ["16/10000047_1_1302_117.nii.gz",1],
+        ["16/10000026_1_1302_117.nii.gz",1],
+        ["16/10000132_1_CTce_ThAb_237_8.nii.gz",0],
+        ["16/10000037_1_237_117.nii.gz",0],
+        ["16/10000126_1_1302_117.nii.gz",1],
+        ["16/10000148_1_CTce_ThAb_237_6.nii.gz",0],
+        ["16/10000142_1_CTce_ThAb_1302_7.nii.gz",1],
+        ["16/10000170_1_1302_117.nii.gz",1],
+        ["16/10000057_1_237_117.nii.gz",0],
+        ["16/10000040_1_237_117.nii.gz",0],
+        ["16/10000079_1_CT_wb_1302_7.nii.gz",1],
+        ["16/10000133_1_CTce_ThAb_1302_9.nii.gz",1],
+        ["16/10000129_1_CTce_ThAb_237_5.nii.gz",0],
+        ["16/10000201_1_237_117.nii.gz",0],
+        ["16/10000084_1_237_117.nii.gz",0],
+        ["16/10000173_1_1302_117.nii.gz",1],
+        ["16/10000064_1_237_117.nii.gz",0],
+        ["16/10000130_1_CTce_ThAb_1302_5.nii.gz",1],
+        ["16/10000094_1_CT_wb_237_7.nii.gz",0],
+        ["16/10000065_1_1302_117.nii.gz",1],
+        ["16/10000114_1_1302_117.nii.gz",1],
+        ["16/10000042_1_237_117.nii.gz",0],
+        ["16/10000048_1_237_117.nii.gz",0],
+        ["16/10000151_1_1302_117.nii.gz",1],
+        ["16/10000060_1_1302_117.nii.gz",1],
+        ["16/10000018_1_CT_wb_237_4.nii.gz",0],
+        ["16/10000024_1_1302_117.nii.gz",1],
+        ["16/10000187_1_1302_117.nii.gz",1],
+        ["16/10000111_1_CTce_ThAb_237_6.nii.gz",0],
+        ["16/10000050_1_1302_117.nii.gz",1],
+        ["16/10000128_1_CTce_ThAb_1302_5.nii.gz",1],
+        ["16/10000134_1_CTce_ThAb_1302_6.nii.gz",1],
+        ["16/10000119_1_1302_117.nii.gz",1],
+        ["16/10000092_1_CT_wb_1302_8.nii.gz",1],
+        ["16/10000205_1_1302_117.nii.gz",1],
+        ["16/10000169_1_237_117.nii.gz",0],
+        ["16/10000155_1_1302_117.nii.gz",1],
+        ["16/10000044_1_1302_117.nii.gz",1],
+        ["16/10000134_1_CTce_ThAb_237_6.nii.gz",0],
+        ["16/10000016_1_CT_wb_1302_9.nii.gz",1],
+        ["16/10000031_1_237_117.nii.gz",0],
+        ["16/10000020_1_CT_wb_237_8.nii.gz",0],
+        ["16/10000122_1_237_117.nii.gz",0],
+        ["16/10000123_1_1302_117.nii.gz",1],
+        ["16/10000062_1_237_117.nii.gz",0],
+        ["16/10000042_1_1302_117.nii.gz",1],
+        ["16/10000135_1_CTce_ThAb_1302_7.nii.gz",1],
+        ["16/10000106_1_CTce_ThAb_1302_7.nii.gz",1],
+        ["16/10000051_1_1302_117.nii.gz",1],
+        ["16/10000198_1_237_117.nii.gz",0],
+        ["16/10000136_1_CTce_ThAb_1302_7.nii.gz",1],
+        ["16/10000045_1_237_117.nii.gz",0],
+        ["16/10000147_1_CTce_ThAb_237_8.nii.gz",0],
+        ["16/10000086_1_CT_wb_1302_6.nii.gz",1],
+        ["16/10000131_1_CTce_ThAb_1302_4.nii.gz",1],
+        ["16/10000174_1_237_117.nii.gz",0],
+        ["16/10000170_1_237_117.nii.gz",0],
+        ["16/10000049_1_237_117.nii.gz",0],
+        ["16/10000116_1_237_117.nii.gz",0],
+        ["16/10000137_1_CTce_ThAb_1302_7.nii.gz",1],
+        ["16/10000111_1_CTce_ThAb_1302_6.nii.gz",1],
+        ["16/10000180_1_1302_117.nii.gz",1],
+        ["16/10000075_1_237_117.nii.gz",0],
+        ["16/10000161_1_237_117.nii.gz",0],
+        ["16/10000011_1_CT_wb_1302_7.nii.gz",1],
+        ["16/10000094_1_CT_wb_1302_7.nii.gz",1],
+        ["16/10000015_1_CT_wb_237_6.nii.gz",0],
+        ["16/10000145_1_CTce_ThAb_1302_7.nii.gz",1],
+        ["16/10000085_1_CT_wb_1302_6.nii.gz",1],
+        ["16/10000033_1_237_117.nii.gz",0],
+        ["16/10000097_1_1302_117.nii.gz",1],
+        ["16/10000141_1_CTce_ThAb_1302_5.nii.gz",1],
+        ["16/10000130_1_CTce_ThAb_237_5.nii.gz",0],
+        ["16/10000171_1_237_117.nii.gz",0],
+        ["16/10000163_1_1302_117.nii.gz",1],
+        ["16/10000021_1_CT_wb_1302_9.nii.gz",1],
+        ["16/10000184_1_237_117.nii.gz",0],
+        ["16/10000114_1_237_117.nii.gz",0],
+        ["16/10000160_1_237_117.nii.gz",0],
+        ["16/10000071_1_237_117.nii.gz",0],
+        ["16/10000084_1_1302_117.nii.gz",1],
+        ["16/10000135_1_CTce_ThAb_237_7.nii.gz",0],
+        ["16/10000117_1_237_117.nii.gz",0],
+        ["16/10000149_1_CTce_ThAb_1302_8.nii.gz",1],
+        ["16/10000162_1_237_117.nii.gz",0],
+        ["16/10000025_1_CT_wb_1302_8.nii.gz",1],
+        ["16/10000100_1_CTce_ThAb_237_6.nii.gz",0],
+        ["16/10000200_1_1302_117.nii.gz",1],
+        ["16/10000096_1_CT_wb_237_9.nii.gz",0],
+        ["16/10000024_1_237_117.nii.gz",0],
+        ["16/10000118_1_1302_117.nii.gz",1],
+        ["16/10000112_1_CTce_ThAb_237_8.nii.gz",0],
+        ["16/10000159_1_237_117.nii.gz",0],
+        ["16/10000196_1_1302_117.nii.gz",1],
+        ["16/10000204_1_237_117.nii.gz",0],
+        ["16/10000019_1_CT_wb_1302_6.nii.gz",1],
+        ["16/10000047_1_237_117.nii.gz",0],
+        ["16/10000035_1_237_117.nii.gz",0],
+        ["16/10000012_1_237_117.nii.gz",0],
+        ["16/10000128_1_CTce_ThAb_237_5.nii.gz",0],
+        ["16/10000174_1_1302_117.nii.gz",1],
+        ["16/10000013_1_237_117.nii.gz",0],
+        ["16/10000056_1_1302_117.nii.gz",1],
+        ["16/10000020_1_CT_wb_1302_8.nii.gz",1],
+        ["16/10000076_1_1302_117.nii.gz",1],
+        ["16/10000177_1_237_117.nii.gz",0],
+        ["16/10000198_1_1302_117.nii.gz",1],
+        ["16/10000078_1_237_117.nii.gz",0],
+        ["16/10000125_1_237_117.nii.gz",0],
+        ["16/10000082_1_CT_wb_1302_6.nii.gz",1],
+        ["16/10000091_1_237_117.nii.gz",0],
+        ["16/10000085_1_CT_wb_237_6.nii.gz",0],
+        ["16/10000089_1_CT_wb_1302_8.nii.gz",1],
+        ["16/10000110_1_CTce_ThAb_1302_9.nii.gz",1],
+        ["16/10000053_1_1302_117.nii.gz",1]
+    ],
+    "validation": [
+        ["16/10000203_1_237_117.nii.gz",0],
+        ["16/10000022_1_CT_wb_237_4.nii.gz",0],
+        ["16/10000017_1_CT_wb_237_9.nii.gz",0],
+        ["16/10000166_1_1302_117.nii.gz",1],
+        ["16/10000016_1_CT_wb_237_9.nii.gz",0],
+        ["16/10000057_1_1302_117.nii.gz",1],
+        ["16/10000165_1_237_117.nii.gz",0],
+        ["16/10000021_1_CT_wb_237_9.nii.gz",0],
+        ["16/10000098_1_237_117.nii.gz",0],
+        ["16/10000068_1_237_117.nii.gz",0],
+        ["16/10000095_1_CT_wb_1302_7.nii.gz",1],
+        ["16/10000067_1_CT_wb_237_9.nii.gz",0],
+        ["16/10000069_1_1302_117.nii.gz",1],
+        ["16/10000201_1_1302_117.nii.gz",1],
+        ["16/10000132_1_CTce_ThAb_1302_8.nii.gz",1],
+        ["16/10000181_1_1302_117.nii.gz",1],
+        ["16/10000101_1_1302_117.nii.gz",1],
+        ["16/10000067_1_CT_wb_1302_9.nii.gz",1],
+        ["16/10000027_1_237_117.nii.gz",0],
+        ["16/10000187_1_237_117.nii.gz",0],
+        ["16/10000065_1_237_117.nii.gz",0],
+        ["16/10000186_1_237_117.nii.gz",0],
+        ["16/10000186_1_1302_117.nii.gz",1],
+        ["16/10000185_1_1302_117.nii.gz",1],
+        ["16/10000097_1_237_117.nii.gz",0],
+        ["16/10000023_1_CT_wb_237_6.nii.gz",0],
+        ["16/10000098_1_1302_117.nii.gz",1],
+        ["16/10000099_1_CT_wb_237_5.nii.gz",0],
+        ["16/10000073_1_1302_117.nii.gz",1],
+        ["16/10000184_1_1302_117.nii.gz",1],
+        ["16/10000093_1_1302_117.nii.gz",1],
+        ["16/10000086_1_CT_wb_237_6.nii.gz",0],
+        ["16/10000007_1_237_117.nii.gz",0],
+        ["16/10000038_1_1302_117.nii.gz",1],
+        ["16/10000050_1_237_117.nii.gz",0],
+        ["16/10000093_1_237_117.nii.gz",0],
+        ["16/10000183_1_237_117.nii.gz",0],
+        ["16/10000060_1_237_117.nii.gz",0],
+        ["16/10000089_1_CT_wb_237_8.nii.gz",0],
+        ["16/10000124_1_237_117.nii.gz",0],
+        ["16/10000152_1_237_117.nii.gz",0],
+        ["16/10000158_1_1302_117.nii.gz",1],
+        ["16/10000193_1_237_117.nii.gz",0],
+        ["16/10000167_1_237_117.nii.gz",0],
+        ["16/10000008_1_237_117.nii.gz",0],
+        ["16/10000071_1_1302_117.nii.gz",1],
+        ["16/10000171_1_1302_117.nii.gz",1],
+        ["16/10000120_1_237_117.nii.gz",0],
+        ["16/10000100_1_CTce_ThAb_1302_6.nii.gz",1],
+        ["16/10000154_1_237_117.nii.gz",0],
+        ["16/10000082_1_CT_wb_237_6.nii.gz",0],
+        ["16/10000120_1_1302_117.nii.gz",1],
+        ["16/10000175_1_1302_117.nii.gz",1],
+        ["16/10000026_1_237_117.nii.gz",0],
+        ["16/10000178_1_1302_117.nii.gz",1],
+        ["16/10000192_1_1302_117.nii.gz",1],
+        ["16/10000155_1_237_117.nii.gz",0],
+        ["16/10000152_1_1302_117.nii.gz",1],
+        ["16/10000005_1_CT_wb_237_7.nii.gz",0],
+        ["16/10000191_1_237_117.nii.gz",0],
+        ["16/10000073_1_237_117.nii.gz",0],
+        ["16/10000181_1_237_117.nii.gz",0],
+        ["16/10000014_1_CT_wb_1302_5.nii.gz",1],
+        ["16/10000017_1_CT_wb_1302_9.nii.gz",1],
+        ["16/10000081_1_CT_wb_237_6.nii.gz",0],
+        ["16/10000079_1_CT_wb_237_7.nii.gz",0],
+        ["16/10000153_1_237_117.nii.gz",0],
+        ["16/10000164_1_237_117.nii.gz",0],
+        ["16/10000167_1_1302_117.nii.gz",1]
+    ],
+    "test": [
+        ["16/10000109_1_CTce_ThAb_1302_6.nii.gz",1],
+        ["16/10000039_1_237_117.nii.gz",0],
+        ["16/10000118_1_237_117.nii.gz",0],
+        ["16/10000190_1_1302_117.nii.gz",1],
+        ["16/10000110_1_CTce_ThAb_237_9.nii.gz",0],
+        ["16/10000180_1_237_117.nii.gz",0],
+        ["16/10000131_1_CTce_ThAb_237_8.nii.gz",0],
+        ["16/10000121_1_1302_117.nii.gz",1],
+        ["16/10000127_1_CTce_ThAb_237_8.nii.gz",0],
+        ["16/10000173_1_237_117.nii.gz",0],
+        ["16/10000166_1_237_117.nii.gz",0],
+        ["16/10000105_1_CTce_ThAb_1302_4.nii.gz",1],
+        ["16/10000177_1_1302_117.nii.gz",1],
+        ["16/10000031_1_1302_117.nii.gz",1],
+        ["16/10000188_1_1302_117.nii.gz",1],
+        ["16/10000069_1_237_117.nii.gz",0],
+        ["16/10000143_1_CTce_ThAb_237_7.nii.gz",0],
+        ["16/10000014_1_CT_wb_237_5.nii.gz",0],
+        ["16/10000133_1_CTce_ThAb_237_8.nii.gz",0],
+        ["16/10000199_1_1302_117.nii.gz",1],
+        ["16/10000205_1_237_117.nii.gz",0],
+        ["16/10000121_1_237_117.nii.gz",0],
+        ["16/10000149_1_CTce_ThAb_237_8.nii.gz",0],
+        ["16/10000199_1_237_117.nii.gz",0],
+        ["16/10000032_1_237_117.nii.gz",0],
+        ["16/10000156_1_237_117.nii.gz",0],
+        ["16/10000092_1_CT_wb_237_4.nii.gz",0],
+        ["16/10000037_1_1302_117.nii.gz",1],
+        ["16/10000172_1_1302_117.nii.gz",1],
+        ["16/10000043_1_237_117.nii.gz",0],
+        ["16/10000204_1_1302_117.nii.gz",1],
+        ["16/10000185_1_237_117.nii.gz",0],
+        ["16/10000108_1_CTce_ThAb_1302_4.nii.gz",1],
+        ["16/10000194_1_237_117.nii.gz",0],
+        ["16/10000059_1_1302_117.nii.gz",1]
+    ]
+}
diff --git a/src/mednet/config/data/visceral/default.py b/src/mednet/config/data/visceral/default.py
new file mode 100644
index 0000000000000000000000000000000000000000..46942bb7d2015a9223a9069d7f1d166af3a4c5c7
--- /dev/null
+++ b/src/mednet/config/data/visceral/default.py
@@ -0,0 +1,14 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+"""VISCERAL dataset for 3D organ classification.
+
+Database reference:
+
+See :py:class:`mednet.config.data.visceral.datamodule.DataModule` for
+technical details.
+"""
+
+from mednet.config.data.visceral.datamodule import DataModule
+
+datamodule = DataModule("default.json")
diff --git a/src/mednet/config/models/cnn3d.py b/src/mednet/config/models/cnn3d.py
new file mode 100644
index 0000000000000000000000000000000000000000..305b545287077a6b67c54da4fcca25025a2c6615
--- /dev/null
+++ b/src/mednet/config/models/cnn3d.py
@@ -0,0 +1,15 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+"""Simple CNN for 3D organ classification, to be trained from scratch."""
+
+from torch.nn import BCEWithLogitsLoss
+from torch.optim import Adam
+
+from mednet.models.cnn3d import Conv3DNet
+
+model = Conv3DNet(
+    loss_type=BCEWithLogitsLoss,
+    optimizer_type=Adam,
+    optimizer_arguments=dict(lr=8e-5),
+)
diff --git a/src/mednet/models/cnn3d.py b/src/mednet/models/cnn3d.py
new file mode 100644
index 0000000000000000000000000000000000000000..d0be0e62e6c66431e0d14ac1d2ecddcfd91cf1d7
--- /dev/null
+++ b/src/mednet/models/cnn3d.py
@@ -0,0 +1,206 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+import logging
+import typing
+
+import torch
+import torch.nn as nn
+import torch.nn.functional as F  # noqa: N812
+import torch.optim.optimizer
+import torch.utils.data
+
+from ..data.typing import TransformSequence
+from .model import Model
+from .separate import separate
+
+logger = logging.getLogger(__name__)
+
+
+class Conv3DNet(Model):
+    """Implementation of 3D CNN.
+
+    This network has a linear output.  You should use losses with ``WithLogit``
+    instead of cross-entropy versions when training.
+
+    Parameters
+    ----------
+    loss_type
+        The loss to be used for training and evaluation.
+
+        .. warning::
+
+           The loss should be set to always return batch averages (as opposed
+           to the batch sum), as our logging system expects it so.
+    loss_arguments
+        Arguments to the loss.
+    optimizer_type
+        The type of optimizer to use for training.
+    optimizer_arguments
+        Arguments to the optimizer after ``params``.
+    augmentation_transforms
+        An optional sequence of torch modules containing transforms to be
+        applied on the input **before** it is fed into the network.
+    num_classes
+        Number of outputs (classes) for this model.
+    """
+
+    def __init__(
+        self,
+        loss_type: torch.nn.Module = torch.nn.BCEWithLogitsLoss,
+        loss_arguments: dict[str, typing.Any] = {},
+        optimizer_type: type[torch.optim.Optimizer] = torch.optim.Adam,
+        optimizer_arguments: dict[str, typing.Any] = {},
+        augmentation_transforms: TransformSequence = [],
+        num_classes: int = 1,
+    ):
+        super().__init__(
+            loss_type,
+            loss_arguments,
+            optimizer_type,
+            optimizer_arguments,
+            augmentation_transforms,
+            num_classes,
+        )
+
+        self.name = "cnn3D"
+        self.num_classes = num_classes
+
+        self.model_transforms = []
+
+        # First convolution block
+        self.conv3d_1_1 = nn.Conv3d(
+            in_channels=1, out_channels=4, kernel_size=3, stride=1, padding=1
+        )
+        self.conv3d_1_2 = nn.Conv3d(
+            in_channels=4, out_channels=16, kernel_size=3, stride=1, padding=1
+        )
+        self.conv3d_1_3 = nn.Conv3d(
+            in_channels=1, out_channels=16, kernel_size=1, stride=1
+        )
+        self.batch_norm_1_1 = nn.BatchNorm3d(4)
+        self.batch_norm_1_2 = nn.BatchNorm3d(16)
+        self.batch_norm_1_3 = nn.BatchNorm3d(16)
+
+        # Second convolution block
+        self.conv3d_2_1 = nn.Conv3d(
+            in_channels=16, out_channels=24, kernel_size=3, stride=1, padding=1
+        )
+        self.conv3d_2_2 = nn.Conv3d(
+            in_channels=24, out_channels=32, kernel_size=3, stride=1, padding=1
+        )
+        self.conv3d_2_3 = nn.Conv3d(
+            in_channels=16, out_channels=32, kernel_size=1, stride=1
+        )
+        self.batch_norm_2_1 = nn.BatchNorm3d(24)
+        self.batch_norm_2_2 = nn.BatchNorm3d(32)
+        self.batch_norm_2_3 = nn.BatchNorm3d(32)
+
+        # Third convolution block
+        self.conv3d_3_1 = nn.Conv3d(
+            in_channels=32, out_channels=40, kernel_size=3, stride=1, padding=1
+        )
+        self.conv3d_3_2 = nn.Conv3d(
+            in_channels=40, out_channels=48, kernel_size=3, stride=1, padding=1
+        )
+        self.conv3d_3_3 = nn.Conv3d(
+            in_channels=32, out_channels=48, kernel_size=1, stride=1
+        )
+        self.batch_norm_3_1 = nn.BatchNorm3d(40)
+        self.batch_norm_3_2 = nn.BatchNorm3d(48)
+        self.batch_norm_3_3 = nn.BatchNorm3d(48)
+
+        # Fourth convolution block
+        self.conv3d_4_1 = nn.Conv3d(
+            in_channels=48, out_channels=56, kernel_size=3, stride=1, padding=1
+        )
+        self.conv3d_4_2 = nn.Conv3d(
+            in_channels=56, out_channels=64, kernel_size=3, stride=1, padding=1
+        )
+        self.conv3d_4_3 = nn.Conv3d(
+            in_channels=48, out_channels=64, kernel_size=1, stride=1
+        )
+        self.batch_norm_4_1 = nn.BatchNorm3d(56)
+        self.batch_norm_4_2 = nn.BatchNorm3d(64)
+        self.batch_norm_4_3 = nn.BatchNorm3d(64)
+
+        self.pool = nn.MaxPool3d(2)
+        self.global_pool = nn.AdaptiveAvgPool3d((1, 1, 1))
+        self.dropout = nn.Dropout(0.3)
+        self.fc1 = nn.Linear(64, 32)
+        self.fc2 = nn.Linear(32, num_classes)
+
+    def forward(self, x):
+        x = self.normalizer(x)  # type: ignore
+
+        # First convolution block
+        _x = x
+        x = F.relu(self.batch_norm_1_1(self.conv3d_1_1(x)))
+        x = F.relu(self.batch_norm_1_2(self.conv3d_1_2(x)))
+        x = (x + F.relu(self.batch_norm_1_3(self.conv3d_1_3(_x)))) / 2
+        x = self.pool(x)
+
+        # Second convolution block
+
+        _x = x
+        x = F.relu(self.batch_norm_2_1(self.conv3d_2_1(x)))
+        x = F.relu(self.batch_norm_2_2(self.conv3d_2_2(x)))
+        x = (x + F.relu(self.batch_norm_2_3(self.conv3d_2_3(_x)))) / 2
+        x = self.pool(x)
+
+        # Third convolution block
+
+        _x = x
+        x = F.relu(self.batch_norm_3_1(self.conv3d_3_1(x)))
+        x = F.relu(self.batch_norm_3_2(self.conv3d_3_2(x)))
+        x = (x + F.relu(self.batch_norm_3_3(self.conv3d_3_3(_x)))) / 2
+        x = self.pool(x)
+
+        # Fourth convolution block
+
+        _x = x
+        x = F.relu(self.batch_norm_4_1(self.conv3d_4_1(x)))
+        x = F.relu(self.batch_norm_4_2(self.conv3d_4_2(x)))
+        x = (x + F.relu(self.batch_norm_4_3(self.conv3d_4_3(_x)))) / 2
+
+        x = self.global_pool(x)
+        x = x.view(x.size(0), x.size(1))
+
+        x = F.relu(self.fc1(x))
+        x = self.dropout(x)
+        return self.fc2(x)
+
+        # x = F.log_softmax(x, dim=1) # 0 is batch size
+
+    def training_step(self, batch, _):
+        images = batch[0]
+        labels = batch[1]["label"]
+
+        # Increase label dimension if too low
+        # Allows single and multiclass usage
+        if labels.ndim == 1:
+            labels = torch.reshape(labels, (labels.shape[0], 1))
+
+        # Forward pass on the network
+        outputs = self(self.augmentation_transforms(images))
+
+        return self._train_loss(outputs, labels.float())
+
+    def validation_step(self, batch, batch_idx, dataloader_idx=0):
+        images = batch[0]
+        labels = batch[1]["label"]
+
+        # Increase label dimension if too low
+        # Allows single and multiclass usage
+        if labels.ndim == 1:
+            labels = torch.reshape(labels, (labels.shape[0], 1))
+
+        # data forwarding on the existing network
+        outputs = self(images)
+        return self._validation_loss(outputs, labels.float())
+
+    def predict_step(self, batch, batch_idx, dataloader_idx=0):
+        outputs = self(batch[0])
+        probabilities = torch.sigmoid(outputs)
+        return separate((probabilities, batch[1]))
diff --git a/tests/test_visceral.py b/tests/test_visceral.py
new file mode 100644
index 0000000000000000000000000000000000000000..9743577e1dc68f819c556177dc2e77dfa616baeb
--- /dev/null
+++ b/tests/test_visceral.py
@@ -0,0 +1,46 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+"""Tests for VISCERAL dataset."""
+
+import pytest
+from click.testing import CliRunner
+
+
+def id_function(val):
+    if isinstance(val, dict):
+        return str(val)
+    return repr(val)
+
+
+@pytest.mark.parametrize(
+    "split,lenghts",
+    [
+        ("default", dict(train=241, validation=69, test=35)),
+    ],
+    ids=id_function,  # just changes how pytest prints it
+)
+def test_protocol_consistency(
+    database_checkers,
+    split: str,
+    lenghts: dict[str, int],
+):
+    from mednet.data.split import make_split
+
+    database_checkers.check_split(
+        make_split("mednet.config.data.visceral", f"{split}.json"),
+        lengths=lenghts,
+        prefixes=("16/10000"),
+        possible_labels=(0, 1),
+    )
+
+
+@pytest.mark.skip_if_rc_var_not_set("datadir.visceral")
+def test_database_check():
+    from mednet.scripts.database import check
+
+    runner = CliRunner()
+    result = runner.invoke(check, ["visceral"])
+    assert (
+        result.exit_code == 0
+    ), f"Exit code {result.exit_code} != 0 -- Output:\n{result.output}"