Source code for mednet.config.data.montgomery_shenzhen_indian_padchest.datamodule

# Copyright © 2022 Idiap Research Institute <contact@idiap.ch>
#
# SPDX-License-Identifier: GPL-3.0-or-later
"""Aggregated DataModule composed of Montgomery, Shenzhen, Indian, and PadChest
datasets.
"""

import pathlib

from ....data.datamodule import ConcatDataModule
from ..indian.datamodule import CONFIGURATION_KEY_DATADIR as INDIAN_KEY_DATADIR
from ..indian.datamodule import RawDataLoader as IndianLoader
from ..indian.datamodule import make_split as make_indian_split
from ..montgomery.datamodule import RawDataLoader as MontgomeryLoader
from ..montgomery.datamodule import make_split as make_montgomery_split
from ..padchest.datamodule import RawDataLoader as PadchestLoader
from ..padchest.datamodule import make_split as make_padchest_split
from ..shenzhen.datamodule import RawDataLoader as ShenzhenLoader
from ..shenzhen.datamodule import make_split as make_shenzhen_split


[docs] class DataModule(ConcatDataModule): """Aggregated DataModule composed of Montgomery, Shenzhen, Indian, and PadChest datasets. Parameters ---------- split_filename Name of the .json file containing the split to load. padchest_split_filename Name of the .json file from padchest containing the split to load. """ def __init__(self, split_filename: str, padchest_split_filename: str): montgomery_loader = MontgomeryLoader() montgomery_split = make_montgomery_split(split_filename) shenzhen_loader = ShenzhenLoader() shenzhen_split = make_shenzhen_split(split_filename) indian_loader = IndianLoader(INDIAN_KEY_DATADIR) indian_split = make_indian_split(split_filename) padchest_loader = PadchestLoader() padchest_split = make_padchest_split(padchest_split_filename) super().__init__( splits={ "train": [ (montgomery_split["train"], montgomery_loader), (shenzhen_split["train"], shenzhen_loader), (indian_split["train"], indian_loader), (padchest_split["train"], padchest_loader), ], "validation": [ (montgomery_split["validation"], montgomery_loader), (shenzhen_split["validation"], shenzhen_loader), (indian_split["validation"], indian_loader), # there is no validation set on padchest... # (padchest_split["validation"], padchest_loader), ], "test": [ (montgomery_split["test"], montgomery_loader), (shenzhen_split["test"], shenzhen_loader), (indian_split["test"], indian_loader), (padchest_split["test"], padchest_loader), ], }, database_name=__package__.split(".")[-1], split_name=( pathlib.Path(split_filename).stem + "+" + pathlib.Path(padchest_split_filename).stem ), )