Skip to content

ESMValTool ozone diagnostics#473

Merged
lewisjared merged 19 commits intomainfrom
esmvaltool-ozone-diagnostics
Mar 3, 2026
Merged

ESMValTool ozone diagnostics#473
lewisjared merged 19 commits intomainfrom
esmvaltool-ozone-diagnostics

Conversation

@axel-lauer
Copy link
Contributor

@axel-lauer axel-lauer commented Dec 12, 2025

Description

ESMValTool ozone diagnostics. This includes the following five subdiagnostics:

  • ozone-lat-time: zonal mean total column ozone (time vs. latitude)
  • ozone-sh-oct: time series of total column ozone in October averaged over SH polar latitudes (60S-85S)
  • ozone-nh-mar: time series of total column ozone in March averaged over NH polar latitudes (60N-80N)
  • ozone-zonal: zonal mean profiles of stratospheric ozone (latitude vs. air pressure)
  • ozone-annual-cycle: annual cycle of zonal mean total column ozone (month vs. latitude)

As reference data, obs4MIPs C3S-GTO-ECV-9-0 total column ozone and ESACCI-OZONE (SAGE-OMPS) ozone are used. ESACCI-OZONE data are not part of obs4MIPs or obs4REF yet.

This is as far as I can get. I am not able to add tests, etc. For this I need assistance from more experienced REF contributors.

Checklist

Please confirm that this pull request has done the following:

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

@bouweandela
Copy link
Contributor

bouweandela commented Dec 12, 2025

…nostics

* origin/main: (347 commits)
  chore: fix pre-commit
  add change log
  rename double_ITCZ to doubleITCZ for consistency in output file naming
  chore: add test case for double ITCZ
  chore(deps-dev): bump jupyterlab in the python-dependencies group
  Bump version: 0.11.0 → 0.11.1
  docs: add changelog for #567
  fix: reduce memory during ingestion and add solve logging
  fix: prevent DRS re-ingestion from regressing finalised datasets
  Bump version: 0.10.0 → 0.11.0
  chore: Update comment
  chore: upgrade pins for ilamb
  fix: revert compat=override on open_mfdataset
  docs: add changelog for #565
  chore: Upgrade lockfile and fix some errors
  chore: add coverage
  chore: add default separator in alembic
  fix: time_coder warning
  chore: Pin to use tas
  fix(solver): preserve DataCatalog wrapper in apply_dataset_filters
  ...
* move-esmval-constraint: (70 commits)
  chore: ruff
  chore: run all solves
  chore: add a cmip7 data catalog and regenerate the ESMValTool tests
  chore: add CMIP7 data catalog
  chore: Use a subset of cmip6 source ids
  chore: update catalog
  chore: add ozone
  refactor: add a esgf_data_catalog_trimmed fixture
  chore: add back the catch
  chore: cleanup is_na checks
  chore: fetch obs4ref datasets too
  fix: add postgresql_using cast for String->DateTime downgrade
  fix: use FALSE instead of 0 in migration for PostgreSQL boolean column
  fix: use enum names in migration UPDATE for PostgreSQL compatibility
  chore: remove test
  chore: skip the diagnostic
  chore: Add regression file
  docs: add changelog entry for time_units and calendar feature
  fix: handle mixed-calendar cftime comparison in contiguity constraint
  chore: rename changelog to match PR #573
  ...
* move-esmval-constraint:
  fix: sanitize non-YAML-safe values in save_datasets_to_yaml
@lewisjared
Copy link
Contributor

@axel-lauer After quite some delay and rework, I've come back to the ozone diagnostic. We've reworked how we defined the test data requirements so as a diagnostic developer you no-longer need deal with the sample data repo.

Can you please review the attached output to see if the output is as you expect.

You should be able to run this via:

uv run ref test-cases run --fetch --force-regen --clean --provider esmvaltool --diagnostic ozone-annual-cycle

You may need to set the following in your ~/.config/intake-esgf/conf.yaml. I have no idea why obs4MIPs datasets are so poorly indexed...

solr_indices:
  esgf.ceda.ac.uk: true

ozone-test-data-cmip6.tar.gz

@lewisjared
Copy link
Contributor

@bouweandela The parquet catalog for obs4mips doesn't have the obs dataset hence all of the empty regression outputs...

@lewisjared lewisjared changed the base branch from main to move-esmval-constraint March 2, 2026 06:28
Base automatically changed from move-esmval-constraint to main March 3, 2026 05:40
…/climate-ref into esmvaltool-ozone-diagnostics

* 'esmvaltool-ozone-diagnostics' of github.com:Climate-REF/climate-ref:
  fix(solver): re-finalise group after constraints that add unfinalised rows
@codecov
Copy link

codecov bot commented Mar 3, 2026

Codecov Report

❌ Patch coverage is 91.75258% with 8 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
...ol/src/climate_ref_esmvaltool/diagnostics/ozone.py 91.57% 8 Missing ⚠️
Flag Coverage Δ
core 93.11% <100.00%> (ø)
providers 91.79% <91.66%> (-0.01%) ⬇️

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

Files with missing lines Coverage Δ
...ate-ref-core/src/climate_ref_core/esgf/obs4mips.py 88.46% <100.00%> (ø)
...src/climate_ref_esmvaltool/diagnostics/__init__.py 100.00% <100.00%> (ø)
...ol/src/climate_ref_esmvaltool/diagnostics/ozone.py 91.57% <91.57%> (ø)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@lewisjared lewisjared marked this pull request as ready for review March 3, 2026 10:38
@lewisjared
Copy link
Contributor

Merging this as I'd like to get this into a release. Thanks for the recipe!

@lewisjared lewisjared merged commit a41e6d9 into main Mar 3, 2026
26 checks passed
@lewisjared lewisjared deleted the esmvaltool-ozone-diagnostics branch March 3, 2026 10:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ESMValTool help wanted Extra attention is needed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants