Source code for colour_datasets.loaders.winquist2022

"""
Physlight - Camera Spectral Sensitivity Curves - Winquist et al. (2022)
=======================================================================

Defines the objects implementing support for *Winquist et al. (2022)*
*Physlight - Camera Spectral Sensitivity Curves* dataset loading:

-   :class:`colour_datasets.loaders.DatasetLoader_Winquist2022`
-   :func:`colour_datasets.loaders.build_Winquist2022`

References
----------
-   :cite:`Winquist2022` : Winquist, E., Thurston, K., & Weta Digital. (2022).
    Physlight - Camera Spectral Sensitivity Curves. Retrieved May 28, 2022,
    from https://github.com/quister/physlight/commit/\
20100bce85c75fb7389949508d319d640e5d2be3
"""

from __future__ import annotations

import glob
import os

from colour.hints import Dict

from colour_datasets.loaders import AbstractDatasetLoader
from colour_datasets.loaders.dyer2017 import MultiSpectralDistributions_AMPAS
from colour_datasets.records import datasets

__author__ = "Colour Developers"
__copyright__ = "Copyright 2019 Colour Developers"
__license__ = "BSD-3-Clause - https://opensource.org/licenses/BSD-3-Clause"
__maintainer__ = "Colour Developers"
__email__ = "colour-developers@colour-science.org"
__status__ = "Production"

__all__ = [
    "DatasetLoader_Winquist2022",
    "build_Winquist2022",
]


[docs] class DatasetLoader_Winquist2022(AbstractDatasetLoader): """ Define the *Winquist et al. (2022)* *Physlight - Camera Spectral Sensitivity Curves* dataset /loader. Attributes ---------- ID Methods ------- load References ---------- :cite:`Winquist2022` """ ID: str = "6590768" """Dataset record id, i.e. the *Zenodo* record number.""" def __init__(self) -> None: super().__init__(datasets()[DatasetLoader_Winquist2022.ID])
[docs] def load(self) -> Dict[str, MultiSpectralDistributions_AMPAS]: """ Sync, parse, convert and return the *Winquist et al. (2022)* *Physlight - Camera Spectral Sensitivity Curves* dataset content. Returns ------- :class:`dict` *Winquist et al. (2022)* *Physlight - Camera Spectral Sensitivity Curves* dataset content. Examples -------- >>> from colour_datasets.utilities import suppress_stdout >>> dataset = DatasetLoader_Winquist2022() >>> with suppress_stdout(): ... dataset.load() >>> len(dataset.content.keys()) 17 """ super().sync() self._content = {} glob_pattern = os.path.join(self.record.repository, "dataset", "*.json") for path in glob.glob(glob_pattern): msds = MultiSpectralDistributions_AMPAS(path).read() self._content[msds.name] = msds return self._content
_DATASET_LOADER_WINQUIST2022: DatasetLoader_Winquist2022 | None = None """ Singleton instance of the *Winquist et al. (2022)* *Physlight - Camera Spectral Sensitivity Curves* dataset loader. """
[docs] def build_Winquist2022(load: bool = True) -> DatasetLoader_Winquist2022: """ Singleton factory that builds the *Winquist et al. (2022)* *Physlight - Camera Spectral Sensitivity Curves* dataset loader. Parameters ---------- load Whether to load the dataset upon instantiation. Returns ------- :class:`colour_datasets.loaders.DatasetLoader_Winquist2022` Singleton instance of the *Winquist et al. (2022)* *Physlight - Camera Spectral Sensitivity Curves* dataset loader. References ---------- :cite:`Winquist2022` """ global _DATASET_LOADER_WINQUIST2022 # noqa: PLW0603 if _DATASET_LOADER_WINQUIST2022 is None: _DATASET_LOADER_WINQUIST2022 = DatasetLoader_Winquist2022() if load: _DATASET_LOADER_WINQUIST2022.load() return _DATASET_LOADER_WINQUIST2022