diff --git a/pyproject.toml b/pyproject.toml
index 5fc0981beca79e63840a613fd2cb1d088aa27af2..27ef33fc79192665641364a77e2fbcdd613a5398 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -140,7 +140,7 @@ shenzhen_f7_rgb = "ptbench.data.shenzhen.fold_7_rgb"
 shenzhen_f8_rgb = "ptbench.data.shenzhen.fold_8_rgb"
 shenzhen_f9_rgb = "ptbench.data.shenzhen.fold_9_rgb"
 # extended shenzhen dataset (with radiological signs)
-shenzhen_rs = "ptbench.configs.datasets.shenzhen_RS.default"
+shenzhen_rs = "ptbench.data.shenzhen_RS.default"
 shenzhen_rs_f0 = "ptbench.configs.datasets.shenzhen_RS.fold_0"
 shenzhen_rs_f1 = "ptbench.configs.datasets.shenzhen_RS.fold_1"
 shenzhen_rs_f2 = "ptbench.configs.datasets.shenzhen_RS.fold_2"
@@ -153,27 +153,27 @@ shenzhen_rs_f8 = "ptbench.configs.datasets.shenzhen_RS.fold_8"
 shenzhen_rs_f9 = "ptbench.configs.datasets.shenzhen_RS.fold_9"
 # indian dataset (and cross-validation folds)
 indian = "ptbench.data.indian.default"
-indian_rgb = "ptbench.configs.datasets.indian.rgb"
-indian_f0 = "ptbench.configs.datasets.indian.fold_0"
-indian_f1 = "ptbench.configs.datasets.indian.fold_1"
-indian_f2 = "ptbench.configs.datasets.indian.fold_2"
-indian_f3 = "ptbench.configs.datasets.indian.fold_3"
-indian_f4 = "ptbench.configs.datasets.indian.fold_4"
-indian_f5 = "ptbench.configs.datasets.indian.fold_5"
-indian_f6 = "ptbench.configs.datasets.indian.fold_6"
-indian_f7 = "ptbench.configs.datasets.indian.fold_7"
-indian_f8 = "ptbench.configs.datasets.indian.fold_8"
-indian_f9 = "ptbench.configs.datasets.indian.fold_9"
-indian_f0_rgb = "ptbench.configs.datasets.indian.fold_0_rgb"
-indian_f1_rgb = "ptbench.configs.datasets.indian.fold_1_rgb"
-indian_f2_rgb = "ptbench.configs.datasets.indian.fold_2_rgb"
-indian_f3_rgb = "ptbench.configs.datasets.indian.fold_3_rgb"
-indian_f4_rgb = "ptbench.configs.datasets.indian.fold_4_rgb"
-indian_f5_rgb = "ptbench.configs.datasets.indian.fold_5_rgb"
-indian_f6_rgb = "ptbench.configs.datasets.indian.fold_6_rgb"
-indian_f7_rgb = "ptbench.configs.datasets.indian.fold_7_rgb"
-indian_f8_rgb = "ptbench.configs.datasets.indian.fold_8_rgb"
-indian_f9_rgb = "ptbench.configs.datasets.indian.fold_9_rgb"
+indian_rgb = "ptbench.data.indian.rgb"
+indian_f0 = "ptbench.data.indian.fold_0"
+indian_f1 = "ptbench.data.indian.fold_1"
+indian_f2 = "ptbench.data.indian.fold_2"
+indian_f3 = "ptbench.data.indian.fold_3"
+indian_f4 = "ptbench.data.indian.fold_4"
+indian_f5 = "ptbench.data.indian.fold_5"
+indian_f6 = "ptbench.data.indian.fold_6"
+indian_f7 = "ptbench.data.indian.fold_7"
+indian_f8 = "ptbench.data.indian.fold_8"
+indian_f9 = "ptbench.data.indian.fold_9"
+indian_f0_rgb = "ptbench.data.indian.fold_0_rgb"
+indian_f1_rgb = "ptbench.data.indian.fold_1_rgb"
+indian_f2_rgb = "ptbench.data.indian.fold_2_rgb"
+indian_f3_rgb = "ptbench.data.indian.fold_3_rgb"
+indian_f4_rgb = "ptbench.data.indian.fold_4_rgb"
+indian_f5_rgb = "ptbench.data.indian.fold_5_rgb"
+indian_f6_rgb = "ptbench.data.indian.fold_6_rgb"
+indian_f7_rgb = "ptbench.data.indian.fold_7_rgb"
+indian_f8_rgb = "ptbench.data.indian.fold_8_rgb"
+indian_f9_rgb = "ptbench.data.indian.fold_9_rgb"
 # extended indian dataset (with radiological signs)
 indian_rs = "ptbench.configs.datasets.indian_RS.default"
 indian_rs_f0 = "ptbench.configs.datasets.indian_RS.fold_0"
@@ -187,28 +187,28 @@ indian_rs_f7 = "ptbench.configs.datasets.indian_RS.fold_7"
 indian_rs_f8 = "ptbench.configs.datasets.indian_RS.fold_8"
 indian_rs_f9 = "ptbench.configs.datasets.indian_RS.fold_9"
 # TBX11K simplified dataset split 1 (and cross-validation folds)
-tbx11k_simplified = "ptbench.configs.datasets.tbx11k_simplified.default"
-tbx11k_simplified_rgb = "ptbench.configs.datasets.tbx11k_simplified.rgb"
-tbx11k_simplified_f0 = "ptbench.configs.datasets.tbx11k_simplified.fold_0"
-tbx11k_simplified_f1 = "ptbench.configs.datasets.tbx11k_simplified.fold_1"
-tbx11k_simplified_f2 = "ptbench.configs.datasets.tbx11k_simplified.fold_2"
-tbx11k_simplified_f3 = "ptbench.configs.datasets.tbx11k_simplified.fold_3"
-tbx11k_simplified_f4 = "ptbench.configs.datasets.tbx11k_simplified.fold_4"
-tbx11k_simplified_f5 = "ptbench.configs.datasets.tbx11k_simplified.fold_5"
-tbx11k_simplified_f6 = "ptbench.configs.datasets.tbx11k_simplified.fold_6"
-tbx11k_simplified_f7 = "ptbench.configs.datasets.tbx11k_simplified.fold_7"
-tbx11k_simplified_f8 = "ptbench.configs.datasets.tbx11k_simplified.fold_8"
-tbx11k_simplified_f9 = "ptbench.configs.datasets.tbx11k_simplified.fold_9"
-tbx11k_simplified_f0_rgb = "ptbench.configs.datasets.tbx11k_simplified.fold_0_rgb"
-tbx11k_simplified_f1_rgb = "ptbench.configs.datasets.tbx11k_simplified.fold_1_rgb"
-tbx11k_simplified_f2_rgb = "ptbench.configs.datasets.tbx11k_simplified.fold_2_rgb"
-tbx11k_simplified_f3_rgb = "ptbench.configs.datasets.tbx11k_simplified.fold_3_rgb"
-tbx11k_simplified_f4_rgb = "ptbench.configs.datasets.tbx11k_simplified.fold_4_rgb"
-tbx11k_simplified_f5_rgb = "ptbench.configs.datasets.tbx11k_simplified.fold_5_rgb"
-tbx11k_simplified_f6_rgb = "ptbench.configs.datasets.tbx11k_simplified.fold_6_rgb"
-tbx11k_simplified_f7_rgb = "ptbench.configs.datasets.tbx11k_simplified.fold_7_rgb"
-tbx11k_simplified_f8_rgb = "ptbench.configs.datasets.tbx11k_simplified.fold_8_rgb"
-tbx11k_simplified_f9_rgb = "ptbench.configs.datasets.tbx11k_simplified.fold_9_rgb"
+tbx11k_simplified = "ptbench.data.tbx11k_simplified.default"
+tbx11k_simplified_rgb = "ptbench.data.tbx11k_simplified.rgb"
+tbx11k_simplified_f0 = "ptbench.data.tbx11k_simplified.fold_0"
+tbx11k_simplified_f1 = "ptbench.data.tbx11k_simplified.fold_1"
+tbx11k_simplified_f2 = "ptbench.data.tbx11k_simplified.fold_2"
+tbx11k_simplified_f3 = "ptbench.data.tbx11k_simplified.fold_3"
+tbx11k_simplified_f4 = "ptbench.data.tbx11k_simplified.fold_4"
+tbx11k_simplified_f5 = "ptbench.data.tbx11k_simplified.fold_5"
+tbx11k_simplified_f6 = "ptbench.data.tbx11k_simplified.fold_6"
+tbx11k_simplified_f7 = "ptbench.data.tbx11k_simplified.fold_7"
+tbx11k_simplified_f8 = "ptbench.data.tbx11k_simplified.fold_8"
+tbx11k_simplified_f9 = "ptbench.data.tbx11k_simplified.fold_9"
+tbx11k_simplified_f0_rgb = "ptbench.data.tbx11k_simplified.fold_0_rgb"
+tbx11k_simplified_f1_rgb = "ptbench.data.tbx11k_simplified.fold_1_rgb"
+tbx11k_simplified_f2_rgb = "ptbench.data.tbx11k_simplified.fold_2_rgb"
+tbx11k_simplified_f3_rgb = "ptbench.data.tbx11k_simplified.fold_3_rgb"
+tbx11k_simplified_f4_rgb = "ptbench.data.tbx11k_simplified.fold_4_rgb"
+tbx11k_simplified_f5_rgb = "ptbench.data.tbx11k_simplified.fold_5_rgb"
+tbx11k_simplified_f6_rgb = "ptbench.data.tbx11k_simplified.fold_6_rgb"
+tbx11k_simplified_f7_rgb = "ptbench.data.tbx11k_simplified.fold_7_rgb"
+tbx11k_simplified_f8_rgb = "ptbench.data.tbx11k_simplified.fold_8_rgb"
+tbx11k_simplified_f9_rgb = "ptbench.data.tbx11k_simplified.fold_9_rgb"
 # extended TBX11K simplified dataset split 1 (with radiological signs)
 tbx11k_simplified_rs = "ptbench.configs.datasets.tbx11k_simplified_RS.default"
 tbx11k_simplified_rs_f0 = "ptbench.configs.datasets.tbx11k_simplified_RS.fold_0"
diff --git a/src/ptbench/configs/datasets/indian/__init__.py b/src/ptbench/configs/datasets/indian/__init__.py
deleted file mode 100644
index 10046b2aecdc223f4cc54f4ab22edec56f2f57b3..0000000000000000000000000000000000000000
--- a/src/ptbench/configs/datasets/indian/__init__.py
+++ /dev/null
@@ -1,29 +0,0 @@
-# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-
-def _maker(protocol, resize_size=512, cc_size=512, RGB=False):
-    from torchvision import transforms
-
-    from ....data.indian import dataset as raw
-    from ....data.transforms import ElasticDeformation, RemoveBlackBorders
-    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)],
-        [
-            RemoveBlackBorders(),
-            transforms.Resize(resize_size),
-            transforms.CenterCrop(cc_size),
-        ],
-        [ElasticDeformation(p=0.8)],
-        post_transforms,
-    )
diff --git a/src/ptbench/configs/datasets/indian/default.py b/src/ptbench/configs/datasets/indian/default.py
deleted file mode 100644
index c081f1c6bb3d99f785953d1b202391341bfc9ff0..0000000000000000000000000000000000000000
--- a/src/ptbench/configs/datasets/indian/default.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""Indian dataset for TB detection (default protocol)
-
-* Split reference: [INDIAN-2013]_ with 20% of train set for the validation set
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.indian` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("default")
diff --git a/src/ptbench/configs/datasets/indian/fold_0.py b/src/ptbench/configs/datasets/indian/fold_0.py
deleted file mode 100644
index 4fcf659bcf79c17e96e99aa8d612f516ce2dd701..0000000000000000000000000000000000000000
--- a/src/ptbench/configs/datasets/indian/fold_0.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""Indian dataset for TB detection (cross validation fold 0)
-
-* Split reference: [INDIAN-2013]_ with 20% of train set for the validation set
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.indian` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_0")
diff --git a/src/ptbench/configs/datasets/indian/fold_0_rgb.py b/src/ptbench/configs/datasets/indian/fold_0_rgb.py
deleted file mode 100644
index 536d1f06296b21e6862e4d59375c43fb31f69ddd..0000000000000000000000000000000000000000
--- a/src/ptbench/configs/datasets/indian/fold_0_rgb.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""Indian dataset for TB detection (cross validation fold 0, RGB)
-
-* Split reference: [INDIAN-2013]_ with 20% of train set for the validation set
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.indian` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_0", RGB=True)
diff --git a/src/ptbench/configs/datasets/indian/fold_1.py b/src/ptbench/configs/datasets/indian/fold_1.py
deleted file mode 100644
index 3c3d85167e01fb66b609cc27ddbfc61d2de88f84..0000000000000000000000000000000000000000
--- a/src/ptbench/configs/datasets/indian/fold_1.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""Indian dataset for TB detection (cross validation fold 1)
-
-* Split reference: [INDIAN-2013]_ with 20% of train set for the validation set
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.indian` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_1")
diff --git a/src/ptbench/configs/datasets/indian/fold_1_rgb.py b/src/ptbench/configs/datasets/indian/fold_1_rgb.py
deleted file mode 100644
index 0bc7ddc2833ae0fbbe1a1e091d708fe9961d0df8..0000000000000000000000000000000000000000
--- a/src/ptbench/configs/datasets/indian/fold_1_rgb.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""Indian dataset for TB detection (cross validation fold 1, RGB)
-
-* Split reference: [INDIAN-2013]_ with 20% of train set for the validation set
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.indian` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_1", RGB=True)
diff --git a/src/ptbench/configs/datasets/indian/fold_2.py b/src/ptbench/configs/datasets/indian/fold_2.py
deleted file mode 100644
index d1e713eb42ecb3e59488d69965b85dfbf8fdd14c..0000000000000000000000000000000000000000
--- a/src/ptbench/configs/datasets/indian/fold_2.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""Indian dataset for TB detection (cross validation fold 2)
-
-* Split reference: [INDIAN-2013]_ with 20% of train set for the validation set
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.indian` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_2")
diff --git a/src/ptbench/configs/datasets/indian/fold_2_rgb.py b/src/ptbench/configs/datasets/indian/fold_2_rgb.py
deleted file mode 100644
index b2e69fd4c8b362ec5c7ce2453a91b2104aa2cc6a..0000000000000000000000000000000000000000
--- a/src/ptbench/configs/datasets/indian/fold_2_rgb.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""Indian dataset for TB detection (cross validation fold 2, RGB)
-
-* Split reference: [INDIAN-2013]_ with 20% of train set for the validation set
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.indian` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_2", RGB=True)
diff --git a/src/ptbench/configs/datasets/indian/fold_3.py b/src/ptbench/configs/datasets/indian/fold_3.py
deleted file mode 100644
index 6d16dd73b9ec3ab3afb2df9681324a458a1663c0..0000000000000000000000000000000000000000
--- a/src/ptbench/configs/datasets/indian/fold_3.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""Indian dataset for TB detection (cross validation fold 3)
-
-* Split reference: [INDIAN-2013]_ with 20% of train set for the validation set
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.indian` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_3")
diff --git a/src/ptbench/configs/datasets/indian/fold_3_rgb.py b/src/ptbench/configs/datasets/indian/fold_3_rgb.py
deleted file mode 100644
index 94aa20dd84656c3ef29a86df57e374be6d0b8ade..0000000000000000000000000000000000000000
--- a/src/ptbench/configs/datasets/indian/fold_3_rgb.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""Indian dataset for TB detection (cross validation fold 3, RGB)
-
-* Split reference: [INDIAN-2013]_ with 20% of train set for the validation set
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.indian` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_3", RGB=True)
diff --git a/src/ptbench/configs/datasets/indian/fold_4.py b/src/ptbench/configs/datasets/indian/fold_4.py
deleted file mode 100644
index 5e292f4049d0bfa638d3915be59709c3aab599d0..0000000000000000000000000000000000000000
--- a/src/ptbench/configs/datasets/indian/fold_4.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""Indian dataset for TB detection (cross validation fold 4)
-
-* Split reference: [INDIAN-2013]_ with 20% of train set for the validation set
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.indian` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_4")
diff --git a/src/ptbench/configs/datasets/indian/fold_4_rgb.py b/src/ptbench/configs/datasets/indian/fold_4_rgb.py
deleted file mode 100644
index dca0eb68f150088ce3de8f5af2e35fb9bd888812..0000000000000000000000000000000000000000
--- a/src/ptbench/configs/datasets/indian/fold_4_rgb.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""Indian dataset for TB detection (cross validation fold 4, RGB)
-
-* Split reference: [INDIAN-2013]_ with 20% of train set for the validation set
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.indian` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_4", RGB=True)
diff --git a/src/ptbench/configs/datasets/indian/fold_5.py b/src/ptbench/configs/datasets/indian/fold_5.py
deleted file mode 100644
index df5d3f7c6d4f1f242d67e72949a0d761f9aafe37..0000000000000000000000000000000000000000
--- a/src/ptbench/configs/datasets/indian/fold_5.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""Indian dataset for TB detection (cross validation fold 5)
-
-* Split reference: [INDIAN-2013]_ with 20% of train set for the validation set
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.indian` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_5")
diff --git a/src/ptbench/configs/datasets/indian/fold_5_rgb.py b/src/ptbench/configs/datasets/indian/fold_5_rgb.py
deleted file mode 100644
index 70a3be5ab2514d22d3e02837b2042da79d206bcd..0000000000000000000000000000000000000000
--- a/src/ptbench/configs/datasets/indian/fold_5_rgb.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""Indian dataset for TB detection (cross validation fold 5, RGB)
-
-* Split reference: [INDIAN-2013]_ with 20% of train set for the validation set
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.indian` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_5", RGB=True)
diff --git a/src/ptbench/configs/datasets/indian/fold_6.py b/src/ptbench/configs/datasets/indian/fold_6.py
deleted file mode 100644
index 396d1f31d543b6df37fc7beb82dc5ef1fb57d7bf..0000000000000000000000000000000000000000
--- a/src/ptbench/configs/datasets/indian/fold_6.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""Indian dataset for TB detection (cross validation fold 6)
-
-* Split reference: [INDIAN-2013]_ with 20% of train set for the validation set
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.indian` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_6")
diff --git a/src/ptbench/configs/datasets/indian/fold_6_rgb.py b/src/ptbench/configs/datasets/indian/fold_6_rgb.py
deleted file mode 100644
index 3db051f4d62c5cad044590cbf58fc8816fa43ad3..0000000000000000000000000000000000000000
--- a/src/ptbench/configs/datasets/indian/fold_6_rgb.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""Indian dataset for TB detection (cross validation fold 6, RGB)
-
-* Split reference: [INDIAN-2013]_ with 20% of train set for the validation set
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.indian` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_6", RGB=True)
diff --git a/src/ptbench/configs/datasets/indian/fold_7.py b/src/ptbench/configs/datasets/indian/fold_7.py
deleted file mode 100644
index 7dfbe28a47d09ec4b3ce7f118ed5ba953f115367..0000000000000000000000000000000000000000
--- a/src/ptbench/configs/datasets/indian/fold_7.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""Indian dataset for TB detection (cross validation fold 7)
-
-* Split reference: [INDIAN-2013]_ with 20% of train set for the validation set
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.indian` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_7")
diff --git a/src/ptbench/configs/datasets/indian/fold_7_rgb.py b/src/ptbench/configs/datasets/indian/fold_7_rgb.py
deleted file mode 100644
index b8949e7d563fca0752b05c4366b5931edbe41a52..0000000000000000000000000000000000000000
--- a/src/ptbench/configs/datasets/indian/fold_7_rgb.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""Indian dataset for TB detection (cross validation fold 7, RGB)
-
-* Split reference: [INDIAN-2013]_ with 20% of train set for the validation set
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.indian` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_7", RGB=True)
diff --git a/src/ptbench/configs/datasets/indian/fold_8.py b/src/ptbench/configs/datasets/indian/fold_8.py
deleted file mode 100644
index ec7ac100739b5a50091e3a77a46d7e643ffc8c64..0000000000000000000000000000000000000000
--- a/src/ptbench/configs/datasets/indian/fold_8.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""Indian dataset for TB detection (cross validation fold 8)
-
-* Split reference: [INDIAN-2013]_ with 20% of train set for the validation set
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.indian` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_8")
diff --git a/src/ptbench/configs/datasets/indian/fold_8_rgb.py b/src/ptbench/configs/datasets/indian/fold_8_rgb.py
deleted file mode 100644
index 1e1b6efb8af9a0c3f24b55bc7b7771f2efefeb27..0000000000000000000000000000000000000000
--- a/src/ptbench/configs/datasets/indian/fold_8_rgb.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""Indian dataset for TB detection (cross validation fold 8, RGB)
-
-* Split reference: [INDIAN-2013]_ with 20% of train set for the validation set
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.indian` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_8", RGB=True)
diff --git a/src/ptbench/configs/datasets/indian/fold_9.py b/src/ptbench/configs/datasets/indian/fold_9.py
deleted file mode 100644
index 9f562e3ffcf94b183c210c873c5691744219ebcd..0000000000000000000000000000000000000000
--- a/src/ptbench/configs/datasets/indian/fold_9.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""Indian dataset for TB detection (cross validation fold 9)
-
-* Split reference: [INDIAN-2013]_ with 20% of train set for the validation set
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.indian` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_9")
diff --git a/src/ptbench/configs/datasets/indian/fold_9_rgb.py b/src/ptbench/configs/datasets/indian/fold_9_rgb.py
deleted file mode 100644
index a2c197f631d61cd6ae40ca15b255e83e8d5d2966..0000000000000000000000000000000000000000
--- a/src/ptbench/configs/datasets/indian/fold_9_rgb.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""Indian dataset for TB detection (cross validation fold 9, RGB)
-
-* Split reference: [INDIAN-2013]_ with 20% of train set for the validation set
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.indian` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_9", RGB=True)
diff --git a/src/ptbench/configs/datasets/indian/rgb.py b/src/ptbench/configs/datasets/indian/rgb.py
deleted file mode 100644
index 9aa59729c18f81c6fd9f7f651858d949727d8bef..0000000000000000000000000000000000000000
--- a/src/ptbench/configs/datasets/indian/rgb.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""Indian dataset for TB detection (default protocol, converted in RGB)
-
-* Split reference: [INDIAN-2013]_ with 20% of train set for the validation set
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.indian` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("default", RGB=True)
diff --git a/src/ptbench/data/indian/__init__.py b/src/ptbench/data/indian/__init__.py
index dc1b9d99450f630c6a529ee4949374e3d8a50a1d..72d7567f7087b4646b3e300b5dcf31161af4980f 100644
--- a/src/ptbench/data/indian/__init__.py
+++ b/src/ptbench/data/indian/__init__.py
@@ -17,6 +17,7 @@ import importlib.resources
 import os
 
 from ...utils.rc import load_rc
+from .. import make_dataset
 from ..dataset import JSONDataset
 from ..loader import load_pil_baw, make_delayed
 
@@ -50,9 +51,33 @@ def _loader(context, sample):
     return make_delayed(sample, _raw_data_loader)
 
 
-dataset = JSONDataset(
+json_dataset = JSONDataset(
     protocols=_protocols,
     fieldnames=("data", "label"),
     loader=_loader,
 )
 """Indian dataset object."""
+
+
+def _maker(protocol, resize_size=512, cc_size=512, RGB=False):
+    from torchvision import transforms
+
+    from ..transforms import ElasticDeformation, RemoveBlackBorders
+
+    post_transforms = []
+    if RGB:
+        post_transforms = [
+            transforms.Lambda(lambda x: x.convert("RGB")),
+            transforms.ToTensor(),
+        ]
+
+    return make_dataset(
+        [json_dataset.subsets(protocol)],
+        [
+            RemoveBlackBorders(),
+            transforms.Resize(resize_size),
+            transforms.CenterCrop(cc_size),
+        ],
+        [ElasticDeformation(p=0.8)],
+        post_transforms,
+    )
diff --git a/src/ptbench/data/indian/default.py b/src/ptbench/data/indian/default.py
new file mode 100644
index 0000000000000000000000000000000000000000..fc8d52ff4aea06466a3f177a5ede9f610836c277
--- /dev/null
+++ b/src/ptbench/data/indian/default.py
@@ -0,0 +1,46 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Indian dataset for TB detection (default protocol)
+
+* Split reference: [INDIAN-2013]_ with 20% of train set for the validation set
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.indian` 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/indian/fold_0.py b/src/ptbench/data/indian/fold_0.py
new file mode 100644
index 0000000000000000000000000000000000000000..ffca634728e97fe74cc1f31ff7b6199386ba1ccd
--- /dev/null
+++ b/src/ptbench/data/indian/fold_0.py
@@ -0,0 +1,46 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Indian dataset for TB detection (cross validation fold 0)
+
+* Split reference: [INDIAN-2013]_ with 20% of train set for the validation set
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.indian` 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/indian/fold_0_rgb.py b/src/ptbench/data/indian/fold_0_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..7f0ded1ece831dfb64ebf0ce47a8ea0c37132990
--- /dev/null
+++ b/src/ptbench/data/indian/fold_0_rgb.py
@@ -0,0 +1,46 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Indian dataset for TB detection (cross validation fold 0, RGB)
+
+* Split reference: [INDIAN-2013]_ with 20% of train set for the validation set
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.indian` 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/indian/fold_1.py b/src/ptbench/data/indian/fold_1.py
new file mode 100644
index 0000000000000000000000000000000000000000..6075fb0e3a75bd9332acce7a057e1caab2c08506
--- /dev/null
+++ b/src/ptbench/data/indian/fold_1.py
@@ -0,0 +1,46 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Indian dataset for TB detection (cross validation fold 1)
+
+* Split reference: [INDIAN-2013]_ with 20% of train set for the validation set
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.indian` 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/indian/fold_1_rgb.py b/src/ptbench/data/indian/fold_1_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..bb0160a1ac6f5c74be093d9330579503bb675205
--- /dev/null
+++ b/src/ptbench/data/indian/fold_1_rgb.py
@@ -0,0 +1,46 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Indian dataset for TB detection (cross validation fold 1, RGB)
+
+* Split reference: [INDIAN-2013]_ with 20% of train set for the validation set
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.indian` 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/indian/fold_2.py b/src/ptbench/data/indian/fold_2.py
new file mode 100644
index 0000000000000000000000000000000000000000..a85141422e0e8ff14600487114b23e3d8d8ad7c5
--- /dev/null
+++ b/src/ptbench/data/indian/fold_2.py
@@ -0,0 +1,46 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Indian dataset for TB detection (cross validation fold 2)
+
+* Split reference: [INDIAN-2013]_ with 20% of train set for the validation set
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.indian` 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/indian/fold_2_rgb.py b/src/ptbench/data/indian/fold_2_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..ff40668a7aebf7196b1082c6753db6931b13aceb
--- /dev/null
+++ b/src/ptbench/data/indian/fold_2_rgb.py
@@ -0,0 +1,46 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Indian dataset for TB detection (cross validation fold 2, RGB)
+
+* Split reference: [INDIAN-2013]_ with 20% of train set for the validation set
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.indian` 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/indian/fold_3.py b/src/ptbench/data/indian/fold_3.py
new file mode 100644
index 0000000000000000000000000000000000000000..f0e4b15a3f064abede1b57b90522fbd525f0cb5a
--- /dev/null
+++ b/src/ptbench/data/indian/fold_3.py
@@ -0,0 +1,46 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Indian dataset for TB detection (cross validation fold 3)
+
+* Split reference: [INDIAN-2013]_ with 20% of train set for the validation set
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.indian` 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/indian/fold_3_rgb.py b/src/ptbench/data/indian/fold_3_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..b4f58041d85fa345afe66d93712a9a53780844b4
--- /dev/null
+++ b/src/ptbench/data/indian/fold_3_rgb.py
@@ -0,0 +1,46 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Indian dataset for TB detection (cross validation fold 3, RGB)
+
+* Split reference: [INDIAN-2013]_ with 20% of train set for the validation set
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.indian` 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/indian/fold_4.py b/src/ptbench/data/indian/fold_4.py
new file mode 100644
index 0000000000000000000000000000000000000000..4a1ca92023ba1e882e1044d1645b6fca8e37ae9b
--- /dev/null
+++ b/src/ptbench/data/indian/fold_4.py
@@ -0,0 +1,46 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Indian dataset for TB detection (cross validation fold 4)
+
+* Split reference: [INDIAN-2013]_ with 20% of train set for the validation set
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.indian` 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/indian/fold_4_rgb.py b/src/ptbench/data/indian/fold_4_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..41ccb27cf09de3abee93a08ab8c43a3ad580ae4d
--- /dev/null
+++ b/src/ptbench/data/indian/fold_4_rgb.py
@@ -0,0 +1,46 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Indian dataset for TB detection (cross validation fold 4, RGB)
+
+* Split reference: [INDIAN-2013]_ with 20% of train set for the validation set
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.indian` 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/indian/fold_5.py b/src/ptbench/data/indian/fold_5.py
new file mode 100644
index 0000000000000000000000000000000000000000..7d411c26a99a54dc8f6a2502d96c79bacf0f0482
--- /dev/null
+++ b/src/ptbench/data/indian/fold_5.py
@@ -0,0 +1,46 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Indian dataset for TB detection (cross validation fold 5)
+
+* Split reference: [INDIAN-2013]_ with 20% of train set for the validation set
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.indian` 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/indian/fold_5_rgb.py b/src/ptbench/data/indian/fold_5_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..5dd71156847c85f927f8fa137f7b7ddf9e51c42a
--- /dev/null
+++ b/src/ptbench/data/indian/fold_5_rgb.py
@@ -0,0 +1,46 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Indian dataset for TB detection (cross validation fold 5, RGB)
+
+* Split reference: [INDIAN-2013]_ with 20% of train set for the validation set
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.indian` 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/indian/fold_6.py b/src/ptbench/data/indian/fold_6.py
new file mode 100644
index 0000000000000000000000000000000000000000..cf1ba7eec0c8be7287ea8592c2174c5dc4b23a0c
--- /dev/null
+++ b/src/ptbench/data/indian/fold_6.py
@@ -0,0 +1,46 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Indian dataset for TB detection (cross validation fold 6)
+
+* Split reference: [INDIAN-2013]_ with 20% of train set for the validation set
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.indian` 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/indian/fold_6_rgb.py b/src/ptbench/data/indian/fold_6_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..b32d3dedffd2768845d89bde9b083368c7296b2d
--- /dev/null
+++ b/src/ptbench/data/indian/fold_6_rgb.py
@@ -0,0 +1,46 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Indian dataset for TB detection (cross validation fold 6, RGB)
+
+* Split reference: [INDIAN-2013]_ with 20% of train set for the validation set
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.indian` 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/indian/fold_7.py b/src/ptbench/data/indian/fold_7.py
new file mode 100644
index 0000000000000000000000000000000000000000..49a4d8f1232a4eabb38432568f16eb3f7e4894a3
--- /dev/null
+++ b/src/ptbench/data/indian/fold_7.py
@@ -0,0 +1,46 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Indian dataset for TB detection (cross validation fold 7)
+
+* Split reference: [INDIAN-2013]_ with 20% of train set for the validation set
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.indian` 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/indian/fold_7_rgb.py b/src/ptbench/data/indian/fold_7_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..7d5eb33daeda23eb8eb19fc48855d68aa46a57cd
--- /dev/null
+++ b/src/ptbench/data/indian/fold_7_rgb.py
@@ -0,0 +1,46 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Indian dataset for TB detection (cross validation fold 7, RGB)
+
+* Split reference: [INDIAN-2013]_ with 20% of train set for the validation set
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.indian` 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/indian/fold_8.py b/src/ptbench/data/indian/fold_8.py
new file mode 100644
index 0000000000000000000000000000000000000000..9f6340746cce79c973950316bb73e1f3614a9500
--- /dev/null
+++ b/src/ptbench/data/indian/fold_8.py
@@ -0,0 +1,46 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Indian dataset for TB detection (cross validation fold 8)
+
+* Split reference: [INDIAN-2013]_ with 20% of train set for the validation set
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.indian` 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/indian/fold_8_rgb.py b/src/ptbench/data/indian/fold_8_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..5c228a285dcca15171755830311cda9701125a50
--- /dev/null
+++ b/src/ptbench/data/indian/fold_8_rgb.py
@@ -0,0 +1,46 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Indian dataset for TB detection (cross validation fold 8, RGB)
+
+* Split reference: [INDIAN-2013]_ with 20% of train set for the validation set
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.indian` 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/indian/fold_9.py b/src/ptbench/data/indian/fold_9.py
new file mode 100644
index 0000000000000000000000000000000000000000..a406bc17902a2904daf5db13a230f89a32b3f8e4
--- /dev/null
+++ b/src/ptbench/data/indian/fold_9.py
@@ -0,0 +1,46 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Indian dataset for TB detection (cross validation fold 9)
+
+* Split reference: [INDIAN-2013]_ with 20% of train set for the validation set
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.indian` 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/indian/fold_9_rgb.py b/src/ptbench/data/indian/fold_9_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..220938488b729cd17fac1adbb51ca592af557d84
--- /dev/null
+++ b/src/ptbench/data/indian/fold_9_rgb.py
@@ -0,0 +1,46 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Indian dataset for TB detection (cross validation fold 9, RGB)
+
+* Split reference: [INDIAN-2013]_ with 20% of train set for the validation set
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.indian` 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/indian/rgb.py b/src/ptbench/data/indian/rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..f8df027ddf1c67870aa76445932441b1e0c2587d
--- /dev/null
+++ b/src/ptbench/data/indian/rgb.py
@@ -0,0 +1,46 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Indian dataset for TB detection (default protocol, converted in RGB)
+
+* Split reference: [INDIAN-2013]_ with 20% of train set for the validation set
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.indian` 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