Skip to content
Snippets Groups Projects
Commit 16e22d96 authored by Daniel CARRON's avatar Daniel CARRON :b:
Browse files

Moved padchest configs to data

parent 61fd1bdd
No related branches found
No related tags found
No related merge requests found
......@@ -476,11 +476,11 @@ nih_cxr14_cm = "ptbench.configs.datasets.nih_cxr14_re.cardiomegaly"
# NIH CXR14 / PadChest aggregated dataset
nih_cxr14_pc_idiap = "ptbench.configs.datasets.nih_cxr14_re_pc.idiap"
# PadChest
padchest_idiap = "ptbench.configs.datasets.padchest.idiap"
padchest_tb_idiap = "ptbench.configs.datasets.padchest.tb_idiap"
padchest_no_tb_idiap = "ptbench.configs.datasets.padchest.no_tb_idiap"
padchest_tb_idiap_rgb = "ptbench.configs.datasets.padchest.tb_idiap_rgb"
padchest_cm_idiap = "ptbench.configs.datasets.padchest.cardiomegaly_idiap"
padchest_idiap = "ptbench.data.padchest.idiap"
padchest_tb_idiap = "ptbench.data.padchest.tb_idiap"
padchest_no_tb_idiap = "ptbench.data.padchest.no_tb_idiap"
padchest_tb_idiap_rgb = "ptbench.data.padchest.tb_idiap_rgb"
padchest_cm_idiap = "ptbench.data.padchest.cardiomegaly_idiap"
# extended PadChestTB dataset (with radiological signs)
padchest_tb_idiap_rs = "ptbench.configs.datasets.padchest_RS.tb_idiap"
......
# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
#
# SPDX-License-Identifier: GPL-3.0-or-later
def _maker(protocol, resize_size=512, cc_size=512, RGB=True):
import torchvision.transforms as transforms
from ....data.padchest import dataset as raw
from ....data.transforms import SingleAutoLevel16to8
from .. import make_dataset as mk
post_transforms = []
if not RGB:
post_transforms = [transforms.Lambda(lambda x: x.convert("L"))]
return mk(
[raw.subsets(protocol)],
[
SingleAutoLevel16to8(),
transforms.Resize(resize_size),
transforms.CenterCrop(cc_size),
],
[transforms.RandomHorizontalFlip()],
post_transforms,
)
# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
#
# SPDX-License-Identifier: GPL-3.0-or-later
"""Padchest (idiap protocol) dataset for computer-aided diagnosis.
* See :py:mod:`ptbench.data.padchest` for dataset details
* This configuration resolution: 512 x 512 (default)
"""
from . import _maker
dataset = _maker("idiap")
......@@ -226,6 +226,7 @@ import importlib.resources
import os
from ...utils.rc import load_rc
from .. import make_dataset
from ..dataset import JSONDataset
from ..loader import load_pil, make_delayed
......@@ -252,9 +253,30 @@ def _loader(context, sample):
return make_delayed(sample, _raw_data_loader)
dataset = JSONDataset(
json_dataset = JSONDataset(
protocols=_protocols,
fieldnames=("data", "label"),
loader=_loader,
)
"""Padchest dataset object."""
def _maker(protocol, resize_size=512, cc_size=512, RGB=True):
import torchvision.transforms as transforms
from ..transforms import SingleAutoLevel16to8
post_transforms = []
if not RGB:
post_transforms = [transforms.Lambda(lambda x: x.convert("L"))]
return make_dataset(
[json_dataset.subsets(protocol)],
[
SingleAutoLevel16to8(),
transforms.Resize(resize_size),
transforms.CenterCrop(cc_size),
],
[transforms.RandomHorizontalFlip()],
post_transforms,
)
......@@ -12,6 +12,38 @@ parameters: Label = "Normal", MethodLabel = "Physician", Projection = "PA"
* This configuration resolution: 512 x 512 (default)
"""
from clapper.logging import setup
from .. import return_subsets
from ..base_datamodule import BaseDataModule
from . import _maker
dataset = _maker("cardiomegaly_idiap", RGB=False)
logger = setup(__name__.split(".")[0], format="%(levelname)s: %(message)s")
class DefaultModule(BaseDataModule):
def __init__(
self,
train_batch_size=1,
predict_batch_size=1,
drop_incomplete_batch=False,
multiproc_kwargs=None,
):
super().__init__(
train_batch_size=train_batch_size,
predict_batch_size=predict_batch_size,
drop_incomplete_batch=drop_incomplete_batch,
multiproc_kwargs=multiproc_kwargs,
)
def setup(self, stage: str):
self.dataset = _maker("cardiomegaly_idiap", RGB=False)
(
self.train_dataset,
self.validation_dataset,
self.extra_validation_datasets,
self.predict_dataset,
) = return_subsets(self.dataset)
datamodule = DefaultModule
# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
#
# SPDX-License-Identifier: GPL-3.0-or-later
"""Padchest (idiap protocol) dataset for computer-aided diagnosis.
* See :py:mod:`ptbench.data.padchest` for dataset details
* This configuration resolution: 512 x 512 (default)
"""
from clapper.logging import setup
from .. import return_subsets
from ..base_datamodule import BaseDataModule
from . import _maker
logger = setup(__name__.split(".")[0], format="%(levelname)s: %(message)s")
class DefaultModule(BaseDataModule):
def __init__(
self,
train_batch_size=1,
predict_batch_size=1,
drop_incomplete_batch=False,
multiproc_kwargs=None,
):
super().__init__(
train_batch_size=train_batch_size,
predict_batch_size=predict_batch_size,
drop_incomplete_batch=drop_incomplete_batch,
multiproc_kwargs=multiproc_kwargs,
)
def setup(self, stage: str):
self.dataset = _maker("idiap")
(
self.train_dataset,
self.validation_dataset,
self.extra_validation_datasets,
self.predict_dataset,
) = return_subsets(self.dataset)
datamodule = DefaultModule
......@@ -19,6 +19,38 @@ diagnosis.
fibrosis, edema and consolidation
"""
from clapper.logging import setup
from .. import return_subsets
from ..base_datamodule import BaseDataModule
from . import _maker
dataset = _maker("no_tb_idiap")
logger = setup(__name__.split(".")[0], format="%(levelname)s: %(message)s")
class DefaultModule(BaseDataModule):
def __init__(
self,
train_batch_size=1,
predict_batch_size=1,
drop_incomplete_batch=False,
multiproc_kwargs=None,
):
super().__init__(
train_batch_size=train_batch_size,
predict_batch_size=predict_batch_size,
drop_incomplete_batch=drop_incomplete_batch,
multiproc_kwargs=multiproc_kwargs,
)
def setup(self, stage: str):
self.dataset = _maker("no_tb_idiap")
(
self.train_dataset,
self.validation_dataset,
self.extra_validation_datasets,
self.predict_dataset,
) = return_subsets(self.dataset)
datamodule = DefaultModule
......@@ -12,6 +12,38 @@ parameters: Label = "Normal", MethodLabel = "Physician", Projection = "PA"
* This configuration resolution: 512 x 512 (default)
"""
from clapper.logging import setup
from .. import return_subsets
from ..base_datamodule import BaseDataModule
from . import _maker
dataset = _maker("tb_idiap", RGB=False)
logger = setup(__name__.split(".")[0], format="%(levelname)s: %(message)s")
class DefaultModule(BaseDataModule):
def __init__(
self,
train_batch_size=1,
predict_batch_size=1,
drop_incomplete_batch=False,
multiproc_kwargs=None,
):
super().__init__(
train_batch_size=train_batch_size,
predict_batch_size=predict_batch_size,
drop_incomplete_batch=drop_incomplete_batch,
multiproc_kwargs=multiproc_kwargs,
)
def setup(self, stage: str):
self.dataset = _maker("tb_idiap", RGB=False)
(
self.train_dataset,
self.validation_dataset,
self.extra_validation_datasets,
self.predict_dataset,
) = return_subsets(self.dataset)
datamodule = DefaultModule
......@@ -13,6 +13,38 @@ parameters: Label = "Normal", MethodLabel = "Physician", Projection = "PA"
* This configuration resolution: 224 x 224 (default)
"""
from clapper.logging import setup
from .. import return_subsets
from ..base_datamodule import BaseDataModule
from . import _maker
dataset = _maker("tb_idiap", resize_size=256, cc_size=224)
logger = setup(__name__.split(".")[0], format="%(levelname)s: %(message)s")
class DefaultModule(BaseDataModule):
def __init__(
self,
train_batch_size=1,
predict_batch_size=1,
drop_incomplete_batch=False,
multiproc_kwargs=None,
):
super().__init__(
train_batch_size=train_batch_size,
predict_batch_size=predict_batch_size,
drop_incomplete_batch=drop_incomplete_batch,
multiproc_kwargs=multiproc_kwargs,
)
def setup(self, stage: str):
self.dataset = _maker("tb_idiap", resize_size=256, cc_size=224)
(
self.train_dataset,
self.validation_dataset,
self.extra_validation_datasets,
self.predict_dataset,
) = return_subsets(self.dataset)
datamodule = DefaultModule
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment