Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 54 additions & 0 deletions src/access_moppy/utilities.py
Original file line number Diff line number Diff line change
Expand Up @@ -2649,6 +2649,60 @@ def load_cmip6_to_cmip7_mapping(mapping_path: Optional[str] = None) -> Dict[str,
return mapping


def get_requested_variables_from_data_request(
experiment: str = "historical",
priority: str = "Core",
variable_name: str = "CMIP6",
dreq_version: str = "v1.2.2.3",
) -> List[str]:
"""
Return requested variables for a given experiment and priority from a data request.

Args:
experiment: Experiment key under ``requested["experiment"]``.
priority: Priority class key (for example ``"Core"``).
variable_name: Variable naming convention prefix used by
``data_request_api.utilities.config.update_config``.
dreq_version: Data request version string to retrieve.

Returns:
A list of requested variable names.

Raises:
ImportError: If ``DATA_REQUEST_API_AVAILABLE`` is ``False``.

Example:
>>> get_requested_variables_from_data_request("historical", "Core")
"""
if not DATA_REQUEST_API_AVAILABLE:
raise ImportError(
"data_request_api package is required for querying requested variables. "
"Install it with: pip install CMIP7-data-request-api"
)

from data_request_api.content import dreq_content as dc
from data_request_api.query import dreq_query as dq
from data_request_api.utilities.config import update_config

update_config("variable_name", f"{variable_name} Compound Name")

dc.retrieve(dreq_version)
dreq_content = dc.load(dreq_version)
dreq_tables = dq.create_dreq_tables_for_request(
content=dreq_content,
dreq_version=dreq_version,
)
requested = dq.get_requested_variables(
content=dreq_tables,
dreq_version=dreq_version,
verbose=False,
check_core_variables=False,
priority_cutoff=priority.lower(),
)

return list(requested["experiment"][experiment][priority.capitalize()])


def get_cmip_mapping_metadata(mapping_type: str = "forward") -> Dict:
"""
Get metadata about the CMIP7↔CMIP6 compound name mapping files.
Expand Down
Loading