Skip to content

Add CMIP7 data catalog and ESMValTool recipes#577

Open
lewisjared wants to merge 9 commits intomainfrom
move-esmval-constraint
Open

Add CMIP7 data catalog and ESMValTool recipes#577
lewisjared wants to merge 9 commits intomainfrom
move-esmval-constraint

Conversation

@lewisjared
Copy link
Contributor

Description

Add CMIP7 support for ESMValTool diagnostics:

  • CMIP7 recipes: Add CMIP7 variants of ESMValTool recipes (cloud scatterplots, ENSO, climate sensitivity, sea ice, global mean timeseries, regional historical analysis, fire drivers, zero emission commitment, etc.)
  • CMIP7 catalog: Add a generated CMIP7 ESGF catalog (cmip7_catalog.parquet) and the script to produce it (scripts/generate_cmip7_catalog.py)
  • Updated CMIP6 catalog: Use a fixed subset of CMIP6 source IDs for faster, more predictable tests
  • Recipe refactor: Remove xarray dependency from get_child_and_parent_dataset by reading branch time and calendar metadata directly from the catalog DataFrame instead of opening netCDF files
  • Test fixture consolidation: Move the trimmed catalog fixture (esgf_data_catalog_trimmed) into conftest_plugin.py and remove the integration-specific conftest.py override
  • Variable mapping: Add cmip6_cmip7_variable_map.json for cross-MIP variable translation

Checklist

Please confirm that this pull request has done the following:

  • Tests added
  • Documentation added (where applicable)
  • Changelog item added to changelog/

@codecov
Copy link

codecov bot commented Mar 2, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.

Flag Coverage Δ
core ?
providers 91.79% <100.00%> (+2.55%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
...ef-esmvaltool/src/climate_ref_esmvaltool/recipe.py 86.40% <100.00%> (+8.27%) ⬆️

... and 87 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Convert cftime datetimes, NaN floats, and other non-YAML-safe types
to plain Python types before yaml.dump. This prevents serialization
of Python-specific tags (!!python/object/apply:cftime...) that
yaml.safe_load cannot deserialize.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant