From 86fd2f9b431deab661647a5bdb28aa586242d51b Mon Sep 17 00:00:00 2001
From: Andre Anjos <andre.dos.anjos@gmail.com>
Date: Wed, 2 Aug 2023 21:24:35 +0200
Subject: [PATCH] [configs.models_datasets] Delete, move densenet-rs to models
 directory; Update some of the docs

---
 doc/config.rst                                | 147 +++++++-----------
 doc/install.rst                               |  16 +-
 src/ptbench/configs/models/densenet_rs.py     |  24 +++
 .../configs/models_datasets/__init__.py       |   0
 .../configs/models_datasets/densenet_rs.py    |  31 ----
 5 files changed, 88 insertions(+), 130 deletions(-)
 create mode 100644 src/ptbench/configs/models/densenet_rs.py
 delete mode 100644 src/ptbench/configs/models_datasets/__init__.py
 delete mode 100644 src/ptbench/configs/models_datasets/densenet_rs.py

diff --git a/doc/config.rst b/doc/config.rst
index 828bba07..b0774e35 100644
--- a/doc/config.rst
+++ b/doc/config.rst
@@ -8,7 +8,7 @@ Preset Configurations
 ---------------------
 
 This module contains preset configurations for baseline CNN architectures and
-datasets.
+datamodules.
 
 
 Models
@@ -22,114 +22,79 @@ Models
    ptbench.configs.models.alexnet_pretrained
    ptbench.configs.models.densenet
    ptbench.configs.models.densenet_pretrained
+   ptbench.configs.models.densenet_rs
    ptbench.configs.models.logistic_regression
    ptbench.configs.models.pasa
    ptbench.configs.models.signs_to_tb
-   ptbench.configs.models_datasets.densenet_rs
 
 
-.. _ptbench.configs.datasets:
+.. _ptbench.configs.datamodules:
 
-Datasets
-========
+Preset Datamodules
+==================
 
-Datasets include iterative accessors to raw data
-(:ref:`ptbench.setup.datasets`) including data pre-processing and augmentation,
-if applicable.  Use these datasets for training and evaluating your models.
+Datamodules include iterative accessors to raw data
+(:ref:`ptbench.setup.databases`) including data pre-processing to a minimum
+input standard, if applicable.  Use these datamodules for training and evaluating
+your models.
 
 .. autosummary::
-   :toctree: api/configs/datasets
+   :toctree: api/configs/datamodules
    :template: config.rst
 
-   ptbench.configs.datasets.indian.default
-   ptbench.configs.datasets.indian.rgb
-   ptbench.configs.datasets.indian_RS.default
-   ptbench.configs.datasets.mc_ch.default
-   ptbench.configs.datasets.mc_ch.rgb
-   ptbench.configs.datasets.mc_ch_RS.default
-   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
-   ptbench.configs.datasets.montgomery.default
-   ptbench.configs.datasets.montgomery.rgb
-   ptbench.configs.datasets.montgomery_RS.default
-   ptbench.configs.datasets.nih_cxr14_re.cardiomegaly
-   ptbench.configs.datasets.nih_cxr14_re.default
-   ptbench.configs.datasets.nih_cxr14_re_pc.idiap
-   ptbench.configs.datasets.padchest.cardiomegaly_idiap
-   ptbench.configs.datasets.padchest.idiap
-   ptbench.configs.datasets.padchest.no_tb_idiap
-   ptbench.configs.datasets.padchest.tb_idiap
-   ptbench.configs.datasets.padchest.tb_idiap_rgb
-   ptbench.configs.datasets.padchest_RS.tb_idiap
-   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:
-
-Cross-Validation Datasets
-=========================
+   ptbench.data.indian.default
+   ptbench.data.montgomery.default
+   ptbench.data.nih_cxr14.default
+   ptbench.data.padchest.idiap
+   ptbench.data.shenzhen.default
+   ptbench.data.tbx11k.v1_healthy_vs_atb
+   ptbench.data.tbx11k.v2_others_vs_atb
+
+
+.. _ptbench.configs.datamodules.remix:
+
+Remix Datamodules
+=================
+
+We provide some aggregated datamodules to facilitate cross-database development.
+
+.. autosummary::
+   :toctree: api/configs/datamodules
+   :template: config.rst
+
+   ptbench.data.montgomery_shenzhen.default
+   ptbench.data.montgomery_shenzhen_indian.default
+   ptbench.data.montgomery_shenzhen_indian_padchest.default
+   ptbench.data.montgomery_shenzhen_indian_tbx11k.v1_healthy_vs_atb
+   ptbench.data.montgomery_shenzhen_indian_tbx11k.v2_others_vs_atb
+   ptbench.data.nih_cxr14_padchest.idiap
+
+
+.. _ptbench.configs.datamodules.folds:
+
+Cross-validation Datamodules
+============================
 
 We support cross-validation with precise preset folds.  In this section, you
 will find the configuration for the first fold (fold-0) for all supported
-datasets.  Nine other folds are available for every configuration (from 1 to
-9), making up 10 folds per supported dataset.
+datamodules.  Nine other folds are available for every configuration (from 1 to
+9), making up 10 folds per supported datamodule.
 
 
 .. autosummary::
-   :toctree: api/configs/datasets
+   :toctree: api/configs/datamodules
    :template: config.rst
 
-   ptbench.configs.datasets.hivtb.fold_0
-   ptbench.configs.datasets.hivtb.fold_0_rgb
-   ptbench.configs.datasets.hivtb_RS.fold_0
-   ptbench.configs.datasets.indian.fold_0
-   ptbench.configs.datasets.indian.fold_0_rgb
-   ptbench.configs.datasets.indian_RS.fold_0
-   ptbench.configs.datasets.mc_ch.fold_0
-   ptbench.configs.datasets.mc_ch.fold_0_rgb
-   ptbench.configs.datasets.mc_ch_RS.fold_0
-   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
-   ptbench.configs.datasets.shenzhen.fold_0
-   ptbench.configs.datasets.shenzhen.fold_0_rgb
-   ptbench.configs.datasets.shenzhen_RS.fold_0
-   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
-
+   ptbench.data.hivtb.fold_0
+   ptbench.data.indian.fold_0
+   ptbench.data.montgomery.fold_0
+   ptbench.data.montgomery_shenzhen.fold_0
+   ptbench.data.montgomery_shenzhen_indian.fold_0
+   ptbench.data.montgomery_shenzhen_indian_tbx11k.v1_fold_0
+   ptbench.data.montgomery_shenzhen_indian_tbx11k.v2_fold_0
+   ptbench.data.shenzhen.fold_0
+   ptbench.data.tbpoc.fold_0
+   ptbench.data.tbx11k.v1_fold_0
+   ptbench.data.tbx11k.v2_fold_0
 
 .. include:: links.rst
diff --git a/doc/install.rst b/doc/install.rst
index 170f1883..7826c804 100644
--- a/doc/install.rst
+++ b/doc/install.rst
@@ -92,10 +92,10 @@ Here is an example configuration file that may be useful as a starting point:
       ptbench dataset check montgomery
 
 
-.. _ptbench.setup.datasets:
+.. _ptbench.setup.databases:
 
-Supported Datasets
-==================
+Supported Databases
+===================
 
 Here is a list of currently supported datasets in this package, alongside
 notable properties.  Each dataset name is linked to the location where
@@ -103,10 +103,10 @@ raw data can be downloaded.  The list of images in each split is available
 in the source code.
 
 
-.. _ptbench.setup.datasets.tb:
+.. _ptbench.setup.databases.tb:
 
-Tuberculosis datasets
-~~~~~~~~~~~~~~~~~~~~~
+Tuberculosis databases
+~~~~~~~~~~~~~~~~~~~~~~
 
 The following datasets contain only the tuberculosis final diagnosis (0 or 1).
 In addition to the splits presented in the following table, 10 folds
@@ -146,8 +146,8 @@ In addition to the splits presented in the following table, 10 folds
 
 .. _ptbench.setup.datasets.tb+signs:
 
-Tuberculosis multilabel dataset
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Tuberculosis multilabel databases
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 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
diff --git a/src/ptbench/configs/models/densenet_rs.py b/src/ptbench/configs/models/densenet_rs.py
new file mode 100644
index 00000000..18b93f0a
--- /dev/null
+++ b/src/ptbench/configs/models/densenet_rs.py
@@ -0,0 +1,24 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+"""CNN for detecting radiological findings.
+
+A Densenet-121 model for radiological sign detection, using the NIH
+CXR-14 label format (ie. 14 outputs).
+"""
+
+from torch.nn import BCEWithLogitsLoss
+from torch.optim import Adam
+
+from ...data.augmentations import ElasticDeformation
+from ...models.densenet import Densenet
+
+model = Densenet(
+    train_loss=BCEWithLogitsLoss(),
+    validation_loss=BCEWithLogitsLoss(),
+    optimizer_type=Adam,
+    optimizer_arguments=dict(lr=0.0001),
+    augmentation_transforms=[ElasticDeformation(p=0.8)],
+    pretrained=False,
+    num_classes=14,  # number of classes in NIH CXR-14
+)
diff --git a/src/ptbench/configs/models_datasets/__init__.py b/src/ptbench/configs/models_datasets/__init__.py
deleted file mode 100644
index e69de29b..00000000
diff --git a/src/ptbench/configs/models_datasets/densenet_rs.py b/src/ptbench/configs/models_datasets/densenet_rs.py
deleted file mode 100644
index b1ba206b..00000000
--- a/src/ptbench/configs/models_datasets/densenet_rs.py
+++ /dev/null
@@ -1,31 +0,0 @@
-# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-"""CNN for radiological findings detection.
-
-A Densenet121 model for radiological extraction
-"""
-
-from torch import empty
-from torch.nn import BCEWithLogitsLoss
-
-from ...models.densenet_rs import DensenetRS
-
-# Import the default protocol if none is available
-if "dataset" not in locals():
-    from ..datasets.nih_cxr14_re import default
-
-    dataset = default.dataset
-
-# config
-optimizer_configs = {"lr": 1e-4}
-
-# optimizer
-optimizer = "Adam"
-
-# criterion
-criterion = BCEWithLogitsLoss(pos_weight=empty(1))
-criterion_valid = BCEWithLogitsLoss(pos_weight=empty(1))
-
-# model
-model = DensenetRS(criterion, criterion_valid, optimizer, optimizer_configs)
-- 
GitLab