diff --git a/pixi.lock b/pixi.lock index 30db3dc..7ce05d5 100644 --- a/pixi.lock +++ b/pixi.lock @@ -11526,8 +11526,8 @@ packages: timestamp: 1743831815399 - pypi: . name: readii - version: 1.35.0 - sha256: eff962617ba21b93e479d92ea470a4b8b382baa0e219bd88f63ea450d08cd1fa + version: 1.35.1 + sha256: 7d1324341e6851d5c3913b06391c09681cb871ac7a47c662138400e2bf99a715 requires_dist: - simpleitk>=2.3.1 - matplotlib>=3.9.2,<4 diff --git a/src/readii/utils/__init__.py b/src/readii/utils/__init__.py index 116ace5..32f3260 100644 --- a/src/readii/utils/__init__.py +++ b/src/readii/utils/__init__.py @@ -1,5 +1,7 @@ from .logging_config import logger +from .dataset_config import get_full_data_name __all__ = [ 'logger', + 'get_full_data_name' ] \ No newline at end of file diff --git a/src/readii/utils/dataset_config.py b/src/readii/utils/dataset_config.py new file mode 100644 index 0000000..8752bdb --- /dev/null +++ b/src/readii/utils/dataset_config.py @@ -0,0 +1,27 @@ +from pathlib import Path +from typing import Dict, Union + +from readii.io.loaders import loadImageDatasetConfig +from readii.utils import logger + +def get_full_data_name(config: Union[Dict | Path]): + """Combine DATA_SOURCE and DATASET_NAME config variables into a single string.""" + + match type(config): + case Path(): + dataset_config = loadImageDatasetConfig(config.stem, config.parent) + case Dict(): + dataset_config = config + case _: + message = "Error getting full data name: config must be of type Path or Dict." + logger.debug(message) + raise TypeError(message) + + try: + data_source = dataset_config['DATA_SOURCE'] + dataset_name = dataset_config['DATASET_NAME'] + return f"{data_source}_{dataset_name}" + except KeyError as e: + message = f"Missing required key in dataset configuration: {e}" + logger.error(message) + raise ValueError(message) from e \ No newline at end of file