diff --git a/doc/api.rst b/doc/api.rst
index 7314356253fefa05fc6de69fadefccbd61471aca..0114d9ff62b83dfc2178ade21426a7a2cb334dfe 100644
--- a/doc/api.rst
+++ b/doc/api.rst
@@ -53,6 +53,10 @@ Direct data-access through iterators.
    ptbench.data.indian
    ptbench.data.nih_cxr14_re
    ptbench.data.padchest_RS
+   ptbench.data.tbx11k_simplified
+   ptbench.data.tbx11k_simplified_RS
+   ptbench.data.tbx11k_simplified_v2
+   ptbench.data.tbx11k_simplified_v2_RS
 
 
 .. _ptbench.api.models:
diff --git a/doc/config.rst b/doc/config.rst
index af8fa995a3247f5bd735627b9d59e6de436025c4..828bba07a4c3db58cdc4854c7ab1c4e407f21f17 100644
--- a/doc/config.rst
+++ b/doc/config.rst
@@ -50,6 +50,12 @@ if applicable.  Use these datasets for training and evaluating your models.
    ptbench.configs.datasets.mc_ch_in.default
    ptbench.configs.datasets.mc_ch_in.rgb
    ptbench.configs.datasets.mc_ch_in_RS.default
+   ptbench.configs.datasets.mc_ch_in_11k.default
+   ptbench.configs.datasets.mc_ch_in_11k.rgb
+   ptbench.configs.datasets.mc_ch_in_11k_RS.default
+   ptbench.configs.datasets.mc_ch_in_11kv2.default
+   ptbench.configs.datasets.mc_ch_in_11kv2.rgb
+   ptbench.configs.datasets.mc_ch_in_11kv2_RS.default
    ptbench.configs.datasets.mc_ch_in_pc.default
    ptbench.configs.datasets.mc_ch_in_pc.rgb
    ptbench.configs.datasets.mc_ch_in_pc_RS.default
@@ -68,6 +74,12 @@ if applicable.  Use these datasets for training and evaluating your models.
    ptbench.configs.datasets.shenzhen.default
    ptbench.configs.datasets.shenzhen.rgb
    ptbench.configs.datasets.shenzhen_RS.default
+   ptbench.configs.datasets.tbx11k_simplified.default
+   ptbench.configs.datasets.tbx11k_simplified.rgb
+   ptbench.configs.datasets.tbx11k_simplified_RS.default
+   ptbench.configs.datasets.tbx11k_simplified_v2.default
+   ptbench.configs.datasets.tbx11k_simplified_v2.rgb
+   ptbench.configs.datasets.tbx11k_simplified_v2_RS.default
 
 
 .. _ptbench.configs.datasets.folds:
@@ -97,6 +109,12 @@ datasets.  Nine other folds are available for every configuration (from 1 to
    ptbench.configs.datasets.mc_ch_in.fold_0
    ptbench.configs.datasets.mc_ch_in.fold_0_rgb
    ptbench.configs.datasets.mc_ch_in_RS.fold_0
+   ptbench.configs.datasets.mc_ch_in_11k.fold_0
+   ptbench.configs.datasets.mc_ch_in_11k.fold_0_rgb
+   ptbench.configs.datasets.mc_ch_in_11k_RS.fold_0
+   ptbench.configs.datasets.mc_ch_in_11kv2.fold_0
+   ptbench.configs.datasets.mc_ch_in_11kv2.fold_0_rgb
+   ptbench.configs.datasets.mc_ch_in_11kv2_RS.fold_0
    ptbench.configs.datasets.montgomery.fold_0
    ptbench.configs.datasets.montgomery.fold_0_rgb
    ptbench.configs.datasets.montgomery_RS.fold_0
@@ -106,6 +124,12 @@ datasets.  Nine other folds are available for every configuration (from 1 to
    ptbench.configs.datasets.tbpoc.fold_0
    ptbench.configs.datasets.tbpoc.fold_0_rgb
    ptbench.configs.datasets.tbpoc_RS.fold_0
+   ptbench.configs.datasets.tbx11k_simplified.fold_0
+   ptbench.configs.datasets.tbx11k_simplified.fold_0_rgb
+   ptbench.configs.datasets.tbx11k_simplified_RS.fold_0
+   ptbench.configs.datasets.tbx11k_simplified_v2.fold_0
+   ptbench.configs.datasets.tbx11k_simplified_v2.fold_0_rgb
+   ptbench.configs.datasets.tbx11k_simplified_v2_RS.fold_0
 
 
 .. include:: links.rst
diff --git a/doc/install.rst b/doc/install.rst
index 0ec7ad7d7d9dfbefb6b3106ddcfc164d41d7f435..170f1883325ffccb41ad78d2eafbd87ceeb7528e 100644
--- a/doc/install.rst
+++ b/doc/install.rst
@@ -66,6 +66,7 @@ Here is an example configuration file that may be useful as a starting point:
    montgomery = "/Users/myself/dbs/montgomery-xrayset"
    shenzhen = "/Users/myself/dbs/shenzhen"
    nih_cxr14_re = "/Users/myself/dbs/nih-cxr14-re"
+   tbx11k_simplified = "/Users/myself/dbs/tbx11k-simplified"
 
    [nih_cxr14_re]
    idiap_folder_structure = false  # set to `true` if at Idiap
@@ -145,6 +146,42 @@ In addition to the splits presented in the following table, 10 folds
 
 .. _ptbench.setup.datasets.tb+signs:
 
+Tuberculosis multilabel dataset
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The following dataset contains the labels healthy, sick & non-TB, active TB,
+and latent TB. The implemented tbx11k dataset in this package is based on
+the simplified version, which is just a more compact version of the original.
+In addition to the splits presented in the following table, 10 folds
+(for cross-validation) randomly generated are available for these datasets.
+
+.. list-table::
+
+   * - Dataset
+     - Reference
+     - H x W
+     - Samples
+     - Training
+     - Validation
+     - Test
+   * - TBX11K_
+     - [TBX11K-2020]_
+     - 512 x 512
+     - 11'200
+     - 6600
+     - 1800
+     - 2800
+   * - TBX11K_SIMPLIFIED_
+     - [TBX11K-SIMPLIFIED-2020]_
+     - 512 x 512
+     - 11'200
+     - 6600
+     - 1800
+     - 2800
+
+
+.. _ptbench.setup.datasets.tbmultilabel+signs:
+
 Tuberculosis + radiological findings dataset
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
diff --git a/doc/links.rst b/doc/links.rst
index df1ef5ea53ee13e8d6c41c02bdaf2367b3940bd6..92ecafd5a8e0fd128efaaccd637d2b2731f2f788 100644
--- a/doc/links.rst
+++ b/doc/links.rst
@@ -18,3 +18,5 @@
 .. _indian: https://sourceforge.net/projects/tbxpredict/
 .. _NIH_CXR14_re: https://nihcc.app.box.com/v/ChestXray-NIHCC
 .. _PadChest: https://bimcv.cipf.es/bimcv-projects/padchest/
+.. _TBX11K: https://mmcheng.net/tb/
+.. _TBX11K_simplified: https://www.kaggle.com/datasets/vbookshelf/tbx11k-simplified
diff --git a/doc/references.rst b/doc/references.rst
index 4897ee5bebf8a8937fa247d2f4fc8a199279ff56..5a349fa9dd960aa393f8f9d5dfd6f696676317e6 100644
--- a/doc/references.rst
+++ b/doc/references.rst
@@ -59,3 +59,13 @@
    performance and interobserver agreement of urine lipoarabinomannan in
    diagnosing HIV-Associated tuberculosis in an emergency center.**,
    J. Acquir. Immune Defic. Syndr. 1999 81, e10–e14 (2019).
+
+.. [TBX11K-2020] *Liu, Y., Wu, Y.-H., Ban, Y., Wang, H., and Cheng, M.-*,
+   **Rethinking computer-aided tuberculosis diagnosis.**,
+   In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern
+   Recognition, pages 2646–2655.
+
+.. [TBX11K-SIMPLIFIED-2020] *Liu, Y., Wu, Y.-H., Ban, Y., Wang, H., and Cheng, M.-*,
+   **Rethinking computer-aided tuberculosis diagnosis.**,
+   In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern
+   Recognition, pages 2646–2655.
diff --git a/pyproject.toml b/pyproject.toml
index 342d68c30241dac247c5a2fd8d1a6674b3a1f843..7407826a8270d9d1d909a92811d4644b42aec52a 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -186,6 +186,76 @@ indian_rs_f6 = "ptbench.configs.datasets.indian_RS.fold_6"
 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"
+# 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"
+tbx11k_simplified_rs_f1 = "ptbench.configs.datasets.tbx11k_simplified_RS.fold_1"
+tbx11k_simplified_rs_f2 = "ptbench.configs.datasets.tbx11k_simplified_RS.fold_2"
+tbx11k_simplified_rs_f3 = "ptbench.configs.datasets.tbx11k_simplified_RS.fold_3"
+tbx11k_simplified_rs_f4 = "ptbench.configs.datasets.tbx11k_simplified_RS.fold_4"
+tbx11k_simplified_rs_f5 = "ptbench.configs.datasets.tbx11k_simplified_RS.fold_5"
+tbx11k_simplified_rs_f6 = "ptbench.configs.datasets.tbx11k_simplified_RS.fold_6"
+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"
+# 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"
+tbx11k_simplified_v2_rs_f1 = "ptbench.configs.datasets.tbx11k_simplified_v2_RS.fold_1"
+tbx11k_simplified_v2_rs_f2 = "ptbench.configs.datasets.tbx11k_simplified_v2_RS.fold_2"
+tbx11k_simplified_v2_rs_f3 = "ptbench.configs.datasets.tbx11k_simplified_v2_RS.fold_3"
+tbx11k_simplified_v2_rs_f4 = "ptbench.configs.datasets.tbx11k_simplified_v2_RS.fold_4"
+tbx11k_simplified_v2_rs_f5 = "ptbench.configs.datasets.tbx11k_simplified_v2_RS.fold_5"
+tbx11k_simplified_v2_rs_f6 = "ptbench.configs.datasets.tbx11k_simplified_v2_RS.fold_6"
+tbx11k_simplified_v2_rs_f7 = "ptbench.configs.datasets.tbx11k_simplified_v2_RS.fold_7"
+tbx11k_simplified_v2_rs_f8 = "ptbench.configs.datasets.tbx11k_simplified_v2_RS.fold_8"
+tbx11k_simplified_v2_rs_f9 = "ptbench.configs.datasets.tbx11k_simplified_v2_RS.fold_9"
 # montgomery-shenzhen aggregated dataset
 mc_ch = "ptbench.configs.datasets.mc_ch.default"
 mc_ch_rgb = "ptbench.configs.datasets.mc_ch.rgb"
@@ -258,6 +328,78 @@ mc_ch_in_rs_f6 = "ptbench.configs.datasets.mc_ch_in_RS.fold_6"
 mc_ch_in_rs_f7 = "ptbench.configs.datasets.mc_ch_in_RS.fold_7"
 mc_ch_in_rs_f8 = "ptbench.configs.datasets.mc_ch_in_RS.fold_8"
 mc_ch_in_rs_f9 = "ptbench.configs.datasets.mc_ch_in_RS.fold_9"
+# montgomery-shenzhen-indian-tbx11k aggregated dataset
+mc_ch_in_11k = "ptbench.configs.datasets.mc_ch_in_11k.default"
+mc_ch_in_11k_rgb = "ptbench.configs.datasets.mc_ch_in_11k.rgb"
+mc_ch_in_11k_f0 = "ptbench.configs.datasets.mc_ch_in_11k.fold_0"
+mc_ch_in_11k_f1 = "ptbench.configs.datasets.mc_ch_in_11k.fold_1"
+mc_ch_in_11k_f2 = "ptbench.configs.datasets.mc_ch_in_11k.fold_2"
+mc_ch_in_11k_f3 = "ptbench.configs.datasets.mc_ch_in_11k.fold_3"
+mc_ch_in_11k_f4 = "ptbench.configs.datasets.mc_ch_in_11k.fold_4"
+mc_ch_in_11k_f5 = "ptbench.configs.datasets.mc_ch_in_11k.fold_5"
+mc_ch_in_11k_f6 = "ptbench.configs.datasets.mc_ch_in_11k.fold_6"
+mc_ch_in_11k_f7 = "ptbench.configs.datasets.mc_ch_in_11k.fold_7"
+mc_ch_in_11k_f8 = "ptbench.configs.datasets.mc_ch_in_11k.fold_8"
+mc_ch_in_11k_f9 = "ptbench.configs.datasets.mc_ch_in_11k.fold_9"
+mc_ch_in_11k_f0_rgb = "ptbench.configs.datasets.mc_ch_in_11k.fold_0_rgb"
+mc_ch_in_11k_f1_rgb = "ptbench.configs.datasets.mc_ch_in_11k.fold_1_rgb"
+mc_ch_in_11k_f2_rgb = "ptbench.configs.datasets.mc_ch_in_11k.fold_2_rgb"
+mc_ch_in_11k_f3_rgb = "ptbench.configs.datasets.mc_ch_in_11k.fold_3_rgb"
+mc_ch_in_11k_f4_rgb = "ptbench.configs.datasets.mc_ch_in_11k.fold_4_rgb"
+mc_ch_in_11k_f5_rgb = "ptbench.configs.datasets.mc_ch_in_11k.fold_5_rgb"
+mc_ch_in_11k_f6_rgb = "ptbench.configs.datasets.mc_ch_in_11k.fold_6_rgb"
+mc_ch_in_11k_f7_rgb = "ptbench.configs.datasets.mc_ch_in_11k.fold_7_rgb"
+mc_ch_in_11k_f8_rgb = "ptbench.configs.datasets.mc_ch_in_11k.fold_8_rgb"
+mc_ch_in_11k_f9_rgb = "ptbench.configs.datasets.mc_ch_in_11k.fold_9_rgb"
+# extended montgomery-shenzhen-indian-tbx11k aggregated dataset
+# (with radiological signs)
+mc_ch_in_11k_rs = "ptbench.configs.datasets.mc_ch_in_11k_RS.default"
+mc_ch_in_11k_rs_f0 = "ptbench.configs.datasets.mc_ch_in_11k_RS.fold_0"
+mc_ch_in_11k_rs_f1 = "ptbench.configs.datasets.mc_ch_in_11k_RS.fold_1"
+mc_ch_in_11k_rs_f2 = "ptbench.configs.datasets.mc_ch_in_11k_RS.fold_2"
+mc_ch_in_11k_rs_f3 = "ptbench.configs.datasets.mc_ch_in_11k_RS.fold_3"
+mc_ch_in_11k_rs_f4 = "ptbench.configs.datasets.mc_ch_in_11k_RS.fold_4"
+mc_ch_in_11k_rs_f5 = "ptbench.configs.datasets.mc_ch_in_11k_RS.fold_5"
+mc_ch_in_11k_rs_f6 = "ptbench.configs.datasets.mc_ch_in_11k_RS.fold_6"
+mc_ch_in_11k_rs_f7 = "ptbench.configs.datasets.mc_ch_in_11k_RS.fold_7"
+mc_ch_in_11k_rs_f8 = "ptbench.configs.datasets.mc_ch_in_11k_RS.fold_8"
+mc_ch_in_11k_rs_f9 = "ptbench.configs.datasets.mc_ch_in_11k_RS.fold_9"
+# montgomery-shenzhen-indian-tbx11kv2 aggregated dataset
+mc_ch_in_11kv2 = "ptbench.configs.datasets.mc_ch_in_11kv2.default"
+mc_ch_in_11kv2_rgb = "ptbench.configs.datasets.mc_ch_in_11kv2.rgb"
+mc_ch_in_11kv2_f0 = "ptbench.configs.datasets.mc_ch_in_11kv2.fold_0"
+mc_ch_in_11kv2_f1 = "ptbench.configs.datasets.mc_ch_in_11kv2.fold_1"
+mc_ch_in_11kv2_f2 = "ptbench.configs.datasets.mc_ch_in_11kv2.fold_2"
+mc_ch_in_11kv2_f3 = "ptbench.configs.datasets.mc_ch_in_11kv2.fold_3"
+mc_ch_in_11kv2_f4 = "ptbench.configs.datasets.mc_ch_in_11kv2.fold_4"
+mc_ch_in_11kv2_f5 = "ptbench.configs.datasets.mc_ch_in_11kv2.fold_5"
+mc_ch_in_11kv2_f6 = "ptbench.configs.datasets.mc_ch_in_11kv2.fold_6"
+mc_ch_in_11kv2_f7 = "ptbench.configs.datasets.mc_ch_in_11kv2.fold_7"
+mc_ch_in_11kv2_f8 = "ptbench.configs.datasets.mc_ch_in_11kv2.fold_8"
+mc_ch_in_11kv2_f9 = "ptbench.configs.datasets.mc_ch_in_11kv2.fold_9"
+mc_ch_in_11kv2_f0_rgb = "ptbench.configs.datasets.mc_ch_in_11kv2.fold_0_rgb"
+mc_ch_in_11kv2_f1_rgb = "ptbench.configs.datasets.mc_ch_in_11kv2.fold_1_rgb"
+mc_ch_in_11kv2_f2_rgb = "ptbench.configs.datasets.mc_ch_in_11kv2.fold_2_rgb"
+mc_ch_in_11kv2_f3_rgb = "ptbench.configs.datasets.mc_ch_in_11kv2.fold_3_rgb"
+mc_ch_in_11kv2_f4_rgb = "ptbench.configs.datasets.mc_ch_in_11kv2.fold_4_rgb"
+mc_ch_in_11kv2_f5_rgb = "ptbench.configs.datasets.mc_ch_in_11kv2.fold_5_rgb"
+mc_ch_in_11kv2_f6_rgb = "ptbench.configs.datasets.mc_ch_in_11kv2.fold_6_rgb"
+mc_ch_in_11kv2_f7_rgb = "ptbench.configs.datasets.mc_ch_in_11kv2.fold_7_rgb"
+mc_ch_in_11kv2_f8_rgb = "ptbench.configs.datasets.mc_ch_in_11kv2.fold_8_rgb"
+mc_ch_in_11kv2_f9_rgb = "ptbench.configs.datasets.mc_ch_in_11kv2.fold_9_rgb"
+# extended montgomery-shenzhen-indian-tbx11kv2 aggregated dataset
+# (with radiological signs)
+mc_ch_in_11kv2_rs = "ptbench.configs.datasets.mc_ch_in_11kv2_RS.default"
+mc_ch_in_11kv2_rs_f0 = "ptbench.configs.datasets.mc_ch_in_11kv2_RS.fold_0"
+mc_ch_in_11kv2_rs_f1 = "ptbench.configs.datasets.mc_ch_in_11kv2_RS.fold_1"
+mc_ch_in_11kv2_rs_f2 = "ptbench.configs.datasets.mc_ch_in_11kv2_RS.fold_2"
+mc_ch_in_11kv2_rs_f3 = "ptbench.configs.datasets.mc_ch_in_11kv2_RS.fold_3"
+mc_ch_in_11kv2_rs_f4 = "ptbench.configs.datasets.mc_ch_in_11kv2_RS.fold_4"
+mc_ch_in_11kv2_rs_f5 = "ptbench.configs.datasets.mc_ch_in_11kv2_RS.fold_5"
+mc_ch_in_11kv2_rs_f6 = "ptbench.configs.datasets.mc_ch_in_11kv2_RS.fold_6"
+mc_ch_in_11kv2_rs_f7 = "ptbench.configs.datasets.mc_ch_in_11kv2_RS.fold_7"
+mc_ch_in_11kv2_rs_f8 = "ptbench.configs.datasets.mc_ch_in_11kv2_RS.fold_8"
+mc_ch_in_11kv2_rs_f9 = "ptbench.configs.datasets.mc_ch_in_11kv2_RS.fold_9"
 # tbpoc dataset (and cross-validation folds)
 tbpoc_f0 = "ptbench.configs.datasets.tbpoc.fold_0"
 tbpoc_f1 = "ptbench.configs.datasets.tbpoc.fold_1"
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11k/__init__.py b/src/ptbench/configs/datasets/mc_ch_in_11k/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e8970bd744280c9fb07f6f09d5b4b844a9f57993
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11k/__init__.py
@@ -0,0 +1,157 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+from torch.utils.data.dataset import ConcatDataset
+
+
+def _maker(protocol):
+    if protocol == "default":
+        from ..indian import default as indian
+        from ..montgomery import default as mc
+        from ..shenzhen import default as ch
+        from ..tbx11k_simplified import default as tbx11k
+    elif protocol == "rgb":
+        from ..indian import rgb as indian
+        from ..montgomery import rgb as mc
+        from ..shenzhen import rgb as ch
+        from ..tbx11k_simplified import rgb as tbx11k
+    elif protocol == "fold_0":
+        from ..indian import fold_0 as indian
+        from ..montgomery import fold_0 as mc
+        from ..shenzhen import fold_0 as ch
+        from ..tbx11k_simplified import fold_0 as tbx11k
+    elif protocol == "fold_1":
+        from ..indian import fold_1 as indian
+        from ..montgomery import fold_1 as mc
+        from ..shenzhen import fold_1 as ch
+        from ..tbx11k_simplified import fold_1 as tbx11k
+    elif protocol == "fold_2":
+        from ..indian import fold_2 as indian
+        from ..montgomery import fold_2 as mc
+        from ..shenzhen import fold_2 as ch
+        from ..tbx11k_simplified import fold_2 as tbx11k
+    elif protocol == "fold_3":
+        from ..indian import fold_3 as indian
+        from ..montgomery import fold_3 as mc
+        from ..shenzhen import fold_3 as ch
+        from ..tbx11k_simplified import fold_3 as tbx11k
+    elif protocol == "fold_4":
+        from ..indian import fold_4 as indian
+        from ..montgomery import fold_4 as mc
+        from ..shenzhen import fold_4 as ch
+        from ..tbx11k_simplified import fold_4 as tbx11k
+    elif protocol == "fold_5":
+        from ..indian import fold_5 as indian
+        from ..montgomery import fold_5 as mc
+        from ..shenzhen import fold_5 as ch
+        from ..tbx11k_simplified import fold_5 as tbx11k
+    elif protocol == "fold_6":
+        from ..indian import fold_6 as indian
+        from ..montgomery import fold_6 as mc
+        from ..shenzhen import fold_6 as ch
+        from ..tbx11k_simplified import fold_6 as tbx11k
+    elif protocol == "fold_7":
+        from ..indian import fold_7 as indian
+        from ..montgomery import fold_7 as mc
+        from ..shenzhen import fold_7 as ch
+        from ..tbx11k_simplified import fold_7 as tbx11k
+    elif protocol == "fold_8":
+        from ..indian import fold_8 as indian
+        from ..montgomery import fold_8 as mc
+        from ..shenzhen import fold_8 as ch
+        from ..tbx11k_simplified import fold_8 as tbx11k
+    elif protocol == "fold_9":
+        from ..indian import fold_9 as indian
+        from ..montgomery import fold_9 as mc
+        from ..shenzhen import fold_9 as ch
+        from ..tbx11k_simplified import fold_9 as tbx11k
+    elif protocol == "fold_0_rgb":
+        from ..indian import fold_0_rgb as indian
+        from ..montgomery import fold_0_rgb as mc
+        from ..shenzhen import fold_0_rgb as ch
+        from ..tbx11k_simplified import fold_0_rgb as tbx11k
+    elif protocol == "fold_1_rgb":
+        from ..indian import fold_1_rgb as indian
+        from ..montgomery import fold_1_rgb as mc
+        from ..shenzhen import fold_1_rgb as ch
+        from ..tbx11k_simplified import fold_1_rgb as tbx11k
+    elif protocol == "fold_2_rgb":
+        from ..indian import fold_2_rgb as indian
+        from ..montgomery import fold_2_rgb as mc
+        from ..shenzhen import fold_2_rgb as ch
+        from ..tbx11k_simplified import fold_2_rgb as tbx11k
+    elif protocol == "fold_3_rgb":
+        from ..indian import fold_3_rgb as indian
+        from ..montgomery import fold_3_rgb as mc
+        from ..shenzhen import fold_3_rgb as ch
+        from ..tbx11k_simplified import fold_3_rgb as tbx11k
+    elif protocol == "fold_4_rgb":
+        from ..indian import fold_4_rgb as indian
+        from ..montgomery import fold_4_rgb as mc
+        from ..shenzhen import fold_4_rgb as ch
+        from ..tbx11k_simplified import fold_4_rgb as tbx11k
+    elif protocol == "fold_5_rgb":
+        from ..indian import fold_5_rgb as indian
+        from ..montgomery import fold_5_rgb as mc
+        from ..shenzhen import fold_5_rgb as ch
+        from ..tbx11k_simplified import fold_5_rgb as tbx11k
+    elif protocol == "fold_6_rgb":
+        from ..indian import fold_6_rgb as indian
+        from ..montgomery import fold_6_rgb as mc
+        from ..shenzhen import fold_6_rgb as ch
+        from ..tbx11k_simplified import fold_6_rgb as tbx11k
+    elif protocol == "fold_7_rgb":
+        from ..indian import fold_7_rgb as indian
+        from ..montgomery import fold_7_rgb as mc
+        from ..shenzhen import fold_7_rgb as ch
+        from ..tbx11k_simplified import fold_7_rgb as tbx11k
+    elif protocol == "fold_8_rgb":
+        from ..indian import fold_8_rgb as indian
+        from ..montgomery import fold_8_rgb as mc
+        from ..shenzhen import fold_8_rgb as ch
+        from ..tbx11k_simplified import fold_8_rgb as tbx11k
+    elif protocol == "fold_9_rgb":
+        from ..indian import fold_9_rgb as indian
+        from ..montgomery import fold_9_rgb as mc
+        from ..shenzhen import fold_9_rgb as ch
+        from ..tbx11k_simplified import fold_9_rgb as tbx11k
+
+    mc = mc.dataset
+    ch = ch.dataset
+    indian = indian.dataset
+    tbx11k = tbx11k.dataset
+
+    dataset = {}
+    dataset["__train__"] = ConcatDataset(
+        [
+            mc["__train__"],
+            ch["__train__"],
+            indian["__train__"],
+            tbx11k["__train__"],
+        ]
+    )
+    dataset["train"] = ConcatDataset(
+        [mc["train"], ch["train"], indian["train"], tbx11k["train"]]
+    )
+    dataset["__valid__"] = ConcatDataset(
+        [
+            mc["__valid__"],
+            ch["__valid__"],
+            indian["__valid__"],
+            tbx11k["__valid__"],
+        ]
+    )
+    dataset["validation"] = ConcatDataset(
+        [
+            mc["validation"],
+            ch["validation"],
+            indian["validation"],
+            tbx11k["validation"],
+        ]
+    )
+    dataset["test"] = ConcatDataset(
+        [mc["test"], ch["test"], indian["test"], tbx11k["test"]]
+    )
+
+    return dataset
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11k/default.py b/src/ptbench/configs/datasets/mc_ch_in_11k/default.py
new file mode 100644
index 0000000000000000000000000000000000000000..7d4f16bda48b05e7e9302ffc9c689d8393b3e495
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11k/default.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets."""
+
+from . import _maker
+
+dataset = _maker("default")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11k/fold_0.py b/src/ptbench/configs/datasets/mc_ch_in_11k/fold_0.py
new file mode 100644
index 0000000000000000000000000000000000000000..757a0eb98214ba020d76095363d424b9209540e7
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11k/fold_0.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 0)"""
+
+from . import _maker
+
+dataset = _maker("fold_0")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11k/fold_0_rgb.py b/src/ptbench/configs/datasets/mc_ch_in_11k/fold_0_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..48e05ff3f71f13976190d04cfaf59c5c36996bac
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11k/fold_0_rgb.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 0, RGB)"""
+
+from . import _maker
+
+dataset = _maker("fold_0_rgb")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11k/fold_1.py b/src/ptbench/configs/datasets/mc_ch_in_11k/fold_1.py
new file mode 100644
index 0000000000000000000000000000000000000000..5657958934b926879bd26503c9b383e775bc724d
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11k/fold_1.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 1)"""
+
+from . import _maker
+
+dataset = _maker("fold_1")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11k/fold_1_rgb.py b/src/ptbench/configs/datasets/mc_ch_in_11k/fold_1_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..c782d68de247c876ddd6826100cbb7908342b928
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11k/fold_1_rgb.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 1, RGB)"""
+
+from . import _maker
+
+dataset = _maker("fold_1_rgb")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11k/fold_2.py b/src/ptbench/configs/datasets/mc_ch_in_11k/fold_2.py
new file mode 100644
index 0000000000000000000000000000000000000000..10a597bcb8e0485db63f0d7500b15b3e78877066
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11k/fold_2.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 2)"""
+
+from . import _maker
+
+dataset = _maker("fold_2")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11k/fold_2_rgb.py b/src/ptbench/configs/datasets/mc_ch_in_11k/fold_2_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..d624f3af53abcf053c7bf17a9822a86cb53e2923
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11k/fold_2_rgb.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 2, RGB)"""
+
+from . import _maker
+
+dataset = _maker("fold_2_rgb")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11k/fold_3.py b/src/ptbench/configs/datasets/mc_ch_in_11k/fold_3.py
new file mode 100644
index 0000000000000000000000000000000000000000..39bee4fec99e81eecc22a365183283bcd2ec3d98
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11k/fold_3.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 3)"""
+
+from . import _maker
+
+dataset = _maker("fold_3")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11k/fold_3_rgb.py b/src/ptbench/configs/datasets/mc_ch_in_11k/fold_3_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..7b26e4257e61013843e3a62c3bc419003e23b645
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11k/fold_3_rgb.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 3, RGB)"""
+
+from . import _maker
+
+dataset = _maker("fold_3_rgb")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11k/fold_4.py b/src/ptbench/configs/datasets/mc_ch_in_11k/fold_4.py
new file mode 100644
index 0000000000000000000000000000000000000000..5fb56292fd97636f452cde06c87bb34c89f01b1c
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11k/fold_4.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 4)"""
+
+from . import _maker
+
+dataset = _maker("fold_4")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11k/fold_4_rgb.py b/src/ptbench/configs/datasets/mc_ch_in_11k/fold_4_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..fbc4f0cfd9edc602fbe5665aca0465b29c5183b5
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11k/fold_4_rgb.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 4, RGB)"""
+
+from . import _maker
+
+dataset = _maker("fold_4_rgb")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11k/fold_5.py b/src/ptbench/configs/datasets/mc_ch_in_11k/fold_5.py
new file mode 100644
index 0000000000000000000000000000000000000000..679bb9b3cbbdede06cd87834239609720f439296
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11k/fold_5.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 5)"""
+
+from . import _maker
+
+dataset = _maker("fold_5")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11k/fold_5_rgb.py b/src/ptbench/configs/datasets/mc_ch_in_11k/fold_5_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..747d510ecd1c7bd2f32ab7b139a53603d5bbee88
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11k/fold_5_rgb.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 5, RGB)"""
+
+from . import _maker
+
+dataset = _maker("fold_5_rgb")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11k/fold_6.py b/src/ptbench/configs/datasets/mc_ch_in_11k/fold_6.py
new file mode 100644
index 0000000000000000000000000000000000000000..cd8e4cd571b8c796bad3221584870888c5186d3d
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11k/fold_6.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 6)"""
+
+from . import _maker
+
+dataset = _maker("fold_6")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11k/fold_6_rgb.py b/src/ptbench/configs/datasets/mc_ch_in_11k/fold_6_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..86f112c3aae0c1c1dd48002347f78ce565797d47
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11k/fold_6_rgb.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 6, RGB)"""
+
+from . import _maker
+
+dataset = _maker("fold_6_rgb")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11k/fold_7.py b/src/ptbench/configs/datasets/mc_ch_in_11k/fold_7.py
new file mode 100644
index 0000000000000000000000000000000000000000..98241531d3e15720f07ef9174687c47db7d737f1
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11k/fold_7.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 7)"""
+
+from . import _maker
+
+dataset = _maker("fold_7")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11k/fold_7_rgb.py b/src/ptbench/configs/datasets/mc_ch_in_11k/fold_7_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..981fe19180e0d8d4e1b21653f52a92a567723a63
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11k/fold_7_rgb.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 7, RGB)"""
+
+from . import _maker
+
+dataset = _maker("fold_7_rgb")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11k/fold_8.py b/src/ptbench/configs/datasets/mc_ch_in_11k/fold_8.py
new file mode 100644
index 0000000000000000000000000000000000000000..dab1a234a3842ab450706d86060651d4383ddbfc
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11k/fold_8.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 8)"""
+
+from . import _maker
+
+dataset = _maker("fold_8")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11k/fold_8_rgb.py b/src/ptbench/configs/datasets/mc_ch_in_11k/fold_8_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..798b8de64761ef0d87f491ef08b43426f55898f2
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11k/fold_8_rgb.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 8, RGB)"""
+
+from . import _maker
+
+dataset = _maker("fold_8_rgb")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11k/fold_9.py b/src/ptbench/configs/datasets/mc_ch_in_11k/fold_9.py
new file mode 100644
index 0000000000000000000000000000000000000000..097724b9446c4c2f0bef8ee6f838c1c11ff627a5
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11k/fold_9.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 9)"""
+
+from . import _maker
+
+dataset = _maker("fold_9")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11k/fold_9_rgb.py b/src/ptbench/configs/datasets/mc_ch_in_11k/fold_9_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..c6c564a40b957b562a37bb30b5809f7cf680e896
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11k/fold_9_rgb.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 9, RGB)"""
+
+from . import _maker
+
+dataset = _maker("fold_9_rgb")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11k/rgb.py b/src/ptbench/configs/datasets/mc_ch_in_11k/rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..f47796a89c31a5a31c0f972d81b5d97c7f8742b4
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11k/rgb.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (RGB)"""
+
+from . import _maker
+
+dataset = _maker("rgb")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11k_RS/__init__.py b/src/ptbench/configs/datasets/mc_ch_in_11k_RS/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..7fa4f30799fd886ca7f792acb51d77870bede69c
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11k_RS/__init__.py
@@ -0,0 +1,157 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+from torch.utils.data.dataset import ConcatDataset
+
+
+def _maker(protocol):
+    if protocol == "default":
+        from ..indian_RS import default as indian
+        from ..montgomery_RS import default as mc
+        from ..shenzhen_RS import default as ch
+        from ..tbx11k_simplified_RS import default as tbx11k
+    elif protocol == "rgb":
+        from ..indian_RS import rgb as indian
+        from ..montgomery_RS import rgb as mc
+        from ..shenzhen_RS import rgb as ch
+        from ..tbx11k_simplified_RS import rgb as tbx11k
+    elif protocol == "fold_0":
+        from ..indian_RS import fold_0 as indian
+        from ..montgomery_RS import fold_0 as mc
+        from ..shenzhen_RS import fold_0 as ch
+        from ..tbx11k_simplified_RS import fold_0 as tbx11k
+    elif protocol == "fold_1":
+        from ..indian_RS import fold_1 as indian
+        from ..montgomery_RS import fold_1 as mc
+        from ..shenzhen_RS import fold_1 as ch
+        from ..tbx11k_simplified_RS import fold_1 as tbx11k
+    elif protocol == "fold_2":
+        from ..indian_RS import fold_2 as indian
+        from ..montgomery_RS import fold_2 as mc
+        from ..shenzhen_RS import fold_2 as ch
+        from ..tbx11k_simplified_RS import fold_2 as tbx11k
+    elif protocol == "fold_3":
+        from ..indian_RS import fold_3 as indian
+        from ..montgomery_RS import fold_3 as mc
+        from ..shenzhen_RS import fold_3 as ch
+        from ..tbx11k_simplified_RS import fold_3 as tbx11k
+    elif protocol == "fold_4":
+        from ..indian_RS import fold_4 as indian
+        from ..montgomery_RS import fold_4 as mc
+        from ..shenzhen_RS import fold_4 as ch
+        from ..tbx11k_simplified_RS import fold_4 as tbx11k
+    elif protocol == "fold_5":
+        from ..indian_RS import fold_5 as indian
+        from ..montgomery_RS import fold_5 as mc
+        from ..shenzhen_RS import fold_5 as ch
+        from ..tbx11k_simplified_RS import fold_5 as tbx11k
+    elif protocol == "fold_6":
+        from ..indian_RS import fold_6 as indian
+        from ..montgomery_RS import fold_6 as mc
+        from ..shenzhen_RS import fold_6 as ch
+        from ..tbx11k_simplified_RS import fold_6 as tbx11k
+    elif protocol == "fold_7":
+        from ..indian_RS import fold_7 as indian
+        from ..montgomery_RS import fold_7 as mc
+        from ..shenzhen_RS import fold_7 as ch
+        from ..tbx11k_simplified_RS import fold_7 as tbx11k
+    elif protocol == "fold_8":
+        from ..indian_RS import fold_8 as indian
+        from ..montgomery_RS import fold_8 as mc
+        from ..shenzhen_RS import fold_8 as ch
+        from ..tbx11k_simplified_RS import fold_8 as tbx11k
+    elif protocol == "fold_9":
+        from ..indian_RS import fold_9 as indian
+        from ..montgomery_RS import fold_9 as mc
+        from ..shenzhen_RS import fold_9 as ch
+        from ..tbx11k_simplified_RS import fold_9 as tbx11k
+    elif protocol == "fold_0_rgb":
+        from ..indian_RS import fold_0_rgb as indian
+        from ..montgomery_RS import fold_0_rgb as mc
+        from ..shenzhen_RS import fold_0_rgb as ch
+        from ..tbx11k_simplified_RS import fold_0_rgb as tbx11k
+    elif protocol == "fold_1_rgb":
+        from ..indian_RS import fold_1_rgb as indian
+        from ..montgomery_RS import fold_1_rgb as mc
+        from ..shenzhen_RS import fold_1_rgb as ch
+        from ..tbx11k_simplified_RS import fold_1_rgb as tbx11k
+    elif protocol == "fold_2_rgb":
+        from ..indian_RS import fold_2_rgb as indian
+        from ..montgomery_RS import fold_2_rgb as mc
+        from ..shenzhen_RS import fold_2_rgb as ch
+        from ..tbx11k_simplified_RS import fold_2_rgb as tbx11k
+    elif protocol == "fold_3_rgb":
+        from ..indian_RS import fold_3_rgb as indian
+        from ..montgomery_RS import fold_3_rgb as mc
+        from ..shenzhen_RS import fold_3_rgb as ch
+        from ..tbx11k_simplified_RS import fold_3_rgb as tbx11k
+    elif protocol == "fold_4_rgb":
+        from ..indian_RS import fold_4_rgb as indian
+        from ..montgomery_RS import fold_4_rgb as mc
+        from ..shenzhen_RS import fold_4_rgb as ch
+        from ..tbx11k_simplified_RS import fold_4_rgb as tbx11k
+    elif protocol == "fold_5_rgb":
+        from ..indian_RS import fold_5_rgb as indian
+        from ..montgomery_RS import fold_5_rgb as mc
+        from ..shenzhen_RS import fold_5_rgb as ch
+        from ..tbx11k_simplified_RS import fold_5_rgb as tbx11k
+    elif protocol == "fold_6_rgb":
+        from ..indian_RS import fold_6_rgb as indian
+        from ..montgomery_RS import fold_6_rgb as mc
+        from ..shenzhen_RS import fold_6_rgb as ch
+        from ..tbx11k_simplified_RS import fold_6_rgb as tbx11k
+    elif protocol == "fold_7_rgb":
+        from ..indian_RS import fold_7_rgb as indian
+        from ..montgomery_RS import fold_7_rgb as mc
+        from ..shenzhen_RS import fold_7_rgb as ch
+        from ..tbx11k_simplified_RS import fold_7_rgb as tbx11k
+    elif protocol == "fold_8_rgb":
+        from ..indian_RS import fold_8_rgb as indian
+        from ..montgomery_RS import fold_8_rgb as mc
+        from ..shenzhen_RS import fold_8_rgb as ch
+        from ..tbx11k_simplified_RS import fold_8_rgb as tbx11k
+    elif protocol == "fold_9_rgb":
+        from ..indian_RS import fold_9_rgb as indian
+        from ..montgomery_RS import fold_9_rgb as mc
+        from ..shenzhen_RS import fold_9_rgb as ch
+        from ..tbx11k_simplified_RS import fold_9_rgb as tbx11k
+
+    mc = mc.dataset
+    ch = ch.dataset
+    indian = indian.dataset
+    tbx11k = tbx11k.dataset
+
+    dataset = {}
+    dataset["__train__"] = ConcatDataset(
+        [
+            mc["__train__"],
+            ch["__train__"],
+            indian["__train__"],
+            tbx11k["__train__"],
+        ]
+    )
+    dataset["train"] = ConcatDataset(
+        [mc["train"], ch["train"], indian["train"], tbx11k["train"]]
+    )
+    dataset["__valid__"] = ConcatDataset(
+        [
+            mc["__valid__"],
+            ch["__valid__"],
+            indian["__valid__"],
+            tbx11k["__valid__"],
+        ]
+    )
+    dataset["validation"] = ConcatDataset(
+        [
+            mc["validation"],
+            ch["validation"],
+            indian["validation"],
+            tbx11k["validation"],
+        ]
+    )
+    dataset["test"] = ConcatDataset(
+        [mc["test"], ch["test"], indian["test"], tbx11k["test"]]
+    )
+
+    return dataset
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11k_RS/default.py b/src/ptbench/configs/datasets/mc_ch_in_11k_RS/default.py
new file mode 100644
index 0000000000000000000000000000000000000000..7d4f16bda48b05e7e9302ffc9c689d8393b3e495
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11k_RS/default.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets."""
+
+from . import _maker
+
+dataset = _maker("default")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_0.py b/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_0.py
new file mode 100644
index 0000000000000000000000000000000000000000..757a0eb98214ba020d76095363d424b9209540e7
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_0.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 0)"""
+
+from . import _maker
+
+dataset = _maker("fold_0")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_0_rgb.py b/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_0_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..48e05ff3f71f13976190d04cfaf59c5c36996bac
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_0_rgb.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 0, RGB)"""
+
+from . import _maker
+
+dataset = _maker("fold_0_rgb")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_1.py b/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_1.py
new file mode 100644
index 0000000000000000000000000000000000000000..5657958934b926879bd26503c9b383e775bc724d
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_1.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 1)"""
+
+from . import _maker
+
+dataset = _maker("fold_1")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_1_rgb.py b/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_1_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..c782d68de247c876ddd6826100cbb7908342b928
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_1_rgb.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 1, RGB)"""
+
+from . import _maker
+
+dataset = _maker("fold_1_rgb")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_2.py b/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_2.py
new file mode 100644
index 0000000000000000000000000000000000000000..10a597bcb8e0485db63f0d7500b15b3e78877066
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_2.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 2)"""
+
+from . import _maker
+
+dataset = _maker("fold_2")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_2_rgb.py b/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_2_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..d624f3af53abcf053c7bf17a9822a86cb53e2923
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_2_rgb.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 2, RGB)"""
+
+from . import _maker
+
+dataset = _maker("fold_2_rgb")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_3.py b/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_3.py
new file mode 100644
index 0000000000000000000000000000000000000000..39bee4fec99e81eecc22a365183283bcd2ec3d98
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_3.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 3)"""
+
+from . import _maker
+
+dataset = _maker("fold_3")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_3_rgb.py b/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_3_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..7b26e4257e61013843e3a62c3bc419003e23b645
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_3_rgb.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 3, RGB)"""
+
+from . import _maker
+
+dataset = _maker("fold_3_rgb")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_4.py b/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_4.py
new file mode 100644
index 0000000000000000000000000000000000000000..5fb56292fd97636f452cde06c87bb34c89f01b1c
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_4.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 4)"""
+
+from . import _maker
+
+dataset = _maker("fold_4")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_4_rgb.py b/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_4_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..fbc4f0cfd9edc602fbe5665aca0465b29c5183b5
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_4_rgb.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 4, RGB)"""
+
+from . import _maker
+
+dataset = _maker("fold_4_rgb")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_5.py b/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_5.py
new file mode 100644
index 0000000000000000000000000000000000000000..679bb9b3cbbdede06cd87834239609720f439296
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_5.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 5)"""
+
+from . import _maker
+
+dataset = _maker("fold_5")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_5_rgb.py b/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_5_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..747d510ecd1c7bd2f32ab7b139a53603d5bbee88
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_5_rgb.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 5, RGB)"""
+
+from . import _maker
+
+dataset = _maker("fold_5_rgb")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_6.py b/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_6.py
new file mode 100644
index 0000000000000000000000000000000000000000..cd8e4cd571b8c796bad3221584870888c5186d3d
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_6.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 6)"""
+
+from . import _maker
+
+dataset = _maker("fold_6")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_6_rgb.py b/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_6_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..86f112c3aae0c1c1dd48002347f78ce565797d47
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_6_rgb.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 6, RGB)"""
+
+from . import _maker
+
+dataset = _maker("fold_6_rgb")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_7.py b/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_7.py
new file mode 100644
index 0000000000000000000000000000000000000000..98241531d3e15720f07ef9174687c47db7d737f1
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_7.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 7)"""
+
+from . import _maker
+
+dataset = _maker("fold_7")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_7_rgb.py b/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_7_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..981fe19180e0d8d4e1b21653f52a92a567723a63
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_7_rgb.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 7, RGB)"""
+
+from . import _maker
+
+dataset = _maker("fold_7_rgb")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_8.py b/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_8.py
new file mode 100644
index 0000000000000000000000000000000000000000..dab1a234a3842ab450706d86060651d4383ddbfc
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_8.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 8)"""
+
+from . import _maker
+
+dataset = _maker("fold_8")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_8_rgb.py b/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_8_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..798b8de64761ef0d87f491ef08b43426f55898f2
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_8_rgb.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 8, RGB)"""
+
+from . import _maker
+
+dataset = _maker("fold_8_rgb")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_9.py b/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_9.py
new file mode 100644
index 0000000000000000000000000000000000000000..097724b9446c4c2f0bef8ee6f838c1c11ff627a5
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_9.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 9)"""
+
+from . import _maker
+
+dataset = _maker("fold_9")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_9_rgb.py b/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_9_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..c6c564a40b957b562a37bb30b5809f7cf680e896
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11k_RS/fold_9_rgb.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 9, RGB)"""
+
+from . import _maker
+
+dataset = _maker("fold_9_rgb")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11k_RS/rgb.py b/src/ptbench/configs/datasets/mc_ch_in_11k_RS/rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..f47796a89c31a5a31c0f972d81b5d97c7f8742b4
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11k_RS/rgb.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (RGB)"""
+
+from . import _maker
+
+dataset = _maker("rgb")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11kv2/__init__.py b/src/ptbench/configs/datasets/mc_ch_in_11kv2/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..c36f7f60c8d1111baa7f3559c419e134b7ece62f
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11kv2/__init__.py
@@ -0,0 +1,157 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+from torch.utils.data.dataset import ConcatDataset
+
+
+def _maker(protocol):
+    if protocol == "default":
+        from ..indian import default as indian
+        from ..montgomery import default as mc
+        from ..shenzhen import default as ch
+        from ..tbx11k_simplified_v2 import default as tbx11kv2
+    elif protocol == "rgb":
+        from ..indian import rgb as indian
+        from ..montgomery import rgb as mc
+        from ..shenzhen import rgb as ch
+        from ..tbx11k_simplified_v2 import rgb as tbx11kv2
+    elif protocol == "fold_0":
+        from ..indian import fold_0 as indian
+        from ..montgomery import fold_0 as mc
+        from ..shenzhen import fold_0 as ch
+        from ..tbx11k_simplified_v2 import fold_0 as tbx11kv2
+    elif protocol == "fold_1":
+        from ..indian import fold_1 as indian
+        from ..montgomery import fold_1 as mc
+        from ..shenzhen import fold_1 as ch
+        from ..tbx11k_simplified_v2 import fold_1 as tbx11kv2
+    elif protocol == "fold_2":
+        from ..indian import fold_2 as indian
+        from ..montgomery import fold_2 as mc
+        from ..shenzhen import fold_2 as ch
+        from ..tbx11k_simplified_v2 import fold_2 as tbx11kv2
+    elif protocol == "fold_3":
+        from ..indian import fold_3 as indian
+        from ..montgomery import fold_3 as mc
+        from ..shenzhen import fold_3 as ch
+        from ..tbx11k_simplified_v2 import fold_3 as tbx11kv2
+    elif protocol == "fold_4":
+        from ..indian import fold_4 as indian
+        from ..montgomery import fold_4 as mc
+        from ..shenzhen import fold_4 as ch
+        from ..tbx11k_simplified_v2 import fold_4 as tbx11kv2
+    elif protocol == "fold_5":
+        from ..indian import fold_5 as indian
+        from ..montgomery import fold_5 as mc
+        from ..shenzhen import fold_5 as ch
+        from ..tbx11k_simplified_v2 import fold_5 as tbx11kv2
+    elif protocol == "fold_6":
+        from ..indian import fold_6 as indian
+        from ..montgomery import fold_6 as mc
+        from ..shenzhen import fold_6 as ch
+        from ..tbx11k_simplified_v2 import fold_6 as tbx11kv2
+    elif protocol == "fold_7":
+        from ..indian import fold_7 as indian
+        from ..montgomery import fold_7 as mc
+        from ..shenzhen import fold_7 as ch
+        from ..tbx11k_simplified_v2 import fold_7 as tbx11kv2
+    elif protocol == "fold_8":
+        from ..indian import fold_8 as indian
+        from ..montgomery import fold_8 as mc
+        from ..shenzhen import fold_8 as ch
+        from ..tbx11k_simplified_v2 import fold_8 as tbx11kv2
+    elif protocol == "fold_9":
+        from ..indian import fold_9 as indian
+        from ..montgomery import fold_9 as mc
+        from ..shenzhen import fold_9 as ch
+        from ..tbx11k_simplified_v2 import fold_9 as tbx11kv2
+    elif protocol == "fold_0_rgb":
+        from ..indian import fold_0_rgb as indian
+        from ..montgomery import fold_0_rgb as mc
+        from ..shenzhen import fold_0_rgb as ch
+        from ..tbx11k_simplified_v2 import fold_0_rgb as tbx11kv2
+    elif protocol == "fold_1_rgb":
+        from ..indian import fold_1_rgb as indian
+        from ..montgomery import fold_1_rgb as mc
+        from ..shenzhen import fold_1_rgb as ch
+        from ..tbx11k_simplified_v2 import fold_1_rgb as tbx11kv2
+    elif protocol == "fold_2_rgb":
+        from ..indian import fold_2_rgb as indian
+        from ..montgomery import fold_2_rgb as mc
+        from ..shenzhen import fold_2_rgb as ch
+        from ..tbx11k_simplified_v2 import fold_2_rgb as tbx11kv2
+    elif protocol == "fold_3_rgb":
+        from ..indian import fold_3_rgb as indian
+        from ..montgomery import fold_3_rgb as mc
+        from ..shenzhen import fold_3_rgb as ch
+        from ..tbx11k_simplified_v2 import fold_3_rgb as tbx11kv2
+    elif protocol == "fold_4_rgb":
+        from ..indian import fold_4_rgb as indian
+        from ..montgomery import fold_4_rgb as mc
+        from ..shenzhen import fold_4_rgb as ch
+        from ..tbx11k_simplified_v2 import fold_4_rgb as tbx11kv2
+    elif protocol == "fold_5_rgb":
+        from ..indian import fold_5_rgb as indian
+        from ..montgomery import fold_5_rgb as mc
+        from ..shenzhen import fold_5_rgb as ch
+        from ..tbx11k_simplified_v2 import fold_5_rgb as tbx11kv2
+    elif protocol == "fold_6_rgb":
+        from ..indian import fold_6_rgb as indian
+        from ..montgomery import fold_6_rgb as mc
+        from ..shenzhen import fold_6_rgb as ch
+        from ..tbx11k_simplified_v2 import fold_6_rgb as tbx11kv2
+    elif protocol == "fold_7_rgb":
+        from ..indian import fold_7_rgb as indian
+        from ..montgomery import fold_7_rgb as mc
+        from ..shenzhen import fold_7_rgb as ch
+        from ..tbx11k_simplified_v2 import fold_7_rgb as tbx11kv2
+    elif protocol == "fold_8_rgb":
+        from ..indian import fold_8_rgb as indian
+        from ..montgomery import fold_8_rgb as mc
+        from ..shenzhen import fold_8_rgb as ch
+        from ..tbx11k_simplified_v2 import fold_8_rgb as tbx11kv2
+    elif protocol == "fold_9_rgb":
+        from ..indian import fold_9_rgb as indian
+        from ..montgomery import fold_9_rgb as mc
+        from ..shenzhen import fold_9_rgb as ch
+        from ..tbx11k_simplified_v2 import fold_9_rgb as tbx11kv2
+
+    mc = mc.dataset
+    ch = ch.dataset
+    indian = indian.dataset
+    tbx11kv2 = tbx11kv2.dataset
+
+    dataset = {}
+    dataset["__train__"] = ConcatDataset(
+        [
+            mc["__train__"],
+            ch["__train__"],
+            indian["__train__"],
+            tbx11kv2["__train__"],
+        ]
+    )
+    dataset["train"] = ConcatDataset(
+        [mc["train"], ch["train"], indian["train"], tbx11kv2["train"]]
+    )
+    dataset["__valid__"] = ConcatDataset(
+        [
+            mc["__valid__"],
+            ch["__valid__"],
+            indian["__valid__"],
+            tbx11kv2["__valid__"],
+        ]
+    )
+    dataset["validation"] = ConcatDataset(
+        [
+            mc["validation"],
+            ch["validation"],
+            indian["validation"],
+            tbx11kv2["validation"],
+        ]
+    )
+    dataset["test"] = ConcatDataset(
+        [mc["test"], ch["test"], indian["test"], tbx11kv2["test"]]
+    )
+
+    return dataset
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11kv2/default.py b/src/ptbench/configs/datasets/mc_ch_in_11kv2/default.py
new file mode 100644
index 0000000000000000000000000000000000000000..7d4f16bda48b05e7e9302ffc9c689d8393b3e495
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11kv2/default.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets."""
+
+from . import _maker
+
+dataset = _maker("default")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_0.py b/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_0.py
new file mode 100644
index 0000000000000000000000000000000000000000..757a0eb98214ba020d76095363d424b9209540e7
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_0.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 0)"""
+
+from . import _maker
+
+dataset = _maker("fold_0")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_0_rgb.py b/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_0_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..48e05ff3f71f13976190d04cfaf59c5c36996bac
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_0_rgb.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 0, RGB)"""
+
+from . import _maker
+
+dataset = _maker("fold_0_rgb")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_1.py b/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_1.py
new file mode 100644
index 0000000000000000000000000000000000000000..5657958934b926879bd26503c9b383e775bc724d
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_1.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 1)"""
+
+from . import _maker
+
+dataset = _maker("fold_1")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_1_rgb.py b/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_1_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..c782d68de247c876ddd6826100cbb7908342b928
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_1_rgb.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 1, RGB)"""
+
+from . import _maker
+
+dataset = _maker("fold_1_rgb")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_2.py b/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_2.py
new file mode 100644
index 0000000000000000000000000000000000000000..10a597bcb8e0485db63f0d7500b15b3e78877066
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_2.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 2)"""
+
+from . import _maker
+
+dataset = _maker("fold_2")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_2_rgb.py b/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_2_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..d624f3af53abcf053c7bf17a9822a86cb53e2923
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_2_rgb.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 2, RGB)"""
+
+from . import _maker
+
+dataset = _maker("fold_2_rgb")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_3.py b/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_3.py
new file mode 100644
index 0000000000000000000000000000000000000000..39bee4fec99e81eecc22a365183283bcd2ec3d98
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_3.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 3)"""
+
+from . import _maker
+
+dataset = _maker("fold_3")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_3_rgb.py b/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_3_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..7b26e4257e61013843e3a62c3bc419003e23b645
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_3_rgb.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 3, RGB)"""
+
+from . import _maker
+
+dataset = _maker("fold_3_rgb")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_4.py b/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_4.py
new file mode 100644
index 0000000000000000000000000000000000000000..5fb56292fd97636f452cde06c87bb34c89f01b1c
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_4.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 4)"""
+
+from . import _maker
+
+dataset = _maker("fold_4")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_4_rgb.py b/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_4_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..fbc4f0cfd9edc602fbe5665aca0465b29c5183b5
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_4_rgb.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 4, RGB)"""
+
+from . import _maker
+
+dataset = _maker("fold_4_rgb")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_5.py b/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_5.py
new file mode 100644
index 0000000000000000000000000000000000000000..679bb9b3cbbdede06cd87834239609720f439296
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_5.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 5)"""
+
+from . import _maker
+
+dataset = _maker("fold_5")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_5_rgb.py b/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_5_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..747d510ecd1c7bd2f32ab7b139a53603d5bbee88
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_5_rgb.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 5, RGB)"""
+
+from . import _maker
+
+dataset = _maker("fold_5_rgb")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_6.py b/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_6.py
new file mode 100644
index 0000000000000000000000000000000000000000..cd8e4cd571b8c796bad3221584870888c5186d3d
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_6.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 6)"""
+
+from . import _maker
+
+dataset = _maker("fold_6")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_6_rgb.py b/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_6_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..86f112c3aae0c1c1dd48002347f78ce565797d47
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_6_rgb.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 6, RGB)"""
+
+from . import _maker
+
+dataset = _maker("fold_6_rgb")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_7.py b/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_7.py
new file mode 100644
index 0000000000000000000000000000000000000000..98241531d3e15720f07ef9174687c47db7d737f1
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_7.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 7)"""
+
+from . import _maker
+
+dataset = _maker("fold_7")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_7_rgb.py b/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_7_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..981fe19180e0d8d4e1b21653f52a92a567723a63
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_7_rgb.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 7, RGB)"""
+
+from . import _maker
+
+dataset = _maker("fold_7_rgb")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_8.py b/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_8.py
new file mode 100644
index 0000000000000000000000000000000000000000..dab1a234a3842ab450706d86060651d4383ddbfc
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_8.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 8)"""
+
+from . import _maker
+
+dataset = _maker("fold_8")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_8_rgb.py b/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_8_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..798b8de64761ef0d87f491ef08b43426f55898f2
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_8_rgb.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 8, RGB)"""
+
+from . import _maker
+
+dataset = _maker("fold_8_rgb")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_9.py b/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_9.py
new file mode 100644
index 0000000000000000000000000000000000000000..097724b9446c4c2f0bef8ee6f838c1c11ff627a5
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_9.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 9)"""
+
+from . import _maker
+
+dataset = _maker("fold_9")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_9_rgb.py b/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_9_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..c6c564a40b957b562a37bb30b5809f7cf680e896
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11kv2/fold_9_rgb.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 9, RGB)"""
+
+from . import _maker
+
+dataset = _maker("fold_9_rgb")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11kv2/rgb.py b/src/ptbench/configs/datasets/mc_ch_in_11kv2/rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..f47796a89c31a5a31c0f972d81b5d97c7f8742b4
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11kv2/rgb.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (RGB)"""
+
+from . import _maker
+
+dataset = _maker("rgb")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/__init__.py b/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..5e4b82769c73b5b89c8841990b33c7acc2014fed
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/__init__.py
@@ -0,0 +1,157 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+from torch.utils.data.dataset import ConcatDataset
+
+
+def _maker(protocol):
+    if protocol == "default":
+        from ..indian_RS import default as indian
+        from ..montgomery_RS import default as mc
+        from ..shenzhen_RS import default as ch
+        from ..tbx11k_simplified_v2_RS import default as tbx11kv2
+    elif protocol == "rgb":
+        from ..indian_RS import rgb as indian
+        from ..montgomery_RS import rgb as mc
+        from ..shenzhen_RS import rgb as ch
+        from ..tbx11k_simplified_v2_RS import rgb as tbx11kv2
+    elif protocol == "fold_0":
+        from ..indian_RS import fold_0 as indian
+        from ..montgomery_RS import fold_0 as mc
+        from ..shenzhen_RS import fold_0 as ch
+        from ..tbx11k_simplified_v2_RS import fold_0 as tbx11kv2
+    elif protocol == "fold_1":
+        from ..indian_RS import fold_1 as indian
+        from ..montgomery_RS import fold_1 as mc
+        from ..shenzhen_RS import fold_1 as ch
+        from ..tbx11k_simplified_v2_RS import fold_1 as tbx11kv2
+    elif protocol == "fold_2":
+        from ..indian_RS import fold_2 as indian
+        from ..montgomery_RS import fold_2 as mc
+        from ..shenzhen_RS import fold_2 as ch
+        from ..tbx11k_simplified_v2_RS import fold_2 as tbx11kv2
+    elif protocol == "fold_3":
+        from ..indian_RS import fold_3 as indian
+        from ..montgomery_RS import fold_3 as mc
+        from ..shenzhen_RS import fold_3 as ch
+        from ..tbx11k_simplified_v2_RS import fold_3 as tbx11kv2
+    elif protocol == "fold_4":
+        from ..indian_RS import fold_4 as indian
+        from ..montgomery_RS import fold_4 as mc
+        from ..shenzhen_RS import fold_4 as ch
+        from ..tbx11k_simplified_v2_RS import fold_4 as tbx11kv2
+    elif protocol == "fold_5":
+        from ..indian_RS import fold_5 as indian
+        from ..montgomery_RS import fold_5 as mc
+        from ..shenzhen_RS import fold_5 as ch
+        from ..tbx11k_simplified_v2_RS import fold_5 as tbx11kv2
+    elif protocol == "fold_6":
+        from ..indian_RS import fold_6 as indian
+        from ..montgomery_RS import fold_6 as mc
+        from ..shenzhen_RS import fold_6 as ch
+        from ..tbx11k_simplified_v2_RS import fold_6 as tbx11kv2
+    elif protocol == "fold_7":
+        from ..indian_RS import fold_7 as indian
+        from ..montgomery_RS import fold_7 as mc
+        from ..shenzhen_RS import fold_7 as ch
+        from ..tbx11k_simplified_v2_RS import fold_7 as tbx11kv2
+    elif protocol == "fold_8":
+        from ..indian_RS import fold_8 as indian
+        from ..montgomery_RS import fold_8 as mc
+        from ..shenzhen_RS import fold_8 as ch
+        from ..tbx11k_simplified_v2_RS import fold_8 as tbx11kv2
+    elif protocol == "fold_9":
+        from ..indian_RS import fold_9 as indian
+        from ..montgomery_RS import fold_9 as mc
+        from ..shenzhen_RS import fold_9 as ch
+        from ..tbx11k_simplified_v2_RS import fold_9 as tbx11kv2
+    elif protocol == "fold_0_rgb":
+        from ..indian_RS import fold_0_rgb as indian
+        from ..montgomery_RS import fold_0_rgb as mc
+        from ..shenzhen_RS import fold_0_rgb as ch
+        from ..tbx11k_simplified_v2_RS import fold_0_rgb as tbx11kv2
+    elif protocol == "fold_1_rgb":
+        from ..indian_RS import fold_1_rgb as indian
+        from ..montgomery_RS import fold_1_rgb as mc
+        from ..shenzhen_RS import fold_1_rgb as ch
+        from ..tbx11k_simplified_v2_RS import fold_1_rgb as tbx11kv2
+    elif protocol == "fold_2_rgb":
+        from ..indian_RS import fold_2_rgb as indian
+        from ..montgomery_RS import fold_2_rgb as mc
+        from ..shenzhen_RS import fold_2_rgb as ch
+        from ..tbx11k_simplified_v2_RS import fold_2_rgb as tbx11kv2
+    elif protocol == "fold_3_rgb":
+        from ..indian_RS import fold_3_rgb as indian
+        from ..montgomery_RS import fold_3_rgb as mc
+        from ..shenzhen_RS import fold_3_rgb as ch
+        from ..tbx11k_simplified_v2_RS import fold_3_rgb as tbx11kv2
+    elif protocol == "fold_4_rgb":
+        from ..indian_RS import fold_4_rgb as indian
+        from ..montgomery_RS import fold_4_rgb as mc
+        from ..shenzhen_RS import fold_4_rgb as ch
+        from ..tbx11k_simplified_v2_RS import fold_4_rgb as tbx11kv2
+    elif protocol == "fold_5_rgb":
+        from ..indian_RS import fold_5_rgb as indian
+        from ..montgomery_RS import fold_5_rgb as mc
+        from ..shenzhen_RS import fold_5_rgb as ch
+        from ..tbx11k_simplified_v2_RS import fold_5_rgb as tbx11kv2
+    elif protocol == "fold_6_rgb":
+        from ..indian_RS import fold_6_rgb as indian
+        from ..montgomery_RS import fold_6_rgb as mc
+        from ..shenzhen_RS import fold_6_rgb as ch
+        from ..tbx11k_simplified_v2_RS import fold_6_rgb as tbx11kv2
+    elif protocol == "fold_7_rgb":
+        from ..indian_RS import fold_7_rgb as indian
+        from ..montgomery_RS import fold_7_rgb as mc
+        from ..shenzhen_RS import fold_7_rgb as ch
+        from ..tbx11k_simplified_v2_RS import fold_7_rgb as tbx11kv2
+    elif protocol == "fold_8_rgb":
+        from ..indian_RS import fold_8_rgb as indian
+        from ..montgomery_RS import fold_8_rgb as mc
+        from ..shenzhen_RS import fold_8_rgb as ch
+        from ..tbx11k_simplified_v2_RS import fold_8_rgb as tbx11kv2
+    elif protocol == "fold_9_rgb":
+        from ..indian_RS import fold_9_rgb as indian
+        from ..montgomery_RS import fold_9_rgb as mc
+        from ..shenzhen_RS import fold_9_rgb as ch
+        from ..tbx11k_simplified_v2_RS import fold_9_rgb as tbx11kv2
+
+    mc = mc.dataset
+    ch = ch.dataset
+    indian = indian.dataset
+    tbx11kv2 = tbx11kv2.dataset
+
+    dataset = {}
+    dataset["__train__"] = ConcatDataset(
+        [
+            mc["__train__"],
+            ch["__train__"],
+            indian["__train__"],
+            tbx11kv2["__train__"],
+        ]
+    )
+    dataset["train"] = ConcatDataset(
+        [mc["train"], ch["train"], indian["train"], tbx11kv2["train"]]
+    )
+    dataset["__valid__"] = ConcatDataset(
+        [
+            mc["__valid__"],
+            ch["__valid__"],
+            indian["__valid__"],
+            tbx11kv2["__valid__"],
+        ]
+    )
+    dataset["validation"] = ConcatDataset(
+        [
+            mc["validation"],
+            ch["validation"],
+            indian["validation"],
+            tbx11kv2["validation"],
+        ]
+    )
+    dataset["test"] = ConcatDataset(
+        [mc["test"], ch["test"], indian["test"], tbx11kv2["test"]]
+    )
+
+    return dataset
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/default.py b/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/default.py
new file mode 100644
index 0000000000000000000000000000000000000000..7d4f16bda48b05e7e9302ffc9c689d8393b3e495
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/default.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets."""
+
+from . import _maker
+
+dataset = _maker("default")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_0.py b/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_0.py
new file mode 100644
index 0000000000000000000000000000000000000000..757a0eb98214ba020d76095363d424b9209540e7
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_0.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 0)"""
+
+from . import _maker
+
+dataset = _maker("fold_0")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_0_rgb.py b/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_0_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..48e05ff3f71f13976190d04cfaf59c5c36996bac
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_0_rgb.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 0, RGB)"""
+
+from . import _maker
+
+dataset = _maker("fold_0_rgb")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_1.py b/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_1.py
new file mode 100644
index 0000000000000000000000000000000000000000..5657958934b926879bd26503c9b383e775bc724d
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_1.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 1)"""
+
+from . import _maker
+
+dataset = _maker("fold_1")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_1_rgb.py b/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_1_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..c782d68de247c876ddd6826100cbb7908342b928
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_1_rgb.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 1, RGB)"""
+
+from . import _maker
+
+dataset = _maker("fold_1_rgb")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_2.py b/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_2.py
new file mode 100644
index 0000000000000000000000000000000000000000..10a597bcb8e0485db63f0d7500b15b3e78877066
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_2.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 2)"""
+
+from . import _maker
+
+dataset = _maker("fold_2")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_2_rgb.py b/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_2_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..d624f3af53abcf053c7bf17a9822a86cb53e2923
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_2_rgb.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 2, RGB)"""
+
+from . import _maker
+
+dataset = _maker("fold_2_rgb")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_3.py b/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_3.py
new file mode 100644
index 0000000000000000000000000000000000000000..39bee4fec99e81eecc22a365183283bcd2ec3d98
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_3.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 3)"""
+
+from . import _maker
+
+dataset = _maker("fold_3")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_3_rgb.py b/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_3_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..7b26e4257e61013843e3a62c3bc419003e23b645
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_3_rgb.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 3, RGB)"""
+
+from . import _maker
+
+dataset = _maker("fold_3_rgb")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_4.py b/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_4.py
new file mode 100644
index 0000000000000000000000000000000000000000..5fb56292fd97636f452cde06c87bb34c89f01b1c
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_4.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 4)"""
+
+from . import _maker
+
+dataset = _maker("fold_4")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_4_rgb.py b/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_4_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..fbc4f0cfd9edc602fbe5665aca0465b29c5183b5
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_4_rgb.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 4, RGB)"""
+
+from . import _maker
+
+dataset = _maker("fold_4_rgb")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_5.py b/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_5.py
new file mode 100644
index 0000000000000000000000000000000000000000..679bb9b3cbbdede06cd87834239609720f439296
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_5.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 5)"""
+
+from . import _maker
+
+dataset = _maker("fold_5")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_5_rgb.py b/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_5_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..747d510ecd1c7bd2f32ab7b139a53603d5bbee88
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_5_rgb.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 5, RGB)"""
+
+from . import _maker
+
+dataset = _maker("fold_5_rgb")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_6.py b/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_6.py
new file mode 100644
index 0000000000000000000000000000000000000000..cd8e4cd571b8c796bad3221584870888c5186d3d
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_6.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 6)"""
+
+from . import _maker
+
+dataset = _maker("fold_6")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_6_rgb.py b/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_6_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..86f112c3aae0c1c1dd48002347f78ce565797d47
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_6_rgb.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 6, RGB)"""
+
+from . import _maker
+
+dataset = _maker("fold_6_rgb")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_7.py b/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_7.py
new file mode 100644
index 0000000000000000000000000000000000000000..98241531d3e15720f07ef9174687c47db7d737f1
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_7.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 7)"""
+
+from . import _maker
+
+dataset = _maker("fold_7")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_7_rgb.py b/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_7_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..981fe19180e0d8d4e1b21653f52a92a567723a63
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_7_rgb.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 7, RGB)"""
+
+from . import _maker
+
+dataset = _maker("fold_7_rgb")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_8.py b/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_8.py
new file mode 100644
index 0000000000000000000000000000000000000000..dab1a234a3842ab450706d86060651d4383ddbfc
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_8.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 8)"""
+
+from . import _maker
+
+dataset = _maker("fold_8")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_8_rgb.py b/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_8_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..798b8de64761ef0d87f491ef08b43426f55898f2
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_8_rgb.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 8, RGB)"""
+
+from . import _maker
+
+dataset = _maker("fold_8_rgb")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_9.py b/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_9.py
new file mode 100644
index 0000000000000000000000000000000000000000..097724b9446c4c2f0bef8ee6f838c1c11ff627a5
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_9.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 9)"""
+
+from . import _maker
+
+dataset = _maker("fold_9")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_9_rgb.py b/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_9_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..c6c564a40b957b562a37bb30b5809f7cf680e896
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/fold_9_rgb.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (cross validation fold 9, RGB)"""
+
+from . import _maker
+
+dataset = _maker("fold_9_rgb")
diff --git a/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/rgb.py b/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..f47796a89c31a5a31c0f972d81b5d97c7f8742b4
--- /dev/null
+++ b/src/ptbench/configs/datasets/mc_ch_in_11kv2_RS/rgb.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Aggregated dataset composed of Montgomery, Shenzhen, Indian and the default
+TBX11K-simplified datasets (RGB)"""
+
+from . import _maker
+
+dataset = _maker("rgb")
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified/__init__.py b/src/ptbench/configs/datasets/tbx11k_simplified/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..595c323178507ec04f9dc1768e080310b9ca7d50
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified/__init__.py
@@ -0,0 +1,25 @@
+# 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 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/default.py b/src/ptbench/configs/datasets/tbx11k_simplified/default.py
new file mode 100644
index 0000000000000000000000000000000000000000..cb23f352123b276cb4de22a744018900d355bf3c
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified/default.py
@@ -0,0 +1,17 @@
+# 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.5% of TB and healthy CXR for "train" 15.9% for
+* "validation", 21.6% for "test"
+* This split only consists of healthy and active TB samples
+* "Latent TB" or "sick & non-TB" samples are not included in this configuration
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.tbx11k_simplified` for dataset details
+"""
+
+from . import _maker
+
+dataset = _maker("default")
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified/fold_0.py b/src/ptbench/configs/datasets/tbx11k_simplified/fold_0.py
new file mode 100644
index 0000000000000000000000000000000000000000..8f907af758f60609f2992faf80b979f41f2c4807
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified/fold_0.py
@@ -0,0 +1,17 @@
+# 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.5% of TB and healthy CXR for "train" 15.9% for
+* "validation", 21.6% for "test"
+* This split only consists of healthy and active TB samples
+* "Latent TB" or "sick & non-TB" samples are not included in this configuration
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.tbx11k_simplified` for dataset details
+"""
+
+from . import _maker
+
+dataset = _maker("fold_0")
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified/fold_0_rgb.py b/src/ptbench/configs/datasets/tbx11k_simplified/fold_0_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..141a3e954167bebd40662a3ae6481d86fb77c0f6
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified/fold_0_rgb.py
@@ -0,0 +1,17 @@
+# 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.5% of TB and healthy CXR for "train" 15.9% for
+* "validation", 21.6% for "test"
+* This split only consists of healthy and active TB samples
+* "Latent TB" or "sick & non-TB" samples are not included in this configuration
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.tbx11k_simplified` for dataset details
+"""
+
+from . import _maker
+
+dataset = _maker("fold_0", RGB=True)
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified/fold_1.py b/src/ptbench/configs/datasets/tbx11k_simplified/fold_1.py
new file mode 100644
index 0000000000000000000000000000000000000000..cb7e2360f48ae3d3a631b15aac0ce19a427a582d
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified/fold_1.py
@@ -0,0 +1,17 @@
+# 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.5% of TB and healthy CXR for "train" 15.9% for
+* "validation", 21.6% for "test"
+* This split only consists of healthy and active TB samples
+* "Latent TB" or "sick & non-TB" samples are not included in this configuration
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.tbx11k_simplified` for dataset details
+"""
+
+from . import _maker
+
+dataset = _maker("fold_1")
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified/fold_1_rgb.py b/src/ptbench/configs/datasets/tbx11k_simplified/fold_1_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..a9cecd0b9da5d9f942d729ad97b69ed7399ec6b1
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified/fold_1_rgb.py
@@ -0,0 +1,17 @@
+# 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.5% of TB and healthy CXR for "train" 15.9% for
+* "validation", 21.6% for "test"
+* This split only consists of healthy and active TB samples
+* "Latent TB" or "sick & non-TB" samples are not included in this configuration
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.tbx11k_simplified` for dataset details
+"""
+
+from . import _maker
+
+dataset = _maker("fold_1", RGB=True)
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified/fold_2.py b/src/ptbench/configs/datasets/tbx11k_simplified/fold_2.py
new file mode 100644
index 0000000000000000000000000000000000000000..1cffe2fbf4ed29f04002c08097e27d7083e2eed5
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified/fold_2.py
@@ -0,0 +1,17 @@
+# 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.5% of TB and healthy CXR for "train" 15.9% for
+* "validation", 21.6% for "test"
+* This split only consists of healthy and active TB samples
+* "Latent TB" or "sick & non-TB" samples are not included in this configuration
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.tbx11k_simplified` for dataset details
+"""
+
+from . import _maker
+
+dataset = _maker("fold_2")
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified/fold_2_rgb.py b/src/ptbench/configs/datasets/tbx11k_simplified/fold_2_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..fadd67cc66c10cdee76ecda9388ecb505540f423
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified/fold_2_rgb.py
@@ -0,0 +1,17 @@
+# 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.5% of TB and healthy CXR for "train" 15.9% for
+* "validation", 21.6% for "test"
+* This split only consists of healthy and active TB samples
+* "Latent TB" or "sick & non-TB" samples are not included in this configuration
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.tbx11k_simplified` for dataset details
+"""
+
+from . import _maker
+
+dataset = _maker("fold_2", RGB=True)
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified/fold_3.py b/src/ptbench/configs/datasets/tbx11k_simplified/fold_3.py
new file mode 100644
index 0000000000000000000000000000000000000000..64743fbd76490c567eff0447cd9c2221305a34e8
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified/fold_3.py
@@ -0,0 +1,17 @@
+# 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.5% of TB and healthy CXR for "train" 15.9% for
+* "validation", 21.6% for "test"
+* This split only consists of healthy and active TB samples
+* "Latent TB" or "sick & non-TB" samples are not included in this configuration
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.tbx11k_simplified` for dataset details
+"""
+
+from . import _maker
+
+dataset = _maker("fold_3")
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified/fold_3_rgb.py b/src/ptbench/configs/datasets/tbx11k_simplified/fold_3_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..d17f3e6a71440d7b076d3145de4e548903dbb033
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified/fold_3_rgb.py
@@ -0,0 +1,17 @@
+# 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.5% of TB and healthy CXR for "train" 15.9% for
+* "validation", 21.6% for "test"
+* This split only consists of healthy and active TB samples
+* "Latent TB" or "sick & non-TB" samples are not included in this configuration
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.tbx11k_simplified` for dataset details
+"""
+
+from . import _maker
+
+dataset = _maker("fold_3", RGB=True)
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified/fold_4.py b/src/ptbench/configs/datasets/tbx11k_simplified/fold_4.py
new file mode 100644
index 0000000000000000000000000000000000000000..0739b98ba941e5ed19204baa233553a262404671
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified/fold_4.py
@@ -0,0 +1,17 @@
+# 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.5% of TB and healthy CXR for "train" 15.9% for
+* "validation", 21.6% for "test"
+* This split only consists of healthy and active TB samples
+* "Latent TB" or "sick & non-TB" samples are not included in this configuration
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.tbx11k_simplified` for dataset details
+"""
+
+from . import _maker
+
+dataset = _maker("fold_4")
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified/fold_4_rgb.py b/src/ptbench/configs/datasets/tbx11k_simplified/fold_4_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..83a560c45f6a7b1f57990e2cb16ab4cb0a80284f
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified/fold_4_rgb.py
@@ -0,0 +1,17 @@
+# 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.5% of TB and healthy CXR for "train" 15.9% for
+* "validation", 21.6% for "test"
+* This split only consists of healthy and active TB samples
+* "Latent TB" or "sick & non-TB" samples are not included in this configuration
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.tbx11k_simplified` for dataset details
+"""
+
+from . import _maker
+
+dataset = _maker("fold_4", RGB=True)
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified/fold_5.py b/src/ptbench/configs/datasets/tbx11k_simplified/fold_5.py
new file mode 100644
index 0000000000000000000000000000000000000000..dc200e162dbef1f3b5f3ebf17cf57cb5f713c3f9
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified/fold_5.py
@@ -0,0 +1,17 @@
+# 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.5% of TB and healthy CXR for "train" 15.9% for
+* "validation", 21.6% for "test"
+* This split only consists of healthy and active TB samples
+* "Latent TB" or "sick & non-TB" samples are not included in this configuration
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.tbx11k_simplified` for dataset details
+"""
+
+from . import _maker
+
+dataset = _maker("fold_5")
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified/fold_5_rgb.py b/src/ptbench/configs/datasets/tbx11k_simplified/fold_5_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..e7471a1fbaca1f11860befacaf798ba14cbbe878
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified/fold_5_rgb.py
@@ -0,0 +1,17 @@
+# 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.5% of TB and healthy CXR for "train" 15.9% for
+* "validation", 21.6% for "test"
+* This split only consists of healthy and active TB samples
+* "Latent TB" or "sick & non-TB" samples are not included in this configuration
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.tbx11k_simplified` for dataset details
+"""
+
+from . import _maker
+
+dataset = _maker("fold_5", RGB=True)
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified/fold_6.py b/src/ptbench/configs/datasets/tbx11k_simplified/fold_6.py
new file mode 100644
index 0000000000000000000000000000000000000000..6bfb172bbba8716f38f5fca924243a794b97e9bd
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified/fold_6.py
@@ -0,0 +1,17 @@
+# 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.5% of TB and healthy CXR for "train" 15.9% for
+* "validation", 21.6% for "test"
+* This split only consists of healthy and active TB samples
+* "Latent TB" or "sick & non-TB" samples are not included in this configuration
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.tbx11k_simplified` for dataset details
+"""
+
+from . import _maker
+
+dataset = _maker("fold_6")
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified/fold_6_rgb.py b/src/ptbench/configs/datasets/tbx11k_simplified/fold_6_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..899877819594fa70094c34aec910a4c11b254289
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified/fold_6_rgb.py
@@ -0,0 +1,17 @@
+# 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.5% of TB and healthy CXR for "train" 15.9% for
+* "validation", 21.6% for "test"
+* This split only consists of healthy and active TB samples
+* "Latent TB" or "sick & non-TB" samples are not included in this configuration
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.tbx11k_simplified` for dataset details
+"""
+
+from . import _maker
+
+dataset = _maker("fold_6", RGB=True)
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified/fold_7.py b/src/ptbench/configs/datasets/tbx11k_simplified/fold_7.py
new file mode 100644
index 0000000000000000000000000000000000000000..553504966744d0cf415c0a66d473b5e49dae405d
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified/fold_7.py
@@ -0,0 +1,17 @@
+# 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.5% of TB and healthy CXR for "train" 15.9% for
+* "validation", 21.6% for "test"
+* This split only consists of healthy and active TB samples
+* "Latent TB" or "sick & non-TB" samples are not included in this configuration
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.tbx11k_simplified` for dataset details
+"""
+
+from . import _maker
+
+dataset = _maker("fold_7")
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified/fold_7_rgb.py b/src/ptbench/configs/datasets/tbx11k_simplified/fold_7_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..82b419f01cf1584b6e6a2eb39fbb02b1b02d0960
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified/fold_7_rgb.py
@@ -0,0 +1,17 @@
+# 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.5% of TB and healthy CXR for "train" 15.9% for
+* "validation", 21.6% for "test"
+* This split only consists of healthy and active TB samples
+* "Latent TB" or "sick & non-TB" samples are not included in this configuration
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.tbx11k_simplified` for dataset details
+"""
+
+from . import _maker
+
+dataset = _maker("fold_7", RGB=True)
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified/fold_8.py b/src/ptbench/configs/datasets/tbx11k_simplified/fold_8.py
new file mode 100644
index 0000000000000000000000000000000000000000..d4cdc774097b76adc12ffb170880887c09b8cfa7
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified/fold_8.py
@@ -0,0 +1,17 @@
+# 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.5% of TB and healthy CXR for "train" 15.9% for
+* "validation", 21.6% for "test"
+* This split only consists of healthy and active TB samples
+* "Latent TB" or "sick & non-TB" samples are not included in this configuration
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.tbx11k_simplified` for dataset details
+"""
+
+from . import _maker
+
+dataset = _maker("fold_8")
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified/fold_8_rgb.py b/src/ptbench/configs/datasets/tbx11k_simplified/fold_8_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..8d008ce3e41b528907f57acf7e93443aa26a9bc6
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified/fold_8_rgb.py
@@ -0,0 +1,17 @@
+# 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.5% of TB and healthy CXR for "train" 15.9% for
+* "validation", 21.6% for "test"
+* This split only consists of healthy and active TB samples
+* "Latent TB" or "sick & non-TB" samples are not included in this configuration
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.tbx11k_simplified` for dataset details
+"""
+
+from . import _maker
+
+dataset = _maker("fold_8", RGB=True)
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified/fold_9.py b/src/ptbench/configs/datasets/tbx11k_simplified/fold_9.py
new file mode 100644
index 0000000000000000000000000000000000000000..f46b35499af3a6d3fc59789955151f7226c83287
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified/fold_9.py
@@ -0,0 +1,17 @@
+# 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.5% of TB and healthy CXR for "train" 15.9% for
+* "validation", 21.6% for "test"
+* This split only consists of healthy and active TB samples
+* "Latent TB" or "sick & non-TB" samples are not included in this configuration
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.tbx11k_simplified` for dataset details
+"""
+
+from . import _maker
+
+dataset = _maker("fold_9")
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified/fold_9_rgb.py b/src/ptbench/configs/datasets/tbx11k_simplified/fold_9_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..73507723ecd5a5794a5b4cd02f52344b39482188
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified/fold_9_rgb.py
@@ -0,0 +1,17 @@
+# 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.5% of TB and healthy CXR for "train" 15.9% for
+* "validation", 21.6% for "test"
+* This split only consists of healthy and active TB samples
+* "Latent TB" or "sick & non-TB" samples are not included in this configuration
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.tbx11k_simplified` for dataset details
+"""
+
+from . import _maker
+
+dataset = _maker("fold_9", RGB=True)
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified/rgb.py b/src/ptbench/configs/datasets/tbx11k_simplified/rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..e22dff69194f5ad95eaa636aa87ce1e21ca6d13a
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified/rgb.py
@@ -0,0 +1,17 @@
+# 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.5% of TB and healthy CXR for "train" 15.9% for
+* "validation", 21.6% for "test"
+* This split only consists of healthy and active TB samples
+* "Latent TB" or "sick & non-TB" samples are not included in this configuration
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.tbx11k_simplified` for dataset details
+"""
+
+from . import _maker
+
+dataset = _maker("default", RGB=True)
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified_RS/__init__.py b/src/ptbench/configs/datasets/tbx11k_simplified_RS/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..7e9e9b1f0b62dccd9a2e66fefda238176b868178
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified_RS/__init__.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+
+def _maker(protocol):
+    from ....data.tbx11k_simplified_RS import dataset as raw
+    from .. import make_dataset as mk
+
+    return mk([raw.subsets(protocol)])
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified_RS/default.py b/src/ptbench/configs/datasets/tbx11k_simplified_RS/default.py
new file mode 100644
index 0000000000000000000000000000000000000000..e5a51eb7346e6f540be00d6f88741f308c670958
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified_RS/default.py
@@ -0,0 +1,18 @@
+# Copyright © 2022 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""TBX11k simplified dataset for TB detection (default protocol) (extended with
+DensenetRS predictions)
+
+* Split reference: first 62.5% of TB and healthy CXR for "train" 15.9% for
+* "validation", 21.6% for "test"
+* This split only consists of healthy and active TB samples
+* "Latent TB" or "sick & non-TB" samples are not included in this configuration
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.tbx11k_simplified_RS` for dataset details
+"""
+
+from . import _maker
+
+dataset = _maker("default")
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified_RS/fold_0.py b/src/ptbench/configs/datasets/tbx11k_simplified_RS/fold_0.py
new file mode 100644
index 0000000000000000000000000000000000000000..c9c14cd56b67a66895d20eaf08846cfb69816244
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified_RS/fold_0.py
@@ -0,0 +1,17 @@
+# 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.5% of TB and healthy CXR for "train" 15.9% for
+* "validation", 21.6% for "test"
+* This split only consists of healthy and active TB samples
+* "Latent TB" or "sick & non-TB" samples are not included in this configuration
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.tbx11k_simplified_RS` for dataset details
+"""
+
+from . import _maker
+
+dataset = _maker("fold_0")
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified_RS/fold_1.py b/src/ptbench/configs/datasets/tbx11k_simplified_RS/fold_1.py
new file mode 100644
index 0000000000000000000000000000000000000000..998469b93dc4b7d09b2569905e5ffdbeabfd31c7
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified_RS/fold_1.py
@@ -0,0 +1,17 @@
+# 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.5% of TB and healthy CXR for "train" 15.9% for
+* "validation", 21.6% for "test"
+* This split only consists of healthy and active TB samples
+* "Latent TB" or "sick & non-TB" samples are not included in this configuration
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.tbx11k_simplified_RS` for dataset details
+"""
+
+from . import _maker
+
+dataset = _maker("fold_1")
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified_RS/fold_2.py b/src/ptbench/configs/datasets/tbx11k_simplified_RS/fold_2.py
new file mode 100644
index 0000000000000000000000000000000000000000..642f4ae40c3d14159d685cec776449ad5bbe9b3f
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified_RS/fold_2.py
@@ -0,0 +1,17 @@
+# 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.5% of TB and healthy CXR for "train" 15.9% for
+* "validation", 21.6% for "test"
+* This split only consists of healthy and active TB samples
+* "Latent TB" or "sick & non-TB" samples are not included in this configuration
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.tbx11k_simplified_RS` for dataset details
+"""
+
+from . import _maker
+
+dataset = _maker("fold_2")
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified_RS/fold_3.py b/src/ptbench/configs/datasets/tbx11k_simplified_RS/fold_3.py
new file mode 100644
index 0000000000000000000000000000000000000000..cdf0e5ca9d4d00aa3e75c75c1a34fcbea93ca652
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified_RS/fold_3.py
@@ -0,0 +1,17 @@
+# 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.5% of TB and healthy CXR for "train" 15.9% for
+* "validation", 21.6% for "test"
+* This split only consists of healthy and active TB samples
+* "Latent TB" or "sick & non-TB" samples are not included in this configuration
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.tbx11k_simplified_RS` for dataset details
+"""
+
+from . import _maker
+
+dataset = _maker("fold_3")
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified_RS/fold_4.py b/src/ptbench/configs/datasets/tbx11k_simplified_RS/fold_4.py
new file mode 100644
index 0000000000000000000000000000000000000000..909d4abed9762680405533190eb8fec5e372efc9
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified_RS/fold_4.py
@@ -0,0 +1,17 @@
+# 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.5% of TB and healthy CXR for "train" 15.9% for
+* "validation", 21.6% for "test"
+* This split only consists of healthy and active TB samples
+* "Latent TB" or "sick & non-TB" samples are not included in this configuration
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.tbx11k_simplified_RS` for dataset details
+"""
+
+from . import _maker
+
+dataset = _maker("fold_4")
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified_RS/fold_5.py b/src/ptbench/configs/datasets/tbx11k_simplified_RS/fold_5.py
new file mode 100644
index 0000000000000000000000000000000000000000..969b13a4f4d9ade3efe6ec5fc88edf1618d0dd9c
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified_RS/fold_5.py
@@ -0,0 +1,17 @@
+# 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.5% of TB and healthy CXR for "train" 15.9% for
+* "validation", 21.6% for "test"
+* This split only consists of healthy and active TB samples
+* "Latent TB" or "sick & non-TB" samples are not included in this configuration
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.tbx11k_simplified_RS` for dataset details
+"""
+
+from . import _maker
+
+dataset = _maker("fold_5")
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified_RS/fold_6.py b/src/ptbench/configs/datasets/tbx11k_simplified_RS/fold_6.py
new file mode 100644
index 0000000000000000000000000000000000000000..bde32bef1bccd97d27bd2d70980d0f5402438913
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified_RS/fold_6.py
@@ -0,0 +1,17 @@
+# 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.5% of TB and healthy CXR for "train" 15.9% for
+* "validation", 21.6% for "test"
+* This split only consists of healthy and active TB samples
+* "Latent TB" or "sick & non-TB" samples are not included in this configuration
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.tbx11k_simplified_RS` for dataset details
+"""
+
+from . import _maker
+
+dataset = _maker("fold_6")
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified_RS/fold_7.py b/src/ptbench/configs/datasets/tbx11k_simplified_RS/fold_7.py
new file mode 100644
index 0000000000000000000000000000000000000000..56fdd69c2b40d444b4544377ad33cf56eefef6f4
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified_RS/fold_7.py
@@ -0,0 +1,17 @@
+# 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.5% of TB and healthy CXR for "train" 15.9% for
+* "validation", 21.6% for "test"
+* This split only consists of healthy and active TB samples
+* "Latent TB" or "sick & non-TB" samples are not included in this configuration
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.tbx11k_simplified_RS` for dataset details
+"""
+
+from . import _maker
+
+dataset = _maker("fold_7")
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified_RS/fold_8.py b/src/ptbench/configs/datasets/tbx11k_simplified_RS/fold_8.py
new file mode 100644
index 0000000000000000000000000000000000000000..9bdbe53d9b45315b546899af54555a00b5eaf74b
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified_RS/fold_8.py
@@ -0,0 +1,17 @@
+# 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.5% of TB and healthy CXR for "train" 15.9% for
+* "validation", 21.6% for "test"
+* This split only consists of healthy and active TB samples
+* "Latent TB" or "sick & non-TB" samples are not included in this configuration
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.tbx11k_simplified_RS` for dataset details
+"""
+
+from . import _maker
+
+dataset = _maker("fold_8")
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified_RS/fold_9.py b/src/ptbench/configs/datasets/tbx11k_simplified_RS/fold_9.py
new file mode 100644
index 0000000000000000000000000000000000000000..ff4772bd68a261d801ee624911b7f8997bef531c
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified_RS/fold_9.py
@@ -0,0 +1,17 @@
+# 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.5% of TB and healthy CXR for "train" 15.9% for
+* "validation", 21.6% for "test"
+* This split only consists of healthy and active TB samples
+* "Latent TB" or "sick & non-TB" samples are not included in this configuration
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.tbx11k_simplified_RS` for dataset details
+"""
+
+from . import _maker
+
+dataset = _maker("fold_9")
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified_v2/__init__.py b/src/ptbench/configs/datasets/tbx11k_simplified_v2/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..a1e6f50ca64a471417fef6ba47253cce9af9b12f
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified_v2/__init__.py
@@ -0,0 +1,25 @@
+# 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
new file mode 100644
index 0000000000000000000000000000000000000000..f969c8554d7b67f35b2aea6c08a09d2aeb7340bf
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified_v2/default.py
@@ -0,0 +1,17 @@
+# 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
new file mode 100644
index 0000000000000000000000000000000000000000..1805c0005fbad4f93dbb8f2b4225959cb0882832
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_0.py
@@ -0,0 +1,17 @@
+# 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
new file mode 100644
index 0000000000000000000000000000000000000000..b232652f8d009bd5ec8b80108201b216d3ada961
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_0_rgb.py
@@ -0,0 +1,17 @@
+# 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
new file mode 100644
index 0000000000000000000000000000000000000000..8d8074a1281c4b528527e02a824892239d558c1a
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_1.py
@@ -0,0 +1,17 @@
+# 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
new file mode 100644
index 0000000000000000000000000000000000000000..ec0421059f94bffb2fa769ad5990f31636e75a47
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_1_rgb.py
@@ -0,0 +1,17 @@
+# 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
new file mode 100644
index 0000000000000000000000000000000000000000..1962b0370b9a3c24fbe1cb81119760f5239d4f83
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_2.py
@@ -0,0 +1,17 @@
+# 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
new file mode 100644
index 0000000000000000000000000000000000000000..660073a4c13ae62dba576cffb61953e063bdc560
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_2_rgb.py
@@ -0,0 +1,17 @@
+# 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
new file mode 100644
index 0000000000000000000000000000000000000000..9872ef5831ffb43a61afce0764a91915aae603d6
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_3.py
@@ -0,0 +1,17 @@
+# 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
new file mode 100644
index 0000000000000000000000000000000000000000..bb54f1d206ea1893f1c6f4bac516e7d6a00d3a7d
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_3_rgb.py
@@ -0,0 +1,17 @@
+# 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
new file mode 100644
index 0000000000000000000000000000000000000000..7cde75d8faf0d9834bdd9c4bbc0715b76cc5c530
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_4.py
@@ -0,0 +1,17 @@
+# 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
new file mode 100644
index 0000000000000000000000000000000000000000..d5bf8d8255148537ee2e432e4102949ee2f81d15
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_4_rgb.py
@@ -0,0 +1,17 @@
+# 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
new file mode 100644
index 0000000000000000000000000000000000000000..d9ca35bf50da984d837d1e4609cb5178a6c6d39c
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_5.py
@@ -0,0 +1,17 @@
+# 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
new file mode 100644
index 0000000000000000000000000000000000000000..983326689b110a2ccb0d78fcfa61cf6a950d2d36
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_5_rgb.py
@@ -0,0 +1,17 @@
+# 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
new file mode 100644
index 0000000000000000000000000000000000000000..c8abb0658bf78ad2cede7f1c4329735595284138
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_6.py
@@ -0,0 +1,17 @@
+# 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
new file mode 100644
index 0000000000000000000000000000000000000000..dabdb67452b3cf30e31ab2a70cc08f30d2afb003
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_6_rgb.py
@@ -0,0 +1,17 @@
+# 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
new file mode 100644
index 0000000000000000000000000000000000000000..67864aa6ccdc3448177f7139879b0eb05f6cd10d
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_7.py
@@ -0,0 +1,17 @@
+# 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
new file mode 100644
index 0000000000000000000000000000000000000000..d37bda6e40f650bc313c90159838857f4140d395
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_7_rgb.py
@@ -0,0 +1,17 @@
+# 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
new file mode 100644
index 0000000000000000000000000000000000000000..2ac58e16e9e9ebbb9dbc73432605c10c7ad53371
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_8.py
@@ -0,0 +1,17 @@
+# 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
new file mode 100644
index 0000000000000000000000000000000000000000..f6adcd4300305ab0b153041444f17b1eef2a7de0
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_8_rgb.py
@@ -0,0 +1,17 @@
+# 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
new file mode 100644
index 0000000000000000000000000000000000000000..1034cf8176641e8afeb27fc2e00acea306411265
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_9.py
@@ -0,0 +1,17 @@
+# 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
new file mode 100644
index 0000000000000000000000000000000000000000..8fe3f1dbf75faa2537aabe297b41b82d4c9b4c3b
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified_v2/fold_9_rgb.py
@@ -0,0 +1,17 @@
+# 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
new file mode 100644
index 0000000000000000000000000000000000000000..c327dad9578765a4542aa1a41ce16d36d6d49d6a
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified_v2/rgb.py
@@ -0,0 +1,18 @@
+# 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/configs/datasets/tbx11k_simplified_v2_RS/__init__.py b/src/ptbench/configs/datasets/tbx11k_simplified_v2_RS/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..4fe785fd103413df959fdd4490387739b7030858
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified_v2_RS/__init__.py
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+
+def _maker(protocol):
+    from ....data.tbx11k_simplified_v2_RS import dataset as raw
+    from .. import make_dataset as mk
+
+    return mk([raw.subsets(protocol)])
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified_v2_RS/default.py b/src/ptbench/configs/datasets/tbx11k_simplified_v2_RS/default.py
new file mode 100644
index 0000000000000000000000000000000000000000..cd8c8ee4e5a5d5a6cb7ece8cd5ba7a1c831d5785
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified_v2_RS/default.py
@@ -0,0 +1,18 @@
+# Copyright © 2022 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""TBX11k simplified dataset for TB detection (default protocol) (extended with
+DensenetRS predictions)
+
+* 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_RS` for dataset details
+"""
+
+from . import _maker
+
+dataset = _maker("default")
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified_v2_RS/fold_0.py b/src/ptbench/configs/datasets/tbx11k_simplified_v2_RS/fold_0.py
new file mode 100644
index 0000000000000000000000000000000000000000..43f6dd382504dc77283b8d8dba44d4c84a0dffc7
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified_v2_RS/fold_0.py
@@ -0,0 +1,17 @@
+# 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_RS` for dataset details
+"""
+
+from . import _maker
+
+dataset = _maker("fold_0")
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified_v2_RS/fold_1.py b/src/ptbench/configs/datasets/tbx11k_simplified_v2_RS/fold_1.py
new file mode 100644
index 0000000000000000000000000000000000000000..80f29174707cfd2b9fd3afb32748d247690a1efc
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified_v2_RS/fold_1.py
@@ -0,0 +1,17 @@
+# 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_RS` for dataset details
+"""
+
+from . import _maker
+
+dataset = _maker("fold_1")
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified_v2_RS/fold_2.py b/src/ptbench/configs/datasets/tbx11k_simplified_v2_RS/fold_2.py
new file mode 100644
index 0000000000000000000000000000000000000000..2b9fa0457075619ece160125d681a51c86996ba8
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified_v2_RS/fold_2.py
@@ -0,0 +1,17 @@
+# 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_RS` for dataset details
+"""
+
+from . import _maker
+
+dataset = _maker("fold_2")
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified_v2_RS/fold_3.py b/src/ptbench/configs/datasets/tbx11k_simplified_v2_RS/fold_3.py
new file mode 100644
index 0000000000000000000000000000000000000000..afd4b88e1ee6a4e5144a0a75e9d35ff0320d0a26
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified_v2_RS/fold_3.py
@@ -0,0 +1,17 @@
+# 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_RS` for dataset details
+"""
+
+from . import _maker
+
+dataset = _maker("fold_3")
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified_v2_RS/fold_4.py b/src/ptbench/configs/datasets/tbx11k_simplified_v2_RS/fold_4.py
new file mode 100644
index 0000000000000000000000000000000000000000..df6351cc8068256195eb32c81f3d587a278aa252
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified_v2_RS/fold_4.py
@@ -0,0 +1,17 @@
+# 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_RS` for dataset details
+"""
+
+from . import _maker
+
+dataset = _maker("fold_4")
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified_v2_RS/fold_5.py b/src/ptbench/configs/datasets/tbx11k_simplified_v2_RS/fold_5.py
new file mode 100644
index 0000000000000000000000000000000000000000..41acd200cf8042b5dad5f787a4254b7ba23a12f4
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified_v2_RS/fold_5.py
@@ -0,0 +1,17 @@
+# 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_RS` for dataset details
+"""
+
+from . import _maker
+
+dataset = _maker("fold_5")
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified_v2_RS/fold_6.py b/src/ptbench/configs/datasets/tbx11k_simplified_v2_RS/fold_6.py
new file mode 100644
index 0000000000000000000000000000000000000000..b31df1ace8b389f69c9bbe294a166eb387c08562
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified_v2_RS/fold_6.py
@@ -0,0 +1,17 @@
+# 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_RS` for dataset details
+"""
+
+from . import _maker
+
+dataset = _maker("fold_6")
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified_v2_RS/fold_7.py b/src/ptbench/configs/datasets/tbx11k_simplified_v2_RS/fold_7.py
new file mode 100644
index 0000000000000000000000000000000000000000..a79b55899d7726627c4278d0f7563e9bbb991b44
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified_v2_RS/fold_7.py
@@ -0,0 +1,17 @@
+# 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_RS` for dataset details
+"""
+
+from . import _maker
+
+dataset = _maker("fold_7")
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified_v2_RS/fold_8.py b/src/ptbench/configs/datasets/tbx11k_simplified_v2_RS/fold_8.py
new file mode 100644
index 0000000000000000000000000000000000000000..2aedd2413b5c784b04c4e3ae8695f0bbd37fc240
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified_v2_RS/fold_8.py
@@ -0,0 +1,17 @@
+# 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_RS` for dataset details
+"""
+
+from . import _maker
+
+dataset = _maker("fold_8")
diff --git a/src/ptbench/configs/datasets/tbx11k_simplified_v2_RS/fold_9.py b/src/ptbench/configs/datasets/tbx11k_simplified_v2_RS/fold_9.py
new file mode 100644
index 0000000000000000000000000000000000000000..ac5fdc6962aafe3826c3dea67977822d23272563
--- /dev/null
+++ b/src/ptbench/configs/datasets/tbx11k_simplified_v2_RS/fold_9.py
@@ -0,0 +1,17 @@
+# 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_RS` for dataset details
+"""
+
+from . import _maker
+
+dataset = _maker("fold_9")
diff --git a/src/ptbench/data/loader.py b/src/ptbench/data/loader.py
index 2e03aa353c5f5e95db70b53072f94071b60cf677..12a7517e9249c61fcbe58ea7339258e095feb3d0 100644
--- a/src/ptbench/data/loader.py
+++ b/src/ptbench/data/loader.py
@@ -101,3 +101,37 @@ def make_delayed(sample, loader, key=None):
         key=key or sample["data"],
         label=sample["label"],
     )
+
+
+def make_delayed_bbox(sample, loader, key=None):
+    """Returns a delayed-loading Sample object.
+
+    Parameters
+    ----------
+
+    sample : dict
+        A dictionary that maps field names to sample data values (e.g. paths)
+
+    loader : object
+        A function that inputs ``sample`` dictionaries and returns the loaded
+        data.
+
+    key : str
+        A unique key identifier for this sample.  If not provided, assumes
+        ``sample`` is a dictionary with a ``data`` entry and uses its path as
+        key.
+
+
+    Returns
+    -------
+
+    sample : ptbench.data.sample.DelayedSample
+        In which ``key`` is as provided and ``data`` can be accessed to trigger
+        sample loading.
+    """
+    return DelayedSample(
+        functools.partial(loader, sample),
+        key=key or sample["data"],
+        label=sample["label"],
+        bboxes=sample["bboxes"],
+    )
diff --git a/src/ptbench/data/tbx11k_simplified/__init__.py b/src/ptbench/data/tbx11k_simplified/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..dd2be35dc4d7992a66a101ad5dcc00ceb127c082
--- /dev/null
+++ b/src/ptbench/data/tbx11k_simplified/__init__.py
@@ -0,0 +1,90 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""TBX11K simplified dataset for computer-aided diagnosis.
+
+The TBX11K database has been established to foster research
+in computer-aided diagnosis of pulmonary diseases with a special
+focus on tuberculosis (aTB). The dataset was specifically
+designed to be used with CNNs. It contains 11,000 chest X-ray
+images, each of a unique patient. They were labeled by expert
+radiologists with 5 - 10+ years of experience. Possible labels
+are: "healthy", "active TB", "latent TB", and "sick & non-tb".
+The version of the dataset used in this benchmark is a simplified.
+
+* Reference: [TBX11K-SIMPLIFIED-2020]_
+* Original (released) resolution (height x width or width x height): 512 x 512
+* Split reference: none
+* Protocol ``default``:
+
+  * Training samples: 62.5% of TB and healthy CXR (including labels)
+  * Validation samples: 15.9% of TB and healthy CXR (including labels)
+  * Test samples: 21.6% of TB and healthy CXR (including labels)
+"""
+
+import importlib.resources
+import os
+
+from ...utils.rc import load_rc
+from ..dataset import JSONDataset
+from ..loader import load_pil_baw, make_delayed, make_delayed_bbox
+
+_protocols = [
+    importlib.resources.files(__name__).joinpath("default.json.bz2"),
+    importlib.resources.files(__name__).joinpath("fold_0.json.bz2"),
+    importlib.resources.files(__name__).joinpath("fold_1.json.bz2"),
+    importlib.resources.files(__name__).joinpath("fold_2.json.bz2"),
+    importlib.resources.files(__name__).joinpath("fold_3.json.bz2"),
+    importlib.resources.files(__name__).joinpath("fold_4.json.bz2"),
+    importlib.resources.files(__name__).joinpath("fold_5.json.bz2"),
+    importlib.resources.files(__name__).joinpath("fold_6.json.bz2"),
+    importlib.resources.files(__name__).joinpath("fold_7.json.bz2"),
+    importlib.resources.files(__name__).joinpath("fold_8.json.bz2"),
+    importlib.resources.files(__name__).joinpath("fold_9.json.bz2"),
+]
+
+_datadir = load_rc().get(
+    "datadir.tbx11k_simplified", os.path.realpath(os.curdir)
+)
+
+
+def _raw_data_loader(sample):
+    return dict(
+        data=load_pil_baw(os.path.join(_datadir, sample["data"])),  # type: ignore
+        label=sample["label"],
+    )
+
+
+def _raw_data_loader_bbox(sample):
+    return dict(
+        data=load_pil_baw(os.path.join(_datadir, sample["data"])),  # type: ignore
+        label=sample["label"],
+        bboxes=sample["bboxes"],
+    )
+
+
+def _loader(context, sample):
+    # "context" is ignored in this case - database is homogeneous
+    # we return delayed samples to avoid loading all images at once
+    return make_delayed(sample, _raw_data_loader)
+
+
+def _loader_bbox(context, sample):
+    # "context" is ignored in this case - database is homogeneous
+    # we return delayed samples to avoid loading all images at once
+    return make_delayed_bbox(sample, _raw_data_loader_bbox)
+
+
+dataset = JSONDataset(
+    protocols=_protocols,
+    fieldnames=("data", "label"),
+    loader=_loader,
+)
+
+dataset_with_bboxes = JSONDataset(
+    protocols=_protocols,
+    fieldnames=("data", "label", "bboxes"),
+    loader=_loader_bbox,
+)
+"""TBX11K simplified dataset object."""
diff --git a/src/ptbench/data/tbx11k_simplified/default.json.bz2 b/src/ptbench/data/tbx11k_simplified/default.json.bz2
new file mode 100644
index 0000000000000000000000000000000000000000..06e5a3a7011f976118ae1067785e59b9e294480c
Binary files /dev/null and b/src/ptbench/data/tbx11k_simplified/default.json.bz2 differ
diff --git a/src/ptbench/data/tbx11k_simplified/fold_0.json.bz2 b/src/ptbench/data/tbx11k_simplified/fold_0.json.bz2
new file mode 100644
index 0000000000000000000000000000000000000000..267555153aebab7b1a0cfdd3dca0d4e7149cf5f3
Binary files /dev/null and b/src/ptbench/data/tbx11k_simplified/fold_0.json.bz2 differ
diff --git a/src/ptbench/data/tbx11k_simplified/fold_1.json.bz2 b/src/ptbench/data/tbx11k_simplified/fold_1.json.bz2
new file mode 100644
index 0000000000000000000000000000000000000000..ceaa92a210722a839b40852d6dbb866b09712a99
Binary files /dev/null and b/src/ptbench/data/tbx11k_simplified/fold_1.json.bz2 differ
diff --git a/src/ptbench/data/tbx11k_simplified/fold_2.json.bz2 b/src/ptbench/data/tbx11k_simplified/fold_2.json.bz2
new file mode 100644
index 0000000000000000000000000000000000000000..615ecfe9ddb562c27b14fcefd531b131a337f1b4
Binary files /dev/null and b/src/ptbench/data/tbx11k_simplified/fold_2.json.bz2 differ
diff --git a/src/ptbench/data/tbx11k_simplified/fold_3.json.bz2 b/src/ptbench/data/tbx11k_simplified/fold_3.json.bz2
new file mode 100644
index 0000000000000000000000000000000000000000..aee0fea3dc3095b6fb703b33365248a0439888d3
Binary files /dev/null and b/src/ptbench/data/tbx11k_simplified/fold_3.json.bz2 differ
diff --git a/src/ptbench/data/tbx11k_simplified/fold_4.json.bz2 b/src/ptbench/data/tbx11k_simplified/fold_4.json.bz2
new file mode 100644
index 0000000000000000000000000000000000000000..a312ef4cb65aad35644b0e862da9be9ffce8f44f
Binary files /dev/null and b/src/ptbench/data/tbx11k_simplified/fold_4.json.bz2 differ
diff --git a/src/ptbench/data/tbx11k_simplified/fold_5.json.bz2 b/src/ptbench/data/tbx11k_simplified/fold_5.json.bz2
new file mode 100644
index 0000000000000000000000000000000000000000..926d83ed57633fe7388f744d904723821ece7bd7
Binary files /dev/null and b/src/ptbench/data/tbx11k_simplified/fold_5.json.bz2 differ
diff --git a/src/ptbench/data/tbx11k_simplified/fold_6.json.bz2 b/src/ptbench/data/tbx11k_simplified/fold_6.json.bz2
new file mode 100644
index 0000000000000000000000000000000000000000..47b8d130e7523fa9ab4a4f8927e2302dbbaeb352
Binary files /dev/null and b/src/ptbench/data/tbx11k_simplified/fold_6.json.bz2 differ
diff --git a/src/ptbench/data/tbx11k_simplified/fold_7.json.bz2 b/src/ptbench/data/tbx11k_simplified/fold_7.json.bz2
new file mode 100644
index 0000000000000000000000000000000000000000..7300fee208aff942afd5cc25845ecb7b3c55f859
Binary files /dev/null and b/src/ptbench/data/tbx11k_simplified/fold_7.json.bz2 differ
diff --git a/src/ptbench/data/tbx11k_simplified/fold_8.json.bz2 b/src/ptbench/data/tbx11k_simplified/fold_8.json.bz2
new file mode 100644
index 0000000000000000000000000000000000000000..b7056757fa5af3fccb19eb03d52f0bcd72d13571
Binary files /dev/null and b/src/ptbench/data/tbx11k_simplified/fold_8.json.bz2 differ
diff --git a/src/ptbench/data/tbx11k_simplified/fold_9.json.bz2 b/src/ptbench/data/tbx11k_simplified/fold_9.json.bz2
new file mode 100644
index 0000000000000000000000000000000000000000..ef2c46e58692ba23816fcd3c853ae4a702acd591
Binary files /dev/null and b/src/ptbench/data/tbx11k_simplified/fold_9.json.bz2 differ
diff --git a/src/ptbench/data/tbx11k_simplified_RS/__init__.py b/src/ptbench/data/tbx11k_simplified_RS/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..8598a8c5b1a11f1a8a1866e5e4d04b83c27925ff
--- /dev/null
+++ b/src/ptbench/data/tbx11k_simplified_RS/__init__.py
@@ -0,0 +1,62 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Extended TBX11K simplified dataset for computer-aided diagnosis (extended
+with DensenetRS predictions)
+
+The TBX11K database has been established to foster research
+in computer-aided diagnosis of pulmonary diseases with a special
+focus on tuberculosis (aTB). The dataset was specifically
+designed to be used with CNNs. It contains 11,000 chest X-ray
+images, each of a unique patient. They were labeled by expert
+radiologists with 5 - 10+ years of experience. Possible labels
+are: "healthy", "active TB", "latent TB", and "sick & non-tb".
+The version of the dataset used in this benchmark is a simplified.
+
+* Reference: [TBX11K-SIMPLIFIED-2020]_
+* Original (released) resolution (height x width or width x height): 512 x 512
+* Split reference: none
+* Protocol ``default``:
+
+  * Training samples: 62.5% of TB and healthy CXR (including labels)
+  * Validation samples: 15.9% of TB and healthy CXR (including labels)
+  * Test samples: 21.6% of TB and healthy CXR (including labels)
+"""
+
+import importlib.resources
+
+from ..dataset import JSONDataset
+from ..loader import make_delayed
+
+_protocols = [
+    importlib.resources.files(__name__).joinpath("default.json.bz2"),
+    importlib.resources.files(__name__).joinpath("fold_0.json.bz2"),
+    importlib.resources.files(__name__).joinpath("fold_1.json.bz2"),
+    importlib.resources.files(__name__).joinpath("fold_2.json.bz2"),
+    importlib.resources.files(__name__).joinpath("fold_3.json.bz2"),
+    importlib.resources.files(__name__).joinpath("fold_4.json.bz2"),
+    importlib.resources.files(__name__).joinpath("fold_5.json.bz2"),
+    importlib.resources.files(__name__).joinpath("fold_6.json.bz2"),
+    importlib.resources.files(__name__).joinpath("fold_7.json.bz2"),
+    importlib.resources.files(__name__).joinpath("fold_8.json.bz2"),
+    importlib.resources.files(__name__).joinpath("fold_9.json.bz2"),
+]
+
+
+def _raw_data_loader(sample):
+    return dict(data=sample["data"], label=sample["label"])
+
+
+def _loader(context, sample):
+    # "context" is ignored in this case - database is homogeneous
+    # we returned delayed samples to avoid loading all images at once
+    return make_delayed(sample, _raw_data_loader, key=sample["filename"])
+
+
+dataset = JSONDataset(
+    protocols=_protocols,
+    fieldnames=("filename", "label", "data"),
+    loader=_loader,
+)
+"""Extended TBX11K simplified dataset object."""
diff --git a/src/ptbench/data/tbx11k_simplified_RS/default.json.bz2 b/src/ptbench/data/tbx11k_simplified_RS/default.json.bz2
new file mode 100644
index 0000000000000000000000000000000000000000..5c192dec44e60c3fb36606cd60d0fa3505d8a96b
Binary files /dev/null and b/src/ptbench/data/tbx11k_simplified_RS/default.json.bz2 differ
diff --git a/src/ptbench/data/tbx11k_simplified_RS/fold_0.json.bz2 b/src/ptbench/data/tbx11k_simplified_RS/fold_0.json.bz2
new file mode 100644
index 0000000000000000000000000000000000000000..4c5f8107c702ece1c017efdbea53de24f4a635c8
Binary files /dev/null and b/src/ptbench/data/tbx11k_simplified_RS/fold_0.json.bz2 differ
diff --git a/src/ptbench/data/tbx11k_simplified_RS/fold_1.json.bz2 b/src/ptbench/data/tbx11k_simplified_RS/fold_1.json.bz2
new file mode 100644
index 0000000000000000000000000000000000000000..649066593b98927a38a29a4d9fedb29a8e6f74fc
Binary files /dev/null and b/src/ptbench/data/tbx11k_simplified_RS/fold_1.json.bz2 differ
diff --git a/src/ptbench/data/tbx11k_simplified_RS/fold_2.json.bz2 b/src/ptbench/data/tbx11k_simplified_RS/fold_2.json.bz2
new file mode 100644
index 0000000000000000000000000000000000000000..1d92d9b8ac56fd1d6ac7e652f586563e95d74ada
Binary files /dev/null and b/src/ptbench/data/tbx11k_simplified_RS/fold_2.json.bz2 differ
diff --git a/src/ptbench/data/tbx11k_simplified_RS/fold_3.json.bz2 b/src/ptbench/data/tbx11k_simplified_RS/fold_3.json.bz2
new file mode 100644
index 0000000000000000000000000000000000000000..ec4b689bebf364d8c95851a2e9887aee72ee63a7
Binary files /dev/null and b/src/ptbench/data/tbx11k_simplified_RS/fold_3.json.bz2 differ
diff --git a/src/ptbench/data/tbx11k_simplified_RS/fold_4.json.bz2 b/src/ptbench/data/tbx11k_simplified_RS/fold_4.json.bz2
new file mode 100644
index 0000000000000000000000000000000000000000..490352c09dae504c2a60c9d662ca4c8d7692b29c
Binary files /dev/null and b/src/ptbench/data/tbx11k_simplified_RS/fold_4.json.bz2 differ
diff --git a/src/ptbench/data/tbx11k_simplified_RS/fold_5.json.bz2 b/src/ptbench/data/tbx11k_simplified_RS/fold_5.json.bz2
new file mode 100644
index 0000000000000000000000000000000000000000..d20b871321b8445588a561ce833d9ca03ce925de
Binary files /dev/null and b/src/ptbench/data/tbx11k_simplified_RS/fold_5.json.bz2 differ
diff --git a/src/ptbench/data/tbx11k_simplified_RS/fold_6.json.bz2 b/src/ptbench/data/tbx11k_simplified_RS/fold_6.json.bz2
new file mode 100644
index 0000000000000000000000000000000000000000..8eb8360de34f36258ed341f0bb3e89c0bc4b966d
Binary files /dev/null and b/src/ptbench/data/tbx11k_simplified_RS/fold_6.json.bz2 differ
diff --git a/src/ptbench/data/tbx11k_simplified_RS/fold_7.json.bz2 b/src/ptbench/data/tbx11k_simplified_RS/fold_7.json.bz2
new file mode 100644
index 0000000000000000000000000000000000000000..3c9753344bd607e9dda547eb8c5bf4cf5536b4f3
Binary files /dev/null and b/src/ptbench/data/tbx11k_simplified_RS/fold_7.json.bz2 differ
diff --git a/src/ptbench/data/tbx11k_simplified_RS/fold_8.json.bz2 b/src/ptbench/data/tbx11k_simplified_RS/fold_8.json.bz2
new file mode 100644
index 0000000000000000000000000000000000000000..433d4de4b5805dba15aed5d036ee8558b0249226
Binary files /dev/null and b/src/ptbench/data/tbx11k_simplified_RS/fold_8.json.bz2 differ
diff --git a/src/ptbench/data/tbx11k_simplified_RS/fold_9.json.bz2 b/src/ptbench/data/tbx11k_simplified_RS/fold_9.json.bz2
new file mode 100644
index 0000000000000000000000000000000000000000..824ea8aafaf7198c85726cb52d14243ee9267f00
Binary files /dev/null and b/src/ptbench/data/tbx11k_simplified_RS/fold_9.json.bz2 differ
diff --git a/src/ptbench/data/tbx11k_simplified_v2/__init__.py b/src/ptbench/data/tbx11k_simplified_v2/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..7cf676b00d4570c8b2f6b42724f55eeb0eab2fc4
--- /dev/null
+++ b/src/ptbench/data/tbx11k_simplified_v2/__init__.py
@@ -0,0 +1,90 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""TBX11K simplified dataset for computer-aided diagnosis.
+
+The TBX11K database has been established to foster research
+in computer-aided diagnosis of pulmonary diseases with a special
+focus on tuberculosis (aTB). The dataset was specifically
+designed to be used with CNNs. It contains 11,000 chest X-ray
+images, each of a unique patient. They were labeled by expert
+radiologists with 5 - 10+ years of experience. Possible labels
+are: "healthy", "active TB", "latent TB", and "sick & non-tb".
+The version of the dataset used in this benchmark is a simplified.
+
+* Reference: [TBX11K-SIMPLIFIED-2020]_
+* Original (released) resolution (height x width or width x height): 512 x 512
+* Split reference: none
+* Protocol ``default``:
+
+  * Training samples: 62.6% of CXR (including labels)
+  * Validation samples: 16% of CXR (including labels)
+  * Test samples: 21.4% of CXR (including labels)
+"""
+
+import importlib.resources
+import os
+
+from ...utils.rc import load_rc
+from ..dataset import JSONDataset
+from ..loader import load_pil_baw, make_delayed, make_delayed_bbox
+
+_protocols = [
+    importlib.resources.files(__name__).joinpath("default.json.bz2"),
+    importlib.resources.files(__name__).joinpath("fold_0.json.bz2"),
+    importlib.resources.files(__name__).joinpath("fold_1.json.bz2"),
+    importlib.resources.files(__name__).joinpath("fold_2.json.bz2"),
+    importlib.resources.files(__name__).joinpath("fold_3.json.bz2"),
+    importlib.resources.files(__name__).joinpath("fold_4.json.bz2"),
+    importlib.resources.files(__name__).joinpath("fold_5.json.bz2"),
+    importlib.resources.files(__name__).joinpath("fold_6.json.bz2"),
+    importlib.resources.files(__name__).joinpath("fold_7.json.bz2"),
+    importlib.resources.files(__name__).joinpath("fold_8.json.bz2"),
+    importlib.resources.files(__name__).joinpath("fold_9.json.bz2"),
+]
+
+_datadir = load_rc().get(
+    "datadir.tbx11k_simplified", os.path.realpath(os.curdir)
+)
+
+
+def _raw_data_loader(sample):
+    return dict(
+        data=load_pil_baw(os.path.join(_datadir, sample["data"])),  # type: ignore
+        label=sample["label"],
+    )
+
+
+def _raw_data_loader_bbox(sample):
+    return dict(
+        data=load_pil_baw(os.path.join(_datadir, sample["data"])),  # type: ignore
+        label=sample["label"],
+        bboxes=sample["bboxes"],
+    )
+
+
+def _loader(context, sample):
+    # "context" is ignored in this case - database is homogeneous
+    # we return delayed samples to avoid loading all images at once
+    return make_delayed(sample, _raw_data_loader)
+
+
+def _loader_bbox(context, sample):
+    # "context" is ignored in this case - database is homogeneous
+    # we return delayed samples to avoid loading all images at once
+    return make_delayed_bbox(sample, _raw_data_loader_bbox)
+
+
+dataset = JSONDataset(
+    protocols=_protocols,
+    fieldnames=("data", "label"),
+    loader=_loader,
+)
+
+dataset_with_bboxes = JSONDataset(
+    protocols=_protocols,
+    fieldnames=("data", "label", "bboxes"),
+    loader=_loader_bbox,
+)
+"""TBX11K simplified dataset object."""
diff --git a/src/ptbench/data/tbx11k_simplified_v2/default.json.bz2 b/src/ptbench/data/tbx11k_simplified_v2/default.json.bz2
new file mode 100644
index 0000000000000000000000000000000000000000..1947e1ec8b6e45c82ed467367792151f3a06def3
Binary files /dev/null and b/src/ptbench/data/tbx11k_simplified_v2/default.json.bz2 differ
diff --git a/src/ptbench/data/tbx11k_simplified_v2/fold_0.json.bz2 b/src/ptbench/data/tbx11k_simplified_v2/fold_0.json.bz2
new file mode 100644
index 0000000000000000000000000000000000000000..beff51ae634b349f40e955ff8739385f51b7b067
Binary files /dev/null and b/src/ptbench/data/tbx11k_simplified_v2/fold_0.json.bz2 differ
diff --git a/src/ptbench/data/tbx11k_simplified_v2/fold_1.json.bz2 b/src/ptbench/data/tbx11k_simplified_v2/fold_1.json.bz2
new file mode 100644
index 0000000000000000000000000000000000000000..ed2f98d133fd97135830c6f20e1e0114e1264992
Binary files /dev/null and b/src/ptbench/data/tbx11k_simplified_v2/fold_1.json.bz2 differ
diff --git a/src/ptbench/data/tbx11k_simplified_v2/fold_2.json.bz2 b/src/ptbench/data/tbx11k_simplified_v2/fold_2.json.bz2
new file mode 100644
index 0000000000000000000000000000000000000000..f3ab3352a2c3a3f613f084c77458ee36555d52b8
Binary files /dev/null and b/src/ptbench/data/tbx11k_simplified_v2/fold_2.json.bz2 differ
diff --git a/src/ptbench/data/tbx11k_simplified_v2/fold_3.json.bz2 b/src/ptbench/data/tbx11k_simplified_v2/fold_3.json.bz2
new file mode 100644
index 0000000000000000000000000000000000000000..f6e0c5c17e74e9171989f6e4fd0185047a78fe36
Binary files /dev/null and b/src/ptbench/data/tbx11k_simplified_v2/fold_3.json.bz2 differ
diff --git a/src/ptbench/data/tbx11k_simplified_v2/fold_4.json.bz2 b/src/ptbench/data/tbx11k_simplified_v2/fold_4.json.bz2
new file mode 100644
index 0000000000000000000000000000000000000000..473793dd2bd8b0830132f54c16ff2458871122d6
Binary files /dev/null and b/src/ptbench/data/tbx11k_simplified_v2/fold_4.json.bz2 differ
diff --git a/src/ptbench/data/tbx11k_simplified_v2/fold_5.json.bz2 b/src/ptbench/data/tbx11k_simplified_v2/fold_5.json.bz2
new file mode 100644
index 0000000000000000000000000000000000000000..40c492e496a4951a0aee98702b87affbec7d0af8
Binary files /dev/null and b/src/ptbench/data/tbx11k_simplified_v2/fold_5.json.bz2 differ
diff --git a/src/ptbench/data/tbx11k_simplified_v2/fold_6.json.bz2 b/src/ptbench/data/tbx11k_simplified_v2/fold_6.json.bz2
new file mode 100644
index 0000000000000000000000000000000000000000..3324f8d899422800184777407159ba38ae0088d4
Binary files /dev/null and b/src/ptbench/data/tbx11k_simplified_v2/fold_6.json.bz2 differ
diff --git a/src/ptbench/data/tbx11k_simplified_v2/fold_7.json.bz2 b/src/ptbench/data/tbx11k_simplified_v2/fold_7.json.bz2
new file mode 100644
index 0000000000000000000000000000000000000000..6a435bced6808f41476d8635484d9b3e7356b5ef
Binary files /dev/null and b/src/ptbench/data/tbx11k_simplified_v2/fold_7.json.bz2 differ
diff --git a/src/ptbench/data/tbx11k_simplified_v2/fold_8.json.bz2 b/src/ptbench/data/tbx11k_simplified_v2/fold_8.json.bz2
new file mode 100644
index 0000000000000000000000000000000000000000..126734afadde81f1d861043b63d331f8b918548a
Binary files /dev/null and b/src/ptbench/data/tbx11k_simplified_v2/fold_8.json.bz2 differ
diff --git a/src/ptbench/data/tbx11k_simplified_v2/fold_9.json.bz2 b/src/ptbench/data/tbx11k_simplified_v2/fold_9.json.bz2
new file mode 100644
index 0000000000000000000000000000000000000000..cde889ebdeb3bef2bc8b5877447140003300969d
Binary files /dev/null and b/src/ptbench/data/tbx11k_simplified_v2/fold_9.json.bz2 differ
diff --git a/src/ptbench/data/tbx11k_simplified_v2_RS/__init__.py b/src/ptbench/data/tbx11k_simplified_v2_RS/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..f2bcf8c2a53cd117f556c5854774d5ea81fb2f6c
--- /dev/null
+++ b/src/ptbench/data/tbx11k_simplified_v2_RS/__init__.py
@@ -0,0 +1,63 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Extended TBX11K simplified dataset for computer-aided diagnosis (extended
+with DensenetRS predictions)
+
+The TBX11K database has been established to foster research
+in computer-aided diagnosis of pulmonary diseases with a special
+focus on tuberculosis (aTB). The dataset was specifically
+designed to be used with CNNs. It contains 11,000 chest X-ray
+images, each of a unique patient. They were labeled by expert
+radiologists with 5 - 10+ years of experience. Possible labels
+are: "healthy", "active TB", "latent TB", and "sick & non-tb".
+The version of the dataset used in this benchmark is a simplified.
+
+* Reference: [TBX11K-SIMPLIFIED-2020]_
+* Original (released) resolution (height x width or width x height): 512 x 512
+* Split reference: none
+* Protocol ``default``:
+
+  * Training samples: 62.6% of CXR (including labels)
+  * Validation samples: 16% of CXR (including labels)
+  * Test samples: 21.4% of CXR (including labels)
+"""
+
+import importlib.resources
+
+from ..dataset import JSONDataset
+from ..loader import make_delayed
+
+_protocols = [
+    importlib.resources.files(__name__).joinpath("default.json.bz2"),
+    importlib.resources.files(__name__).joinpath("fold_0.json.bz2"),
+    importlib.resources.files(__name__).joinpath("fold_1.json.bz2"),
+    importlib.resources.files(__name__).joinpath("fold_2.json.bz2"),
+    importlib.resources.files(__name__).joinpath("fold_3.json.bz2"),
+    importlib.resources.files(__name__).joinpath("fold_4.json.bz2"),
+    importlib.resources.files(__name__).joinpath("fold_5.json.bz2"),
+    importlib.resources.files(__name__).joinpath("fold_6.json.bz2"),
+    importlib.resources.files(__name__).joinpath("fold_7.json.bz2"),
+    importlib.resources.files(__name__).joinpath("fold_8.json.bz2"),
+    importlib.resources.files(__name__).joinpath("fold_9.json.bz2"),
+]
+
+
+def _raw_data_loader(sample):
+    return dict(data=sample["data"], label=sample["label"])
+
+
+def _loader(context, sample):
+    # "context" is ignored in this case - database is homogeneous
+    # we returned delayed samples to avoid loading all images at once
+    return make_delayed(sample, _raw_data_loader, key=sample["filename"])
+
+
+dataset = JSONDataset(
+    protocols=_protocols,
+    fieldnames=("filename", "label", "data"),
+    loader=_loader,
+)
+
+"""Extended TBX11K simplified dataset object."""
diff --git a/src/ptbench/data/tbx11k_simplified_v2_RS/default.json.bz2 b/src/ptbench/data/tbx11k_simplified_v2_RS/default.json.bz2
new file mode 100644
index 0000000000000000000000000000000000000000..a9df1825d2349ebaf364884839a0fd3174e27ea2
Binary files /dev/null and b/src/ptbench/data/tbx11k_simplified_v2_RS/default.json.bz2 differ
diff --git a/src/ptbench/data/tbx11k_simplified_v2_RS/fold_0.json.bz2 b/src/ptbench/data/tbx11k_simplified_v2_RS/fold_0.json.bz2
new file mode 100644
index 0000000000000000000000000000000000000000..0084bd7fa1149d2e1507e3333a97a714c37e554f
Binary files /dev/null and b/src/ptbench/data/tbx11k_simplified_v2_RS/fold_0.json.bz2 differ
diff --git a/src/ptbench/data/tbx11k_simplified_v2_RS/fold_1.json.bz2 b/src/ptbench/data/tbx11k_simplified_v2_RS/fold_1.json.bz2
new file mode 100644
index 0000000000000000000000000000000000000000..e8084fcdfd515b3c0ef78cac625b35da6ff46e88
Binary files /dev/null and b/src/ptbench/data/tbx11k_simplified_v2_RS/fold_1.json.bz2 differ
diff --git a/src/ptbench/data/tbx11k_simplified_v2_RS/fold_2.json.bz2 b/src/ptbench/data/tbx11k_simplified_v2_RS/fold_2.json.bz2
new file mode 100644
index 0000000000000000000000000000000000000000..2328c509c0695443a43bc1bee2b9a3d7746282c0
Binary files /dev/null and b/src/ptbench/data/tbx11k_simplified_v2_RS/fold_2.json.bz2 differ
diff --git a/src/ptbench/data/tbx11k_simplified_v2_RS/fold_3.json.bz2 b/src/ptbench/data/tbx11k_simplified_v2_RS/fold_3.json.bz2
new file mode 100644
index 0000000000000000000000000000000000000000..ae9712900b960ddf504c6b7544492d2c19a8c42d
Binary files /dev/null and b/src/ptbench/data/tbx11k_simplified_v2_RS/fold_3.json.bz2 differ
diff --git a/src/ptbench/data/tbx11k_simplified_v2_RS/fold_4.json.bz2 b/src/ptbench/data/tbx11k_simplified_v2_RS/fold_4.json.bz2
new file mode 100644
index 0000000000000000000000000000000000000000..86d9c595977c68f097e3711f005188e42090a5e4
Binary files /dev/null and b/src/ptbench/data/tbx11k_simplified_v2_RS/fold_4.json.bz2 differ
diff --git a/src/ptbench/data/tbx11k_simplified_v2_RS/fold_5.json.bz2 b/src/ptbench/data/tbx11k_simplified_v2_RS/fold_5.json.bz2
new file mode 100644
index 0000000000000000000000000000000000000000..84f479c72ad0667f8baa1ce666e540f6ee00762a
Binary files /dev/null and b/src/ptbench/data/tbx11k_simplified_v2_RS/fold_5.json.bz2 differ
diff --git a/src/ptbench/data/tbx11k_simplified_v2_RS/fold_6.json.bz2 b/src/ptbench/data/tbx11k_simplified_v2_RS/fold_6.json.bz2
new file mode 100644
index 0000000000000000000000000000000000000000..48d52e3b0ed6708953c6b591bf0d27ae64e324cb
Binary files /dev/null and b/src/ptbench/data/tbx11k_simplified_v2_RS/fold_6.json.bz2 differ
diff --git a/src/ptbench/data/tbx11k_simplified_v2_RS/fold_7.json.bz2 b/src/ptbench/data/tbx11k_simplified_v2_RS/fold_7.json.bz2
new file mode 100644
index 0000000000000000000000000000000000000000..8ac08974c73c84ef4356b884cf48a6e777e417e0
Binary files /dev/null and b/src/ptbench/data/tbx11k_simplified_v2_RS/fold_7.json.bz2 differ
diff --git a/src/ptbench/data/tbx11k_simplified_v2_RS/fold_8.json.bz2 b/src/ptbench/data/tbx11k_simplified_v2_RS/fold_8.json.bz2
new file mode 100644
index 0000000000000000000000000000000000000000..84dad2eb65508361e11d2f826494e25a0dbae6f8
Binary files /dev/null and b/src/ptbench/data/tbx11k_simplified_v2_RS/fold_8.json.bz2 differ
diff --git a/src/ptbench/data/tbx11k_simplified_v2_RS/fold_9.json.bz2 b/src/ptbench/data/tbx11k_simplified_v2_RS/fold_9.json.bz2
new file mode 100644
index 0000000000000000000000000000000000000000..0c23b2ca6834ab68988d97a1ccd857f6d40c9b57
Binary files /dev/null and b/src/ptbench/data/tbx11k_simplified_v2_RS/fold_9.json.bz2 differ
diff --git a/tests/test_11k.py b/tests/test_11k.py
new file mode 100644
index 0000000000000000000000000000000000000000..8f101c82b2f298f8c3ce676a003e0ff18aa2a731
--- /dev/null
+++ b/tests/test_11k.py
@@ -0,0 +1,208 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Tests for TBX11K simplified dataset split 1."""
+
+import pytest
+
+
+def test_protocol_consistency():
+    from ptbench.data.tbx11k_simplified import dataset
+
+    # Default protocol
+    subset = dataset.subsets("default")
+    assert len(subset) == 3
+
+    assert "train" in subset
+    assert len(subset["train"]) == 2767
+    for s in subset["train"]:
+        assert s.key.startswith("images/")
+
+    assert "validation" in subset
+    assert len(subset["validation"]) == 706
+    for s in subset["validation"]:
+        assert s.key.startswith("images/")
+
+    assert "test" in subset
+    assert len(subset["test"]) == 957
+    for s in subset["test"]:
+        assert s.key.startswith("images/")
+
+    # Check labels
+    for s in subset["train"]:
+        assert s.label in [0.0, 1.0]
+
+    for s in subset["validation"]:
+        assert s.label in [0.0, 1.0]
+
+    for s in subset["test"]:
+        assert s.label in [0.0, 1.0]
+
+    # Cross-validation fold 0-9
+    for f in range(10):
+        subset = dataset.subsets("fold_" + str(f))
+        assert len(subset) == 3
+
+        assert "train" in subset
+        assert len(subset["train"]) == 3177
+        for s in subset["train"]:
+            assert s.key.startswith("images/")
+
+        assert "validation" in subset
+        assert len(subset["validation"]) == 810
+        for s in subset["validation"]:
+            assert s.key.startswith("images/")
+
+        assert "test" in subset
+        assert len(subset["test"]) == 443
+        for s in subset["test"]:
+            assert s.key.startswith("images/")
+
+        # Check labels
+        for s in subset["train"]:
+            assert s.label in [0.0, 1.0]
+
+        for s in subset["validation"]:
+            assert s.label in [0.0, 1.0]
+
+        for s in subset["test"]:
+            assert s.label in [0.0, 1.0]
+
+
+def test_protocol_consistency_bbox():
+    from ptbench.data.tbx11k_simplified import dataset_with_bboxes
+
+    # Default protocol
+    subset = dataset_with_bboxes.subsets("default")
+    assert len(subset) == 3
+
+    assert "train" in subset
+    assert len(subset["train"]) == 2767
+    for s in subset["train"]:
+        assert s.key.startswith("images/")
+
+    assert "validation" in subset
+    assert len(subset["validation"]) == 706
+    for s in subset["validation"]:
+        assert s.key.startswith("images/")
+
+    assert "test" in subset
+    assert len(subset["test"]) == 957
+    for s in subset["test"]:
+        assert s.key.startswith("images/")
+
+    # Check labels
+    for s in subset["train"]:
+        assert s.label in [0.0, 1.0]
+
+    for s in subset["validation"]:
+        assert s.label in [0.0, 1.0]
+
+    for s in subset["test"]:
+        assert s.label in [0.0, 1.0]
+
+    # Check bounding boxes
+    for s in subset["train"]:
+        assert s.bboxes == "none" or s.bboxes[0].startswith("{'xmin':")
+
+    # Cross-validation fold 0-9
+    for f in range(10):
+        subset = dataset_with_bboxes.subsets("fold_" + str(f))
+        assert len(subset) == 3
+
+        assert "train" in subset
+        assert len(subset["train"]) == 3177
+        for s in subset["train"]:
+            assert s.key.startswith("images/")
+
+        assert "validation" in subset
+        assert len(subset["validation"]) == 810
+        for s in subset["validation"]:
+            assert s.key.startswith("images/")
+
+        assert "test" in subset
+        assert len(subset["test"]) == 443
+        for s in subset["test"]:
+            assert s.key.startswith("images/")
+
+        # Check labels
+        for s in subset["train"]:
+            assert s.label in [0.0, 1.0]
+
+        for s in subset["validation"]:
+            assert s.label in [0.0, 1.0]
+
+        for s in subset["test"]:
+            assert s.label in [0.0, 1.0]
+
+        # Check bounding boxes
+        for s in subset["train"]:
+            assert s.bboxes == "none" or s.bboxes[0].startswith("{'xmin':")
+
+
+@pytest.mark.skip_if_rc_var_not_set("datadir.tbx11k_simplified")
+def test_loading():
+    from ptbench.data.tbx11k_simplified import dataset
+
+    def _check_sample(s):
+        data = s.data
+        assert isinstance(data, dict)
+        assert len(data) == 2
+
+        assert "data" in data
+        assert data["data"].size == (512, 512)
+
+        assert data["data"].mode == "L"  # Check colors
+
+        assert "label" in data
+        assert data["label"] in [0, 1]  # Check labels
+
+    limit = 30  # use this to limit testing to first images only, else None
+
+    subset = dataset.subsets("default")
+    for s in subset["train"][:limit]:
+        _check_sample(s)
+
+
+@pytest.mark.skip_if_rc_var_not_set("datadir.tbx11k_simplified")
+def test_loading_bbox():
+    from ptbench.data.tbx11k_simplified import dataset_with_bboxes
+
+    def _check_sample(s):
+        data = s.data
+        assert isinstance(data, dict)
+        assert len(data) == 3
+
+        assert "data" in data
+        assert data["data"].size == (512, 512)
+
+        assert data["data"].mode == "L"  # Check colors
+
+        assert "label" in data
+        assert data["label"] in [0, 1]  # Check labels
+
+        assert "bboxes" in data
+        assert data["bboxes"] == "none" or data["bboxes"][0].startswith(
+            "{'xmin':"
+        )
+
+    limit = 30  # use this to limit testing to first images only, else None
+
+    subset = dataset_with_bboxes.subsets("default")
+    for s in subset["train"][:limit]:
+        _check_sample(s)
+
+
+@pytest.mark.skip_if_rc_var_not_set("datadir.tbx11k_simplified")
+def test_check():
+    from ptbench.data.tbx11k_simplified import dataset
+
+    assert dataset.check() == 0
+
+
+@pytest.mark.skip_if_rc_var_not_set("datadir.tbx11k_simplified")
+def test_check_bbox():
+    from ptbench.data.tbx11k_simplified import dataset_with_bboxes
+
+    assert dataset_with_bboxes.check() == 0
diff --git a/tests/test_11k_RS.py b/tests/test_11k_RS.py
new file mode 100644
index 0000000000000000000000000000000000000000..601bbc4628ea752f3ad52b78cedecd64a4b215dc
--- /dev/null
+++ b/tests/test_11k_RS.py
@@ -0,0 +1,88 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Tests for Extended TBX11K simplified dataset split 1."""
+
+import pytest
+
+
+def test_protocol_consistency():
+    from ptbench.data.tbx11k_simplified_RS import dataset
+
+    # Default protocol
+    subset = dataset.subsets("default")
+    assert len(subset) == 3
+
+    assert "train" in subset
+    assert len(subset["train"]) == 2767
+
+    assert "validation" in subset
+    assert len(subset["validation"]) == 706
+
+    assert "test" in subset
+    assert len(subset["test"]) == 957
+    for s in subset["test"]:
+        assert s.key.startswith("images/")
+
+    # Check labels
+    for s in subset["train"]:
+        assert s.label in [0.0, 1.0]
+
+    for s in subset["validation"]:
+        assert s.label in [0.0, 1.0]
+
+    for s in subset["test"]:
+        assert s.label in [0.0, 1.0]
+
+    # Cross-validation fold 0-9
+    for f in range(10):
+        subset = dataset.subsets("fold_" + str(f))
+        assert len(subset) == 3
+
+        assert "train" in subset
+        assert len(subset["train"]) == 3177
+        for s in subset["train"]:
+            assert s.key.startswith("images/")
+
+        assert "validation" in subset
+        assert len(subset["validation"]) == 810
+        for s in subset["validation"]:
+            assert s.key.startswith("images/")
+
+        assert "test" in subset
+        assert len(subset["test"]) == 443
+        for s in subset["test"]:
+            assert s.key.startswith("images/")
+
+        # Check labels
+        for s in subset["train"]:
+            assert s.label in [0.0, 1.0]
+
+        for s in subset["validation"]:
+            assert s.label in [0.0, 1.0]
+
+        for s in subset["test"]:
+            assert s.label in [0.0, 1.0]
+
+
+@pytest.mark.skip_if_rc_var_not_set("datadir.tbx11k_simplified")
+def test_loading():
+    from ptbench.data.tbx11k_simplified_RS import dataset
+
+    def _check_sample(s):
+        data = s.data
+        assert isinstance(data, dict)
+        assert len(data) == 2
+
+        assert "data" in data
+        assert len(data["data"]) == 14  # Check radiological signs
+
+        assert "label" in data
+        assert data["label"] in [0, 1]  # Check labels
+
+    limit = 30  # use this to limit testing to first images only, else None
+
+    subset = dataset.subsets("default")
+    for s in subset["train"][:limit]:
+        _check_sample(s)
diff --git a/tests/test_11k_v2.py b/tests/test_11k_v2.py
new file mode 100644
index 0000000000000000000000000000000000000000..12662886ed4eea1a2fa654c80b9666c53e5af515
--- /dev/null
+++ b/tests/test_11k_v2.py
@@ -0,0 +1,270 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Tests for TBX11K simplified dataset split 2."""
+
+import pytest
+
+
+def test_protocol_consistency():
+    from ptbench.data.tbx11k_simplified_v2 import dataset
+
+    # Default protocol
+    subset = dataset.subsets("default")
+    assert len(subset) == 3
+
+    assert "train" in subset
+    assert len(subset["train"]) == 5241
+    for s in subset["train"]:
+        assert s.key.startswith("images/")
+
+    assert "validation" in subset
+    assert len(subset["validation"]) == 1335
+    for s in subset["validation"]:
+        assert s.key.startswith("images/")
+
+    assert "test" in subset
+    assert len(subset["test"]) == 1793
+    for s in subset["test"]:
+        assert s.key.startswith("images/")
+
+    # Check labels
+    for s in subset["train"]:
+        assert s.label in [0.0, 1.0]
+
+    for s in subset["validation"]:
+        assert s.label in [0.0, 1.0]
+
+    for s in subset["test"]:
+        assert s.label in [0.0, 1.0]
+
+    # Cross-validation fold 0-8
+    for f in range(9):
+        subset = dataset.subsets("fold_" + str(f))
+        assert len(subset) == 3
+
+        assert "train" in subset
+        assert len(subset["train"]) == 6003
+        for s in subset["train"]:
+            assert s.key.startswith("images/")
+
+        assert "validation" in subset
+        assert len(subset["validation"]) == 1529
+        for s in subset["validation"]:
+            assert s.key.startswith("images/")
+
+        assert "test" in subset
+        assert len(subset["test"]) == 837
+        for s in subset["test"]:
+            assert s.key.startswith("images/")
+
+        # Check labels
+        for s in subset["train"]:
+            assert s.label in [0.0, 1.0]
+
+        for s in subset["validation"]:
+            assert s.label in [0.0, 1.0]
+
+        for s in subset["test"]:
+            assert s.label in [0.0, 1.0]
+
+    # Cross-validation fold 9
+    subset = dataset.subsets("fold_9")
+    assert len(subset) == 3
+
+    assert "train" in subset
+    assert len(subset["train"]) == 6003
+    for s in subset["train"]:
+        assert s.key.startswith("images/")
+
+    assert "validation" in subset
+    assert len(subset["validation"]) == 1530
+    for s in subset["validation"]:
+        assert s.key.startswith("images/")
+
+    assert "test" in subset
+    assert len(subset["test"]) == 836
+    for s in subset["test"]:
+        assert s.key.startswith("images/")
+
+    # Check labels
+    for s in subset["train"]:
+        assert s.label in [0.0, 1.0]
+
+    for s in subset["validation"]:
+        assert s.label in [0.0, 1.0]
+
+    for s in subset["test"]:
+        assert s.label in [0.0, 1.0]
+
+
+def test_protocol_consistency_bbox():
+    from ptbench.data.tbx11k_simplified_v2 import dataset_with_bboxes
+
+    # Default protocol
+    subset = dataset_with_bboxes.subsets("default")
+    assert len(subset) == 3
+
+    assert "train" in subset
+    assert len(subset["train"]) == 5241
+    for s in subset["train"]:
+        assert s.key.startswith("images/")
+
+    assert "validation" in subset
+    assert len(subset["validation"]) == 1335
+    for s in subset["validation"]:
+        assert s.key.startswith("images/")
+
+    assert "test" in subset
+    assert len(subset["test"]) == 1793
+    for s in subset["test"]:
+        assert s.key.startswith("images/")
+
+    # Check labels
+    for s in subset["train"]:
+        assert s.label in [0.0, 1.0]
+
+    for s in subset["validation"]:
+        assert s.label in [0.0, 1.0]
+
+    for s in subset["test"]:
+        assert s.label in [0.0, 1.0]
+
+    # Check bounding boxes
+    for s in subset["train"]:
+        assert s.bboxes == "none" or s.bboxes[0].startswith("{'xmin':")
+
+    # Cross-validation fold 0-8
+    for f in range(9):
+        subset = dataset_with_bboxes.subsets("fold_" + str(f))
+        assert len(subset) == 3
+
+        assert "train" in subset
+        assert len(subset["train"]) == 6003
+        for s in subset["train"]:
+            assert s.key.startswith("images/")
+
+        assert "validation" in subset
+        assert len(subset["validation"]) == 1529
+        for s in subset["validation"]:
+            assert s.key.startswith("images/")
+
+        assert "test" in subset
+        assert len(subset["test"]) == 837
+        for s in subset["test"]:
+            assert s.key.startswith("images/")
+
+        # Check labels
+        for s in subset["train"]:
+            assert s.label in [0.0, 1.0]
+
+        for s in subset["validation"]:
+            assert s.label in [0.0, 1.0]
+
+        for s in subset["test"]:
+            assert s.label in [0.0, 1.0]
+
+        # Check bounding boxes
+        for s in subset["train"]:
+            assert s.bboxes == "none" or s.bboxes[0].startswith("{'xmin':")
+
+    # Cross-validation fold 9
+    subset = dataset_with_bboxes.subsets("fold_9")
+    assert len(subset) == 3
+
+    assert "train" in subset
+    assert len(subset["train"]) == 6003
+    for s in subset["train"]:
+        assert s.key.startswith("images/")
+
+    assert "validation" in subset
+    assert len(subset["validation"]) == 1530
+    for s in subset["validation"]:
+        assert s.key.startswith("images/")
+
+    assert "test" in subset
+    assert len(subset["test"]) == 836
+    for s in subset["test"]:
+        assert s.key.startswith("images/")
+
+    # Check labels
+    for s in subset["train"]:
+        assert s.label in [0.0, 1.0]
+
+    for s in subset["validation"]:
+        assert s.label in [0.0, 1.0]
+
+    for s in subset["test"]:
+        assert s.label in [0.0, 1.0]
+
+    # Check bounding boxes
+    for s in subset["train"]:
+        assert s.bboxes == "none" or s.bboxes[0].startswith("{'xmin':")
+
+
+@pytest.mark.skip_if_rc_var_not_set("datadir.tbx11k_simplified_v2")
+def test_loading():
+    from ptbench.data.tbx11k_simplified_v2 import dataset
+
+    def _check_sample(s):
+        data = s.data
+        assert isinstance(data, dict)
+        assert len(data) == 2
+
+        assert "data" in data
+        assert data["data"].size == (512, 512)
+
+        assert data["data"].mode == "L"  # Check colors
+
+        assert "label" in data
+        assert data["label"] in [0, 1]  # Check labels
+
+    limit = 30  # use this to limit testing to first images only, else None
+
+    subset = dataset.subsets("default")
+    for s in subset["train"][:limit]:
+        _check_sample(s)
+
+
+@pytest.mark.skip_if_rc_var_not_set("datadir.tbx11k_simplified_v2")
+def test_loading_bbox():
+    from ptbench.data.tbx11k_simplified_v2 import dataset_with_bboxes
+
+    def _check_sample(s):
+        data = s.data
+        assert isinstance(data, dict)
+        assert len(data) == 3
+
+        assert "data" in data
+        assert data["data"].size == (512, 512)
+
+        assert data["data"].mode == "L"  # Check colors
+
+        assert "label" in data
+        assert data["label"] in [0, 1]  # Check labels
+
+        assert "bboxes" in data
+        assert data["bboxes"] == "none" or data["bboxes"][0].startswith(
+            "{'xmin':"
+        )
+
+    limit = 30  # use this to limit testing to first images only, else None
+
+    subset = dataset_with_bboxes.subsets("default")
+    for s in subset["train"][:limit]:
+        _check_sample(s)
+
+
+@pytest.mark.skip_if_rc_var_not_set("datadir.tbx11k_simplified_v2")
+def test_check():
+    from ptbench.data.tbx11k_simplified_v2 import dataset
+
+    assert dataset.check() == 0
+
+
+@pytest.mark.skip_if_rc_var_not_set("datadir.tbx11k_simplified_v2")
+def test_check_bbox():
+    from ptbench.data.tbx11k_simplified_v2 import dataset_with_bboxes
+
+    assert dataset_with_bboxes.check() == 0
diff --git a/tests/test_11k_v2_RS.py b/tests/test_11k_v2_RS.py
new file mode 100644
index 0000000000000000000000000000000000000000..c6ac2464324aee1aa45e185c13380e301a949597
--- /dev/null
+++ b/tests/test_11k_v2_RS.py
@@ -0,0 +1,117 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Tests for Extended TBX11K simplified dataset split 2."""
+
+import pytest
+
+
+def test_protocol_consistency():
+    from ptbench.data.tbx11k_simplified_v2_RS import dataset
+
+    # Default protocol
+    subset = dataset.subsets("default")
+    assert len(subset) == 3
+
+    assert "train" in subset
+    assert len(subset["train"]) == 5241
+
+    assert "validation" in subset
+    assert len(subset["validation"]) == 1335
+
+    assert "test" in subset
+    assert len(subset["test"]) == 1793
+    for s in subset["test"]:
+        assert s.key.startswith("images/")
+
+    # Check labels
+    for s in subset["train"]:
+        assert s.label in [0.0, 1.0]
+
+    for s in subset["validation"]:
+        assert s.label in [0.0, 1.0]
+
+    for s in subset["test"]:
+        assert s.label in [0.0, 1.0]
+
+    # Cross-validation fold 0-8
+    for f in range(9):
+        subset = dataset.subsets("fold_" + str(f))
+        assert len(subset) == 3
+
+        assert "train" in subset
+        assert len(subset["train"]) == 6003
+        for s in subset["train"]:
+            assert s.key.startswith("images/")
+
+        assert "validation" in subset
+        assert len(subset["validation"]) == 1529
+        for s in subset["validation"]:
+            assert s.key.startswith("images/")
+
+        assert "test" in subset
+        assert len(subset["test"]) == 837
+        for s in subset["test"]:
+            assert s.key.startswith("images/")
+
+        # Check labels
+        for s in subset["train"]:
+            assert s.label in [0.0, 1.0]
+
+        for s in subset["validation"]:
+            assert s.label in [0.0, 1.0]
+
+        for s in subset["test"]:
+            assert s.label in [0.0, 1.0]
+
+    # Cross-validation fold 9
+    subset = dataset.subsets("fold_9")
+    assert len(subset) == 3
+
+    assert "train" in subset
+    assert len(subset["train"]) == 6003
+    for s in subset["train"]:
+        assert s.key.startswith("images/")
+
+    assert "validation" in subset
+    assert len(subset["validation"]) == 1530
+    for s in subset["validation"]:
+        assert s.key.startswith("images/")
+
+    assert "test" in subset
+    assert len(subset["test"]) == 836
+    for s in subset["test"]:
+        assert s.key.startswith("images/")
+
+    # Check labels
+    for s in subset["train"]:
+        assert s.label in [0.0, 1.0]
+
+    for s in subset["validation"]:
+        assert s.label in [0.0, 1.0]
+
+    for s in subset["test"]:
+        assert s.label in [0.0, 1.0]
+
+
+@pytest.mark.skip_if_rc_var_not_set("datadir.tbx11k_simplified")
+def test_loading():
+    from ptbench.data.tbx11k_simplified_v2_RS import dataset
+
+    def _check_sample(s):
+        data = s.data
+        assert isinstance(data, dict)
+        assert len(data) == 2
+
+        assert "data" in data
+        assert len(data["data"]) == 14  # Check radiological signs
+
+        assert "label" in data
+        assert data["label"] in [0, 1]  # Check labels
+
+    limit = 30  # use this to limit testing to first images only, else None
+
+    subset = dataset.subsets("default")
+    for s in subset["train"][:limit]:
+        _check_sample(s)
diff --git a/tests/test_mc_ch_in_11k.py b/tests/test_mc_ch_in_11k.py
new file mode 100644
index 0000000000000000000000000000000000000000..9aeb0c36951d1383cd758fb5bcd2172a2426411a
--- /dev/null
+++ b/tests/test_mc_ch_in_11k.py
@@ -0,0 +1,699 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Tests for the aggregated Montgomery-Shenzhen-Indian dataset."""
+
+
+def test_dataset_consistency():
+    from ptbench.configs.datasets.indian import default as indian
+    from ptbench.configs.datasets.indian import fold_0 as indian_f0
+    from ptbench.configs.datasets.indian import fold_0_rgb as indian_f0_rgb
+    from ptbench.configs.datasets.indian import fold_1 as indian_f1
+    from ptbench.configs.datasets.indian import fold_1_rgb as indian_f1_rgb
+    from ptbench.configs.datasets.indian import fold_2 as indian_f2
+    from ptbench.configs.datasets.indian import fold_2_rgb as indian_f2_rgb
+    from ptbench.configs.datasets.indian import fold_3 as indian_f3
+    from ptbench.configs.datasets.indian import fold_3_rgb as indian_f3_rgb
+    from ptbench.configs.datasets.indian import fold_4 as indian_f4
+    from ptbench.configs.datasets.indian import fold_4_rgb as indian_f4_rgb
+    from ptbench.configs.datasets.indian import fold_5 as indian_f5
+    from ptbench.configs.datasets.indian import fold_5_rgb as indian_f5_rgb
+    from ptbench.configs.datasets.indian import fold_6 as indian_f6
+    from ptbench.configs.datasets.indian import fold_6_rgb as indian_f6_rgb
+    from ptbench.configs.datasets.indian import fold_7 as indian_f7
+    from ptbench.configs.datasets.indian import fold_7_rgb as indian_f7_rgb
+    from ptbench.configs.datasets.indian import fold_8 as indian_f8
+    from ptbench.configs.datasets.indian import fold_8_rgb as indian_f8_rgb
+    from ptbench.configs.datasets.indian import fold_9 as indian_f9
+    from ptbench.configs.datasets.indian import fold_9_rgb as indian_f9_rgb
+    from ptbench.configs.datasets.mc_ch_in_11k import default as mc_ch_in_11k
+    from ptbench.configs.datasets.mc_ch_in_11k import fold_0 as mc_ch_in_11k_f0
+    from ptbench.configs.datasets.mc_ch_in_11k import (
+        fold_0_rgb as mc_ch_in_11k_f0_rgb,
+    )
+    from ptbench.configs.datasets.mc_ch_in_11k import fold_1 as mc_ch_in_11k_f1
+    from ptbench.configs.datasets.mc_ch_in_11k import (
+        fold_1_rgb as mc_ch_in_11k_f1_rgb,
+    )
+    from ptbench.configs.datasets.mc_ch_in_11k import fold_2 as mc_ch_in_11k_f2
+    from ptbench.configs.datasets.mc_ch_in_11k import (
+        fold_2_rgb as mc_ch_in_11k_f2_rgb,
+    )
+    from ptbench.configs.datasets.mc_ch_in_11k import fold_3 as mc_ch_in_11k_f3
+    from ptbench.configs.datasets.mc_ch_in_11k import (
+        fold_3_rgb as mc_ch_in_11k_f3_rgb,
+    )
+    from ptbench.configs.datasets.mc_ch_in_11k import fold_4 as mc_ch_in_11k_f4
+    from ptbench.configs.datasets.mc_ch_in_11k import (
+        fold_4_rgb as mc_ch_in_11k_f4_rgb,
+    )
+    from ptbench.configs.datasets.mc_ch_in_11k import fold_5 as mc_ch_in_11k_f5
+    from ptbench.configs.datasets.mc_ch_in_11k import (
+        fold_5_rgb as mc_ch_in_11k_f5_rgb,
+    )
+    from ptbench.configs.datasets.mc_ch_in_11k import fold_6 as mc_ch_in_11k_f6
+    from ptbench.configs.datasets.mc_ch_in_11k import (
+        fold_6_rgb as mc_ch_in_11k_f6_rgb,
+    )
+    from ptbench.configs.datasets.mc_ch_in_11k import fold_7 as mc_ch_in_11k_f7
+    from ptbench.configs.datasets.mc_ch_in_11k import (
+        fold_7_rgb as mc_ch_in_11k_f7_rgb,
+    )
+    from ptbench.configs.datasets.mc_ch_in_11k import fold_8 as mc_ch_in_11k_f8
+    from ptbench.configs.datasets.mc_ch_in_11k import (
+        fold_8_rgb as mc_ch_in_11k_f8_rgb,
+    )
+    from ptbench.configs.datasets.mc_ch_in_11k import fold_9 as mc_ch_in_11k_f9
+    from ptbench.configs.datasets.mc_ch_in_11k import (
+        fold_9_rgb as mc_ch_in_11k_f9_rgb,
+    )
+    from ptbench.configs.datasets.montgomery import default as mc
+    from ptbench.configs.datasets.montgomery import fold_0 as mc_f0
+    from ptbench.configs.datasets.montgomery import fold_0_rgb as mc_f0_rgb
+    from ptbench.configs.datasets.montgomery import fold_1 as mc_f1
+    from ptbench.configs.datasets.montgomery import fold_1_rgb as mc_f1_rgb
+    from ptbench.configs.datasets.montgomery import fold_2 as mc_f2
+    from ptbench.configs.datasets.montgomery import fold_2_rgb as mc_f2_rgb
+    from ptbench.configs.datasets.montgomery import fold_3 as mc_f3
+    from ptbench.configs.datasets.montgomery import fold_3_rgb as mc_f3_rgb
+    from ptbench.configs.datasets.montgomery import fold_4 as mc_f4
+    from ptbench.configs.datasets.montgomery import fold_4_rgb as mc_f4_rgb
+    from ptbench.configs.datasets.montgomery import fold_5 as mc_f5
+    from ptbench.configs.datasets.montgomery import fold_5_rgb as mc_f5_rgb
+    from ptbench.configs.datasets.montgomery import fold_6 as mc_f6
+    from ptbench.configs.datasets.montgomery import fold_6_rgb as mc_f6_rgb
+    from ptbench.configs.datasets.montgomery import fold_7 as mc_f7
+    from ptbench.configs.datasets.montgomery import fold_7_rgb as mc_f7_rgb
+    from ptbench.configs.datasets.montgomery import fold_8 as mc_f8
+    from ptbench.configs.datasets.montgomery import fold_8_rgb as mc_f8_rgb
+    from ptbench.configs.datasets.montgomery import fold_9 as mc_f9
+    from ptbench.configs.datasets.montgomery import fold_9_rgb as mc_f9_rgb
+    from ptbench.configs.datasets.shenzhen import default as ch
+    from ptbench.configs.datasets.shenzhen import fold_0 as ch_f0
+    from ptbench.configs.datasets.shenzhen import fold_0_rgb as ch_f0_rgb
+    from ptbench.configs.datasets.shenzhen import fold_1 as ch_f1
+    from ptbench.configs.datasets.shenzhen import fold_1_rgb as ch_f1_rgb
+    from ptbench.configs.datasets.shenzhen import fold_2 as ch_f2
+    from ptbench.configs.datasets.shenzhen import fold_2_rgb as ch_f2_rgb
+    from ptbench.configs.datasets.shenzhen import fold_3 as ch_f3
+    from ptbench.configs.datasets.shenzhen import fold_3_rgb as ch_f3_rgb
+    from ptbench.configs.datasets.shenzhen import fold_4 as ch_f4
+    from ptbench.configs.datasets.shenzhen import fold_4_rgb as ch_f4_rgb
+    from ptbench.configs.datasets.shenzhen import fold_5 as ch_f5
+    from ptbench.configs.datasets.shenzhen import fold_5_rgb as ch_f5_rgb
+    from ptbench.configs.datasets.shenzhen import fold_6 as ch_f6
+    from ptbench.configs.datasets.shenzhen import fold_6_rgb as ch_f6_rgb
+    from ptbench.configs.datasets.shenzhen import fold_7 as ch_f7
+    from ptbench.configs.datasets.shenzhen import fold_7_rgb as ch_f7_rgb
+    from ptbench.configs.datasets.shenzhen import fold_8 as ch_f8
+    from ptbench.configs.datasets.shenzhen import fold_8_rgb as ch_f8_rgb
+    from ptbench.configs.datasets.shenzhen import fold_9 as ch_f9
+    from ptbench.configs.datasets.shenzhen import fold_9_rgb as ch_f9_rgb
+    from ptbench.configs.datasets.tbx11k_simplified import default as tbx11k
+    from ptbench.configs.datasets.tbx11k_simplified import fold_0 as tbx11k_f0
+    from ptbench.configs.datasets.tbx11k_simplified import (
+        fold_0_rgb as tbx11k_f0_rgb,
+    )
+    from ptbench.configs.datasets.tbx11k_simplified import fold_1 as tbx11k_f1
+    from ptbench.configs.datasets.tbx11k_simplified import (
+        fold_1_rgb as tbx11k_f1_rgb,
+    )
+    from ptbench.configs.datasets.tbx11k_simplified import fold_2 as tbx11k_f2
+    from ptbench.configs.datasets.tbx11k_simplified import (
+        fold_2_rgb as tbx11k_f2_rgb,
+    )
+    from ptbench.configs.datasets.tbx11k_simplified import fold_3 as tbx11k_f3
+    from ptbench.configs.datasets.tbx11k_simplified import (
+        fold_3_rgb as tbx11k_f3_rgb,
+    )
+    from ptbench.configs.datasets.tbx11k_simplified import fold_4 as tbx11k_f4
+    from ptbench.configs.datasets.tbx11k_simplified import (
+        fold_4_rgb as tbx11k_f4_rgb,
+    )
+    from ptbench.configs.datasets.tbx11k_simplified import fold_5 as tbx11k_f5
+    from ptbench.configs.datasets.tbx11k_simplified import (
+        fold_5_rgb as tbx11k_f5_rgb,
+    )
+    from ptbench.configs.datasets.tbx11k_simplified import fold_6 as tbx11k_f6
+    from ptbench.configs.datasets.tbx11k_simplified import (
+        fold_6_rgb as tbx11k_f6_rgb,
+    )
+    from ptbench.configs.datasets.tbx11k_simplified import fold_7 as tbx11k_f7
+    from ptbench.configs.datasets.tbx11k_simplified import (
+        fold_7_rgb as tbx11k_f7_rgb,
+    )
+    from ptbench.configs.datasets.tbx11k_simplified import fold_8 as tbx11k_f8
+    from ptbench.configs.datasets.tbx11k_simplified import (
+        fold_8_rgb as tbx11k_f8_rgb,
+    )
+    from ptbench.configs.datasets.tbx11k_simplified import fold_9 as tbx11k_f9
+    from ptbench.configs.datasets.tbx11k_simplified import (
+        fold_9_rgb as tbx11k_f9_rgb,
+    )
+
+    # Default protocol
+    mc_ch_in_11k_dataset = mc_ch_in_11k.dataset
+    assert isinstance(mc_ch_in_11k_dataset, dict)
+
+    mc_dataset = mc.dataset
+    ch_dataset = ch.dataset
+    in_dataset = indian.dataset
+    tbx11k_dataset = tbx11k.dataset
+
+    assert "train" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["train"]) == len(mc_dataset["train"]) + len(
+        ch_dataset["train"]
+    ) + len(in_dataset["train"]) + len(tbx11k_dataset["train"])
+
+    assert "validation" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["test"]) == len(mc_dataset["test"]) + len(
+        ch_dataset["test"]
+    ) + len(in_dataset["test"]) + len(tbx11k_dataset["test"])
+
+    # Fold 0
+    mc_ch_in_11k_dataset = mc_ch_in_11k_f0.dataset
+    assert isinstance(mc_ch_in_11k_dataset, dict)
+
+    mc_dataset = mc_f0.dataset
+    ch_dataset = ch_f0.dataset
+    in_dataset = indian_f0.dataset
+    tbx11k_dataset = tbx11k_f0.dataset
+
+    assert "train" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["train"]) == len(mc_dataset["train"]) + len(
+        ch_dataset["train"]
+    ) + len(in_dataset["train"]) + len(tbx11k_dataset["train"])
+
+    assert "validation" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["test"]) == len(mc_dataset["test"]) + len(
+        ch_dataset["test"]
+    ) + len(in_dataset["test"]) + len(tbx11k_dataset["test"])
+
+    # Fold 1
+    mc_ch_in_11k_dataset = mc_ch_in_11k_f1.dataset
+    assert isinstance(mc_ch_in_11k_dataset, dict)
+
+    mc_dataset = mc_f1.dataset
+    ch_dataset = ch_f1.dataset
+    in_dataset = indian_f1.dataset
+    tbx11k_dataset = tbx11k_f1.dataset
+
+    assert "train" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["train"]) == len(mc_dataset["train"]) + len(
+        ch_dataset["train"]
+    ) + len(in_dataset["train"]) + len(tbx11k_dataset["train"])
+
+    assert "validation" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["test"]) == len(mc_dataset["test"]) + len(
+        ch_dataset["test"]
+    ) + len(in_dataset["test"]) + len(tbx11k_dataset["test"])
+
+    # Fold 2
+    mc_ch_in_11k_dataset = mc_ch_in_11k_f2.dataset
+    assert isinstance(mc_ch_in_11k_dataset, dict)
+
+    mc_dataset = mc_f2.dataset
+    ch_dataset = ch_f2.dataset
+    in_dataset = indian_f2.dataset
+    tbx11k_dataset = tbx11k_f2.dataset
+
+    assert "train" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["train"]) == len(mc_dataset["train"]) + len(
+        ch_dataset["train"]
+    ) + len(in_dataset["train"]) + len(tbx11k_dataset["train"])
+
+    assert "validation" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["test"]) == len(mc_dataset["test"]) + len(
+        ch_dataset["test"]
+    ) + len(in_dataset["test"]) + len(tbx11k_dataset["test"])
+
+    # Fold 3
+    mc_ch_in_11k_dataset = mc_ch_in_11k_f3.dataset
+    assert isinstance(mc_ch_in_11k_dataset, dict)
+
+    mc_dataset = mc_f3.dataset
+    ch_dataset = ch_f3.dataset
+    in_dataset = indian_f3.dataset
+    tbx11k_dataset = tbx11k_f3.dataset
+
+    assert "train" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["train"]) == len(mc_dataset["train"]) + len(
+        ch_dataset["train"]
+    ) + len(in_dataset["train"]) + len(tbx11k_dataset["train"])
+
+    assert "validation" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["test"]) == len(mc_dataset["test"]) + len(
+        ch_dataset["test"]
+    ) + len(in_dataset["test"]) + len(tbx11k_dataset["test"])
+
+    # Fold 4
+    mc_ch_in_11k_dataset = mc_ch_in_11k_f4.dataset
+    assert isinstance(mc_ch_in_11k_dataset, dict)
+
+    mc_dataset = mc_f4.dataset
+    ch_dataset = ch_f4.dataset
+    in_dataset = indian_f4.dataset
+    tbx11k_dataset = tbx11k_f4.dataset
+
+    assert "train" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["train"]) == len(mc_dataset["train"]) + len(
+        ch_dataset["train"]
+    ) + len(in_dataset["train"]) + len(tbx11k_dataset["train"])
+
+    assert "validation" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["test"]) == len(mc_dataset["test"]) + len(
+        ch_dataset["test"]
+    ) + len(in_dataset["test"]) + len(tbx11k_dataset["test"])
+
+    # Fold 5
+    mc_ch_in_11k_dataset = mc_ch_in_11k_f5.dataset
+    assert isinstance(mc_ch_in_11k_dataset, dict)
+
+    mc_dataset = mc_f5.dataset
+    ch_dataset = ch_f5.dataset
+    in_dataset = indian_f5.dataset
+    tbx11k_dataset = tbx11k_f5.dataset
+
+    assert "train" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["train"]) == len(mc_dataset["train"]) + len(
+        ch_dataset["train"]
+    ) + len(in_dataset["train"]) + len(tbx11k_dataset["train"])
+
+    assert "validation" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["test"]) == len(mc_dataset["test"]) + len(
+        ch_dataset["test"]
+    ) + len(in_dataset["test"]) + len(tbx11k_dataset["test"])
+
+    # Fold 6
+    mc_ch_in_11k_dataset = mc_ch_in_11k_f6.dataset
+    assert isinstance(mc_ch_in_11k_dataset, dict)
+
+    mc_dataset = mc_f6.dataset
+    ch_dataset = ch_f6.dataset
+    in_dataset = indian_f6.dataset
+    tbx11k_dataset = tbx11k_f6.dataset
+
+    assert "train" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["train"]) == len(mc_dataset["train"]) + len(
+        ch_dataset["train"]
+    ) + len(in_dataset["train"]) + len(tbx11k_dataset["train"])
+
+    assert "validation" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["test"]) == len(mc_dataset["test"]) + len(
+        ch_dataset["test"]
+    ) + len(in_dataset["test"]) + len(tbx11k_dataset["test"])
+
+    # Fold 7
+    mc_ch_in_11k_dataset = mc_ch_in_11k_f7.dataset
+    assert isinstance(mc_ch_in_11k_dataset, dict)
+
+    mc_dataset = mc_f7.dataset
+    ch_dataset = ch_f7.dataset
+    in_dataset = indian_f7.dataset
+    tbx11k_dataset = tbx11k_f7.dataset
+
+    assert "train" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["train"]) == len(mc_dataset["train"]) + len(
+        ch_dataset["train"]
+    ) + len(in_dataset["train"]) + len(tbx11k_dataset["train"])
+
+    assert "validation" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["test"]) == len(mc_dataset["test"]) + len(
+        ch_dataset["test"]
+    ) + len(in_dataset["test"]) + len(tbx11k_dataset["test"])
+
+    # Fold 8
+    mc_ch_in_11k_dataset = mc_ch_in_11k_f8.dataset
+    assert isinstance(mc_ch_in_11k_dataset, dict)
+
+    mc_dataset = mc_f8.dataset
+    ch_dataset = ch_f8.dataset
+    in_dataset = indian_f8.dataset
+    tbx11k_dataset = tbx11k_f8.dataset
+
+    assert "train" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["train"]) == len(mc_dataset["train"]) + len(
+        ch_dataset["train"]
+    ) + len(in_dataset["train"]) + len(tbx11k_dataset["train"])
+
+    assert "validation" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["test"]) == len(mc_dataset["test"]) + len(
+        ch_dataset["test"]
+    ) + len(in_dataset["test"]) + len(tbx11k_dataset["test"])
+
+    # Fold 9
+    mc_ch_in_11k_dataset = mc_ch_in_11k_f9.dataset
+    assert isinstance(mc_ch_in_11k_dataset, dict)
+
+    mc_dataset = mc_f9.dataset
+    ch_dataset = ch_f9.dataset
+    in_dataset = indian_f9.dataset
+    tbx11k_dataset = tbx11k_f9.dataset
+
+    assert "train" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["train"]) == len(mc_dataset["train"]) + len(
+        ch_dataset["train"]
+    ) + len(in_dataset["train"]) + len(tbx11k_dataset["train"])
+
+    assert "validation" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["test"]) == len(mc_dataset["test"]) + len(
+        ch_dataset["test"]
+    ) + len(in_dataset["test"]) + len(tbx11k_dataset["test"])
+
+    # Fold 0, RGB
+    mc_ch_in_11k_dataset = mc_ch_in_11k_f0_rgb.dataset
+    assert isinstance(mc_ch_in_11k_dataset, dict)
+
+    mc_dataset = mc_f0_rgb.dataset
+    ch_dataset = ch_f0_rgb.dataset
+    in_dataset = indian_f0_rgb.dataset
+    tbx11k_dataset = tbx11k_f0_rgb.dataset
+
+    assert "train" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["train"]) == len(mc_dataset["train"]) + len(
+        ch_dataset["train"]
+    ) + len(in_dataset["train"]) + len(tbx11k_dataset["train"])
+
+    assert "validation" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["test"]) == len(mc_dataset["test"]) + len(
+        ch_dataset["test"]
+    ) + len(in_dataset["test"]) + len(tbx11k_dataset["test"])
+
+    # Fold 1, RGB
+    mc_ch_in_11k_dataset = mc_ch_in_11k_f1_rgb.dataset
+    assert isinstance(mc_ch_in_11k_dataset, dict)
+
+    mc_dataset = mc_f1_rgb.dataset
+    ch_dataset = ch_f1_rgb.dataset
+    in_dataset = indian_f1_rgb.dataset
+    tbx11k_dataset = tbx11k_f1_rgb.dataset
+
+    assert "train" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["train"]) == len(mc_dataset["train"]) + len(
+        ch_dataset["train"]
+    ) + len(in_dataset["train"]) + len(tbx11k_dataset["train"])
+
+    assert "validation" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["test"]) == len(mc_dataset["test"]) + len(
+        ch_dataset["test"]
+    ) + len(in_dataset["test"]) + len(tbx11k_dataset["test"])
+
+    # Fold 2, RGB
+    mc_ch_in_11k_dataset = mc_ch_in_11k_f2_rgb.dataset
+    assert isinstance(mc_ch_in_11k_dataset, dict)
+
+    mc_dataset = mc_f2_rgb.dataset
+    ch_dataset = ch_f2_rgb.dataset
+    in_dataset = indian_f2_rgb.dataset
+    tbx11k_dataset = tbx11k_f2_rgb.dataset
+
+    assert "train" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["train"]) == len(mc_dataset["train"]) + len(
+        ch_dataset["train"]
+    ) + len(in_dataset["train"]) + len(tbx11k_dataset["train"])
+
+    assert "validation" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["test"]) == len(mc_dataset["test"]) + len(
+        ch_dataset["test"]
+    ) + len(in_dataset["test"]) + len(tbx11k_dataset["test"])
+
+    # Fold 3, RGB
+    mc_ch_in_11k_dataset = mc_ch_in_11k_f3_rgb.dataset
+    assert isinstance(mc_ch_in_11k_dataset, dict)
+
+    mc_dataset = mc_f3_rgb.dataset
+    ch_dataset = ch_f3_rgb.dataset
+    in_dataset = indian_f3_rgb.dataset
+    tbx11k_dataset = tbx11k_f3_rgb.dataset
+
+    assert "train" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["train"]) == len(mc_dataset["train"]) + len(
+        ch_dataset["train"]
+    ) + len(in_dataset["train"]) + len(tbx11k_dataset["train"])
+
+    assert "validation" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["test"]) == len(mc_dataset["test"]) + len(
+        ch_dataset["test"]
+    ) + len(in_dataset["test"]) + len(tbx11k_dataset["test"])
+
+    # Fold 4, RGB
+    mc_ch_in_11k_dataset = mc_ch_in_11k_f4_rgb.dataset
+    assert isinstance(mc_ch_in_11k_dataset, dict)
+
+    mc_dataset = mc_f4_rgb.dataset
+    ch_dataset = ch_f4_rgb.dataset
+    in_dataset = indian_f4_rgb.dataset
+    tbx11k_dataset = tbx11k_f4_rgb.dataset
+
+    assert "train" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["train"]) == len(mc_dataset["train"]) + len(
+        ch_dataset["train"]
+    ) + len(in_dataset["train"]) + len(tbx11k_dataset["train"])
+
+    assert "validation" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["test"]) == len(mc_dataset["test"]) + len(
+        ch_dataset["test"]
+    ) + len(in_dataset["test"]) + len(tbx11k_dataset["test"])
+
+    # Fold 5, RGB
+    mc_ch_in_11k_dataset = mc_ch_in_11k_f5_rgb.dataset
+    assert isinstance(mc_ch_in_11k_dataset, dict)
+
+    mc_dataset = mc_f5_rgb.dataset
+    ch_dataset = ch_f5_rgb.dataset
+    in_dataset = indian_f5_rgb.dataset
+    tbx11k_dataset = tbx11k_f5_rgb.dataset
+
+    assert "train" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["train"]) == len(mc_dataset["train"]) + len(
+        ch_dataset["train"]
+    ) + len(in_dataset["train"]) + len(tbx11k_dataset["train"])
+
+    assert "validation" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["test"]) == len(mc_dataset["test"]) + len(
+        ch_dataset["test"]
+    ) + len(in_dataset["test"]) + len(tbx11k_dataset["test"])
+
+    # Fold 6, RGB
+    mc_ch_in_11k_dataset = mc_ch_in_11k_f6_rgb.dataset
+    assert isinstance(mc_ch_in_11k_dataset, dict)
+
+    mc_dataset = mc_f6_rgb.dataset
+    ch_dataset = ch_f6_rgb.dataset
+    in_dataset = indian_f6_rgb.dataset
+    tbx11k_dataset = tbx11k_f6_rgb.dataset
+
+    assert "train" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["train"]) == len(mc_dataset["train"]) + len(
+        ch_dataset["train"]
+    ) + len(in_dataset["train"]) + len(tbx11k_dataset["train"])
+
+    assert "validation" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["test"]) == len(mc_dataset["test"]) + len(
+        ch_dataset["test"]
+    ) + len(in_dataset["test"]) + len(tbx11k_dataset["test"])
+
+    # Fold 7, RGB
+    mc_ch_in_11k_dataset = mc_ch_in_11k_f7_rgb.dataset
+    assert isinstance(mc_ch_in_11k_dataset, dict)
+
+    mc_dataset = mc_f7_rgb.dataset
+    ch_dataset = ch_f7_rgb.dataset
+    in_dataset = indian_f7_rgb.dataset
+    tbx11k_dataset = tbx11k_f7_rgb.dataset
+
+    assert "train" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["train"]) == len(mc_dataset["train"]) + len(
+        ch_dataset["train"]
+    ) + len(in_dataset["train"]) + len(tbx11k_dataset["train"])
+
+    assert "validation" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["test"]) == len(mc_dataset["test"]) + len(
+        ch_dataset["test"]
+    ) + len(in_dataset["test"]) + len(tbx11k_dataset["test"])
+
+    # Fold 8, RGB
+    mc_ch_in_11k_dataset = mc_ch_in_11k_f8_rgb.dataset
+    assert isinstance(mc_ch_in_11k_dataset, dict)
+
+    mc_dataset = mc_f8_rgb.dataset
+    ch_dataset = ch_f8_rgb.dataset
+    in_dataset = indian_f8_rgb.dataset
+    tbx11k_dataset = tbx11k_f8_rgb.dataset
+
+    assert "train" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["train"]) == len(mc_dataset["train"]) + len(
+        ch_dataset["train"]
+    ) + len(in_dataset["train"]) + len(tbx11k_dataset["train"])
+
+    assert "validation" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["test"]) == len(mc_dataset["test"]) + len(
+        ch_dataset["test"]
+    ) + len(in_dataset["test"]) + len(tbx11k_dataset["test"])
+
+    # Fold 9, RGB
+    mc_ch_in_11k_dataset = mc_ch_in_11k_f9_rgb.dataset
+    assert isinstance(mc_ch_in_11k_dataset, dict)
+
+    mc_dataset = mc_f9_rgb.dataset
+    ch_dataset = ch_f9_rgb.dataset
+    in_dataset = indian_f9_rgb.dataset
+    tbx11k_dataset = tbx11k_f9_rgb.dataset
+
+    assert "train" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["train"]) == len(mc_dataset["train"]) + len(
+        ch_dataset["train"]
+    ) + len(in_dataset["train"]) + len(tbx11k_dataset["train"])
+
+    assert "validation" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["test"]) == len(mc_dataset["test"]) + len(
+        ch_dataset["test"]
+    ) + len(in_dataset["test"]) + len(tbx11k_dataset["test"])
diff --git a/tests/test_mc_ch_in_11k_RS.py b/tests/test_mc_ch_in_11k_RS.py
new file mode 100644
index 0000000000000000000000000000000000000000..c0a50ef3bc6c8d0416e2d743cad13e499760a937
--- /dev/null
+++ b/tests/test_mc_ch_in_11k_RS.py
@@ -0,0 +1,440 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Tests for the aggregated Montgomery-Shenzhen-Indian-tbx11k_simplified
+dataset."""
+
+
+def test_dataset_consistency():
+    from ptbench.configs.datasets.indian_RS import default as indian_RS
+    from ptbench.configs.datasets.indian_RS import fold_0 as indian_f0
+    from ptbench.configs.datasets.indian_RS import fold_1 as indian_f1
+    from ptbench.configs.datasets.indian_RS import fold_2 as indian_f2
+    from ptbench.configs.datasets.indian_RS import fold_3 as indian_f3
+    from ptbench.configs.datasets.indian_RS import fold_4 as indian_f4
+    from ptbench.configs.datasets.indian_RS import fold_5 as indian_f5
+    from ptbench.configs.datasets.indian_RS import fold_6 as indian_f6
+    from ptbench.configs.datasets.indian_RS import fold_7 as indian_f7
+    from ptbench.configs.datasets.indian_RS import fold_8 as indian_f8
+    from ptbench.configs.datasets.indian_RS import fold_9 as indian_f9
+    from ptbench.configs.datasets.mc_ch_in_11k_RS import (
+        default as mc_ch_in_11k_RS,
+    )
+    from ptbench.configs.datasets.mc_ch_in_11k_RS import (
+        fold_0 as mc_ch_in_11k_f0,
+    )
+    from ptbench.configs.datasets.mc_ch_in_11k_RS import (
+        fold_1 as mc_ch_in_11k_f1,
+    )
+    from ptbench.configs.datasets.mc_ch_in_11k_RS import (
+        fold_2 as mc_ch_in_11k_f2,
+    )
+    from ptbench.configs.datasets.mc_ch_in_11k_RS import (
+        fold_3 as mc_ch_in_11k_f3,
+    )
+    from ptbench.configs.datasets.mc_ch_in_11k_RS import (
+        fold_4 as mc_ch_in_11k_f4,
+    )
+    from ptbench.configs.datasets.mc_ch_in_11k_RS import (
+        fold_5 as mc_ch_in_11k_f5,
+    )
+    from ptbench.configs.datasets.mc_ch_in_11k_RS import (
+        fold_6 as mc_ch_in_11k_f6,
+    )
+    from ptbench.configs.datasets.mc_ch_in_11k_RS import (
+        fold_7 as mc_ch_in_11k_f7,
+    )
+    from ptbench.configs.datasets.mc_ch_in_11k_RS import (
+        fold_8 as mc_ch_in_11k_f8,
+    )
+    from ptbench.configs.datasets.mc_ch_in_11k_RS import (
+        fold_9 as mc_ch_in_11k_f9,
+    )
+    from ptbench.configs.datasets.montgomery_RS import default as mc_RS
+    from ptbench.configs.datasets.montgomery_RS import fold_0 as mc_f0
+    from ptbench.configs.datasets.montgomery_RS import fold_1 as mc_f1
+    from ptbench.configs.datasets.montgomery_RS import fold_2 as mc_f2
+    from ptbench.configs.datasets.montgomery_RS import fold_3 as mc_f3
+    from ptbench.configs.datasets.montgomery_RS import fold_4 as mc_f4
+    from ptbench.configs.datasets.montgomery_RS import fold_5 as mc_f5
+    from ptbench.configs.datasets.montgomery_RS import fold_6 as mc_f6
+    from ptbench.configs.datasets.montgomery_RS import fold_7 as mc_f7
+    from ptbench.configs.datasets.montgomery_RS import fold_8 as mc_f8
+    from ptbench.configs.datasets.montgomery_RS import fold_9 as mc_f9
+    from ptbench.configs.datasets.shenzhen_RS import default as ch_RS
+    from ptbench.configs.datasets.shenzhen_RS import fold_0 as ch_f0
+    from ptbench.configs.datasets.shenzhen_RS import fold_1 as ch_f1
+    from ptbench.configs.datasets.shenzhen_RS import fold_2 as ch_f2
+    from ptbench.configs.datasets.shenzhen_RS import fold_3 as ch_f3
+    from ptbench.configs.datasets.shenzhen_RS import fold_4 as ch_f4
+    from ptbench.configs.datasets.shenzhen_RS import fold_5 as ch_f5
+    from ptbench.configs.datasets.shenzhen_RS import fold_6 as ch_f6
+    from ptbench.configs.datasets.shenzhen_RS import fold_7 as ch_f7
+    from ptbench.configs.datasets.shenzhen_RS import fold_8 as ch_f8
+    from ptbench.configs.datasets.shenzhen_RS import fold_9 as ch_f9
+    from ptbench.configs.datasets.tbx11k_simplified_RS import (
+        default as tbx11k_RS,
+    )
+    from ptbench.configs.datasets.tbx11k_simplified_RS import (
+        fold_0 as tbx11k_f0,
+    )
+    from ptbench.configs.datasets.tbx11k_simplified_RS import (
+        fold_1 as tbx11k_f1,
+    )
+    from ptbench.configs.datasets.tbx11k_simplified_RS import (
+        fold_2 as tbx11k_f2,
+    )
+    from ptbench.configs.datasets.tbx11k_simplified_RS import (
+        fold_3 as tbx11k_f3,
+    )
+    from ptbench.configs.datasets.tbx11k_simplified_RS import (
+        fold_4 as tbx11k_f4,
+    )
+    from ptbench.configs.datasets.tbx11k_simplified_RS import (
+        fold_5 as tbx11k_f5,
+    )
+    from ptbench.configs.datasets.tbx11k_simplified_RS import (
+        fold_6 as tbx11k_f6,
+    )
+    from ptbench.configs.datasets.tbx11k_simplified_RS import (
+        fold_7 as tbx11k_f7,
+    )
+    from ptbench.configs.datasets.tbx11k_simplified_RS import (
+        fold_8 as tbx11k_f8,
+    )
+    from ptbench.configs.datasets.tbx11k_simplified_RS import (
+        fold_9 as tbx11k_f9,
+    )
+
+    # Default protocol
+    mc_ch_in_11k_RS_dataset = mc_ch_in_11k_RS.dataset
+    assert isinstance(mc_ch_in_11k_RS_dataset, dict)
+
+    mc_RS_dataset = mc_RS.dataset
+    ch_RS_dataset = ch_RS.dataset
+    in_RS_dataset = indian_RS.dataset
+    tbx11k_RS_dataset = tbx11k_RS.dataset
+
+    assert "train" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["train"]) == len(
+        mc_RS_dataset["train"]
+    ) + len(ch_RS_dataset["train"]) + len(in_RS_dataset["train"]) + len(
+        tbx11k_RS_dataset["train"]
+    )
+
+    assert "validation" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["validation"]) == len(
+        mc_RS_dataset["validation"]
+    ) + len(ch_RS_dataset["validation"]) + len(
+        in_RS_dataset["validation"]
+    ) + len(
+        tbx11k_RS_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["test"]) == len(
+        mc_RS_dataset["test"]
+    ) + len(ch_RS_dataset["test"]) + len(in_RS_dataset["test"]) + len(
+        tbx11k_RS_dataset["test"]
+    )
+
+    # Fold 0
+    mc_ch_in_11k_RS_dataset = mc_ch_in_11k_f0.dataset
+    assert isinstance(mc_ch_in_11k_RS_dataset, dict)
+
+    mc_dataset = mc_f0.dataset
+    ch_dataset = ch_f0.dataset
+    in_dataset = indian_f0.dataset
+    tbx11k_dataset = tbx11k_f0.dataset
+
+    assert "train" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["train"]) == len(
+        mc_dataset["train"]
+    ) + len(ch_dataset["train"]) + len(in_dataset["train"]) + len(
+        tbx11k_dataset["train"]
+    )
+
+    assert "validation" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["test"]) == len(
+        mc_dataset["test"]
+    ) + len(ch_dataset["test"]) + len(in_dataset["test"]) + len(
+        tbx11k_dataset["test"]
+    )
+
+    # Fold 1
+    mc_ch_in_11k_RS_dataset = mc_ch_in_11k_f1.dataset
+    assert isinstance(mc_ch_in_11k_RS_dataset, dict)
+
+    mc_dataset = mc_f1.dataset
+    ch_dataset = ch_f1.dataset
+    in_dataset = indian_f1.dataset
+    tbx11k_dataset = tbx11k_f1.dataset
+
+    assert "train" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["train"]) == len(
+        mc_dataset["train"]
+    ) + len(ch_dataset["train"]) + len(in_dataset["train"]) + len(
+        tbx11k_dataset["train"]
+    )
+
+    assert "validation" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["test"]) == len(
+        mc_dataset["test"]
+    ) + len(ch_dataset["test"]) + len(in_dataset["test"]) + len(
+        tbx11k_dataset["test"]
+    )
+
+    # Fold 2
+    mc_ch_in_11k_RS_dataset = mc_ch_in_11k_f2.dataset
+    assert isinstance(mc_ch_in_11k_RS_dataset, dict)
+
+    mc_dataset = mc_f2.dataset
+    ch_dataset = ch_f2.dataset
+    in_dataset = indian_f2.dataset
+    tbx11k_dataset = tbx11k_f2.dataset
+
+    assert "train" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["train"]) == len(
+        mc_dataset["train"]
+    ) + len(ch_dataset["train"]) + len(in_dataset["train"]) + len(
+        tbx11k_dataset["train"]
+    )
+
+    assert "validation" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["test"]) == len(
+        mc_dataset["test"]
+    ) + len(ch_dataset["test"]) + len(in_dataset["test"]) + len(
+        tbx11k_dataset["test"]
+    )
+
+    # Fold 3
+    mc_ch_in_11k_RS_dataset = mc_ch_in_11k_f3.dataset
+    assert isinstance(mc_ch_in_11k_RS_dataset, dict)
+
+    mc_dataset = mc_f3.dataset
+    ch_dataset = ch_f3.dataset
+    in_dataset = indian_f3.dataset
+    tbx11k_dataset = tbx11k_f3.dataset
+
+    assert "train" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["train"]) == len(
+        mc_dataset["train"]
+    ) + len(ch_dataset["train"]) + len(in_dataset["train"]) + len(
+        tbx11k_dataset["train"]
+    )
+
+    assert "validation" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["test"]) == len(
+        mc_dataset["test"]
+    ) + len(ch_dataset["test"]) + len(in_dataset["test"]) + len(
+        tbx11k_dataset["test"]
+    )
+
+    # Fold 4
+    mc_ch_in_11k_RS_dataset = mc_ch_in_11k_f4.dataset
+    assert isinstance(mc_ch_in_11k_RS_dataset, dict)
+
+    mc_dataset = mc_f4.dataset
+    ch_dataset = ch_f4.dataset
+    in_dataset = indian_f4.dataset
+    tbx11k_dataset = tbx11k_f4.dataset
+
+    assert "train" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["train"]) == len(
+        mc_dataset["train"]
+    ) + len(ch_dataset["train"]) + len(in_dataset["train"]) + len(
+        tbx11k_dataset["train"]
+    )
+
+    assert "validation" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["test"]) == len(
+        mc_dataset["test"]
+    ) + len(ch_dataset["test"]) + len(in_dataset["test"]) + len(
+        tbx11k_dataset["test"]
+    )
+
+    # Fold 5
+    mc_ch_in_11k_RS_dataset = mc_ch_in_11k_f5.dataset
+    assert isinstance(mc_ch_in_11k_RS_dataset, dict)
+
+    mc_dataset = mc_f5.dataset
+    ch_dataset = ch_f5.dataset
+    in_dataset = indian_f5.dataset
+    tbx11k_dataset = tbx11k_f5.dataset
+
+    assert "train" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["train"]) == len(
+        mc_dataset["train"]
+    ) + len(ch_dataset["train"]) + len(in_dataset["train"]) + len(
+        tbx11k_dataset["train"]
+    )
+
+    assert "validation" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["test"]) == len(
+        mc_dataset["test"]
+    ) + len(ch_dataset["test"]) + len(in_dataset["test"]) + len(
+        tbx11k_dataset["test"]
+    )
+
+    # Fold 6
+    mc_ch_in_11k_RS_dataset = mc_ch_in_11k_f6.dataset
+    assert isinstance(mc_ch_in_11k_RS_dataset, dict)
+
+    mc_dataset = mc_f6.dataset
+    ch_dataset = ch_f6.dataset
+    in_dataset = indian_f6.dataset
+    tbx11k_dataset = tbx11k_f6.dataset
+
+    assert "train" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["train"]) == len(
+        mc_dataset["train"]
+    ) + len(ch_dataset["train"]) + len(in_dataset["train"]) + len(
+        tbx11k_dataset["train"]
+    )
+
+    assert "validation" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["test"]) == len(
+        mc_dataset["test"]
+    ) + len(ch_dataset["test"]) + len(in_dataset["test"]) + len(
+        tbx11k_dataset["test"]
+    )
+
+    # Fold 7
+    mc_ch_in_11k_RS_dataset = mc_ch_in_11k_f7.dataset
+    assert isinstance(mc_ch_in_11k_RS_dataset, dict)
+
+    mc_dataset = mc_f7.dataset
+    ch_dataset = ch_f7.dataset
+    in_dataset = indian_f7.dataset
+    tbx11k_dataset = tbx11k_f7.dataset
+
+    assert "train" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["train"]) == len(
+        mc_dataset["train"]
+    ) + len(ch_dataset["train"]) + len(in_dataset["train"]) + len(
+        tbx11k_dataset["train"]
+    )
+
+    assert "validation" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["test"]) == len(
+        mc_dataset["test"]
+    ) + len(ch_dataset["test"]) + len(in_dataset["test"]) + len(
+        tbx11k_dataset["test"]
+    )
+
+    # Fold 8
+    mc_ch_in_11k_RS_dataset = mc_ch_in_11k_f8.dataset
+    assert isinstance(mc_ch_in_11k_RS_dataset, dict)
+
+    mc_dataset = mc_f8.dataset
+    ch_dataset = ch_f8.dataset
+    in_dataset = indian_f8.dataset
+    tbx11k_dataset = tbx11k_f8.dataset
+
+    assert "train" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["train"]) == len(
+        mc_dataset["train"]
+    ) + len(ch_dataset["train"]) + len(in_dataset["train"]) + len(
+        tbx11k_dataset["train"]
+    )
+
+    assert "validation" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["test"]) == len(
+        mc_dataset["test"]
+    ) + len(ch_dataset["test"]) + len(in_dataset["test"]) + len(
+        tbx11k_dataset["test"]
+    )
+
+    # Fold 9
+    mc_ch_in_11k_RS_dataset = mc_ch_in_11k_f9.dataset
+    assert isinstance(mc_ch_in_11k_RS_dataset, dict)
+
+    mc_dataset = mc_f9.dataset
+    ch_dataset = ch_f9.dataset
+    in_dataset = indian_f9.dataset
+    tbx11k_dataset = tbx11k_f9.dataset
+
+    assert "train" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["train"]) == len(
+        mc_dataset["train"]
+    ) + len(ch_dataset["train"]) + len(in_dataset["train"]) + len(
+        tbx11k_dataset["train"]
+    )
+
+    assert "validation" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["test"]) == len(
+        mc_dataset["test"]
+    ) + len(ch_dataset["test"]) + len(in_dataset["test"]) + len(
+        tbx11k_dataset["test"]
+    )
diff --git a/tests/test_mc_ch_in_11kv2.py b/tests/test_mc_ch_in_11kv2.py
new file mode 100644
index 0000000000000000000000000000000000000000..c923a9f54240dbe240ca9682d3ac8e53933b0549
--- /dev/null
+++ b/tests/test_mc_ch_in_11kv2.py
@@ -0,0 +1,739 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Tests for the aggregated Montgomery-Shenzhen-Indian dataset."""
+
+
+def test_dataset_consistency():
+    from ptbench.configs.datasets.indian import default as indian
+    from ptbench.configs.datasets.indian import fold_0 as indian_f0
+    from ptbench.configs.datasets.indian import fold_0_rgb as indian_f0_rgb
+    from ptbench.configs.datasets.indian import fold_1 as indian_f1
+    from ptbench.configs.datasets.indian import fold_1_rgb as indian_f1_rgb
+    from ptbench.configs.datasets.indian import fold_2 as indian_f2
+    from ptbench.configs.datasets.indian import fold_2_rgb as indian_f2_rgb
+    from ptbench.configs.datasets.indian import fold_3 as indian_f3
+    from ptbench.configs.datasets.indian import fold_3_rgb as indian_f3_rgb
+    from ptbench.configs.datasets.indian import fold_4 as indian_f4
+    from ptbench.configs.datasets.indian import fold_4_rgb as indian_f4_rgb
+    from ptbench.configs.datasets.indian import fold_5 as indian_f5
+    from ptbench.configs.datasets.indian import fold_5_rgb as indian_f5_rgb
+    from ptbench.configs.datasets.indian import fold_6 as indian_f6
+    from ptbench.configs.datasets.indian import fold_6_rgb as indian_f6_rgb
+    from ptbench.configs.datasets.indian import fold_7 as indian_f7
+    from ptbench.configs.datasets.indian import fold_7_rgb as indian_f7_rgb
+    from ptbench.configs.datasets.indian import fold_8 as indian_f8
+    from ptbench.configs.datasets.indian import fold_8_rgb as indian_f8_rgb
+    from ptbench.configs.datasets.indian import fold_9 as indian_f9
+    from ptbench.configs.datasets.indian import fold_9_rgb as indian_f9_rgb
+    from ptbench.configs.datasets.mc_ch_in_11kv2 import default as mc_ch_in_11k
+    from ptbench.configs.datasets.mc_ch_in_11kv2 import (
+        fold_0 as mc_ch_in_11k_f0,
+    )
+    from ptbench.configs.datasets.mc_ch_in_11kv2 import (
+        fold_0_rgb as mc_ch_in_11k_f0_rgb,
+    )
+    from ptbench.configs.datasets.mc_ch_in_11kv2 import (
+        fold_1 as mc_ch_in_11k_f1,
+    )
+    from ptbench.configs.datasets.mc_ch_in_11kv2 import (
+        fold_1_rgb as mc_ch_in_11k_f1_rgb,
+    )
+    from ptbench.configs.datasets.mc_ch_in_11kv2 import (
+        fold_2 as mc_ch_in_11k_f2,
+    )
+    from ptbench.configs.datasets.mc_ch_in_11kv2 import (
+        fold_2_rgb as mc_ch_in_11k_f2_rgb,
+    )
+    from ptbench.configs.datasets.mc_ch_in_11kv2 import (
+        fold_3 as mc_ch_in_11k_f3,
+    )
+    from ptbench.configs.datasets.mc_ch_in_11kv2 import (
+        fold_3_rgb as mc_ch_in_11k_f3_rgb,
+    )
+    from ptbench.configs.datasets.mc_ch_in_11kv2 import (
+        fold_4 as mc_ch_in_11k_f4,
+    )
+    from ptbench.configs.datasets.mc_ch_in_11kv2 import (
+        fold_4_rgb as mc_ch_in_11k_f4_rgb,
+    )
+    from ptbench.configs.datasets.mc_ch_in_11kv2 import (
+        fold_5 as mc_ch_in_11k_f5,
+    )
+    from ptbench.configs.datasets.mc_ch_in_11kv2 import (
+        fold_5_rgb as mc_ch_in_11k_f5_rgb,
+    )
+    from ptbench.configs.datasets.mc_ch_in_11kv2 import (
+        fold_6 as mc_ch_in_11k_f6,
+    )
+    from ptbench.configs.datasets.mc_ch_in_11kv2 import (
+        fold_6_rgb as mc_ch_in_11k_f6_rgb,
+    )
+    from ptbench.configs.datasets.mc_ch_in_11kv2 import (
+        fold_7 as mc_ch_in_11k_f7,
+    )
+    from ptbench.configs.datasets.mc_ch_in_11kv2 import (
+        fold_7_rgb as mc_ch_in_11k_f7_rgb,
+    )
+    from ptbench.configs.datasets.mc_ch_in_11kv2 import (
+        fold_8 as mc_ch_in_11k_f8,
+    )
+    from ptbench.configs.datasets.mc_ch_in_11kv2 import (
+        fold_8_rgb as mc_ch_in_11k_f8_rgb,
+    )
+    from ptbench.configs.datasets.mc_ch_in_11kv2 import (
+        fold_9 as mc_ch_in_11k_f9,
+    )
+    from ptbench.configs.datasets.mc_ch_in_11kv2 import (
+        fold_9_rgb as mc_ch_in_11k_f9_rgb,
+    )
+    from ptbench.configs.datasets.montgomery import default as mc
+    from ptbench.configs.datasets.montgomery import fold_0 as mc_f0
+    from ptbench.configs.datasets.montgomery import fold_0_rgb as mc_f0_rgb
+    from ptbench.configs.datasets.montgomery import fold_1 as mc_f1
+    from ptbench.configs.datasets.montgomery import fold_1_rgb as mc_f1_rgb
+    from ptbench.configs.datasets.montgomery import fold_2 as mc_f2
+    from ptbench.configs.datasets.montgomery import fold_2_rgb as mc_f2_rgb
+    from ptbench.configs.datasets.montgomery import fold_3 as mc_f3
+    from ptbench.configs.datasets.montgomery import fold_3_rgb as mc_f3_rgb
+    from ptbench.configs.datasets.montgomery import fold_4 as mc_f4
+    from ptbench.configs.datasets.montgomery import fold_4_rgb as mc_f4_rgb
+    from ptbench.configs.datasets.montgomery import fold_5 as mc_f5
+    from ptbench.configs.datasets.montgomery import fold_5_rgb as mc_f5_rgb
+    from ptbench.configs.datasets.montgomery import fold_6 as mc_f6
+    from ptbench.configs.datasets.montgomery import fold_6_rgb as mc_f6_rgb
+    from ptbench.configs.datasets.montgomery import fold_7 as mc_f7
+    from ptbench.configs.datasets.montgomery import fold_7_rgb as mc_f7_rgb
+    from ptbench.configs.datasets.montgomery import fold_8 as mc_f8
+    from ptbench.configs.datasets.montgomery import fold_8_rgb as mc_f8_rgb
+    from ptbench.configs.datasets.montgomery import fold_9 as mc_f9
+    from ptbench.configs.datasets.montgomery import fold_9_rgb as mc_f9_rgb
+    from ptbench.configs.datasets.shenzhen import default as ch
+    from ptbench.configs.datasets.shenzhen import fold_0 as ch_f0
+    from ptbench.configs.datasets.shenzhen import fold_0_rgb as ch_f0_rgb
+    from ptbench.configs.datasets.shenzhen import fold_1 as ch_f1
+    from ptbench.configs.datasets.shenzhen import fold_1_rgb as ch_f1_rgb
+    from ptbench.configs.datasets.shenzhen import fold_2 as ch_f2
+    from ptbench.configs.datasets.shenzhen import fold_2_rgb as ch_f2_rgb
+    from ptbench.configs.datasets.shenzhen import fold_3 as ch_f3
+    from ptbench.configs.datasets.shenzhen import fold_3_rgb as ch_f3_rgb
+    from ptbench.configs.datasets.shenzhen import fold_4 as ch_f4
+    from ptbench.configs.datasets.shenzhen import fold_4_rgb as ch_f4_rgb
+    from ptbench.configs.datasets.shenzhen import fold_5 as ch_f5
+    from ptbench.configs.datasets.shenzhen import fold_5_rgb as ch_f5_rgb
+    from ptbench.configs.datasets.shenzhen import fold_6 as ch_f6
+    from ptbench.configs.datasets.shenzhen import fold_6_rgb as ch_f6_rgb
+    from ptbench.configs.datasets.shenzhen import fold_7 as ch_f7
+    from ptbench.configs.datasets.shenzhen import fold_7_rgb as ch_f7_rgb
+    from ptbench.configs.datasets.shenzhen import fold_8 as ch_f8
+    from ptbench.configs.datasets.shenzhen import fold_8_rgb as ch_f8_rgb
+    from ptbench.configs.datasets.shenzhen import fold_9 as ch_f9
+    from ptbench.configs.datasets.shenzhen import fold_9_rgb as ch_f9_rgb
+    from ptbench.configs.datasets.tbx11k_simplified_v2 import default as tbx11k
+    from ptbench.configs.datasets.tbx11k_simplified_v2 import (
+        fold_0 as tbx11k_f0,
+    )
+    from ptbench.configs.datasets.tbx11k_simplified_v2 import (
+        fold_0_rgb as tbx11k_f0_rgb,
+    )
+    from ptbench.configs.datasets.tbx11k_simplified_v2 import (
+        fold_1 as tbx11k_f1,
+    )
+    from ptbench.configs.datasets.tbx11k_simplified_v2 import (
+        fold_1_rgb as tbx11k_f1_rgb,
+    )
+    from ptbench.configs.datasets.tbx11k_simplified_v2 import (
+        fold_2 as tbx11k_f2,
+    )
+    from ptbench.configs.datasets.tbx11k_simplified_v2 import (
+        fold_2_rgb as tbx11k_f2_rgb,
+    )
+    from ptbench.configs.datasets.tbx11k_simplified_v2 import (
+        fold_3 as tbx11k_f3,
+    )
+    from ptbench.configs.datasets.tbx11k_simplified_v2 import (
+        fold_3_rgb as tbx11k_f3_rgb,
+    )
+    from ptbench.configs.datasets.tbx11k_simplified_v2 import (
+        fold_4 as tbx11k_f4,
+    )
+    from ptbench.configs.datasets.tbx11k_simplified_v2 import (
+        fold_4_rgb as tbx11k_f4_rgb,
+    )
+    from ptbench.configs.datasets.tbx11k_simplified_v2 import (
+        fold_5 as tbx11k_f5,
+    )
+    from ptbench.configs.datasets.tbx11k_simplified_v2 import (
+        fold_5_rgb as tbx11k_f5_rgb,
+    )
+    from ptbench.configs.datasets.tbx11k_simplified_v2 import (
+        fold_6 as tbx11k_f6,
+    )
+    from ptbench.configs.datasets.tbx11k_simplified_v2 import (
+        fold_6_rgb as tbx11k_f6_rgb,
+    )
+    from ptbench.configs.datasets.tbx11k_simplified_v2 import (
+        fold_7 as tbx11k_f7,
+    )
+    from ptbench.configs.datasets.tbx11k_simplified_v2 import (
+        fold_7_rgb as tbx11k_f7_rgb,
+    )
+    from ptbench.configs.datasets.tbx11k_simplified_v2 import (
+        fold_8 as tbx11k_f8,
+    )
+    from ptbench.configs.datasets.tbx11k_simplified_v2 import (
+        fold_8_rgb as tbx11k_f8_rgb,
+    )
+    from ptbench.configs.datasets.tbx11k_simplified_v2 import (
+        fold_9 as tbx11k_f9,
+    )
+    from ptbench.configs.datasets.tbx11k_simplified_v2 import (
+        fold_9_rgb as tbx11k_f9_rgb,
+    )
+
+    # Default protocol
+    mc_ch_in_11k_dataset = mc_ch_in_11k.dataset
+    assert isinstance(mc_ch_in_11k_dataset, dict)
+
+    mc_dataset = mc.dataset
+    ch_dataset = ch.dataset
+    in_dataset = indian.dataset
+    tbx11k_dataset = tbx11k.dataset
+
+    assert "train" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["train"]) == len(mc_dataset["train"]) + len(
+        ch_dataset["train"]
+    ) + len(in_dataset["train"]) + len(tbx11k_dataset["train"])
+
+    assert "validation" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["test"]) == len(mc_dataset["test"]) + len(
+        ch_dataset["test"]
+    ) + len(in_dataset["test"]) + len(tbx11k_dataset["test"])
+
+    # Fold 0
+    mc_ch_in_11k_dataset = mc_ch_in_11k_f0.dataset
+    assert isinstance(mc_ch_in_11k_dataset, dict)
+
+    mc_dataset = mc_f0.dataset
+    ch_dataset = ch_f0.dataset
+    in_dataset = indian_f0.dataset
+    tbx11k_dataset = tbx11k_f0.dataset
+
+    assert "train" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["train"]) == len(mc_dataset["train"]) + len(
+        ch_dataset["train"]
+    ) + len(in_dataset["train"]) + len(tbx11k_dataset["train"])
+
+    assert "validation" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["test"]) == len(mc_dataset["test"]) + len(
+        ch_dataset["test"]
+    ) + len(in_dataset["test"]) + len(tbx11k_dataset["test"])
+
+    # Fold 1
+    mc_ch_in_11k_dataset = mc_ch_in_11k_f1.dataset
+    assert isinstance(mc_ch_in_11k_dataset, dict)
+
+    mc_dataset = mc_f1.dataset
+    ch_dataset = ch_f1.dataset
+    in_dataset = indian_f1.dataset
+    tbx11k_dataset = tbx11k_f1.dataset
+
+    assert "train" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["train"]) == len(mc_dataset["train"]) + len(
+        ch_dataset["train"]
+    ) + len(in_dataset["train"]) + len(tbx11k_dataset["train"])
+
+    assert "validation" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["test"]) == len(mc_dataset["test"]) + len(
+        ch_dataset["test"]
+    ) + len(in_dataset["test"]) + len(tbx11k_dataset["test"])
+
+    # Fold 2
+    mc_ch_in_11k_dataset = mc_ch_in_11k_f2.dataset
+    assert isinstance(mc_ch_in_11k_dataset, dict)
+
+    mc_dataset = mc_f2.dataset
+    ch_dataset = ch_f2.dataset
+    in_dataset = indian_f2.dataset
+    tbx11k_dataset = tbx11k_f2.dataset
+
+    assert "train" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["train"]) == len(mc_dataset["train"]) + len(
+        ch_dataset["train"]
+    ) + len(in_dataset["train"]) + len(tbx11k_dataset["train"])
+
+    assert "validation" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["test"]) == len(mc_dataset["test"]) + len(
+        ch_dataset["test"]
+    ) + len(in_dataset["test"]) + len(tbx11k_dataset["test"])
+
+    # Fold 3
+    mc_ch_in_11k_dataset = mc_ch_in_11k_f3.dataset
+    assert isinstance(mc_ch_in_11k_dataset, dict)
+
+    mc_dataset = mc_f3.dataset
+    ch_dataset = ch_f3.dataset
+    in_dataset = indian_f3.dataset
+    tbx11k_dataset = tbx11k_f3.dataset
+
+    assert "train" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["train"]) == len(mc_dataset["train"]) + len(
+        ch_dataset["train"]
+    ) + len(in_dataset["train"]) + len(tbx11k_dataset["train"])
+
+    assert "validation" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["test"]) == len(mc_dataset["test"]) + len(
+        ch_dataset["test"]
+    ) + len(in_dataset["test"]) + len(tbx11k_dataset["test"])
+
+    # Fold 4
+    mc_ch_in_11k_dataset = mc_ch_in_11k_f4.dataset
+    assert isinstance(mc_ch_in_11k_dataset, dict)
+
+    mc_dataset = mc_f4.dataset
+    ch_dataset = ch_f4.dataset
+    in_dataset = indian_f4.dataset
+    tbx11k_dataset = tbx11k_f4.dataset
+
+    assert "train" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["train"]) == len(mc_dataset["train"]) + len(
+        ch_dataset["train"]
+    ) + len(in_dataset["train"]) + len(tbx11k_dataset["train"])
+
+    assert "validation" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["test"]) == len(mc_dataset["test"]) + len(
+        ch_dataset["test"]
+    ) + len(in_dataset["test"]) + len(tbx11k_dataset["test"])
+
+    # Fold 5
+    mc_ch_in_11k_dataset = mc_ch_in_11k_f5.dataset
+    assert isinstance(mc_ch_in_11k_dataset, dict)
+
+    mc_dataset = mc_f5.dataset
+    ch_dataset = ch_f5.dataset
+    in_dataset = indian_f5.dataset
+    tbx11k_dataset = tbx11k_f5.dataset
+
+    assert "train" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["train"]) == len(mc_dataset["train"]) + len(
+        ch_dataset["train"]
+    ) + len(in_dataset["train"]) + len(tbx11k_dataset["train"])
+
+    assert "validation" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["test"]) == len(mc_dataset["test"]) + len(
+        ch_dataset["test"]
+    ) + len(in_dataset["test"]) + len(tbx11k_dataset["test"])
+
+    # Fold 6
+    mc_ch_in_11k_dataset = mc_ch_in_11k_f6.dataset
+    assert isinstance(mc_ch_in_11k_dataset, dict)
+
+    mc_dataset = mc_f6.dataset
+    ch_dataset = ch_f6.dataset
+    in_dataset = indian_f6.dataset
+    tbx11k_dataset = tbx11k_f6.dataset
+
+    assert "train" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["train"]) == len(mc_dataset["train"]) + len(
+        ch_dataset["train"]
+    ) + len(in_dataset["train"]) + len(tbx11k_dataset["train"])
+
+    assert "validation" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["test"]) == len(mc_dataset["test"]) + len(
+        ch_dataset["test"]
+    ) + len(in_dataset["test"]) + len(tbx11k_dataset["test"])
+
+    # Fold 7
+    mc_ch_in_11k_dataset = mc_ch_in_11k_f7.dataset
+    assert isinstance(mc_ch_in_11k_dataset, dict)
+
+    mc_dataset = mc_f7.dataset
+    ch_dataset = ch_f7.dataset
+    in_dataset = indian_f7.dataset
+    tbx11k_dataset = tbx11k_f7.dataset
+
+    assert "train" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["train"]) == len(mc_dataset["train"]) + len(
+        ch_dataset["train"]
+    ) + len(in_dataset["train"]) + len(tbx11k_dataset["train"])
+
+    assert "validation" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["test"]) == len(mc_dataset["test"]) + len(
+        ch_dataset["test"]
+    ) + len(in_dataset["test"]) + len(tbx11k_dataset["test"])
+
+    # Fold 8
+    mc_ch_in_11k_dataset = mc_ch_in_11k_f8.dataset
+    assert isinstance(mc_ch_in_11k_dataset, dict)
+
+    mc_dataset = mc_f8.dataset
+    ch_dataset = ch_f8.dataset
+    in_dataset = indian_f8.dataset
+    tbx11k_dataset = tbx11k_f8.dataset
+
+    assert "train" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["train"]) == len(mc_dataset["train"]) + len(
+        ch_dataset["train"]
+    ) + len(in_dataset["train"]) + len(tbx11k_dataset["train"])
+
+    assert "validation" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["test"]) == len(mc_dataset["test"]) + len(
+        ch_dataset["test"]
+    ) + len(in_dataset["test"]) + len(tbx11k_dataset["test"])
+
+    # Fold 9
+    mc_ch_in_11k_dataset = mc_ch_in_11k_f9.dataset
+    assert isinstance(mc_ch_in_11k_dataset, dict)
+
+    mc_dataset = mc_f9.dataset
+    ch_dataset = ch_f9.dataset
+    in_dataset = indian_f9.dataset
+    tbx11k_dataset = tbx11k_f9.dataset
+
+    assert "train" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["train"]) == len(mc_dataset["train"]) + len(
+        ch_dataset["train"]
+    ) + len(in_dataset["train"]) + len(tbx11k_dataset["train"])
+
+    assert "validation" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["test"]) == len(mc_dataset["test"]) + len(
+        ch_dataset["test"]
+    ) + len(in_dataset["test"]) + len(tbx11k_dataset["test"])
+
+    # Fold 0, RGB
+    mc_ch_in_11k_dataset = mc_ch_in_11k_f0_rgb.dataset
+    assert isinstance(mc_ch_in_11k_dataset, dict)
+
+    mc_dataset = mc_f0_rgb.dataset
+    ch_dataset = ch_f0_rgb.dataset
+    in_dataset = indian_f0_rgb.dataset
+    tbx11k_dataset = tbx11k_f0_rgb.dataset
+
+    assert "train" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["train"]) == len(mc_dataset["train"]) + len(
+        ch_dataset["train"]
+    ) + len(in_dataset["train"]) + len(tbx11k_dataset["train"])
+
+    assert "validation" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["test"]) == len(mc_dataset["test"]) + len(
+        ch_dataset["test"]
+    ) + len(in_dataset["test"]) + len(tbx11k_dataset["test"])
+
+    # Fold 1, RGB
+    mc_ch_in_11k_dataset = mc_ch_in_11k_f1_rgb.dataset
+    assert isinstance(mc_ch_in_11k_dataset, dict)
+
+    mc_dataset = mc_f1_rgb.dataset
+    ch_dataset = ch_f1_rgb.dataset
+    in_dataset = indian_f1_rgb.dataset
+    tbx11k_dataset = tbx11k_f1_rgb.dataset
+
+    assert "train" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["train"]) == len(mc_dataset["train"]) + len(
+        ch_dataset["train"]
+    ) + len(in_dataset["train"]) + len(tbx11k_dataset["train"])
+
+    assert "validation" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["test"]) == len(mc_dataset["test"]) + len(
+        ch_dataset["test"]
+    ) + len(in_dataset["test"]) + len(tbx11k_dataset["test"])
+
+    # Fold 2, RGB
+    mc_ch_in_11k_dataset = mc_ch_in_11k_f2_rgb.dataset
+    assert isinstance(mc_ch_in_11k_dataset, dict)
+
+    mc_dataset = mc_f2_rgb.dataset
+    ch_dataset = ch_f2_rgb.dataset
+    in_dataset = indian_f2_rgb.dataset
+    tbx11k_dataset = tbx11k_f2_rgb.dataset
+
+    assert "train" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["train"]) == len(mc_dataset["train"]) + len(
+        ch_dataset["train"]
+    ) + len(in_dataset["train"]) + len(tbx11k_dataset["train"])
+
+    assert "validation" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["test"]) == len(mc_dataset["test"]) + len(
+        ch_dataset["test"]
+    ) + len(in_dataset["test"]) + len(tbx11k_dataset["test"])
+
+    # Fold 3, RGB
+    mc_ch_in_11k_dataset = mc_ch_in_11k_f3_rgb.dataset
+    assert isinstance(mc_ch_in_11k_dataset, dict)
+
+    mc_dataset = mc_f3_rgb.dataset
+    ch_dataset = ch_f3_rgb.dataset
+    in_dataset = indian_f3_rgb.dataset
+    tbx11k_dataset = tbx11k_f3_rgb.dataset
+
+    assert "train" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["train"]) == len(mc_dataset["train"]) + len(
+        ch_dataset["train"]
+    ) + len(in_dataset["train"]) + len(tbx11k_dataset["train"])
+
+    assert "validation" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["test"]) == len(mc_dataset["test"]) + len(
+        ch_dataset["test"]
+    ) + len(in_dataset["test"]) + len(tbx11k_dataset["test"])
+
+    # Fold 4, RGB
+    mc_ch_in_11k_dataset = mc_ch_in_11k_f4_rgb.dataset
+    assert isinstance(mc_ch_in_11k_dataset, dict)
+
+    mc_dataset = mc_f4_rgb.dataset
+    ch_dataset = ch_f4_rgb.dataset
+    in_dataset = indian_f4_rgb.dataset
+    tbx11k_dataset = tbx11k_f4_rgb.dataset
+
+    assert "train" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["train"]) == len(mc_dataset["train"]) + len(
+        ch_dataset["train"]
+    ) + len(in_dataset["train"]) + len(tbx11k_dataset["train"])
+
+    assert "validation" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["test"]) == len(mc_dataset["test"]) + len(
+        ch_dataset["test"]
+    ) + len(in_dataset["test"]) + len(tbx11k_dataset["test"])
+
+    # Fold 5, RGB
+    mc_ch_in_11k_dataset = mc_ch_in_11k_f5_rgb.dataset
+    assert isinstance(mc_ch_in_11k_dataset, dict)
+
+    mc_dataset = mc_f5_rgb.dataset
+    ch_dataset = ch_f5_rgb.dataset
+    in_dataset = indian_f5_rgb.dataset
+    tbx11k_dataset = tbx11k_f5_rgb.dataset
+
+    assert "train" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["train"]) == len(mc_dataset["train"]) + len(
+        ch_dataset["train"]
+    ) + len(in_dataset["train"]) + len(tbx11k_dataset["train"])
+
+    assert "validation" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["test"]) == len(mc_dataset["test"]) + len(
+        ch_dataset["test"]
+    ) + len(in_dataset["test"]) + len(tbx11k_dataset["test"])
+
+    # Fold 6, RGB
+    mc_ch_in_11k_dataset = mc_ch_in_11k_f6_rgb.dataset
+    assert isinstance(mc_ch_in_11k_dataset, dict)
+
+    mc_dataset = mc_f6_rgb.dataset
+    ch_dataset = ch_f6_rgb.dataset
+    in_dataset = indian_f6_rgb.dataset
+    tbx11k_dataset = tbx11k_f6_rgb.dataset
+
+    assert "train" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["train"]) == len(mc_dataset["train"]) + len(
+        ch_dataset["train"]
+    ) + len(in_dataset["train"]) + len(tbx11k_dataset["train"])
+
+    assert "validation" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["test"]) == len(mc_dataset["test"]) + len(
+        ch_dataset["test"]
+    ) + len(in_dataset["test"]) + len(tbx11k_dataset["test"])
+
+    # Fold 7, RGB
+    mc_ch_in_11k_dataset = mc_ch_in_11k_f7_rgb.dataset
+    assert isinstance(mc_ch_in_11k_dataset, dict)
+
+    mc_dataset = mc_f7_rgb.dataset
+    ch_dataset = ch_f7_rgb.dataset
+    in_dataset = indian_f7_rgb.dataset
+    tbx11k_dataset = tbx11k_f7_rgb.dataset
+
+    assert "train" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["train"]) == len(mc_dataset["train"]) + len(
+        ch_dataset["train"]
+    ) + len(in_dataset["train"]) + len(tbx11k_dataset["train"])
+
+    assert "validation" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["test"]) == len(mc_dataset["test"]) + len(
+        ch_dataset["test"]
+    ) + len(in_dataset["test"]) + len(tbx11k_dataset["test"])
+
+    # Fold 8, RGB
+    mc_ch_in_11k_dataset = mc_ch_in_11k_f8_rgb.dataset
+    assert isinstance(mc_ch_in_11k_dataset, dict)
+
+    mc_dataset = mc_f8_rgb.dataset
+    ch_dataset = ch_f8_rgb.dataset
+    in_dataset = indian_f8_rgb.dataset
+    tbx11k_dataset = tbx11k_f8_rgb.dataset
+
+    assert "train" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["train"]) == len(mc_dataset["train"]) + len(
+        ch_dataset["train"]
+    ) + len(in_dataset["train"]) + len(tbx11k_dataset["train"])
+
+    assert "validation" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["test"]) == len(mc_dataset["test"]) + len(
+        ch_dataset["test"]
+    ) + len(in_dataset["test"]) + len(tbx11k_dataset["test"])
+
+    # Fold 9, RGB
+    mc_ch_in_11k_dataset = mc_ch_in_11k_f9_rgb.dataset
+    assert isinstance(mc_ch_in_11k_dataset, dict)
+
+    mc_dataset = mc_f9_rgb.dataset
+    ch_dataset = ch_f9_rgb.dataset
+    in_dataset = indian_f9_rgb.dataset
+    tbx11k_dataset = tbx11k_f9_rgb.dataset
+
+    assert "train" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["train"]) == len(mc_dataset["train"]) + len(
+        ch_dataset["train"]
+    ) + len(in_dataset["train"]) + len(tbx11k_dataset["train"])
+
+    assert "validation" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_dataset
+    assert len(mc_ch_in_11k_dataset["test"]) == len(mc_dataset["test"]) + len(
+        ch_dataset["test"]
+    ) + len(in_dataset["test"]) + len(tbx11k_dataset["test"])
diff --git a/tests/test_mc_ch_in_11kv2_RS.py b/tests/test_mc_ch_in_11kv2_RS.py
new file mode 100644
index 0000000000000000000000000000000000000000..61f4f003c399a6a4bb82e85359e1fbf2bee3e176
--- /dev/null
+++ b/tests/test_mc_ch_in_11kv2_RS.py
@@ -0,0 +1,440 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""Tests for the aggregated Montgomery-Shenzhen-Indian-tbx11k_simplified_v2
+dataset."""
+
+
+def test_dataset_consistency():
+    from ptbench.configs.datasets.indian_RS import default as indian_RS
+    from ptbench.configs.datasets.indian_RS import fold_0 as indian_f0
+    from ptbench.configs.datasets.indian_RS import fold_1 as indian_f1
+    from ptbench.configs.datasets.indian_RS import fold_2 as indian_f2
+    from ptbench.configs.datasets.indian_RS import fold_3 as indian_f3
+    from ptbench.configs.datasets.indian_RS import fold_4 as indian_f4
+    from ptbench.configs.datasets.indian_RS import fold_5 as indian_f5
+    from ptbench.configs.datasets.indian_RS import fold_6 as indian_f6
+    from ptbench.configs.datasets.indian_RS import fold_7 as indian_f7
+    from ptbench.configs.datasets.indian_RS import fold_8 as indian_f8
+    from ptbench.configs.datasets.indian_RS import fold_9 as indian_f9
+    from ptbench.configs.datasets.mc_ch_in_11kv2_RS import (
+        default as mc_ch_in_11k_RS,
+    )
+    from ptbench.configs.datasets.mc_ch_in_11kv2_RS import (
+        fold_0 as mc_ch_in_11k_f0,
+    )
+    from ptbench.configs.datasets.mc_ch_in_11kv2_RS import (
+        fold_1 as mc_ch_in_11k_f1,
+    )
+    from ptbench.configs.datasets.mc_ch_in_11kv2_RS import (
+        fold_2 as mc_ch_in_11k_f2,
+    )
+    from ptbench.configs.datasets.mc_ch_in_11kv2_RS import (
+        fold_3 as mc_ch_in_11k_f3,
+    )
+    from ptbench.configs.datasets.mc_ch_in_11kv2_RS import (
+        fold_4 as mc_ch_in_11k_f4,
+    )
+    from ptbench.configs.datasets.mc_ch_in_11kv2_RS import (
+        fold_5 as mc_ch_in_11k_f5,
+    )
+    from ptbench.configs.datasets.mc_ch_in_11kv2_RS import (
+        fold_6 as mc_ch_in_11k_f6,
+    )
+    from ptbench.configs.datasets.mc_ch_in_11kv2_RS import (
+        fold_7 as mc_ch_in_11k_f7,
+    )
+    from ptbench.configs.datasets.mc_ch_in_11kv2_RS import (
+        fold_8 as mc_ch_in_11k_f8,
+    )
+    from ptbench.configs.datasets.mc_ch_in_11kv2_RS import (
+        fold_9 as mc_ch_in_11k_f9,
+    )
+    from ptbench.configs.datasets.montgomery_RS import default as mc_RS
+    from ptbench.configs.datasets.montgomery_RS import fold_0 as mc_f0
+    from ptbench.configs.datasets.montgomery_RS import fold_1 as mc_f1
+    from ptbench.configs.datasets.montgomery_RS import fold_2 as mc_f2
+    from ptbench.configs.datasets.montgomery_RS import fold_3 as mc_f3
+    from ptbench.configs.datasets.montgomery_RS import fold_4 as mc_f4
+    from ptbench.configs.datasets.montgomery_RS import fold_5 as mc_f5
+    from ptbench.configs.datasets.montgomery_RS import fold_6 as mc_f6
+    from ptbench.configs.datasets.montgomery_RS import fold_7 as mc_f7
+    from ptbench.configs.datasets.montgomery_RS import fold_8 as mc_f8
+    from ptbench.configs.datasets.montgomery_RS import fold_9 as mc_f9
+    from ptbench.configs.datasets.shenzhen_RS import default as ch_RS
+    from ptbench.configs.datasets.shenzhen_RS import fold_0 as ch_f0
+    from ptbench.configs.datasets.shenzhen_RS import fold_1 as ch_f1
+    from ptbench.configs.datasets.shenzhen_RS import fold_2 as ch_f2
+    from ptbench.configs.datasets.shenzhen_RS import fold_3 as ch_f3
+    from ptbench.configs.datasets.shenzhen_RS import fold_4 as ch_f4
+    from ptbench.configs.datasets.shenzhen_RS import fold_5 as ch_f5
+    from ptbench.configs.datasets.shenzhen_RS import fold_6 as ch_f6
+    from ptbench.configs.datasets.shenzhen_RS import fold_7 as ch_f7
+    from ptbench.configs.datasets.shenzhen_RS import fold_8 as ch_f8
+    from ptbench.configs.datasets.shenzhen_RS import fold_9 as ch_f9
+    from ptbench.configs.datasets.tbx11k_simplified_v2_RS import (
+        default as tbx11k_RS,
+    )
+    from ptbench.configs.datasets.tbx11k_simplified_v2_RS import (
+        fold_0 as tbx11k_f0,
+    )
+    from ptbench.configs.datasets.tbx11k_simplified_v2_RS import (
+        fold_1 as tbx11k_f1,
+    )
+    from ptbench.configs.datasets.tbx11k_simplified_v2_RS import (
+        fold_2 as tbx11k_f2,
+    )
+    from ptbench.configs.datasets.tbx11k_simplified_v2_RS import (
+        fold_3 as tbx11k_f3,
+    )
+    from ptbench.configs.datasets.tbx11k_simplified_v2_RS import (
+        fold_4 as tbx11k_f4,
+    )
+    from ptbench.configs.datasets.tbx11k_simplified_v2_RS import (
+        fold_5 as tbx11k_f5,
+    )
+    from ptbench.configs.datasets.tbx11k_simplified_v2_RS import (
+        fold_6 as tbx11k_f6,
+    )
+    from ptbench.configs.datasets.tbx11k_simplified_v2_RS import (
+        fold_7 as tbx11k_f7,
+    )
+    from ptbench.configs.datasets.tbx11k_simplified_v2_RS import (
+        fold_8 as tbx11k_f8,
+    )
+    from ptbench.configs.datasets.tbx11k_simplified_v2_RS import (
+        fold_9 as tbx11k_f9,
+    )
+
+    # Default protocol
+    mc_ch_in_11k_RS_dataset = mc_ch_in_11k_RS.dataset
+    assert isinstance(mc_ch_in_11k_RS_dataset, dict)
+
+    mc_RS_dataset = mc_RS.dataset
+    ch_RS_dataset = ch_RS.dataset
+    in_RS_dataset = indian_RS.dataset
+    tbx11k_RS_dataset = tbx11k_RS.dataset
+
+    assert "train" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["train"]) == len(
+        mc_RS_dataset["train"]
+    ) + len(ch_RS_dataset["train"]) + len(in_RS_dataset["train"]) + len(
+        tbx11k_RS_dataset["train"]
+    )
+
+    assert "validation" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["validation"]) == len(
+        mc_RS_dataset["validation"]
+    ) + len(ch_RS_dataset["validation"]) + len(
+        in_RS_dataset["validation"]
+    ) + len(
+        tbx11k_RS_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["test"]) == len(
+        mc_RS_dataset["test"]
+    ) + len(ch_RS_dataset["test"]) + len(in_RS_dataset["test"]) + len(
+        tbx11k_RS_dataset["test"]
+    )
+
+    # Fold 0
+    mc_ch_in_11k_RS_dataset = mc_ch_in_11k_f0.dataset
+    assert isinstance(mc_ch_in_11k_RS_dataset, dict)
+
+    mc_dataset = mc_f0.dataset
+    ch_dataset = ch_f0.dataset
+    in_dataset = indian_f0.dataset
+    tbx11k_dataset = tbx11k_f0.dataset
+
+    assert "train" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["train"]) == len(
+        mc_dataset["train"]
+    ) + len(ch_dataset["train"]) + len(in_dataset["train"]) + len(
+        tbx11k_dataset["train"]
+    )
+
+    assert "validation" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["test"]) == len(
+        mc_dataset["test"]
+    ) + len(ch_dataset["test"]) + len(in_dataset["test"]) + len(
+        tbx11k_dataset["test"]
+    )
+
+    # Fold 1
+    mc_ch_in_11k_RS_dataset = mc_ch_in_11k_f1.dataset
+    assert isinstance(mc_ch_in_11k_RS_dataset, dict)
+
+    mc_dataset = mc_f1.dataset
+    ch_dataset = ch_f1.dataset
+    in_dataset = indian_f1.dataset
+    tbx11k_dataset = tbx11k_f1.dataset
+
+    assert "train" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["train"]) == len(
+        mc_dataset["train"]
+    ) + len(ch_dataset["train"]) + len(in_dataset["train"]) + len(
+        tbx11k_dataset["train"]
+    )
+
+    assert "validation" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["test"]) == len(
+        mc_dataset["test"]
+    ) + len(ch_dataset["test"]) + len(in_dataset["test"]) + len(
+        tbx11k_dataset["test"]
+    )
+
+    # Fold 2
+    mc_ch_in_11k_RS_dataset = mc_ch_in_11k_f2.dataset
+    assert isinstance(mc_ch_in_11k_RS_dataset, dict)
+
+    mc_dataset = mc_f2.dataset
+    ch_dataset = ch_f2.dataset
+    in_dataset = indian_f2.dataset
+    tbx11k_dataset = tbx11k_f2.dataset
+
+    assert "train" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["train"]) == len(
+        mc_dataset["train"]
+    ) + len(ch_dataset["train"]) + len(in_dataset["train"]) + len(
+        tbx11k_dataset["train"]
+    )
+
+    assert "validation" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["test"]) == len(
+        mc_dataset["test"]
+    ) + len(ch_dataset["test"]) + len(in_dataset["test"]) + len(
+        tbx11k_dataset["test"]
+    )
+
+    # Fold 3
+    mc_ch_in_11k_RS_dataset = mc_ch_in_11k_f3.dataset
+    assert isinstance(mc_ch_in_11k_RS_dataset, dict)
+
+    mc_dataset = mc_f3.dataset
+    ch_dataset = ch_f3.dataset
+    in_dataset = indian_f3.dataset
+    tbx11k_dataset = tbx11k_f3.dataset
+
+    assert "train" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["train"]) == len(
+        mc_dataset["train"]
+    ) + len(ch_dataset["train"]) + len(in_dataset["train"]) + len(
+        tbx11k_dataset["train"]
+    )
+
+    assert "validation" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["test"]) == len(
+        mc_dataset["test"]
+    ) + len(ch_dataset["test"]) + len(in_dataset["test"]) + len(
+        tbx11k_dataset["test"]
+    )
+
+    # Fold 4
+    mc_ch_in_11k_RS_dataset = mc_ch_in_11k_f4.dataset
+    assert isinstance(mc_ch_in_11k_RS_dataset, dict)
+
+    mc_dataset = mc_f4.dataset
+    ch_dataset = ch_f4.dataset
+    in_dataset = indian_f4.dataset
+    tbx11k_dataset = tbx11k_f4.dataset
+
+    assert "train" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["train"]) == len(
+        mc_dataset["train"]
+    ) + len(ch_dataset["train"]) + len(in_dataset["train"]) + len(
+        tbx11k_dataset["train"]
+    )
+
+    assert "validation" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["test"]) == len(
+        mc_dataset["test"]
+    ) + len(ch_dataset["test"]) + len(in_dataset["test"]) + len(
+        tbx11k_dataset["test"]
+    )
+
+    # Fold 5
+    mc_ch_in_11k_RS_dataset = mc_ch_in_11k_f5.dataset
+    assert isinstance(mc_ch_in_11k_RS_dataset, dict)
+
+    mc_dataset = mc_f5.dataset
+    ch_dataset = ch_f5.dataset
+    in_dataset = indian_f5.dataset
+    tbx11k_dataset = tbx11k_f5.dataset
+
+    assert "train" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["train"]) == len(
+        mc_dataset["train"]
+    ) + len(ch_dataset["train"]) + len(in_dataset["train"]) + len(
+        tbx11k_dataset["train"]
+    )
+
+    assert "validation" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["test"]) == len(
+        mc_dataset["test"]
+    ) + len(ch_dataset["test"]) + len(in_dataset["test"]) + len(
+        tbx11k_dataset["test"]
+    )
+
+    # Fold 6
+    mc_ch_in_11k_RS_dataset = mc_ch_in_11k_f6.dataset
+    assert isinstance(mc_ch_in_11k_RS_dataset, dict)
+
+    mc_dataset = mc_f6.dataset
+    ch_dataset = ch_f6.dataset
+    in_dataset = indian_f6.dataset
+    tbx11k_dataset = tbx11k_f6.dataset
+
+    assert "train" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["train"]) == len(
+        mc_dataset["train"]
+    ) + len(ch_dataset["train"]) + len(in_dataset["train"]) + len(
+        tbx11k_dataset["train"]
+    )
+
+    assert "validation" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["test"]) == len(
+        mc_dataset["test"]
+    ) + len(ch_dataset["test"]) + len(in_dataset["test"]) + len(
+        tbx11k_dataset["test"]
+    )
+
+    # Fold 7
+    mc_ch_in_11k_RS_dataset = mc_ch_in_11k_f7.dataset
+    assert isinstance(mc_ch_in_11k_RS_dataset, dict)
+
+    mc_dataset = mc_f7.dataset
+    ch_dataset = ch_f7.dataset
+    in_dataset = indian_f7.dataset
+    tbx11k_dataset = tbx11k_f7.dataset
+
+    assert "train" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["train"]) == len(
+        mc_dataset["train"]
+    ) + len(ch_dataset["train"]) + len(in_dataset["train"]) + len(
+        tbx11k_dataset["train"]
+    )
+
+    assert "validation" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["test"]) == len(
+        mc_dataset["test"]
+    ) + len(ch_dataset["test"]) + len(in_dataset["test"]) + len(
+        tbx11k_dataset["test"]
+    )
+
+    # Fold 8
+    mc_ch_in_11k_RS_dataset = mc_ch_in_11k_f8.dataset
+    assert isinstance(mc_ch_in_11k_RS_dataset, dict)
+
+    mc_dataset = mc_f8.dataset
+    ch_dataset = ch_f8.dataset
+    in_dataset = indian_f8.dataset
+    tbx11k_dataset = tbx11k_f8.dataset
+
+    assert "train" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["train"]) == len(
+        mc_dataset["train"]
+    ) + len(ch_dataset["train"]) + len(in_dataset["train"]) + len(
+        tbx11k_dataset["train"]
+    )
+
+    assert "validation" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["test"]) == len(
+        mc_dataset["test"]
+    ) + len(ch_dataset["test"]) + len(in_dataset["test"]) + len(
+        tbx11k_dataset["test"]
+    )
+
+    # Fold 9
+    mc_ch_in_11k_RS_dataset = mc_ch_in_11k_f9.dataset
+    assert isinstance(mc_ch_in_11k_RS_dataset, dict)
+
+    mc_dataset = mc_f9.dataset
+    ch_dataset = ch_f9.dataset
+    in_dataset = indian_f9.dataset
+    tbx11k_dataset = tbx11k_f9.dataset
+
+    assert "train" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["train"]) == len(
+        mc_dataset["train"]
+    ) + len(ch_dataset["train"]) + len(in_dataset["train"]) + len(
+        tbx11k_dataset["train"]
+    )
+
+    assert "validation" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["validation"]) == len(
+        mc_dataset["validation"]
+    ) + len(ch_dataset["validation"]) + len(in_dataset["validation"]) + len(
+        tbx11k_dataset["validation"]
+    )
+
+    assert "test" in mc_ch_in_11k_RS_dataset
+    assert len(mc_ch_in_11k_RS_dataset["test"]) == len(
+        mc_dataset["test"]
+    ) + len(ch_dataset["test"]) + len(in_dataset["test"]) + len(
+        tbx11k_dataset["test"]
+    )