From 6dd0c9f97be4b383197f87df8c8c7b4f18aba782 Mon Sep 17 00:00:00 2001
From: dcarron <daniel.carron@idiap.ch>
Date: Mon, 5 Jun 2023 13:17:05 +0200
Subject: [PATCH] Moved tbx11k_simplified_v2 configs to data

---
 pyproject.toml                                | 44 ++++++++--------
 .../datasets/tbx11k_simplified_v2/__init__.py | 25 ----------
 .../datasets/tbx11k_simplified_v2/default.py  | 17 -------
 .../datasets/tbx11k_simplified_v2/fold_0.py   | 17 -------
 .../tbx11k_simplified_v2/fold_0_rgb.py        | 17 -------
 .../datasets/tbx11k_simplified_v2/fold_1.py   | 17 -------
 .../tbx11k_simplified_v2/fold_1_rgb.py        | 17 -------
 .../datasets/tbx11k_simplified_v2/fold_2.py   | 17 -------
 .../tbx11k_simplified_v2/fold_2_rgb.py        | 17 -------
 .../datasets/tbx11k_simplified_v2/fold_3.py   | 17 -------
 .../tbx11k_simplified_v2/fold_3_rgb.py        | 17 -------
 .../datasets/tbx11k_simplified_v2/fold_4.py   | 17 -------
 .../tbx11k_simplified_v2/fold_4_rgb.py        | 17 -------
 .../datasets/tbx11k_simplified_v2/fold_5.py   | 17 -------
 .../tbx11k_simplified_v2/fold_5_rgb.py        | 17 -------
 .../datasets/tbx11k_simplified_v2/fold_6.py   | 17 -------
 .../tbx11k_simplified_v2/fold_6_rgb.py        | 17 -------
 .../datasets/tbx11k_simplified_v2/fold_7.py   | 17 -------
 .../tbx11k_simplified_v2/fold_7_rgb.py        | 17 -------
 .../datasets/tbx11k_simplified_v2/fold_8.py   | 17 -------
 .../tbx11k_simplified_v2/fold_8_rgb.py        | 17 -------
 .../datasets/tbx11k_simplified_v2/fold_9.py   | 17 -------
 .../tbx11k_simplified_v2/fold_9_rgb.py        | 17 -------
 .../datasets/tbx11k_simplified_v2/rgb.py      | 18 -------
 .../data/tbx11k_simplified_v2/__init__.py     | 25 +++++++++-
 .../data/tbx11k_simplified_v2/default.py      | 49 ++++++++++++++++++
 .../data/tbx11k_simplified_v2/fold_0.py       | 49 ++++++++++++++++++
 .../data/tbx11k_simplified_v2/fold_0_rgb.py   | 49 ++++++++++++++++++
 .../data/tbx11k_simplified_v2/fold_1.py       | 49 ++++++++++++++++++
 .../data/tbx11k_simplified_v2/fold_1_rgb.py   | 49 ++++++++++++++++++
 .../data/tbx11k_simplified_v2/fold_2.py       | 49 ++++++++++++++++++
 .../data/tbx11k_simplified_v2/fold_2_rgb.py   | 49 ++++++++++++++++++
 .../data/tbx11k_simplified_v2/fold_3.py       | 49 ++++++++++++++++++
 .../data/tbx11k_simplified_v2/fold_3_rgb.py   | 49 ++++++++++++++++++
 .../data/tbx11k_simplified_v2/fold_4.py       | 49 ++++++++++++++++++
 .../data/tbx11k_simplified_v2/fold_4_rgb.py   | 49 ++++++++++++++++++
 .../data/tbx11k_simplified_v2/fold_5.py       | 49 ++++++++++++++++++
 .../data/tbx11k_simplified_v2/fold_5_rgb.py   | 49 ++++++++++++++++++
 .../data/tbx11k_simplified_v2/fold_6.py       | 49 ++++++++++++++++++
 .../data/tbx11k_simplified_v2/fold_6_rgb.py   | 49 ++++++++++++++++++
 .../data/tbx11k_simplified_v2/fold_7.py       | 49 ++++++++++++++++++
 .../data/tbx11k_simplified_v2/fold_7_rgb.py   | 49 ++++++++++++++++++
 .../data/tbx11k_simplified_v2/fold_8.py       | 49 ++++++++++++++++++
 .../data/tbx11k_simplified_v2/fold_8_rgb.py   | 49 ++++++++++++++++++
 .../data/tbx11k_simplified_v2/fold_9.py       | 49 ++++++++++++++++++
 .../data/tbx11k_simplified_v2/fold_9_rgb.py   | 49 ++++++++++++++++++
 src/ptbench/data/tbx11k_simplified_v2/rgb.py  | 50 +++++++++++++++++++
 47 files changed, 1124 insertions(+), 424 deletions(-)
 delete mode 100644 src/ptbench/configs/datasets/tbx11k_simplified_v2/__init__.py
 delete mode 100644 src/ptbench/configs/datasets/tbx11k_simplified_v2/default.py
 delete mode 100644 src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_0.py
 delete mode 100644 src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_0_rgb.py
 delete mode 100644 src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_1.py
 delete mode 100644 src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_1_rgb.py
 delete mode 100644 src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_2.py
 delete mode 100644 src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_2_rgb.py
 delete mode 100644 src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_3.py
 delete mode 100644 src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_3_rgb.py
 delete mode 100644 src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_4.py
 delete mode 100644 src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_4_rgb.py
 delete mode 100644 src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_5.py
 delete mode 100644 src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_5_rgb.py
 delete mode 100644 src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_6.py
 delete mode 100644 src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_6_rgb.py
 delete mode 100644 src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_7.py
 delete mode 100644 src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_7_rgb.py
 delete mode 100644 src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_8.py
 delete mode 100644 src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_8_rgb.py
 delete mode 100644 src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_9.py
 delete mode 100644 src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_9_rgb.py
 delete mode 100644 src/ptbench/configs/datasets/tbx11k_simplified_v2/rgb.py
 create mode 100644 src/ptbench/data/tbx11k_simplified_v2/default.py
 create mode 100644 src/ptbench/data/tbx11k_simplified_v2/fold_0.py
 create mode 100644 src/ptbench/data/tbx11k_simplified_v2/fold_0_rgb.py
 create mode 100644 src/ptbench/data/tbx11k_simplified_v2/fold_1.py
 create mode 100644 src/ptbench/data/tbx11k_simplified_v2/fold_1_rgb.py
 create mode 100644 src/ptbench/data/tbx11k_simplified_v2/fold_2.py
 create mode 100644 src/ptbench/data/tbx11k_simplified_v2/fold_2_rgb.py
 create mode 100644 src/ptbench/data/tbx11k_simplified_v2/fold_3.py
 create mode 100644 src/ptbench/data/tbx11k_simplified_v2/fold_3_rgb.py
 create mode 100644 src/ptbench/data/tbx11k_simplified_v2/fold_4.py
 create mode 100644 src/ptbench/data/tbx11k_simplified_v2/fold_4_rgb.py
 create mode 100644 src/ptbench/data/tbx11k_simplified_v2/fold_5.py
 create mode 100644 src/ptbench/data/tbx11k_simplified_v2/fold_5_rgb.py
 create mode 100644 src/ptbench/data/tbx11k_simplified_v2/fold_6.py
 create mode 100644 src/ptbench/data/tbx11k_simplified_v2/fold_6_rgb.py
 create mode 100644 src/ptbench/data/tbx11k_simplified_v2/fold_7.py
 create mode 100644 src/ptbench/data/tbx11k_simplified_v2/fold_7_rgb.py
 create mode 100644 src/ptbench/data/tbx11k_simplified_v2/fold_8.py
 create mode 100644 src/ptbench/data/tbx11k_simplified_v2/fold_8_rgb.py
 create mode 100644 src/ptbench/data/tbx11k_simplified_v2/fold_9.py
 create mode 100644 src/ptbench/data/tbx11k_simplified_v2/fold_9_rgb.py
 create mode 100644 src/ptbench/data/tbx11k_simplified_v2/rgb.py

diff --git a/pyproject.toml b/pyproject.toml
index 27ef33fc..1aee2d65 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -222,28 +222,28 @@ tbx11k_simplified_rs_f7 = "ptbench.configs.datasets.tbx11k_simplified_RS.fold_7"
 tbx11k_simplified_rs_f8 = "ptbench.configs.datasets.tbx11k_simplified_RS.fold_8"
 tbx11k_simplified_rs_f9 = "ptbench.configs.datasets.tbx11k_simplified_RS.fold_9"
 # TBX11K simplified dataset split 2 (and cross-validation folds)
-tbx11k_simplified_v2 = "ptbench.configs.datasets.tbx11k_simplified_v2.default"
-tbx11k_simplified_v2_rgb = "ptbench.configs.datasets.tbx11k_simplified_v2.rgb"
-tbx11k_simplified_v2_f0 = "ptbench.configs.datasets.tbx11k_simplified_v2.fold_0"
-tbx11k_simplified_v2_f1 = "ptbench.configs.datasets.tbx11k_simplified_v2.fold_1"
-tbx11k_simplified_v2_f2 = "ptbench.configs.datasets.tbx11k_simplified_v2.fold_2"
-tbx11k_simplified_v2_f3 = "ptbench.configs.datasets.tbx11k_simplified_v2.fold_3"
-tbx11k_simplified_v2_f4 = "ptbench.configs.datasets.tbx11k_simplified_v2.fold_4"
-tbx11k_simplified_v2_f5 = "ptbench.configs.datasets.tbx11k_simplified_v2.fold_5"
-tbx11k_simplified_v2_f6 = "ptbench.configs.datasets.tbx11k_simplified_v2.fold_6"
-tbx11k_simplified_v2_f7 = "ptbench.configs.datasets.tbx11k_simplified_v2.fold_7"
-tbx11k_simplified_v2_f8 = "ptbench.configs.datasets.tbx11k_simplified_v2.fold_8"
-tbx11k_simplified_v2_f9 = "ptbench.configs.datasets.tbx11k_simplified_v2.fold_9"
-tbx11k_simplified_v2_f0_rgb = "ptbench.configs.datasets.tbx11k_simplified_v2.fold_0_rgb"
-tbx11k_simplified_v2_f1_rgb = "ptbench.configs.datasets.tbx11k_simplified_v2.fold_1_rgb"
-tbx11k_simplified_v2_f2_rgb = "ptbench.configs.datasets.tbx11k_simplified_v2.fold_2_rgb"
-tbx11k_simplified_v2_f3_rgb = "ptbench.configs.datasets.tbx11k_simplified_v2.fold_3_rgb"
-tbx11k_simplified_v2_f4_rgb = "ptbench.configs.datasets.tbx11k_simplified_v2.fold_4_rgb"
-tbx11k_simplified_v2_f5_rgb = "ptbench.configs.datasets.tbx11k_simplified_v2.fold_5_rgb"
-tbx11k_simplified_v2_f6_rgb = "ptbench.configs.datasets.tbx11k_simplified_v2.fold_6_rgb"
-tbx11k_simplified_v2_f7_rgb = "ptbench.configs.datasets.tbx11k_simplified_v2.fold_7_rgb"
-tbx11k_simplified_v2_f8_rgb = "ptbench.configs.datasets.tbx11k_simplified_v2.fold_8_rgb"
-tbx11k_simplified_v2_f9_rgb = "ptbench.configs.datasets.tbx11k_simplified_v2.fold_9_rgb"
+tbx11k_simplified_v2 = "ptbench.data.tbx11k_simplified_v2.default"
+tbx11k_simplified_v2_rgb = "ptbench.data.tbx11k_simplified_v2.rgb"
+tbx11k_simplified_v2_f0 = "ptbench.data.tbx11k_simplified_v2.fold_0"
+tbx11k_simplified_v2_f1 = "ptbench.data.tbx11k_simplified_v2.fold_1"
+tbx11k_simplified_v2_f2 = "ptbench.data.tbx11k_simplified_v2.fold_2"
+tbx11k_simplified_v2_f3 = "ptbench.data.tbx11k_simplified_v2.fold_3"
+tbx11k_simplified_v2_f4 = "ptbench.data.tbx11k_simplified_v2.fold_4"
+tbx11k_simplified_v2_f5 = "ptbench.data.tbx11k_simplified_v2.fold_5"
+tbx11k_simplified_v2_f6 = "ptbench.data.tbx11k_simplified_v2.fold_6"
+tbx11k_simplified_v2_f7 = "ptbench.data.tbx11k_simplified_v2.fold_7"
+tbx11k_simplified_v2_f8 = "ptbench.data.tbx11k_simplified_v2.fold_8"
+tbx11k_simplified_v2_f9 = "ptbench.data.tbx11k_simplified_v2.fold_9"
+tbx11k_simplified_v2_f0_rgb = "ptbench.data.tbx11k_simplified_v2.fold_0_rgb"
+tbx11k_simplified_v2_f1_rgb = "ptbench.data.tbx11k_simplified_v2.fold_1_rgb"
+tbx11k_simplified_v2_f2_rgb = "ptbench.data.tbx11k_simplified_v2.fold_2_rgb"
+tbx11k_simplified_v2_f3_rgb = "ptbench.data.tbx11k_simplified_v2.fold_3_rgb"
+tbx11k_simplified_v2_f4_rgb = "ptbench.data.tbx11k_simplified_v2.fold_4_rgb"
+tbx11k_simplified_v2_f5_rgb = "ptbench.data.tbx11k_simplified_v2.fold_5_rgb"
+tbx11k_simplified_v2_f6_rgb = "ptbench.data.tbx11k_simplified_v2.fold_6_rgb"
+tbx11k_simplified_v2_f7_rgb = "ptbench.data.tbx11k_simplified_v2.fold_7_rgb"
+tbx11k_simplified_v2_f8_rgb = "ptbench.data.tbx11k_simplified_v2.fold_8_rgb"
+tbx11k_simplified_v2_f9_rgb = "ptbench.data.tbx11k_simplified_v2.fold_9_rgb"
 # extended TBX11K simplified dataset split 2 (with radiological signs)
 tbx11k_simplified_v2_rs = "ptbench.configs.datasets.tbx11k_simplified_v2_RS.default"
 tbx11k_simplified_v2_rs_f0 = "ptbench.configs.datasets.tbx11k_simplified_v2_RS.fold_0"
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified_v2/__init__.py b/src/ptbench/configs/datasets/tbx11k_simplified_v2/__init__.py
deleted file mode 100644
index a1e6f50c..00000000
--- a/src/ptbench/configs/datasets/tbx11k_simplified_v2/__init__.py
+++ /dev/null
@@ -1,25 +0,0 @@
-# Copyright © 2022 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-
-def _maker(protocol, RGB=False):
-    from torchvision import transforms
-
-    from ....data.tbx11k_simplified_v2 import dataset as raw
-    from ....data.transforms import ElasticDeformation
-    from .. import make_dataset as mk
-
-    post_transforms = []
-    if RGB:
-        post_transforms = [
-            transforms.Lambda(lambda x: x.convert("RGB")),
-            transforms.ToTensor(),
-        ]
-
-    return mk(
-        [raw.subsets(protocol)],
-        [],
-        [ElasticDeformation(p=0.8)],
-        post_transforms,
-    )
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified_v2/default.py b/src/ptbench/configs/datasets/tbx11k_simplified_v2/default.py
deleted file mode 100644
index f969c855..00000000
--- a/src/ptbench/configs/datasets/tbx11k_simplified_v2/default.py
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright © 2022 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""TBX11k simplified dataset for TB detection (default protocol)
-
-* Split reference: first 62.6% of CXR for "train", 16% for "validation",
-* 21.4% for "test"
-* This split consists of non-TB and active TB samples
-* "healthy", "latent TB", and "sick & non-TB" samples are all merged under the label "non-TB"
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.tbx11k_simplified_v2` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("default")
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_0.py b/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_0.py
deleted file mode 100644
index 1805c000..00000000
--- a/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_0.py
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright © 2022 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""TBX11k simplified dataset for TB detection (cross validation fold 0)
-
-* Split reference: first 62.6% of CXR for "train", 16% for "validation",
-* 21.4% for "test"
-* This split consists of non-TB and active TB samples
-* "healthy", "latent TB", and "sick & non-TB" samples are all merged under the label "non-TB"
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.tbx11k_simplified_v2` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_0")
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_0_rgb.py b/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_0_rgb.py
deleted file mode 100644
index b232652f..00000000
--- a/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_0_rgb.py
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright © 2022 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""TBX11k simplified dataset for TB detection (cross validation fold 0, RGB)
-
-* Split reference: first 62.6% of CXR for "train", 16% for "validation",
-* 21.4% for "test"
-* This split consists of non-TB and active TB samples
-* "healthy", "latent TB", and "sick & non-TB" samples are all merged under the label "non-TB"
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.tbx11k_simplified_v2` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_0", RGB=True)
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_1.py b/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_1.py
deleted file mode 100644
index 8d8074a1..00000000
--- a/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_1.py
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright © 2022 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""TBX11k simplified dataset for TB detection (cross validation fold 1)
-
-* Split reference: first 62.6% of CXR for "train", 16% for "validation",
-* 21.4% for "test"
-* This split consists of non-TB and active TB samples
-* "healthy", "latent TB", and "sick & non-TB" samples are all merged under the label "non-TB"
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.tbx11k_simplified_v2` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_1")
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_1_rgb.py b/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_1_rgb.py
deleted file mode 100644
index ec042105..00000000
--- a/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_1_rgb.py
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright © 2022 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""TBX11k simplified dataset for TB detection (cross validation fold 1, RGB)
-
-* Split reference: first 62.6% of CXR for "train", 16% for "validation",
-* 21.4% for "test"
-* This split consists of non-TB and active TB samples
-* "healthy", "latent TB", and "sick & non-TB" samples are all merged under the label "non-TB"
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.tbx11k_simplified_v2` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_1", RGB=True)
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_2.py b/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_2.py
deleted file mode 100644
index 1962b037..00000000
--- a/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_2.py
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright © 2022 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""TBX11k simplified dataset for TB detection (cross validation fold 2)
-
-* Split reference: first 62.6% of CXR for "train", 16% for "validation",
-* 21.4% for "test"
-* This split consists of non-TB and active TB samples
-* "healthy", "latent TB", and "sick & non-TB" samples are all merged under the label "non-TB"
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.tbx11k_simplified_v2` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_2")
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_2_rgb.py b/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_2_rgb.py
deleted file mode 100644
index 660073a4..00000000
--- a/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_2_rgb.py
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright © 2022 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""TBX11k simplified dataset for TB detection (cross validation fold 2, RGB)
-
-* Split reference: first 62.6% of CXR for "train", 16% for "validation",
-* 21.4% for "test"
-* This split consists of non-TB and active TB samples
-* "healthy", "latent TB", and "sick & non-TB" samples are all merged under the label "non-TB"
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.tbx11k_simplified_v2` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_2", RGB=True)
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_3.py b/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_3.py
deleted file mode 100644
index 9872ef58..00000000
--- a/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_3.py
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright © 2022 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""TBX11k simplified dataset for TB detection (cross validation fold 3)
-
-* Split reference: first 62.6% of CXR for "train", 16% for "validation",
-* 21.4% for "test"
-* This split consists of non-TB and active TB samples
-* "healthy", "latent TB", and "sick & non-TB" samples are all merged under the label "non-TB"
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.tbx11k_simplified_v2` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_3")
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_3_rgb.py b/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_3_rgb.py
deleted file mode 100644
index bb54f1d2..00000000
--- a/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_3_rgb.py
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright © 2022 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""TBX11k simplified dataset for TB detection (cross validation fold 3, RGB)
-
-* Split reference: first 62.6% of CXR for "train", 16% for "validation",
-* 21.4% for "test"
-* This split consists of non-TB and active TB samples
-* "healthy", "latent TB", and "sick & non-TB" samples are all merged under the label "non-TB"
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.tbx11k_simplified_v2` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_3", RGB=True)
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_4.py b/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_4.py
deleted file mode 100644
index 7cde75d8..00000000
--- a/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_4.py
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright © 2022 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""TBX11k simplified dataset for TB detection (cross validation fold 4)
-
-* Split reference: first 62.6% of CXR for "train", 16% for "validation",
-* 21.4% for "test"
-* This split consists of non-TB and active TB samples
-* "healthy", "latent TB", and "sick & non-TB" samples are all merged under the label "non-TB"
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.tbx11k_simplified_v2` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_4")
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_4_rgb.py b/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_4_rgb.py
deleted file mode 100644
index d5bf8d82..00000000
--- a/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_4_rgb.py
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright © 2022 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""TBX11k simplified dataset for TB detection (cross validation fold 4, RGB)
-
-* Split reference: first 62.6% of CXR for "train", 16% for "validation",
-* 21.4% for "test"
-* This split consists of non-TB and active TB samples
-* "healthy", "latent TB", and "sick & non-TB" samples are all merged under the label "non-TB"
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.tbx11k_simplified_v2` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_4", RGB=True)
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_5.py b/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_5.py
deleted file mode 100644
index d9ca35bf..00000000
--- a/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_5.py
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright © 2022 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""TBX11k simplified dataset for TB detection (cross validation fold 5)
-
-* Split reference: first 62.6% of CXR for "train", 16% for "validation",
-* 21.4% for "test"
-* This split consists of non-TB and active TB samples
-* "healthy", "latent TB", and "sick & non-TB" samples are all merged under the label "non-TB"
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.tbx11k_simplified_v2` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_5")
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_5_rgb.py b/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_5_rgb.py
deleted file mode 100644
index 98332668..00000000
--- a/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_5_rgb.py
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright © 2022 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""TBX11k simplified dataset for TB detection (cross validation fold 5, RGB)
-
-* Split reference: first 62.6% of CXR for "train", 16% for "validation",
-* 21.4% for "test"
-* This split consists of non-TB and active TB samples
-* "healthy", "latent TB", and "sick & non-TB" samples are all merged under the label "non-TB"
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.tbx11k_simplified_v2` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_5", RGB=True)
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_6.py b/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_6.py
deleted file mode 100644
index c8abb065..00000000
--- a/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_6.py
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright © 2022 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""TBX11k simplified dataset for TB detection (cross validation fold 6)
-
-* Split reference: first 62.6% of CXR for "train", 16% for "validation",
-* 21.4% for "test"
-* This split consists of non-TB and active TB samples
-* "healthy", "latent TB", and "sick & non-TB" samples are all merged under the label "non-TB"
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.tbx11k_simplified_v2` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_6")
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_6_rgb.py b/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_6_rgb.py
deleted file mode 100644
index dabdb674..00000000
--- a/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_6_rgb.py
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright © 2022 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""TBX11k simplified dataset for TB detection (cross validation fold 6, RGB)
-
-* Split reference: first 62.6% of CXR for "train", 16% for "validation",
-* 21.4% for "test"
-* This split consists of non-TB and active TB samples
-* "healthy", "latent TB", and "sick & non-TB" samples are all merged under the label "non-TB"
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.tbx11k_simplified_v2` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_6", RGB=True)
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_7.py b/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_7.py
deleted file mode 100644
index 67864aa6..00000000
--- a/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_7.py
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright © 2022 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""TBX11k simplified dataset for TB detection (cross validation fold 7)
-
-* Split reference: first 62.6% of CXR for "train", 16% for "validation",
-* 21.4% for "test"
-* This split consists of non-TB and active TB samples
-* "healthy", "latent TB", and "sick & non-TB" samples are all merged under the label "non-TB"
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.tbx11k_simplified_v2` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_7")
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_7_rgb.py b/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_7_rgb.py
deleted file mode 100644
index d37bda6e..00000000
--- a/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_7_rgb.py
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright © 2022 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""TBX11k simplified dataset for TB detection (cross validation fold 7, RGB)
-
-* Split reference: first 62.6% of CXR for "train", 16% for "validation",
-* 21.4% for "test"
-* This split consists of non-TB and active TB samples
-* "healthy", "latent TB", and "sick & non-TB" samples are all merged under the label "non-TB"
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.tbx11k_simplified_v2` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_7", RGB=True)
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_8.py b/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_8.py
deleted file mode 100644
index 2ac58e16..00000000
--- a/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_8.py
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright © 2022 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""TBX11k simplified dataset for TB detection (cross validation fold 8)
-
-* Split reference: first 62.6% of CXR for "train", 16% for "validation",
-* 21.4% for "test"
-* This split consists of non-TB and active TB samples
-* "healthy", "latent TB", and "sick & non-TB" samples are all merged under the label "non-TB"
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.tbx11k_simplified_v2` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_8")
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_8_rgb.py b/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_8_rgb.py
deleted file mode 100644
index f6adcd43..00000000
--- a/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_8_rgb.py
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright © 2022 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""TBX11k simplified dataset for TB detection (cross validation fold 8, RGB)
-
-* Split reference: first 62.6% of CXR for "train", 16% for "validation",
-* 21.4% for "test"
-* This split consists of non-TB and active TB samples
-* "healthy", "latent TB", and "sick & non-TB" samples are all merged under the label "non-TB"
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.tbx11k_simplified_v2` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_8", RGB=True)
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_9.py b/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_9.py
deleted file mode 100644
index 1034cf81..00000000
--- a/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_9.py
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright © 2022 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""TBX11k simplified dataset for TB detection (cross validation fold 9)
-
-* Split reference: first 62.6% of CXR for "train", 16% for "validation",
-* 21.4% for "test"
-* This split consists of non-TB and active TB samples
-* "healthy", "latent TB", and "sick & non-TB" samples are all merged under the label "non-TB"
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.tbx11k_simplified_v2` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_9")
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_9_rgb.py b/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_9_rgb.py
deleted file mode 100644
index 8fe3f1db..00000000
--- a/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_9_rgb.py
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright © 2022 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""TBX11k simplified dataset for TB detection (cross validation fold 9, RGB)
-
-* Split reference: first 62.6% of CXR for "train", 16% for "validation",
-* 21.4% for "test"
-* This split consists of non-TB and active TB samples
-* "healthy", "latent TB", and "sick & non-TB" samples are all merged under the label "non-TB"
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.tbx11k_simplified_v2` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_9", RGB=True)
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified_v2/rgb.py b/src/ptbench/configs/datasets/tbx11k_simplified_v2/rgb.py
deleted file mode 100644
index c327dad9..00000000
--- a/src/ptbench/configs/datasets/tbx11k_simplified_v2/rgb.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# Copyright © 2022 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""TBX11k simplified dataset for TB detection (default protocol, converted in
-RGB)
-
-* Split reference: first 62.6% of CXR for "train", 16% for "validation",
-* 21.4% for "test"
-* This split consists of non-TB and active TB samples
-* "healthy", "latent TB", and "sick & non-TB" samples are all merged under the label "non-TB"
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.tbx11k_simplified_v2` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("default", RGB=True)
diff --git a/src/ptbench/data/tbx11k_simplified_v2/__init__.py b/src/ptbench/data/tbx11k_simplified_v2/__init__.py
index 7cf676b0..d6075e85 100644
--- a/src/ptbench/data/tbx11k_simplified_v2/__init__.py
+++ b/src/ptbench/data/tbx11k_simplified_v2/__init__.py
@@ -76,15 +76,36 @@ def _loader_bbox(context, sample):
     return make_delayed_bbox(sample, _raw_data_loader_bbox)
 
 
-dataset = JSONDataset(
+json_dataset = JSONDataset(
     protocols=_protocols,
     fieldnames=("data", "label"),
     loader=_loader,
 )
 
-dataset_with_bboxes = JSONDataset(
+json_dataset_with_bboxes = JSONDataset(
     protocols=_protocols,
     fieldnames=("data", "label", "bboxes"),
     loader=_loader_bbox,
 )
 """TBX11K simplified dataset object."""
+
+
+def _maker(protocol, RGB=False):
+    from torchvision import transforms
+
+    from .. import make_dataset
+    from ..transforms import ElasticDeformation
+
+    post_transforms = []
+    if RGB:
+        post_transforms = [
+            transforms.Lambda(lambda x: x.convert("RGB")),
+            transforms.ToTensor(),
+        ]
+
+    return make_dataset(
+        [json_dataset.subsets(protocol)],
+        [],
+        [ElasticDeformation(p=0.8)],
+        post_transforms,
+    )
diff --git a/src/ptbench/data/tbx11k_simplified_v2/default.py b/src/ptbench/data/tbx11k_simplified_v2/default.py
new file mode 100644
index 00000000..17b738c5
--- /dev/null
+++ b/src/ptbench/data/tbx11k_simplified_v2/default.py
@@ -0,0 +1,49 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""TBX11k simplified dataset for TB detection (default protocol)
+
+* Split reference: first 62.6% of CXR for "train", 16% for "validation",
+* 21.4% for "test"
+* This split consists of non-TB and active TB samples
+* "healthy", "latent TB", and "sick & non-TB" samples are all merged under the label "non-TB"
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.tbx11k_simplified_v2` for dataset details
+"""
+
+from clapper.logging import setup
+
+from .. import return_subsets
+from ..base_datamodule import BaseDataModule
+from . import _maker
+
+logger = setup(__name__.split(".")[0], format="%(levelname)s: %(message)s")
+
+
+class DefaultModule(BaseDataModule):
+    def __init__(
+        self,
+        train_batch_size=1,
+        predict_batch_size=1,
+        drop_incomplete_batch=False,
+        multiproc_kwargs=None,
+    ):
+        super().__init__(
+            train_batch_size=train_batch_size,
+            predict_batch_size=predict_batch_size,
+            drop_incomplete_batch=drop_incomplete_batch,
+            multiproc_kwargs=multiproc_kwargs,
+        )
+
+    def setup(self, stage: str):
+        self.dataset = _maker("default")
+        (
+            self.train_dataset,
+            self.validation_dataset,
+            self.extra_validation_datasets,
+            self.predict_dataset,
+        ) = return_subsets(self.dataset)
+
+
+datamodule = DefaultModule
diff --git a/src/ptbench/data/tbx11k_simplified_v2/fold_0.py b/src/ptbench/data/tbx11k_simplified_v2/fold_0.py
new file mode 100644
index 00000000..4751d17e
--- /dev/null
+++ b/src/ptbench/data/tbx11k_simplified_v2/fold_0.py
@@ -0,0 +1,49 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""TBX11k simplified dataset for TB detection (cross validation fold 0)
+
+* Split reference: first 62.6% of CXR for "train", 16% for "validation",
+* 21.4% for "test"
+* This split consists of non-TB and active TB samples
+* "healthy", "latent TB", and "sick & non-TB" samples are all merged under the label "non-TB"
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.tbx11k_simplified_v2` for dataset details
+"""
+
+from clapper.logging import setup
+
+from .. import return_subsets
+from ..base_datamodule import BaseDataModule
+from . import _maker
+
+logger = setup(__name__.split(".")[0], format="%(levelname)s: %(message)s")
+
+
+class Fold0Module(BaseDataModule):
+    def __init__(
+        self,
+        train_batch_size=1,
+        predict_batch_size=1,
+        drop_incomplete_batch=False,
+        multiproc_kwargs=None,
+    ):
+        super().__init__(
+            train_batch_size=train_batch_size,
+            predict_batch_size=predict_batch_size,
+            drop_incomplete_batch=drop_incomplete_batch,
+            multiproc_kwargs=multiproc_kwargs,
+        )
+
+    def setup(self, stage: str):
+        self.dataset = _maker("fold_0")
+        (
+            self.train_dataset,
+            self.validation_dataset,
+            self.extra_validation_datasets,
+            self.predict_dataset,
+        ) = return_subsets(self.dataset)
+
+
+datamodule = Fold0Module
diff --git a/src/ptbench/data/tbx11k_simplified_v2/fold_0_rgb.py b/src/ptbench/data/tbx11k_simplified_v2/fold_0_rgb.py
new file mode 100644
index 00000000..1ba0e2ac
--- /dev/null
+++ b/src/ptbench/data/tbx11k_simplified_v2/fold_0_rgb.py
@@ -0,0 +1,49 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""TBX11k simplified dataset for TB detection (cross validation fold 0, RGB)
+
+* Split reference: first 62.6% of CXR for "train", 16% for "validation",
+* 21.4% for "test"
+* This split consists of non-TB and active TB samples
+* "healthy", "latent TB", and "sick & non-TB" samples are all merged under the label "non-TB"
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.tbx11k_simplified_v2` for dataset details
+"""
+
+from clapper.logging import setup
+
+from .. import return_subsets
+from ..base_datamodule import BaseDataModule
+from . import _maker
+
+logger = setup(__name__.split(".")[0], format="%(levelname)s: %(message)s")
+
+
+class Fold0Module(BaseDataModule):
+    def __init__(
+        self,
+        train_batch_size=1,
+        predict_batch_size=1,
+        drop_incomplete_batch=False,
+        multiproc_kwargs=None,
+    ):
+        super().__init__(
+            train_batch_size=train_batch_size,
+            predict_batch_size=predict_batch_size,
+            drop_incomplete_batch=drop_incomplete_batch,
+            multiproc_kwargs=multiproc_kwargs,
+        )
+
+    def setup(self, stage: str):
+        self.dataset = _maker("fold_0", RGB=True)
+        (
+            self.train_dataset,
+            self.validation_dataset,
+            self.extra_validation_datasets,
+            self.predict_dataset,
+        ) = return_subsets(self.dataset)
+
+
+datamodule = Fold0Module
diff --git a/src/ptbench/data/tbx11k_simplified_v2/fold_1.py b/src/ptbench/data/tbx11k_simplified_v2/fold_1.py
new file mode 100644
index 00000000..c70e2d19
--- /dev/null
+++ b/src/ptbench/data/tbx11k_simplified_v2/fold_1.py
@@ -0,0 +1,49 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""TBX11k simplified dataset for TB detection (cross validation fold 1)
+
+* Split reference: first 62.6% of CXR for "train", 16% for "validation",
+* 21.4% for "test"
+* This split consists of non-TB and active TB samples
+* "healthy", "latent TB", and "sick & non-TB" samples are all merged under the label "non-TB"
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.tbx11k_simplified_v2` for dataset details
+"""
+
+from clapper.logging import setup
+
+from .. import return_subsets
+from ..base_datamodule import BaseDataModule
+from . import _maker
+
+logger = setup(__name__.split(".")[0], format="%(levelname)s: %(message)s")
+
+
+class Fold0Module(BaseDataModule):
+    def __init__(
+        self,
+        train_batch_size=1,
+        predict_batch_size=1,
+        drop_incomplete_batch=False,
+        multiproc_kwargs=None,
+    ):
+        super().__init__(
+            train_batch_size=train_batch_size,
+            predict_batch_size=predict_batch_size,
+            drop_incomplete_batch=drop_incomplete_batch,
+            multiproc_kwargs=multiproc_kwargs,
+        )
+
+    def setup(self, stage: str):
+        self.dataset = _maker("fold_1")
+        (
+            self.train_dataset,
+            self.validation_dataset,
+            self.extra_validation_datasets,
+            self.predict_dataset,
+        ) = return_subsets(self.dataset)
+
+
+datamodule = Fold0Module
diff --git a/src/ptbench/data/tbx11k_simplified_v2/fold_1_rgb.py b/src/ptbench/data/tbx11k_simplified_v2/fold_1_rgb.py
new file mode 100644
index 00000000..c543f62e
--- /dev/null
+++ b/src/ptbench/data/tbx11k_simplified_v2/fold_1_rgb.py
@@ -0,0 +1,49 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""TBX11k simplified dataset for TB detection (cross validation fold 1, RGB)
+
+* Split reference: first 62.6% of CXR for "train", 16% for "validation",
+* 21.4% for "test"
+* This split consists of non-TB and active TB samples
+* "healthy", "latent TB", and "sick & non-TB" samples are all merged under the label "non-TB"
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.tbx11k_simplified_v2` for dataset details
+"""
+
+from clapper.logging import setup
+
+from .. import return_subsets
+from ..base_datamodule import BaseDataModule
+from . import _maker
+
+logger = setup(__name__.split(".")[0], format="%(levelname)s: %(message)s")
+
+
+class Fold0Module(BaseDataModule):
+    def __init__(
+        self,
+        train_batch_size=1,
+        predict_batch_size=1,
+        drop_incomplete_batch=False,
+        multiproc_kwargs=None,
+    ):
+        super().__init__(
+            train_batch_size=train_batch_size,
+            predict_batch_size=predict_batch_size,
+            drop_incomplete_batch=drop_incomplete_batch,
+            multiproc_kwargs=multiproc_kwargs,
+        )
+
+    def setup(self, stage: str):
+        self.dataset = _maker("fold_1", RGB=True)
+        (
+            self.train_dataset,
+            self.validation_dataset,
+            self.extra_validation_datasets,
+            self.predict_dataset,
+        ) = return_subsets(self.dataset)
+
+
+datamodule = Fold0Module
diff --git a/src/ptbench/data/tbx11k_simplified_v2/fold_2.py b/src/ptbench/data/tbx11k_simplified_v2/fold_2.py
new file mode 100644
index 00000000..5af836ee
--- /dev/null
+++ b/src/ptbench/data/tbx11k_simplified_v2/fold_2.py
@@ -0,0 +1,49 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""TBX11k simplified dataset for TB detection (cross validation fold 2)
+
+* Split reference: first 62.6% of CXR for "train", 16% for "validation",
+* 21.4% for "test"
+* This split consists of non-TB and active TB samples
+* "healthy", "latent TB", and "sick & non-TB" samples are all merged under the label "non-TB"
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.tbx11k_simplified_v2` for dataset details
+"""
+
+from clapper.logging import setup
+
+from .. import return_subsets
+from ..base_datamodule import BaseDataModule
+from . import _maker
+
+logger = setup(__name__.split(".")[0], format="%(levelname)s: %(message)s")
+
+
+class Fold0Module(BaseDataModule):
+    def __init__(
+        self,
+        train_batch_size=1,
+        predict_batch_size=1,
+        drop_incomplete_batch=False,
+        multiproc_kwargs=None,
+    ):
+        super().__init__(
+            train_batch_size=train_batch_size,
+            predict_batch_size=predict_batch_size,
+            drop_incomplete_batch=drop_incomplete_batch,
+            multiproc_kwargs=multiproc_kwargs,
+        )
+
+    def setup(self, stage: str):
+        self.dataset = _maker("fold_2")
+        (
+            self.train_dataset,
+            self.validation_dataset,
+            self.extra_validation_datasets,
+            self.predict_dataset,
+        ) = return_subsets(self.dataset)
+
+
+datamodule = Fold0Module
diff --git a/src/ptbench/data/tbx11k_simplified_v2/fold_2_rgb.py b/src/ptbench/data/tbx11k_simplified_v2/fold_2_rgb.py
new file mode 100644
index 00000000..39ba5a97
--- /dev/null
+++ b/src/ptbench/data/tbx11k_simplified_v2/fold_2_rgb.py
@@ -0,0 +1,49 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""TBX11k simplified dataset for TB detection (cross validation fold 2, RGB)
+
+* Split reference: first 62.6% of CXR for "train", 16% for "validation",
+* 21.4% for "test"
+* This split consists of non-TB and active TB samples
+* "healthy", "latent TB", and "sick & non-TB" samples are all merged under the label "non-TB"
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.tbx11k_simplified_v2` for dataset details
+"""
+
+from clapper.logging import setup
+
+from .. import return_subsets
+from ..base_datamodule import BaseDataModule
+from . import _maker
+
+logger = setup(__name__.split(".")[0], format="%(levelname)s: %(message)s")
+
+
+class Fold0Module(BaseDataModule):
+    def __init__(
+        self,
+        train_batch_size=1,
+        predict_batch_size=1,
+        drop_incomplete_batch=False,
+        multiproc_kwargs=None,
+    ):
+        super().__init__(
+            train_batch_size=train_batch_size,
+            predict_batch_size=predict_batch_size,
+            drop_incomplete_batch=drop_incomplete_batch,
+            multiproc_kwargs=multiproc_kwargs,
+        )
+
+    def setup(self, stage: str):
+        self.dataset = _maker("fold_2", RGB=True)
+        (
+            self.train_dataset,
+            self.validation_dataset,
+            self.extra_validation_datasets,
+            self.predict_dataset,
+        ) = return_subsets(self.dataset)
+
+
+datamodule = Fold0Module
diff --git a/src/ptbench/data/tbx11k_simplified_v2/fold_3.py b/src/ptbench/data/tbx11k_simplified_v2/fold_3.py
new file mode 100644
index 00000000..f5c6285b
--- /dev/null
+++ b/src/ptbench/data/tbx11k_simplified_v2/fold_3.py
@@ -0,0 +1,49 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""TBX11k simplified dataset for TB detection (cross validation fold 3)
+
+* Split reference: first 62.6% of CXR for "train", 16% for "validation",
+* 21.4% for "test"
+* This split consists of non-TB and active TB samples
+* "healthy", "latent TB", and "sick & non-TB" samples are all merged under the label "non-TB"
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.tbx11k_simplified_v2` for dataset details
+"""
+
+from clapper.logging import setup
+
+from .. import return_subsets
+from ..base_datamodule import BaseDataModule
+from . import _maker
+
+logger = setup(__name__.split(".")[0], format="%(levelname)s: %(message)s")
+
+
+class Fold0Module(BaseDataModule):
+    def __init__(
+        self,
+        train_batch_size=1,
+        predict_batch_size=1,
+        drop_incomplete_batch=False,
+        multiproc_kwargs=None,
+    ):
+        super().__init__(
+            train_batch_size=train_batch_size,
+            predict_batch_size=predict_batch_size,
+            drop_incomplete_batch=drop_incomplete_batch,
+            multiproc_kwargs=multiproc_kwargs,
+        )
+
+    def setup(self, stage: str):
+        self.dataset = _maker("fold_3")
+        (
+            self.train_dataset,
+            self.validation_dataset,
+            self.extra_validation_datasets,
+            self.predict_dataset,
+        ) = return_subsets(self.dataset)
+
+
+datamodule = Fold0Module
diff --git a/src/ptbench/data/tbx11k_simplified_v2/fold_3_rgb.py b/src/ptbench/data/tbx11k_simplified_v2/fold_3_rgb.py
new file mode 100644
index 00000000..0aaab4af
--- /dev/null
+++ b/src/ptbench/data/tbx11k_simplified_v2/fold_3_rgb.py
@@ -0,0 +1,49 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""TBX11k simplified dataset for TB detection (cross validation fold 3, RGB)
+
+* Split reference: first 62.6% of CXR for "train", 16% for "validation",
+* 21.4% for "test"
+* This split consists of non-TB and active TB samples
+* "healthy", "latent TB", and "sick & non-TB" samples are all merged under the label "non-TB"
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.tbx11k_simplified_v2` for dataset details
+"""
+
+from clapper.logging import setup
+
+from .. import return_subsets
+from ..base_datamodule import BaseDataModule
+from . import _maker
+
+logger = setup(__name__.split(".")[0], format="%(levelname)s: %(message)s")
+
+
+class Fold0Module(BaseDataModule):
+    def __init__(
+        self,
+        train_batch_size=1,
+        predict_batch_size=1,
+        drop_incomplete_batch=False,
+        multiproc_kwargs=None,
+    ):
+        super().__init__(
+            train_batch_size=train_batch_size,
+            predict_batch_size=predict_batch_size,
+            drop_incomplete_batch=drop_incomplete_batch,
+            multiproc_kwargs=multiproc_kwargs,
+        )
+
+    def setup(self, stage: str):
+        self.dataset = _maker("fold_3", RGB=True)
+        (
+            self.train_dataset,
+            self.validation_dataset,
+            self.extra_validation_datasets,
+            self.predict_dataset,
+        ) = return_subsets(self.dataset)
+
+
+datamodule = Fold0Module
diff --git a/src/ptbench/data/tbx11k_simplified_v2/fold_4.py b/src/ptbench/data/tbx11k_simplified_v2/fold_4.py
new file mode 100644
index 00000000..796cf8f6
--- /dev/null
+++ b/src/ptbench/data/tbx11k_simplified_v2/fold_4.py
@@ -0,0 +1,49 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""TBX11k simplified dataset for TB detection (cross validation fold 4)
+
+* Split reference: first 62.6% of CXR for "train", 16% for "validation",
+* 21.4% for "test"
+* This split consists of non-TB and active TB samples
+* "healthy", "latent TB", and "sick & non-TB" samples are all merged under the label "non-TB"
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.tbx11k_simplified_v2` for dataset details
+"""
+
+from clapper.logging import setup
+
+from .. import return_subsets
+from ..base_datamodule import BaseDataModule
+from . import _maker
+
+logger = setup(__name__.split(".")[0], format="%(levelname)s: %(message)s")
+
+
+class Fold0Module(BaseDataModule):
+    def __init__(
+        self,
+        train_batch_size=1,
+        predict_batch_size=1,
+        drop_incomplete_batch=False,
+        multiproc_kwargs=None,
+    ):
+        super().__init__(
+            train_batch_size=train_batch_size,
+            predict_batch_size=predict_batch_size,
+            drop_incomplete_batch=drop_incomplete_batch,
+            multiproc_kwargs=multiproc_kwargs,
+        )
+
+    def setup(self, stage: str):
+        self.dataset = _maker("fold_4")
+        (
+            self.train_dataset,
+            self.validation_dataset,
+            self.extra_validation_datasets,
+            self.predict_dataset,
+        ) = return_subsets(self.dataset)
+
+
+datamodule = Fold0Module
diff --git a/src/ptbench/data/tbx11k_simplified_v2/fold_4_rgb.py b/src/ptbench/data/tbx11k_simplified_v2/fold_4_rgb.py
new file mode 100644
index 00000000..b53968c6
--- /dev/null
+++ b/src/ptbench/data/tbx11k_simplified_v2/fold_4_rgb.py
@@ -0,0 +1,49 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""TBX11k simplified dataset for TB detection (cross validation fold 4, RGB)
+
+* Split reference: first 62.6% of CXR for "train", 16% for "validation",
+* 21.4% for "test"
+* This split consists of non-TB and active TB samples
+* "healthy", "latent TB", and "sick & non-TB" samples are all merged under the label "non-TB"
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.tbx11k_simplified_v2` for dataset details
+"""
+
+from clapper.logging import setup
+
+from .. import return_subsets
+from ..base_datamodule import BaseDataModule
+from . import _maker
+
+logger = setup(__name__.split(".")[0], format="%(levelname)s: %(message)s")
+
+
+class Fold0Module(BaseDataModule):
+    def __init__(
+        self,
+        train_batch_size=1,
+        predict_batch_size=1,
+        drop_incomplete_batch=False,
+        multiproc_kwargs=None,
+    ):
+        super().__init__(
+            train_batch_size=train_batch_size,
+            predict_batch_size=predict_batch_size,
+            drop_incomplete_batch=drop_incomplete_batch,
+            multiproc_kwargs=multiproc_kwargs,
+        )
+
+    def setup(self, stage: str):
+        self.dataset = _maker("fold_4", RGB=True)
+        (
+            self.train_dataset,
+            self.validation_dataset,
+            self.extra_validation_datasets,
+            self.predict_dataset,
+        ) = return_subsets(self.dataset)
+
+
+datamodule = Fold0Module
diff --git a/src/ptbench/data/tbx11k_simplified_v2/fold_5.py b/src/ptbench/data/tbx11k_simplified_v2/fold_5.py
new file mode 100644
index 00000000..7adba117
--- /dev/null
+++ b/src/ptbench/data/tbx11k_simplified_v2/fold_5.py
@@ -0,0 +1,49 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""TBX11k simplified dataset for TB detection (cross validation fold 5)
+
+* Split reference: first 62.6% of CXR for "train", 16% for "validation",
+* 21.4% for "test"
+* This split consists of non-TB and active TB samples
+* "healthy", "latent TB", and "sick & non-TB" samples are all merged under the label "non-TB"
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.tbx11k_simplified_v2` for dataset details
+"""
+
+from clapper.logging import setup
+
+from .. import return_subsets
+from ..base_datamodule import BaseDataModule
+from . import _maker
+
+logger = setup(__name__.split(".")[0], format="%(levelname)s: %(message)s")
+
+
+class Fold0Module(BaseDataModule):
+    def __init__(
+        self,
+        train_batch_size=1,
+        predict_batch_size=1,
+        drop_incomplete_batch=False,
+        multiproc_kwargs=None,
+    ):
+        super().__init__(
+            train_batch_size=train_batch_size,
+            predict_batch_size=predict_batch_size,
+            drop_incomplete_batch=drop_incomplete_batch,
+            multiproc_kwargs=multiproc_kwargs,
+        )
+
+    def setup(self, stage: str):
+        self.dataset = _maker("fold_5")
+        (
+            self.train_dataset,
+            self.validation_dataset,
+            self.extra_validation_datasets,
+            self.predict_dataset,
+        ) = return_subsets(self.dataset)
+
+
+datamodule = Fold0Module
diff --git a/src/ptbench/data/tbx11k_simplified_v2/fold_5_rgb.py b/src/ptbench/data/tbx11k_simplified_v2/fold_5_rgb.py
new file mode 100644
index 00000000..a7ae1647
--- /dev/null
+++ b/src/ptbench/data/tbx11k_simplified_v2/fold_5_rgb.py
@@ -0,0 +1,49 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""TBX11k simplified dataset for TB detection (cross validation fold 5, RGB)
+
+* Split reference: first 62.6% of CXR for "train", 16% for "validation",
+* 21.4% for "test"
+* This split consists of non-TB and active TB samples
+* "healthy", "latent TB", and "sick & non-TB" samples are all merged under the label "non-TB"
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.tbx11k_simplified_v2` for dataset details
+"""
+
+from clapper.logging import setup
+
+from .. import return_subsets
+from ..base_datamodule import BaseDataModule
+from . import _maker
+
+logger = setup(__name__.split(".")[0], format="%(levelname)s: %(message)s")
+
+
+class Fold0Module(BaseDataModule):
+    def __init__(
+        self,
+        train_batch_size=1,
+        predict_batch_size=1,
+        drop_incomplete_batch=False,
+        multiproc_kwargs=None,
+    ):
+        super().__init__(
+            train_batch_size=train_batch_size,
+            predict_batch_size=predict_batch_size,
+            drop_incomplete_batch=drop_incomplete_batch,
+            multiproc_kwargs=multiproc_kwargs,
+        )
+
+    def setup(self, stage: str):
+        self.dataset = _maker("fold_5", RGB=True)
+        (
+            self.train_dataset,
+            self.validation_dataset,
+            self.extra_validation_datasets,
+            self.predict_dataset,
+        ) = return_subsets(self.dataset)
+
+
+datamodule = Fold0Module
diff --git a/src/ptbench/data/tbx11k_simplified_v2/fold_6.py b/src/ptbench/data/tbx11k_simplified_v2/fold_6.py
new file mode 100644
index 00000000..0a5199e1
--- /dev/null
+++ b/src/ptbench/data/tbx11k_simplified_v2/fold_6.py
@@ -0,0 +1,49 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""TBX11k simplified dataset for TB detection (cross validation fold 6)
+
+* Split reference: first 62.6% of CXR for "train", 16% for "validation",
+* 21.4% for "test"
+* This split consists of non-TB and active TB samples
+* "healthy", "latent TB", and "sick & non-TB" samples are all merged under the label "non-TB"
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.tbx11k_simplified_v2` for dataset details
+"""
+
+from clapper.logging import setup
+
+from .. import return_subsets
+from ..base_datamodule import BaseDataModule
+from . import _maker
+
+logger = setup(__name__.split(".")[0], format="%(levelname)s: %(message)s")
+
+
+class Fold0Module(BaseDataModule):
+    def __init__(
+        self,
+        train_batch_size=1,
+        predict_batch_size=1,
+        drop_incomplete_batch=False,
+        multiproc_kwargs=None,
+    ):
+        super().__init__(
+            train_batch_size=train_batch_size,
+            predict_batch_size=predict_batch_size,
+            drop_incomplete_batch=drop_incomplete_batch,
+            multiproc_kwargs=multiproc_kwargs,
+        )
+
+    def setup(self, stage: str):
+        self.dataset = _maker("fold_6")
+        (
+            self.train_dataset,
+            self.validation_dataset,
+            self.extra_validation_datasets,
+            self.predict_dataset,
+        ) = return_subsets(self.dataset)
+
+
+datamodule = Fold0Module
diff --git a/src/ptbench/data/tbx11k_simplified_v2/fold_6_rgb.py b/src/ptbench/data/tbx11k_simplified_v2/fold_6_rgb.py
new file mode 100644
index 00000000..e46d97d5
--- /dev/null
+++ b/src/ptbench/data/tbx11k_simplified_v2/fold_6_rgb.py
@@ -0,0 +1,49 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""TBX11k simplified dataset for TB detection (cross validation fold 6, RGB)
+
+* Split reference: first 62.6% of CXR for "train", 16% for "validation",
+* 21.4% for "test"
+* This split consists of non-TB and active TB samples
+* "healthy", "latent TB", and "sick & non-TB" samples are all merged under the label "non-TB"
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.tbx11k_simplified_v2` for dataset details
+"""
+
+from clapper.logging import setup
+
+from .. import return_subsets
+from ..base_datamodule import BaseDataModule
+from . import _maker
+
+logger = setup(__name__.split(".")[0], format="%(levelname)s: %(message)s")
+
+
+class Fold0Module(BaseDataModule):
+    def __init__(
+        self,
+        train_batch_size=1,
+        predict_batch_size=1,
+        drop_incomplete_batch=False,
+        multiproc_kwargs=None,
+    ):
+        super().__init__(
+            train_batch_size=train_batch_size,
+            predict_batch_size=predict_batch_size,
+            drop_incomplete_batch=drop_incomplete_batch,
+            multiproc_kwargs=multiproc_kwargs,
+        )
+
+    def setup(self, stage: str):
+        self.dataset = _maker("fold_6", RGB=True)
+        (
+            self.train_dataset,
+            self.validation_dataset,
+            self.extra_validation_datasets,
+            self.predict_dataset,
+        ) = return_subsets(self.dataset)
+
+
+datamodule = Fold0Module
diff --git a/src/ptbench/data/tbx11k_simplified_v2/fold_7.py b/src/ptbench/data/tbx11k_simplified_v2/fold_7.py
new file mode 100644
index 00000000..f34d1d59
--- /dev/null
+++ b/src/ptbench/data/tbx11k_simplified_v2/fold_7.py
@@ -0,0 +1,49 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""TBX11k simplified dataset for TB detection (cross validation fold 7)
+
+* Split reference: first 62.6% of CXR for "train", 16% for "validation",
+* 21.4% for "test"
+* This split consists of non-TB and active TB samples
+* "healthy", "latent TB", and "sick & non-TB" samples are all merged under the label "non-TB"
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.tbx11k_simplified_v2` for dataset details
+"""
+
+from clapper.logging import setup
+
+from .. import return_subsets
+from ..base_datamodule import BaseDataModule
+from . import _maker
+
+logger = setup(__name__.split(".")[0], format="%(levelname)s: %(message)s")
+
+
+class Fold0Module(BaseDataModule):
+    def __init__(
+        self,
+        train_batch_size=1,
+        predict_batch_size=1,
+        drop_incomplete_batch=False,
+        multiproc_kwargs=None,
+    ):
+        super().__init__(
+            train_batch_size=train_batch_size,
+            predict_batch_size=predict_batch_size,
+            drop_incomplete_batch=drop_incomplete_batch,
+            multiproc_kwargs=multiproc_kwargs,
+        )
+
+    def setup(self, stage: str):
+        self.dataset = _maker("fold_7")
+        (
+            self.train_dataset,
+            self.validation_dataset,
+            self.extra_validation_datasets,
+            self.predict_dataset,
+        ) = return_subsets(self.dataset)
+
+
+datamodule = Fold0Module
diff --git a/src/ptbench/data/tbx11k_simplified_v2/fold_7_rgb.py b/src/ptbench/data/tbx11k_simplified_v2/fold_7_rgb.py
new file mode 100644
index 00000000..4c595e73
--- /dev/null
+++ b/src/ptbench/data/tbx11k_simplified_v2/fold_7_rgb.py
@@ -0,0 +1,49 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""TBX11k simplified dataset for TB detection (cross validation fold 7, RGB)
+
+* Split reference: first 62.6% of CXR for "train", 16% for "validation",
+* 21.4% for "test"
+* This split consists of non-TB and active TB samples
+* "healthy", "latent TB", and "sick & non-TB" samples are all merged under the label "non-TB"
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.tbx11k_simplified_v2` for dataset details
+"""
+
+from clapper.logging import setup
+
+from .. import return_subsets
+from ..base_datamodule import BaseDataModule
+from . import _maker
+
+logger = setup(__name__.split(".")[0], format="%(levelname)s: %(message)s")
+
+
+class Fold0Module(BaseDataModule):
+    def __init__(
+        self,
+        train_batch_size=1,
+        predict_batch_size=1,
+        drop_incomplete_batch=False,
+        multiproc_kwargs=None,
+    ):
+        super().__init__(
+            train_batch_size=train_batch_size,
+            predict_batch_size=predict_batch_size,
+            drop_incomplete_batch=drop_incomplete_batch,
+            multiproc_kwargs=multiproc_kwargs,
+        )
+
+    def setup(self, stage: str):
+        self.dataset = _maker("fold_7", RGB=True)
+        (
+            self.train_dataset,
+            self.validation_dataset,
+            self.extra_validation_datasets,
+            self.predict_dataset,
+        ) = return_subsets(self.dataset)
+
+
+datamodule = Fold0Module
diff --git a/src/ptbench/data/tbx11k_simplified_v2/fold_8.py b/src/ptbench/data/tbx11k_simplified_v2/fold_8.py
new file mode 100644
index 00000000..eb4a94aa
--- /dev/null
+++ b/src/ptbench/data/tbx11k_simplified_v2/fold_8.py
@@ -0,0 +1,49 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""TBX11k simplified dataset for TB detection (cross validation fold 8)
+
+* Split reference: first 62.6% of CXR for "train", 16% for "validation",
+* 21.4% for "test"
+* This split consists of non-TB and active TB samples
+* "healthy", "latent TB", and "sick & non-TB" samples are all merged under the label "non-TB"
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.tbx11k_simplified_v2` for dataset details
+"""
+
+from clapper.logging import setup
+
+from .. import return_subsets
+from ..base_datamodule import BaseDataModule
+from . import _maker
+
+logger = setup(__name__.split(".")[0], format="%(levelname)s: %(message)s")
+
+
+class Fold0Module(BaseDataModule):
+    def __init__(
+        self,
+        train_batch_size=1,
+        predict_batch_size=1,
+        drop_incomplete_batch=False,
+        multiproc_kwargs=None,
+    ):
+        super().__init__(
+            train_batch_size=train_batch_size,
+            predict_batch_size=predict_batch_size,
+            drop_incomplete_batch=drop_incomplete_batch,
+            multiproc_kwargs=multiproc_kwargs,
+        )
+
+    def setup(self, stage: str):
+        self.dataset = _maker("fold_8")
+        (
+            self.train_dataset,
+            self.validation_dataset,
+            self.extra_validation_datasets,
+            self.predict_dataset,
+        ) = return_subsets(self.dataset)
+
+
+datamodule = Fold0Module
diff --git a/src/ptbench/data/tbx11k_simplified_v2/fold_8_rgb.py b/src/ptbench/data/tbx11k_simplified_v2/fold_8_rgb.py
new file mode 100644
index 00000000..70510ce5
--- /dev/null
+++ b/src/ptbench/data/tbx11k_simplified_v2/fold_8_rgb.py
@@ -0,0 +1,49 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""TBX11k simplified dataset for TB detection (cross validation fold 8, RGB)
+
+* Split reference: first 62.6% of CXR for "train", 16% for "validation",
+* 21.4% for "test"
+* This split consists of non-TB and active TB samples
+* "healthy", "latent TB", and "sick & non-TB" samples are all merged under the label "non-TB"
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.tbx11k_simplified_v2` for dataset details
+"""
+
+from clapper.logging import setup
+
+from .. import return_subsets
+from ..base_datamodule import BaseDataModule
+from . import _maker
+
+logger = setup(__name__.split(".")[0], format="%(levelname)s: %(message)s")
+
+
+class Fold0Module(BaseDataModule):
+    def __init__(
+        self,
+        train_batch_size=1,
+        predict_batch_size=1,
+        drop_incomplete_batch=False,
+        multiproc_kwargs=None,
+    ):
+        super().__init__(
+            train_batch_size=train_batch_size,
+            predict_batch_size=predict_batch_size,
+            drop_incomplete_batch=drop_incomplete_batch,
+            multiproc_kwargs=multiproc_kwargs,
+        )
+
+    def setup(self, stage: str):
+        self.dataset = _maker("fold_8", RGB=True)
+        (
+            self.train_dataset,
+            self.validation_dataset,
+            self.extra_validation_datasets,
+            self.predict_dataset,
+        ) = return_subsets(self.dataset)
+
+
+datamodule = Fold0Module
diff --git a/src/ptbench/data/tbx11k_simplified_v2/fold_9.py b/src/ptbench/data/tbx11k_simplified_v2/fold_9.py
new file mode 100644
index 00000000..b15c1bf0
--- /dev/null
+++ b/src/ptbench/data/tbx11k_simplified_v2/fold_9.py
@@ -0,0 +1,49 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""TBX11k simplified dataset for TB detection (cross validation fold 9)
+
+* Split reference: first 62.6% of CXR for "train", 16% for "validation",
+* 21.4% for "test"
+* This split consists of non-TB and active TB samples
+* "healthy", "latent TB", and "sick & non-TB" samples are all merged under the label "non-TB"
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.tbx11k_simplified_v2` for dataset details
+"""
+
+from clapper.logging import setup
+
+from .. import return_subsets
+from ..base_datamodule import BaseDataModule
+from . import _maker
+
+logger = setup(__name__.split(".")[0], format="%(levelname)s: %(message)s")
+
+
+class Fold0Module(BaseDataModule):
+    def __init__(
+        self,
+        train_batch_size=1,
+        predict_batch_size=1,
+        drop_incomplete_batch=False,
+        multiproc_kwargs=None,
+    ):
+        super().__init__(
+            train_batch_size=train_batch_size,
+            predict_batch_size=predict_batch_size,
+            drop_incomplete_batch=drop_incomplete_batch,
+            multiproc_kwargs=multiproc_kwargs,
+        )
+
+    def setup(self, stage: str):
+        self.dataset = _maker("fold_9")
+        (
+            self.train_dataset,
+            self.validation_dataset,
+            self.extra_validation_datasets,
+            self.predict_dataset,
+        ) = return_subsets(self.dataset)
+
+
+datamodule = Fold0Module
diff --git a/src/ptbench/data/tbx11k_simplified_v2/fold_9_rgb.py b/src/ptbench/data/tbx11k_simplified_v2/fold_9_rgb.py
new file mode 100644
index 00000000..271e3348
--- /dev/null
+++ b/src/ptbench/data/tbx11k_simplified_v2/fold_9_rgb.py
@@ -0,0 +1,49 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""TBX11k simplified dataset for TB detection (cross validation fold 9, RGB)
+
+* Split reference: first 62.6% of CXR for "train", 16% for "validation",
+* 21.4% for "test"
+* This split consists of non-TB and active TB samples
+* "healthy", "latent TB", and "sick & non-TB" samples are all merged under the label "non-TB"
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.tbx11k_simplified_v2` for dataset details
+"""
+
+from clapper.logging import setup
+
+from .. import return_subsets
+from ..base_datamodule import BaseDataModule
+from . import _maker
+
+logger = setup(__name__.split(".")[0], format="%(levelname)s: %(message)s")
+
+
+class Fold0Module(BaseDataModule):
+    def __init__(
+        self,
+        train_batch_size=1,
+        predict_batch_size=1,
+        drop_incomplete_batch=False,
+        multiproc_kwargs=None,
+    ):
+        super().__init__(
+            train_batch_size=train_batch_size,
+            predict_batch_size=predict_batch_size,
+            drop_incomplete_batch=drop_incomplete_batch,
+            multiproc_kwargs=multiproc_kwargs,
+        )
+
+    def setup(self, stage: str):
+        self.dataset = _maker("fold_9", RGB=True)
+        (
+            self.train_dataset,
+            self.validation_dataset,
+            self.extra_validation_datasets,
+            self.predict_dataset,
+        ) = return_subsets(self.dataset)
+
+
+datamodule = Fold0Module
diff --git a/src/ptbench/data/tbx11k_simplified_v2/rgb.py b/src/ptbench/data/tbx11k_simplified_v2/rgb.py
new file mode 100644
index 00000000..13ac3a9f
--- /dev/null
+++ b/src/ptbench/data/tbx11k_simplified_v2/rgb.py
@@ -0,0 +1,50 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""TBX11k simplified dataset for TB detection (default protocol, converted in
+RGB)
+
+* Split reference: first 62.6% of CXR for "train", 16% for "validation",
+* 21.4% for "test"
+* This split consists of non-TB and active TB samples
+* "healthy", "latent TB", and "sick & non-TB" samples are all merged under the label "non-TB"
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.tbx11k_simplified_v2` for dataset details
+"""
+
+from clapper.logging import setup
+
+from .. import return_subsets
+from ..base_datamodule import BaseDataModule
+from . import _maker
+
+logger = setup(__name__.split(".")[0], format="%(levelname)s: %(message)s")
+
+
+class DefaultModule(BaseDataModule):
+    def __init__(
+        self,
+        train_batch_size=1,
+        predict_batch_size=1,
+        drop_incomplete_batch=False,
+        multiproc_kwargs=None,
+    ):
+        super().__init__(
+            train_batch_size=train_batch_size,
+            predict_batch_size=predict_batch_size,
+            drop_incomplete_batch=drop_incomplete_batch,
+            multiproc_kwargs=multiproc_kwargs,
+        )
+
+    def setup(self, stage: str):
+        self.dataset = _maker("default", RGB=True)
+        (
+            self.train_dataset,
+            self.validation_dataset,
+            self.extra_validation_datasets,
+            self.predict_dataset,
+        ) = return_subsets(self.dataset)
+
+
+datamodule = DefaultModule
-- 
GitLab