Skip to content

climate_ref_esmvaltool #

Rapid evaluating CMIP data with ESMValTool.

ESMValToolProvider #

Bases: CondaDiagnosticProvider

Provider for ESMValTool diagnostics.

Source code in packages/climate-ref-esmvaltool/src/climate_ref_esmvaltool/__init__.py
class ESMValToolProvider(CondaDiagnosticProvider):
    """Provider for ESMValTool diagnostics."""

    def fetch_data(self, config: Any) -> None:
        """Fetch ESMValTool reference data."""
        for registry_name in [_DATASETS_REGISTRY_NAME, _RECIPES_REGISTRY_NAME]:
            registry = dataset_registry_manager[registry_name]
            fetch_all_files(registry, registry_name, output_dir=None)

    def data_to_ingest(self, config: Any) -> list[DataIngestRequest]:
        """
        Request ingestion of the fetched ESMValTool reference data.

        A diagnostic that declares an `esmvaltool-reference` requirement
        selects its reference data from the catalog,
        so the downloaded files have to be ingested before the solver can find them.
        """
        reference_path = registry_data_root()
        if not reference_path.exists():
            logger.warning(
                f"No ESMValTool reference data has been fetched to {reference_path}, "
                "so there is nothing to ingest. "
                f"Fetch it with `ref datasets fetch-data --registry {_DATASETS_REGISTRY_NAME}`."
            )
            return []

        return [DataIngestRequest(SourceDatasetType.ESMValToolReference, reference_path)]

    def validate_setup(self, config: Any) -> bool:
        """Validate conda environment and data checksums."""
        # First check conda environment
        if not super().validate_setup(config):
            return False

        # Then check data checksums
        errors = []
        for registry_name in [_DATASETS_REGISTRY_NAME, _RECIPES_REGISTRY_NAME]:
            errors.extend(validate_registry_cache(dataset_registry_manager[registry_name], registry_name))
        if errors:
            for error in errors:
                logger.error(f"{self.slug} validation failed: {error}")
            logger.error(
                f"Data for {self.slug} is missing or corrupted. "
                f"Please run `ref providers setup --provider {self.slug}` to fetch data."
            )
            return False
        return True

    def get_data_path(self) -> Path | None:
        """Get the path where ESMValTool data is cached."""
        return resolve_cache_dir("esmvaltool")

data_to_ingest(config) #

Request ingestion of the fetched ESMValTool reference data.

A diagnostic that declares an esmvaltool-reference requirement selects its reference data from the catalog, so the downloaded files have to be ingested before the solver can find them.

Source code in packages/climate-ref-esmvaltool/src/climate_ref_esmvaltool/__init__.py
def data_to_ingest(self, config: Any) -> list[DataIngestRequest]:
    """
    Request ingestion of the fetched ESMValTool reference data.

    A diagnostic that declares an `esmvaltool-reference` requirement
    selects its reference data from the catalog,
    so the downloaded files have to be ingested before the solver can find them.
    """
    reference_path = registry_data_root()
    if not reference_path.exists():
        logger.warning(
            f"No ESMValTool reference data has been fetched to {reference_path}, "
            "so there is nothing to ingest. "
            f"Fetch it with `ref datasets fetch-data --registry {_DATASETS_REGISTRY_NAME}`."
        )
        return []

    return [DataIngestRequest(SourceDatasetType.ESMValToolReference, reference_path)]

fetch_data(config) #

Fetch ESMValTool reference data.

Source code in packages/climate-ref-esmvaltool/src/climate_ref_esmvaltool/__init__.py
def fetch_data(self, config: Any) -> None:
    """Fetch ESMValTool reference data."""
    for registry_name in [_DATASETS_REGISTRY_NAME, _RECIPES_REGISTRY_NAME]:
        registry = dataset_registry_manager[registry_name]
        fetch_all_files(registry, registry_name, output_dir=None)

get_data_path() #

Get the path where ESMValTool data is cached.

Source code in packages/climate-ref-esmvaltool/src/climate_ref_esmvaltool/__init__.py
def get_data_path(self) -> Path | None:
    """Get the path where ESMValTool data is cached."""
    return resolve_cache_dir("esmvaltool")

validate_setup(config) #

Validate conda environment and data checksums.

Source code in packages/climate-ref-esmvaltool/src/climate_ref_esmvaltool/__init__.py
def validate_setup(self, config: Any) -> bool:
    """Validate conda environment and data checksums."""
    # First check conda environment
    if not super().validate_setup(config):
        return False

    # Then check data checksums
    errors = []
    for registry_name in [_DATASETS_REGISTRY_NAME, _RECIPES_REGISTRY_NAME]:
        errors.extend(validate_registry_cache(dataset_registry_manager[registry_name], registry_name))
    if errors:
        for error in errors:
            logger.error(f"{self.slug} validation failed: {error}")
        logger.error(
            f"Data for {self.slug} is missing or corrupted. "
            f"Please run `ref providers setup --provider {self.slug}` to fetch data."
        )
        return False
    return True

sub-packages#

Sub-package Description
_version
diagnostics ESMValTool diagnostics.
recipe
reference_registry Reading the keys of the ESMValTool reference data registry.
types