From 89ac1ee3a340f1d5042e4a43ce4f26d5f3553525 Mon Sep 17 00:00:00 2001 From: Jared Lewis Date: Fri, 28 Aug 2026 20:02:57 +1000 Subject: [PATCH 1/8] fix: update ozone diagnostics for the unified ESMValTool recipe --- .../diagnostics/ozone.py | 108 ++++++++---------- .../src/climate_ref_esmvaltool/recipes.txt | 8 +- .../ozone-annual-cycle/cmip7/catalog.yaml | 10 +- .../ozone-lat-time/cmip7/catalog.yaml | 10 +- .../test-data/ozone-nh-mar/cmip7/catalog.yaml | 10 +- .../test-data/ozone-sh-oct/cmip7/catalog.yaml | 10 +- ...cipe_ozone_annual_cycle_cmip6_obs4mips.yml | 11 +- ...cipe_ozone_annual_cycle_cmip7_obs4mips.yml | 11 +- .../recipe_ozone_lat_time_cmip6_obs4mips.yml | 11 +- .../recipe_ozone_lat_time_cmip7_obs4mips.yml | 11 +- .../recipe_ozone_nh_mar_cmip6_obs4mips.yml | 13 +-- .../recipe_ozone_nh_mar_cmip7_obs4mips.yml | 13 +-- .../recipe_ozone_sh_oct_cmip6_obs4mips.yml | 11 +- .../recipe_ozone_sh_oct_cmip7_obs4mips.yml | 11 +- 14 files changed, 115 insertions(+), 133 deletions(-) diff --git a/packages/climate-ref-esmvaltool/src/climate_ref_esmvaltool/diagnostics/ozone.py b/packages/climate-ref-esmvaltool/src/climate_ref_esmvaltool/diagnostics/ozone.py index 298afba3c..9d94a95d8 100644 --- a/packages/climate-ref-esmvaltool/src/climate_ref_esmvaltool/diagnostics/ozone.py +++ b/packages/climate-ref-esmvaltool/src/climate_ref_esmvaltool/diagnostics/ozone.py @@ -81,7 +81,7 @@ RequireTimerange( group_by=("instance_id",), start=PartialDateTime(1996, 1), - end=PartialDateTime(2014, 12), + end=PartialDateTime(2021, 12), ), RequireContiguousTimerange(group_by=("instance_id",)), AddSupplementaryDataset.from_defaults("areacella", SourceDatasetType.CMIP7), @@ -92,10 +92,11 @@ filters=(ozone_obs_filter,), group_by=("source_id",), constraints=( + # The recipe plots the observations through 2021, so require that coverage. RequireTimerange( group_by=("instance_id",), start=PartialDateTime(1996, 1), - end=PartialDateTime(2014, 12), + end=PartialDateTime(2021, 12), ), ), ), @@ -122,7 +123,7 @@ slug="obs4mips", facets=ozone_obs_filter.facets, remove_ensembles=False, - time_span=("1980", "2009"), + time_span=("1996", "2015"), ), ), ), @@ -144,13 +145,15 @@ "region": "glb", }, remove_ensembles=True, - time_span=("1980", "2009"), + time_span=("1950", "2015"), + # Fabricate the CMIP7 historical series to extend to 2021-12 + extend_historical_to=(2021, 12), ), Obs4MIPsRequest( slug="obs4mips", facets=ozone_obs_filter.facets, remove_ensembles=False, - time_span=("1980", "2009"), + time_span=("1996", "2021"), ), ), ), @@ -158,6 +161,32 @@ ) +def _prepare_recipe( + recipe: Recipe, + input_files: dict[SourceDatasetType, pandas.DataFrame], + diagnostic: str, + variable: str, + cmip7_timerange: str | None = None, +) -> None: + """ + Prune the recipe to one diagnostic and insert the solved model dataset. + + The model time ranges come from the base recipe, + except that CMIP7 `historical` runs through 2021 where CMIP6 ends in 2014. + """ + cmip_source = get_cmip_source_type(input_files) + recipe_variables = dataframe_to_recipe(input_files[cmip_source]) + dataset = recipe_variables[variable]["additional_datasets"][0] + dataset.pop("timerange", None) + recipe["datasets"] = [dataset] + recipe["diagnostics"] = {diagnostic: recipe["diagnostics"][diagnostic]} + variable_settings = recipe["diagnostics"][diagnostic]["variables"][variable] + if cmip_source == SourceDatasetType.CMIP7: + variable_settings["timerange"] = cmip7_timerange or variable_settings["timerange"].replace( + "/2014", "/2021" + ) + + class O3LatTimeMapplot(ESMValToolDiagnostic): """ Calculate the ozone diagnostics - zonal mean total column ozone vs. time. @@ -165,7 +194,7 @@ class O3LatTimeMapplot(ESMValToolDiagnostic): name = "Ozone Diagnostics" slug = "ozone-lat-time" - base_recipe = "ref/recipe_ref_ozone_cmip7.yml" + base_recipe = "ref/recipe_ref_ozone.yml" version = 2 data_requirements = toz_data_requirement @@ -184,14 +213,7 @@ def update_recipe( input_files: dict[SourceDatasetType, pandas.DataFrame], ) -> None: """Update the recipe.""" - recipe_variables = dataframe_to_recipe(input_files[get_cmip_source_type(input_files)]) - dataset = recipe_variables["toz"]["additional_datasets"][0] - # set time range of model (CMIP6) dataset (should match observational period) - dataset["timerange"] = "1996/2014" - recipe["datasets"] = [dataset] - diagnostic = "lat_time_mapplot" - recipe["diagnostics"] = {diagnostic: recipe["diagnostics"][diagnostic]} - recipe["diagnostics"][diagnostic]["variables"]["toz"]["timerange"] = "1996/2014" + _prepare_recipe(recipe, input_files, "lat_time_mapplot", "toz") class O3PolarCapTimeseriesSH(ESMValToolDiagnostic): @@ -201,7 +223,7 @@ class O3PolarCapTimeseriesSH(ESMValToolDiagnostic): name = "Ozone Diagnostics" slug = "ozone-sh-oct" - base_recipe = "ref/recipe_ref_ozone_cmip7.yml" + base_recipe = "ref/recipe_ref_ozone.yml" version = 2 data_requirements = toz_data_requirement @@ -231,24 +253,19 @@ def update_recipe( input_files: dict[SourceDatasetType, pandas.DataFrame], ) -> None: """Update the recipe.""" - recipe_variables = dataframe_to_recipe(input_files[get_cmip_source_type(input_files)]) - dataset = recipe_variables["toz"]["additional_datasets"][0] - # set model (CMIP6) time range to 1950...2014 - dataset["timerange"] = "1950/2014" - recipe["datasets"] = [dataset] - diagnostic = "polar_cap_time_series_SH" - recipe["diagnostics"] = {diagnostic: recipe["diagnostics"][diagnostic]} + # The CMIP7 start is bounded by the fabricated test data, which begins in 1957. + _prepare_recipe(recipe, input_files, "polar_cap_time_series_SH", "toz", cmip7_timerange="1960/2021") class O3PolarCapTimeseriesNH(ESMValToolDiagnostic): """ - Calculate the ozone diagnostics - March NH polar mean (60N-80N) time series. + Calculate the ozone diagnostics - March NH polar mean (60N-85N) time series. """ name = "Ozone Diagnostics" slug = "ozone-nh-mar" - base_recipe = "ref/recipe_ref_ozone_cmip7.yml" - version = 2 + base_recipe = "ref/recipe_ref_ozone.yml" + version = 3 data_requirements = toz_data_requirement facets = () @@ -277,17 +294,8 @@ def update_recipe( input_files: dict[SourceDatasetType, pandas.DataFrame], ) -> None: """Update the recipe.""" - recipe_variables = dataframe_to_recipe(input_files[get_cmip_source_type(input_files)]) - dataset = recipe_variables["toz"]["additional_datasets"][0] - # set model (CMIP6) time range to 1950...2014 - dataset["timerange"] = "1950/2014" - recipe["datasets"] = [dataset] - diagnostic = "polar_cap_time_series_NH" - # adjust plot title to reflect bug fix regarding northern boundary (see above) - recipe["diagnostics"][diagnostic]["scripts"]["plot"]["plots"]["timeseries"]["pyplot_kwargs"][ - "title" - ] = "Total Column Ozone, 60-80N, March" - recipe["diagnostics"] = {diagnostic: recipe["diagnostics"][diagnostic]} + # The CMIP7 start is bounded by the fabricated test data, which begins in 1957. + _prepare_recipe(recipe, input_files, "polar_cap_time_series_NH", "toz", cmip7_timerange="1960/2021") class O3ZonalMeanProfiles(ESMValToolDiagnostic): @@ -297,7 +305,7 @@ class O3ZonalMeanProfiles(ESMValToolDiagnostic): name = "Ozone Diagnostics" slug = "ozone-zonal" - base_recipe = "ref/recipe_ref_ozone_cmip7.yml" + base_recipe = "ref/recipe_ref_ozone.yml" version = 3 data_requirements = ( @@ -362,7 +370,7 @@ class O3ZonalMeanProfiles(ESMValToolDiagnostic): "region": "glb", }, remove_ensembles=True, - time_span=("1980", "2009"), + time_span=("1996", "2015"), ), ), ), @@ -375,18 +383,7 @@ def update_recipe( input_files: dict[SourceDatasetType, pandas.DataFrame], ) -> None: """Update the recipe.""" - recipe_variables = dataframe_to_recipe(input_files[get_cmip_source_type(input_files)]) - dataset = recipe_variables["o3"]["additional_datasets"][0] - # set model (CMIP6) time range to 2005...2014 - dataset["timerange"] = "2005/2014" - recipe["datasets"] = [dataset] - diagnostic = "zonal_mean_profiles" - # adjust plot title to actual time range - recipe["diagnostics"][diagnostic]["scripts"]["plot"]["plots"]["zonal_mean_profile"]["pyplot_kwargs"][ - "suptitle" - ] = "{long_name} (2005-2014 mean)" - recipe["diagnostics"] = {diagnostic: recipe["diagnostics"][diagnostic]} - recipe["diagnostics"][diagnostic]["variables"]["o3"]["timerange"] = "2005/2014" + _prepare_recipe(recipe, input_files, "zonal_mean_profiles", "o3") class O3LatMonthMapplot(ESMValToolDiagnostic): @@ -396,7 +393,7 @@ class O3LatMonthMapplot(ESMValToolDiagnostic): name = "Ozone Diagnostics" slug = "ozone-annual-cycle" - base_recipe = "ref/recipe_ref_ozone_cmip7.yml" + base_recipe = "ref/recipe_ref_ozone.yml" version = 2 data_requirements = toz_data_requirement @@ -415,11 +412,4 @@ def update_recipe( input_files: dict[SourceDatasetType, pandas.DataFrame], ) -> None: """Update the recipe.""" - recipe_variables = dataframe_to_recipe(input_files[get_cmip_source_type(input_files)]) - dataset = recipe_variables["toz"]["additional_datasets"][0] - # set model (CMIP6) time range to 2005...2014 - dataset["timerange"] = "2005/2014" - recipe["datasets"] = [dataset] - diagnostic = "lat_month_mapplot" - recipe["diagnostics"] = {diagnostic: recipe["diagnostics"][diagnostic]} - recipe["diagnostics"][diagnostic]["variables"]["toz"]["timerange"] = "2005/2014" + _prepare_recipe(recipe, input_files, "lat_month_mapplot", "toz") diff --git a/packages/climate-ref-esmvaltool/src/climate_ref_esmvaltool/recipes.txt b/packages/climate-ref-esmvaltool/src/climate_ref_esmvaltool/recipes.txt index 0059e25ff..514a22e4b 100644 --- a/packages/climate-ref-esmvaltool/src/climate_ref_esmvaltool/recipes.txt +++ b/packages/climate-ref-esmvaltool/src/climate_ref_esmvaltool/recipes.txt @@ -1,14 +1,14 @@ examples/recipe_python.yml ab3f06d269bb2c1368f4dc39da9bcb232fb2adb1fa556ba769e6c16294ffb4a3 recipe_calculate_gwl_exceedance_stats.yml 9f28304b85f7043fb76eb29ee84da46e084941c9db80eaa2993c151dbf022472 -recipe_seaice_sensitivity.yml 07270818ebf04a58713dc989720cc9ace77f28d42b1ea189c3bdaf22f5d64577 +recipe_seaice_sensitivity.yml c3166cb0b964c643040cb6ec61457446888734e8a606e319c34d739d1d1460a8 recipe_zec.yml b0af7f789b7610ab3f29a6617124aa40c40866ead958204fc199eaf82863de51 -ref/recipe_enso_basicclimatology.yml 9ea7deb7ee668e39ac44618b96496d898bd82285c22dcee4fce4695e0c9fa82b -ref/recipe_enso_characteristics.yml 34c2518b138068ac96d212910b979d54a8fcedee2c0089b5acd56a42c41dc3e4 +ref/recipe_enso_basicclimatology_CMIP7.yml 535dc2734838b852d4da888aa13648eecfadb562be70d81bff3ab7ef785f08ce +ref/recipe_enso_characteristics_CMIP7.yml c94be3273d8ba1e639f738969913ff0ebb7b8bd4a68ca4334c19f03d06a4128f ref/recipe_ref_annual_cycle_region.yml 88e0c2f07a76c4de4276547badcc74091516e03840eddb1f0e62469c67a0a86d ref/recipe_ref_cre_cmip7.yml b15687ac9e3ace4fe45e81d099e5828888101a205a0e2ed07d8a57a90cbe3f55 ref/recipe_ref_ecs.yml 3121df2d8c27f42b11e56f918ecbce49b0c8dc831e6d6886493f64bc8cce3032 ref/recipe_ref_fire.yml 2ad82effaca4e742d8abe6a0aa07bb46e1e92ef0d2d240760f7623b0ba045926 -ref/recipe_ref_ozone_cmip7.yml 16b127ef957a1b029835b0cdd940530f439576f0d22c589cd472598d03568702 +ref/recipe_ref_ozone.yml 09ded4946ecd762ba000916c9f8618120a2e6269930427ae5129da466165f3e5 ref/recipe_ref_sea_ice_area_basic.yml 7d01a8527880663ca28284772f83a8356d9972fb4f022a4000e50a56ce044b09 ref/recipe_ref_scatterplot.yml b99d1736e16256d161847b025811d7088ad9f892d4887fb009fa99c4079135a0 ref/recipe_ref_tcr.yml 443dbd46f5ef13ea187a1acdb6e70ecfa7669e0ef4b21392e9a00b5d0c821ef5 diff --git a/packages/climate-ref-esmvaltool/tests/test-data/ozone-annual-cycle/cmip7/catalog.yaml b/packages/climate-ref-esmvaltool/tests/test-data/ozone-annual-cycle/cmip7/catalog.yaml index 3de0772a6..ab960b89f 100644 --- a/packages/climate-ref-esmvaltool/tests/test-data/ozone-annual-cycle/cmip7/catalog.yaml +++ b/packages/climate-ref-esmvaltool/tests/test-data/ozone-annual-cycle/cmip7/catalog.yaml @@ -13,10 +13,10 @@ cmip7: branded_variable: toz_tavg-u-hxy-u branding_suffix: tavg-u-hxy-u calendar: noleap - end_time: '2014-12-16 12:00:00' + end_time: '2021-12-16 12:00:00' experiment_id: historical external_variables: areacella - filename: toz_tavg-u-hxy-u_mon_glb_gr1_GFDL-ESM4_historical_r1i1p1f1_195001-201412.nc + filename: toz_tavg-u-hxy-u_mon_glb_gr1_GFDL-ESM4_historical_r1i1p1f1_195701-202112.nc finalised: true frequency: mon grid_label: gr1 @@ -36,10 +36,10 @@ cmip7: region: glb source_id: GFDL-ESM4 standard_name: equivalent_thickness_at_stp_of_atmosphere_ozone_content - start_time: '1950-01-16 12:00:00' - time_range: 1950-01-16 12:00:00-2014-12-16 12:00:00 + start_time: '1957-01-16 12:00:00' + time_range: 1957-01-16 12:00:00-2021-12-16 12:00:00 time_units: days since 1850-01-01 - tracking_id: hdl:21.14107/1310fc4c-e819-4c43-88f9-bc454ed41618 + tracking_id: hdl:21.14107/0b220858-9a70-45b8-a87b-631ec2203563 units: m variable_id: toz variant_label: r1i1p1f1 diff --git a/packages/climate-ref-esmvaltool/tests/test-data/ozone-lat-time/cmip7/catalog.yaml b/packages/climate-ref-esmvaltool/tests/test-data/ozone-lat-time/cmip7/catalog.yaml index 3de0772a6..ab960b89f 100644 --- a/packages/climate-ref-esmvaltool/tests/test-data/ozone-lat-time/cmip7/catalog.yaml +++ b/packages/climate-ref-esmvaltool/tests/test-data/ozone-lat-time/cmip7/catalog.yaml @@ -13,10 +13,10 @@ cmip7: branded_variable: toz_tavg-u-hxy-u branding_suffix: tavg-u-hxy-u calendar: noleap - end_time: '2014-12-16 12:00:00' + end_time: '2021-12-16 12:00:00' experiment_id: historical external_variables: areacella - filename: toz_tavg-u-hxy-u_mon_glb_gr1_GFDL-ESM4_historical_r1i1p1f1_195001-201412.nc + filename: toz_tavg-u-hxy-u_mon_glb_gr1_GFDL-ESM4_historical_r1i1p1f1_195701-202112.nc finalised: true frequency: mon grid_label: gr1 @@ -36,10 +36,10 @@ cmip7: region: glb source_id: GFDL-ESM4 standard_name: equivalent_thickness_at_stp_of_atmosphere_ozone_content - start_time: '1950-01-16 12:00:00' - time_range: 1950-01-16 12:00:00-2014-12-16 12:00:00 + start_time: '1957-01-16 12:00:00' + time_range: 1957-01-16 12:00:00-2021-12-16 12:00:00 time_units: days since 1850-01-01 - tracking_id: hdl:21.14107/1310fc4c-e819-4c43-88f9-bc454ed41618 + tracking_id: hdl:21.14107/0b220858-9a70-45b8-a87b-631ec2203563 units: m variable_id: toz variant_label: r1i1p1f1 diff --git a/packages/climate-ref-esmvaltool/tests/test-data/ozone-nh-mar/cmip7/catalog.yaml b/packages/climate-ref-esmvaltool/tests/test-data/ozone-nh-mar/cmip7/catalog.yaml index 3de0772a6..ab960b89f 100644 --- a/packages/climate-ref-esmvaltool/tests/test-data/ozone-nh-mar/cmip7/catalog.yaml +++ b/packages/climate-ref-esmvaltool/tests/test-data/ozone-nh-mar/cmip7/catalog.yaml @@ -13,10 +13,10 @@ cmip7: branded_variable: toz_tavg-u-hxy-u branding_suffix: tavg-u-hxy-u calendar: noleap - end_time: '2014-12-16 12:00:00' + end_time: '2021-12-16 12:00:00' experiment_id: historical external_variables: areacella - filename: toz_tavg-u-hxy-u_mon_glb_gr1_GFDL-ESM4_historical_r1i1p1f1_195001-201412.nc + filename: toz_tavg-u-hxy-u_mon_glb_gr1_GFDL-ESM4_historical_r1i1p1f1_195701-202112.nc finalised: true frequency: mon grid_label: gr1 @@ -36,10 +36,10 @@ cmip7: region: glb source_id: GFDL-ESM4 standard_name: equivalent_thickness_at_stp_of_atmosphere_ozone_content - start_time: '1950-01-16 12:00:00' - time_range: 1950-01-16 12:00:00-2014-12-16 12:00:00 + start_time: '1957-01-16 12:00:00' + time_range: 1957-01-16 12:00:00-2021-12-16 12:00:00 time_units: days since 1850-01-01 - tracking_id: hdl:21.14107/1310fc4c-e819-4c43-88f9-bc454ed41618 + tracking_id: hdl:21.14107/0b220858-9a70-45b8-a87b-631ec2203563 units: m variable_id: toz variant_label: r1i1p1f1 diff --git a/packages/climate-ref-esmvaltool/tests/test-data/ozone-sh-oct/cmip7/catalog.yaml b/packages/climate-ref-esmvaltool/tests/test-data/ozone-sh-oct/cmip7/catalog.yaml index 3de0772a6..ab960b89f 100644 --- a/packages/climate-ref-esmvaltool/tests/test-data/ozone-sh-oct/cmip7/catalog.yaml +++ b/packages/climate-ref-esmvaltool/tests/test-data/ozone-sh-oct/cmip7/catalog.yaml @@ -13,10 +13,10 @@ cmip7: branded_variable: toz_tavg-u-hxy-u branding_suffix: tavg-u-hxy-u calendar: noleap - end_time: '2014-12-16 12:00:00' + end_time: '2021-12-16 12:00:00' experiment_id: historical external_variables: areacella - filename: toz_tavg-u-hxy-u_mon_glb_gr1_GFDL-ESM4_historical_r1i1p1f1_195001-201412.nc + filename: toz_tavg-u-hxy-u_mon_glb_gr1_GFDL-ESM4_historical_r1i1p1f1_195701-202112.nc finalised: true frequency: mon grid_label: gr1 @@ -36,10 +36,10 @@ cmip7: region: glb source_id: GFDL-ESM4 standard_name: equivalent_thickness_at_stp_of_atmosphere_ozone_content - start_time: '1950-01-16 12:00:00' - time_range: 1950-01-16 12:00:00-2014-12-16 12:00:00 + start_time: '1957-01-16 12:00:00' + time_range: 1957-01-16 12:00:00-2021-12-16 12:00:00 time_units: days since 1850-01-01 - tracking_id: hdl:21.14107/1310fc4c-e819-4c43-88f9-bc454ed41618 + tracking_id: hdl:21.14107/0b220858-9a70-45b8-a87b-631ec2203563 units: m variable_id: toz variant_label: r1i1p1f1 diff --git a/packages/climate-ref-esmvaltool/tests/unit/diagnostics/recipes/recipe_ozone_annual_cycle_cmip6_obs4mips.yml b/packages/climate-ref-esmvaltool/tests/unit/diagnostics/recipes/recipe_ozone_annual_cycle_cmip6_obs4mips.yml index 229d7f965..2ad393e17 100644 --- a/packages/climate-ref-esmvaltool/tests/unit/diagnostics/recipes/recipe_ozone_annual_cycle_cmip6_obs4mips.yml +++ b/packages/climate-ref-esmvaltool/tests/unit/diagnostics/recipes/recipe_ozone_annual_cycle_cmip6_obs4mips.yml @@ -33,7 +33,7 @@ preprocessors: operator: mean extract_region: start_latitude: 60 - end_latitude: 80 + end_latitude: 85 start_longitude: 0 end_longitude: 360 extract_month: @@ -94,18 +94,17 @@ datasets: exp: historical grid: gr1 mip: AERmon - timerange: 2005/2014 timerange_for_toz_monthly_data: - timerange: 1950/2021 + timerange: 1950/2014 timerange_for_toz_zonal_mean: - timerange: 1997/2021 + timerange: 1997/2014 timerange_for_ozone_profile: - timerange: 1990/2021 + timerange: 1990/2000 diagnostics: lat_month_mapplot: variables: toz: - timerange: 2005/2014 + timerange: 1997/2014 mip: AERmon exp: historical preprocessor: create_lat_month_map diff --git a/packages/climate-ref-esmvaltool/tests/unit/diagnostics/recipes/recipe_ozone_annual_cycle_cmip7_obs4mips.yml b/packages/climate-ref-esmvaltool/tests/unit/diagnostics/recipes/recipe_ozone_annual_cycle_cmip7_obs4mips.yml index 6f6847b3f..93525e978 100644 --- a/packages/climate-ref-esmvaltool/tests/unit/diagnostics/recipes/recipe_ozone_annual_cycle_cmip7_obs4mips.yml +++ b/packages/climate-ref-esmvaltool/tests/unit/diagnostics/recipes/recipe_ozone_annual_cycle_cmip7_obs4mips.yml @@ -33,7 +33,7 @@ preprocessors: operator: mean extract_region: start_latitude: 60 - end_latitude: 80 + end_latitude: 85 start_longitude: 0 end_longitude: 360 extract_month: @@ -97,18 +97,17 @@ datasets: institute: NOAA-GFDL mip: aerosol region: glb - timerange: 2005/2014 timerange_for_toz_monthly_data: - timerange: 1950/2021 + timerange: 1950/2014 timerange_for_toz_zonal_mean: - timerange: 1997/2021 + timerange: 1997/2014 timerange_for_ozone_profile: - timerange: 1990/2021 + timerange: 1990/2000 diagnostics: lat_month_mapplot: variables: toz: - timerange: 2005/2014 + timerange: 1997/2021 mip: aerosol exp: historical preprocessor: create_lat_month_map diff --git a/packages/climate-ref-esmvaltool/tests/unit/diagnostics/recipes/recipe_ozone_lat_time_cmip6_obs4mips.yml b/packages/climate-ref-esmvaltool/tests/unit/diagnostics/recipes/recipe_ozone_lat_time_cmip6_obs4mips.yml index d44c6e99d..0ac57ebc5 100644 --- a/packages/climate-ref-esmvaltool/tests/unit/diagnostics/recipes/recipe_ozone_lat_time_cmip6_obs4mips.yml +++ b/packages/climate-ref-esmvaltool/tests/unit/diagnostics/recipes/recipe_ozone_lat_time_cmip6_obs4mips.yml @@ -33,7 +33,7 @@ preprocessors: operator: mean extract_region: start_latitude: 60 - end_latitude: 80 + end_latitude: 85 start_longitude: 0 end_longitude: 360 extract_month: @@ -94,18 +94,17 @@ datasets: exp: historical grid: gr1 mip: AERmon - timerange: 1996/2014 timerange_for_toz_monthly_data: - timerange: 1950/2021 + timerange: 1950/2014 timerange_for_toz_zonal_mean: - timerange: 1997/2021 + timerange: 1997/2014 timerange_for_ozone_profile: - timerange: 1990/2021 + timerange: 1990/2000 diagnostics: lat_time_mapplot: variables: toz: - timerange: 1996/2014 + timerange: 1997/2014 mip: AERmon exp: historical preprocessor: create_lat_time_map diff --git a/packages/climate-ref-esmvaltool/tests/unit/diagnostics/recipes/recipe_ozone_lat_time_cmip7_obs4mips.yml b/packages/climate-ref-esmvaltool/tests/unit/diagnostics/recipes/recipe_ozone_lat_time_cmip7_obs4mips.yml index b0503804a..06c7f50a4 100644 --- a/packages/climate-ref-esmvaltool/tests/unit/diagnostics/recipes/recipe_ozone_lat_time_cmip7_obs4mips.yml +++ b/packages/climate-ref-esmvaltool/tests/unit/diagnostics/recipes/recipe_ozone_lat_time_cmip7_obs4mips.yml @@ -33,7 +33,7 @@ preprocessors: operator: mean extract_region: start_latitude: 60 - end_latitude: 80 + end_latitude: 85 start_longitude: 0 end_longitude: 360 extract_month: @@ -97,18 +97,17 @@ datasets: institute: NOAA-GFDL mip: aerosol region: glb - timerange: 1996/2014 timerange_for_toz_monthly_data: - timerange: 1950/2021 + timerange: 1950/2014 timerange_for_toz_zonal_mean: - timerange: 1997/2021 + timerange: 1997/2014 timerange_for_ozone_profile: - timerange: 1990/2021 + timerange: 1990/2000 diagnostics: lat_time_mapplot: variables: toz: - timerange: 1996/2014 + timerange: 1997/2021 mip: aerosol exp: historical preprocessor: create_lat_time_map diff --git a/packages/climate-ref-esmvaltool/tests/unit/diagnostics/recipes/recipe_ozone_nh_mar_cmip6_obs4mips.yml b/packages/climate-ref-esmvaltool/tests/unit/diagnostics/recipes/recipe_ozone_nh_mar_cmip6_obs4mips.yml index e93c7d90c..4b6c5b93e 100644 --- a/packages/climate-ref-esmvaltool/tests/unit/diagnostics/recipes/recipe_ozone_nh_mar_cmip6_obs4mips.yml +++ b/packages/climate-ref-esmvaltool/tests/unit/diagnostics/recipes/recipe_ozone_nh_mar_cmip6_obs4mips.yml @@ -33,7 +33,7 @@ preprocessors: operator: mean extract_region: start_latitude: 60 - end_latitude: 80 + end_latitude: 85 start_longitude: 0 end_longitude: 360 extract_month: @@ -94,18 +94,17 @@ datasets: exp: historical grid: gr1 mip: AERmon - timerange: 1950/2014 timerange_for_toz_monthly_data: - timerange: 1950/2021 + timerange: 1950/2014 timerange_for_toz_zonal_mean: - timerange: 1997/2021 + timerange: 1997/2014 timerange_for_ozone_profile: - timerange: 1990/2021 + timerange: 1990/2000 diagnostics: polar_cap_time_series_NH: variables: toz: - timerange: 1950/2021 + timerange: 1950/2014 mip: AERmon exp: historical preprocessor: create_time_series_NH @@ -133,4 +132,4 @@ diagnostics: OBS: color: black pyplot_kwargs: - title: Total Column Ozone, 60-80N, March + title: Total Column Ozone, 60-85N, March diff --git a/packages/climate-ref-esmvaltool/tests/unit/diagnostics/recipes/recipe_ozone_nh_mar_cmip7_obs4mips.yml b/packages/climate-ref-esmvaltool/tests/unit/diagnostics/recipes/recipe_ozone_nh_mar_cmip7_obs4mips.yml index e212bbd0a..aada81be0 100644 --- a/packages/climate-ref-esmvaltool/tests/unit/diagnostics/recipes/recipe_ozone_nh_mar_cmip7_obs4mips.yml +++ b/packages/climate-ref-esmvaltool/tests/unit/diagnostics/recipes/recipe_ozone_nh_mar_cmip7_obs4mips.yml @@ -33,7 +33,7 @@ preprocessors: operator: mean extract_region: start_latitude: 60 - end_latitude: 80 + end_latitude: 85 start_longitude: 0 end_longitude: 360 extract_month: @@ -97,18 +97,17 @@ datasets: institute: NOAA-GFDL mip: aerosol region: glb - timerange: 1950/2014 timerange_for_toz_monthly_data: - timerange: 1950/2021 + timerange: 1950/2014 timerange_for_toz_zonal_mean: - timerange: 1997/2021 + timerange: 1997/2014 timerange_for_ozone_profile: - timerange: 1990/2021 + timerange: 1990/2000 diagnostics: polar_cap_time_series_NH: variables: toz: - timerange: 1950/2021 + timerange: 1960/2021 mip: aerosol exp: historical preprocessor: create_time_series_NH @@ -137,4 +136,4 @@ diagnostics: OBS: color: black pyplot_kwargs: - title: Total Column Ozone, 60-80N, March + title: Total Column Ozone, 60-85N, March diff --git a/packages/climate-ref-esmvaltool/tests/unit/diagnostics/recipes/recipe_ozone_sh_oct_cmip6_obs4mips.yml b/packages/climate-ref-esmvaltool/tests/unit/diagnostics/recipes/recipe_ozone_sh_oct_cmip6_obs4mips.yml index 638a8e96c..c8c0c0cec 100644 --- a/packages/climate-ref-esmvaltool/tests/unit/diagnostics/recipes/recipe_ozone_sh_oct_cmip6_obs4mips.yml +++ b/packages/climate-ref-esmvaltool/tests/unit/diagnostics/recipes/recipe_ozone_sh_oct_cmip6_obs4mips.yml @@ -33,7 +33,7 @@ preprocessors: operator: mean extract_region: start_latitude: 60 - end_latitude: 80 + end_latitude: 85 start_longitude: 0 end_longitude: 360 extract_month: @@ -94,18 +94,17 @@ datasets: exp: historical grid: gr1 mip: AERmon - timerange: 1950/2014 timerange_for_toz_monthly_data: - timerange: 1950/2021 + timerange: 1950/2014 timerange_for_toz_zonal_mean: - timerange: 1997/2021 + timerange: 1997/2014 timerange_for_ozone_profile: - timerange: 1990/2021 + timerange: 1990/2000 diagnostics: polar_cap_time_series_SH: variables: toz: - timerange: 1950/2021 + timerange: 1950/2014 mip: AERmon exp: historical preprocessor: create_time_series_SH diff --git a/packages/climate-ref-esmvaltool/tests/unit/diagnostics/recipes/recipe_ozone_sh_oct_cmip7_obs4mips.yml b/packages/climate-ref-esmvaltool/tests/unit/diagnostics/recipes/recipe_ozone_sh_oct_cmip7_obs4mips.yml index 602832601..372621d71 100644 --- a/packages/climate-ref-esmvaltool/tests/unit/diagnostics/recipes/recipe_ozone_sh_oct_cmip7_obs4mips.yml +++ b/packages/climate-ref-esmvaltool/tests/unit/diagnostics/recipes/recipe_ozone_sh_oct_cmip7_obs4mips.yml @@ -33,7 +33,7 @@ preprocessors: operator: mean extract_region: start_latitude: 60 - end_latitude: 80 + end_latitude: 85 start_longitude: 0 end_longitude: 360 extract_month: @@ -97,18 +97,17 @@ datasets: institute: NOAA-GFDL mip: aerosol region: glb - timerange: 1950/2014 timerange_for_toz_monthly_data: - timerange: 1950/2021 + timerange: 1950/2014 timerange_for_toz_zonal_mean: - timerange: 1997/2021 + timerange: 1997/2014 timerange_for_ozone_profile: - timerange: 1990/2021 + timerange: 1990/2000 diagnostics: polar_cap_time_series_SH: variables: toz: - timerange: 1950/2021 + timerange: 1960/2021 mip: aerosol exp: historical preprocessor: create_time_series_SH From 59447809a73a49b702a1c45e9591995e67d92862 Mon Sep 17 00:00:00 2001 From: Jared Lewis Date: Fri, 28 Aug 2026 20:08:21 +1000 Subject: [PATCH 2/8] docs(changelog): add the ozone recipe fragment --- changelog/886.fix.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 changelog/886.fix.md diff --git a/changelog/886.fix.md b/changelog/886.fix.md new file mode 100644 index 000000000..2d06c686b --- /dev/null +++ b/changelog/886.fix.md @@ -0,0 +1,4 @@ +Updates the ozone diagnostics to use the unified `ref/recipe_ref_ozone.yml` recipe from ESMValTool v2.15. +This replaces the removed `recipe_ref_ozone_cmip7.yml`. +The northern hemisphere polar cap now spans 60N to 85N, matching the upstream boundary fix. +CMIP7 executions now evaluate the historical experiment through 2021. From d970281b58e9dafacf66ba395511b8af48b83496 Mon Sep 17 00:00:00 2001 From: Jared Lewis Date: Fri, 28 Aug 2026 20:17:02 +1000 Subject: [PATCH 3/8] fix: pass the CMIP7 time ranges explicitly and align versions and constraints --- .../diagnostics/ozone.py | 77 +++++++++++++------ 1 file changed, 52 insertions(+), 25 deletions(-) diff --git a/packages/climate-ref-esmvaltool/src/climate_ref_esmvaltool/diagnostics/ozone.py b/packages/climate-ref-esmvaltool/src/climate_ref_esmvaltool/diagnostics/ozone.py index 9d94a95d8..74c97b998 100644 --- a/packages/climate-ref-esmvaltool/src/climate_ref_esmvaltool/diagnostics/ozone.py +++ b/packages/climate-ref-esmvaltool/src/climate_ref_esmvaltool/diagnostics/ozone.py @@ -13,7 +13,10 @@ from climate_ref_core.esgf.obs4mips import Obs4MIPsRequest from climate_ref_core.metric_values.typing import FileDefinition, SeriesDefinition from climate_ref_core.testing import TestCase, TestDataSpecification -from climate_ref_esmvaltool.diagnostics.base import ESMValToolDiagnostic, get_cmip_source_type +from climate_ref_esmvaltool.diagnostics.base import ( + ESMValToolDiagnostic, + get_cmip_source_type, +) from climate_ref_esmvaltool.recipe import dataframe_to_recipe from climate_ref_esmvaltool.types import Recipe @@ -171,20 +174,20 @@ def _prepare_recipe( """ Prune the recipe to one diagnostic and insert the solved model dataset. - The model time ranges come from the base recipe, - except that CMIP7 `historical` runs through 2021 where CMIP6 ends in 2014. + The model time ranges come from the base recipe, which is written for CMIP6. + CMIP7 `historical` runs through 2021 instead of 2014, + so diagnostics that support CMIP7 pass the time range to use there. """ cmip_source = get_cmip_source_type(input_files) recipe_variables = dataframe_to_recipe(input_files[cmip_source]) + dataset = recipe_variables[variable]["additional_datasets"][0] dataset.pop("timerange", None) recipe["datasets"] = [dataset] recipe["diagnostics"] = {diagnostic: recipe["diagnostics"][diagnostic]} - variable_settings = recipe["diagnostics"][diagnostic]["variables"][variable] - if cmip_source == SourceDatasetType.CMIP7: - variable_settings["timerange"] = cmip7_timerange or variable_settings["timerange"].replace( - "/2014", "/2021" - ) + + if cmip_source == SourceDatasetType.CMIP7 and cmip7_timerange is not None: + recipe["diagnostics"][diagnostic]["variables"][variable]["timerange"] = cmip7_timerange class O3LatTimeMapplot(ESMValToolDiagnostic): @@ -195,7 +198,7 @@ class O3LatTimeMapplot(ESMValToolDiagnostic): name = "Ozone Diagnostics" slug = "ozone-lat-time" base_recipe = "ref/recipe_ref_ozone.yml" - version = 2 + version = 3 data_requirements = toz_data_requirement facets = () @@ -213,7 +216,7 @@ def update_recipe( input_files: dict[SourceDatasetType, pandas.DataFrame], ) -> None: """Update the recipe.""" - _prepare_recipe(recipe, input_files, "lat_time_mapplot", "toz") + _prepare_recipe(recipe, input_files, "lat_time_mapplot", "toz", cmip7_timerange="1997/2021") class O3PolarCapTimeseriesSH(ESMValToolDiagnostic): @@ -224,7 +227,7 @@ class O3PolarCapTimeseriesSH(ESMValToolDiagnostic): name = "Ozone Diagnostics" slug = "ozone-sh-oct" base_recipe = "ref/recipe_ref_ozone.yml" - version = 2 + version = 3 data_requirements = toz_data_requirement facets = () @@ -232,7 +235,10 @@ class O3PolarCapTimeseriesSH(ESMValToolDiagnostic): files = ( FileDefinition( file_pattern="plots/polar_cap_time_series_SH/plot/timeseries_toz_SH_Oct.png", - dimensions={"variable_id": "toz", "statistic": "Southern Hemisphere October polar mean"}, + dimensions={ + "variable_id": "toz", + "statistic": "Southern Hemisphere October polar mean", + }, ), ) # dim0=0 is the model, dim0=1 contains the observational reference data. @@ -240,7 +246,10 @@ class O3PolarCapTimeseriesSH(ESMValToolDiagnostic): SeriesDefinition( file_pattern="work/polar_cap_time_series_SH/plot/timeseries_toz_SH_Oct.nc", sel={"dim0": 0}, - dimensions={"variable_id": "toz", "statistic": "Southern Hemisphere October polar mean"}, + dimensions={ + "variable_id": "toz", + "statistic": "Southern Hemisphere October polar mean", + }, values_name="toz", index_name="time", attributes=[], @@ -254,12 +263,18 @@ def update_recipe( ) -> None: """Update the recipe.""" # The CMIP7 start is bounded by the fabricated test data, which begins in 1957. - _prepare_recipe(recipe, input_files, "polar_cap_time_series_SH", "toz", cmip7_timerange="1960/2021") + _prepare_recipe( + recipe, + input_files, + "polar_cap_time_series_SH", + "toz", + cmip7_timerange="1960/2021", + ) class O3PolarCapTimeseriesNH(ESMValToolDiagnostic): """ - Calculate the ozone diagnostics - March NH polar mean (60N-85N) time series. + Calculate the ozone diagnostics: March NH polar mean (60N-85N) time series. """ name = "Ozone Diagnostics" @@ -273,7 +288,10 @@ class O3PolarCapTimeseriesNH(ESMValToolDiagnostic): files = ( FileDefinition( file_pattern="plots/polar_cap_time_series_NH/plot/timeseries_toz_NH_MAR.png", - dimensions={"variable_id": "toz", "statistic": "Northern Hemisphere March polar mean"}, + dimensions={ + "variable_id": "toz", + "statistic": "Northern Hemisphere March polar mean", + }, ), ) # dim0=0 is the model, dim0=1 contains the observational reference data. @@ -281,7 +299,10 @@ class O3PolarCapTimeseriesNH(ESMValToolDiagnostic): SeriesDefinition( file_pattern="work/polar_cap_time_series_NH/plot/timeseries_toz_NH_MAR.nc", sel={"dim0": 0}, - dimensions={"variable_id": "toz", "statistic": "Northern Hemisphere March polar mean"}, + dimensions={ + "variable_id": "toz", + "statistic": "Northern Hemisphere March polar mean", + }, values_name="toz", index_name="time", attributes=[], @@ -295,7 +316,13 @@ def update_recipe( ) -> None: """Update the recipe.""" # The CMIP7 start is bounded by the fabricated test data, which begins in 1957. - _prepare_recipe(recipe, input_files, "polar_cap_time_series_NH", "toz", cmip7_timerange="1960/2021") + _prepare_recipe( + recipe, + input_files, + "polar_cap_time_series_NH", + "toz", + cmip7_timerange="1960/2021", + ) class O3ZonalMeanProfiles(ESMValToolDiagnostic): @@ -306,7 +333,7 @@ class O3ZonalMeanProfiles(ESMValToolDiagnostic): name = "Ozone Diagnostics" slug = "ozone-zonal" base_recipe = "ref/recipe_ref_ozone.yml" - version = 3 + version = 4 data_requirements = ( DataRequirement( @@ -324,8 +351,8 @@ class O3ZonalMeanProfiles(ESMValToolDiagnostic): constraints=( RequireTimerange( group_by=("instance_id",), - start=PartialDateTime(2005, 1), - end=PartialDateTime(2014, 12), + start=PartialDateTime(1990, 1), + end=PartialDateTime(2000, 12), ), RequireContiguousTimerange(group_by=("instance_id",)), ), @@ -348,7 +375,7 @@ class O3ZonalMeanProfiles(ESMValToolDiagnostic): "variable_id": "o3", }, remove_ensembles=True, - time_span=("1996", "2015"), + time_span=("1990", "2001"), ), ), ), @@ -370,7 +397,7 @@ class O3ZonalMeanProfiles(ESMValToolDiagnostic): "region": "glb", }, remove_ensembles=True, - time_span=("1996", "2015"), + time_span=("1990", "2001"), ), ), ), @@ -394,7 +421,7 @@ class O3LatMonthMapplot(ESMValToolDiagnostic): name = "Ozone Diagnostics" slug = "ozone-annual-cycle" base_recipe = "ref/recipe_ref_ozone.yml" - version = 2 + version = 3 data_requirements = toz_data_requirement facets = () @@ -412,4 +439,4 @@ def update_recipe( input_files: dict[SourceDatasetType, pandas.DataFrame], ) -> None: """Update the recipe.""" - _prepare_recipe(recipe, input_files, "lat_month_mapplot", "toz") + _prepare_recipe(recipe, input_files, "lat_month_mapplot", "toz", cmip7_timerange="1997/2021") From 01d9cfcec49fca567fd4c8d333925ddf99a867ed Mon Sep 17 00:00:00 2001 From: Jared Lewis Date: Fri, 28 Aug 2026 20:19:36 +1000 Subject: [PATCH 4/8] chore: drop a comment that explains nothing --- .../src/climate_ref_esmvaltool/diagnostics/ozone.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/climate-ref-esmvaltool/src/climate_ref_esmvaltool/diagnostics/ozone.py b/packages/climate-ref-esmvaltool/src/climate_ref_esmvaltool/diagnostics/ozone.py index 74c97b998..8f3a84498 100644 --- a/packages/climate-ref-esmvaltool/src/climate_ref_esmvaltool/diagnostics/ozone.py +++ b/packages/climate-ref-esmvaltool/src/climate_ref_esmvaltool/diagnostics/ozone.py @@ -262,7 +262,6 @@ def update_recipe( input_files: dict[SourceDatasetType, pandas.DataFrame], ) -> None: """Update the recipe.""" - # The CMIP7 start is bounded by the fabricated test data, which begins in 1957. _prepare_recipe( recipe, input_files, @@ -315,7 +314,6 @@ def update_recipe( input_files: dict[SourceDatasetType, pandas.DataFrame], ) -> None: """Update the recipe.""" - # The CMIP7 start is bounded by the fabricated test data, which begins in 1957. _prepare_recipe( recipe, input_files, From e75712146e7f2fcea70350a814d930c4580dd927 Mon Sep 17 00:00:00 2001 From: Jared Lewis Date: Fri, 28 Aug 2026 20:22:31 +1000 Subject: [PATCH 5/8] docs: tidy the ozone docstrings --- .../src/climate_ref_esmvaltool/diagnostics/ozone.py | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/packages/climate-ref-esmvaltool/src/climate_ref_esmvaltool/diagnostics/ozone.py b/packages/climate-ref-esmvaltool/src/climate_ref_esmvaltool/diagnostics/ozone.py index 8f3a84498..12b314168 100644 --- a/packages/climate-ref-esmvaltool/src/climate_ref_esmvaltool/diagnostics/ozone.py +++ b/packages/climate-ref-esmvaltool/src/climate_ref_esmvaltool/diagnostics/ozone.py @@ -173,10 +173,6 @@ def _prepare_recipe( ) -> None: """ Prune the recipe to one diagnostic and insert the solved model dataset. - - The model time ranges come from the base recipe, which is written for CMIP6. - CMIP7 `historical` runs through 2021 instead of 2014, - so diagnostics that support CMIP7 pass the time range to use there. """ cmip_source = get_cmip_source_type(input_files) recipe_variables = dataframe_to_recipe(input_files[cmip_source]) @@ -186,13 +182,14 @@ def _prepare_recipe( recipe["datasets"] = [dataset] recipe["diagnostics"] = {diagnostic: recipe["diagnostics"][diagnostic]} + # The recipe includes CMIP6 time ranges if cmip_source == SourceDatasetType.CMIP7 and cmip7_timerange is not None: recipe["diagnostics"][diagnostic]["variables"][variable]["timerange"] = cmip7_timerange class O3LatTimeMapplot(ESMValToolDiagnostic): """ - Calculate the ozone diagnostics - zonal mean total column ozone vs. time. + Calculate the ozone diagnostics: zonal mean total column ozone vs. time. """ name = "Ozone Diagnostics" @@ -221,7 +218,7 @@ def update_recipe( class O3PolarCapTimeseriesSH(ESMValToolDiagnostic): """ - Calculate the ozone diagnostics - October SH polar mean (60S-85S) time series. + Calculate the ozone diagnostics: October SH polar mean (60S-85S) time series. """ name = "Ozone Diagnostics" @@ -325,7 +322,7 @@ def update_recipe( class O3ZonalMeanProfiles(ESMValToolDiagnostic): """ - Calculate the ozone diagnostics - stratospheric zonal mean profiles. + Calculate the ozone diagnostics: stratospheric zonal mean profiles. """ name = "Ozone Diagnostics" @@ -413,7 +410,7 @@ def update_recipe( class O3LatMonthMapplot(ESMValToolDiagnostic): """ - Calculate the ozone diagnostics - zonal mean total column ozone vs. annual cycle plot. + Calculate the ozone diagnostics: zonal mean total column ozone vs. annual cycle plot. """ name = "Ozone Diagnostics" From 421d305db1250a1474c324a6f39d29422b92dcf1 Mon Sep 17 00:00:00 2001 From: Jared Lewis Date: Fri, 28 Aug 2026 20:25:33 +1000 Subject: [PATCH 6/8] docs: keep the original docstring punctuation --- .../src/climate_ref_esmvaltool/diagnostics/ozone.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/climate-ref-esmvaltool/src/climate_ref_esmvaltool/diagnostics/ozone.py b/packages/climate-ref-esmvaltool/src/climate_ref_esmvaltool/diagnostics/ozone.py index 12b314168..90ab44b74 100644 --- a/packages/climate-ref-esmvaltool/src/climate_ref_esmvaltool/diagnostics/ozone.py +++ b/packages/climate-ref-esmvaltool/src/climate_ref_esmvaltool/diagnostics/ozone.py @@ -189,7 +189,7 @@ def _prepare_recipe( class O3LatTimeMapplot(ESMValToolDiagnostic): """ - Calculate the ozone diagnostics: zonal mean total column ozone vs. time. + Calculate the ozone diagnostics - zonal mean total column ozone vs. time. """ name = "Ozone Diagnostics" @@ -218,7 +218,7 @@ def update_recipe( class O3PolarCapTimeseriesSH(ESMValToolDiagnostic): """ - Calculate the ozone diagnostics: October SH polar mean (60S-85S) time series. + Calculate the ozone diagnostics - October SH polar mean (60S-85S) time series. """ name = "Ozone Diagnostics" @@ -270,7 +270,7 @@ def update_recipe( class O3PolarCapTimeseriesNH(ESMValToolDiagnostic): """ - Calculate the ozone diagnostics: March NH polar mean (60N-85N) time series. + Calculate the ozone diagnostics - March NH polar mean (60N-85N) time series. """ name = "Ozone Diagnostics" @@ -322,7 +322,7 @@ def update_recipe( class O3ZonalMeanProfiles(ESMValToolDiagnostic): """ - Calculate the ozone diagnostics: stratospheric zonal mean profiles. + Calculate the ozone diagnostics - stratospheric zonal mean profiles. """ name = "Ozone Diagnostics" @@ -410,7 +410,7 @@ def update_recipe( class O3LatMonthMapplot(ESMValToolDiagnostic): """ - Calculate the ozone diagnostics: zonal mean total column ozone vs. annual cycle plot. + Calculate the ozone diagnostics - zonal mean total column ozone vs. annual cycle plot. """ name = "Ozone Diagnostics" From a25f78f7e01c0d274a2f4d95ca20659021ed9d81 Mon Sep 17 00:00:00 2001 From: Jared Lewis Date: Fri, 28 Aug 2026 21:09:34 +1000 Subject: [PATCH 7/8] chore: minted new diagnostics --- .../ozone-annual-cycle/cmip6/manifest.json | 22 +-- .../ozone-annual-cycle/cmip7/manifest.json | 22 +-- .../ozone-lat-time/cmip6/manifest.json | 22 +-- .../ozone-lat-time/cmip7/manifest.json | 22 +-- .../ozone-nh-mar/cmip6/manifest.json | 20 +-- .../ozone-nh-mar/cmip6/regression/series.json | 130 ++++++++-------- .../ozone-nh-mar/cmip7/manifest.json | 20 +-- .../ozone-nh-mar/cmip7/regression/series.json | 140 ++++++++---------- .../ozone-sh-oct/cmip6/manifest.json | 14 +- .../ozone-sh-oct/cmip7/manifest.json | 20 +-- .../ozone-sh-oct/cmip7/regression/series.json | 22 +-- .../test-data/ozone-zonal/cmip6/manifest.json | 22 +-- 12 files changed, 218 insertions(+), 258 deletions(-) diff --git a/packages/climate-ref-esmvaltool/tests/test-data/ozone-annual-cycle/cmip6/manifest.json b/packages/climate-ref-esmvaltool/tests/test-data/ozone-annual-cycle/cmip6/manifest.json index 3cd2750a3..d731d1ca8 100644 --- a/packages/climate-ref-esmvaltool/tests/test-data/ozone-annual-cycle/cmip6/manifest.json +++ b/packages/climate-ref-esmvaltool/tests/test-data/ozone-annual-cycle/cmip6/manifest.json @@ -5,7 +5,7 @@ "output.json": "978fd3b10d7e7ff386b4c39dbdc1f33ef5509fcb3afd3759132eee6524fc1b60", "series.json": "37517e5f3dc66819f61f5a7bb8ace1921282415f10551d2defa5c3eb0985b570" }, - "diagnostic_version": 2, + "diagnostic_version": 3, "native": { "diagnostic.json": { "sha256": "e52b1e19e1ed5a2a046bb8aa01c004240305fabfe69c4ffb4e64898b1b6bbb84", @@ -16,24 +16,24 @@ "size": 14653 }, "executions/recipe/plots/lat_month_mapplot/plot/hovmoeller_anncyc_vs_lat_or_lon_toz_LatTime_Map.png": { - "sha256": "ee752b39ef169209ca1f42ef14afbab44e0d662d01e902d33c3f81ba073957ae", - "size": 78392 + "sha256": "08a4045efe3698f22ce24822a0323938870f739948221dcd33363db2eba6c40a", + "size": 77763 }, "executions/recipe/run/lat_month_mapplot/plot/diagnostic_provenance.yml": { - "sha256": "6de2cf0191236dbd4dbd811bcf7fd0f3cc5f5e18070c6488055d57dc8a3f380d", + "sha256": "a7b06da868a1351b59aa66f895e7f818d4acb78fa68dabdb1c0230d2a86bb112", "size": 1979 }, "executions/recipe/work/lat_month_mapplot/plot/hovmoeller_anncyc_vs_lat_or_lon_toz_LatTime_Map_bottom.nc": { - "sha256": "a01a5275fdd301d86235adeea1168549bb4a2441337740be570577744520035a", - "size": 27463 + "sha256": "468936de2c6eb55ebaf1261c10d93cfea7b51259293f63b3429c272d7fd288ac", + "size": 27743 }, "executions/recipe/work/lat_month_mapplot/plot/hovmoeller_anncyc_vs_lat_or_lon_toz_LatTime_Map_top_left.nc": { - "sha256": "1a1dc0e8761b49a292f326535a61eed572a955391bd5bf7a838a55a502c11289", - "size": 27463 + "sha256": "aa0a5e0b2a07ba401d0ad28177e273f514368aa3db3e805e6bd6f22768f6b134", + "size": 27705 }, "executions/recipe/work/lat_month_mapplot/plot/hovmoeller_anncyc_vs_lat_or_lon_toz_LatTime_Map_top_right.nc": { - "sha256": "199c25186c50de2e85efd88da5a6ca01c1305450844367691864816c7640aea8", - "size": 24162 + "sha256": "214b7a6a9fb1031d64dde57c1e3f232fa120dcb53c605be9910bc8e9ae7ab537", + "size": 24002 }, "output.json": { "sha256": "1a25bbce94af301cc8243d77eeae19bfa1813e136f4cf58c179254f0a047a88a", @@ -45,5 +45,5 @@ } }, "schema": 2, - "test_case_version": 2 + "test_case_version": 3 } diff --git a/packages/climate-ref-esmvaltool/tests/test-data/ozone-annual-cycle/cmip7/manifest.json b/packages/climate-ref-esmvaltool/tests/test-data/ozone-annual-cycle/cmip7/manifest.json index cd3d839c5..8a375fef0 100644 --- a/packages/climate-ref-esmvaltool/tests/test-data/ozone-annual-cycle/cmip7/manifest.json +++ b/packages/climate-ref-esmvaltool/tests/test-data/ozone-annual-cycle/cmip7/manifest.json @@ -5,7 +5,7 @@ "output.json": "6f71c80892ecb575a43c0ee25a77769ad779162ae4da22fc1585ee869a1d3857", "series.json": "37517e5f3dc66819f61f5a7bb8ace1921282415f10551d2defa5c3eb0985b570" }, - "diagnostic_version": 2, + "diagnostic_version": 3, "native": { "diagnostic.json": { "sha256": "e52b1e19e1ed5a2a046bb8aa01c004240305fabfe69c4ffb4e64898b1b6bbb84", @@ -16,24 +16,24 @@ "size": 14653 }, "executions/recipe/plots/lat_month_mapplot/plot/hovmoeller_anncyc_vs_lat_or_lon_toz_LatTime_Map.png": { - "sha256": "3e16d8696246f141960652ff0b27d94efebe85dcb9ad2c091ea42309ea3728a4", - "size": 84447 + "sha256": "9907ebd4a1cace25b3be4c6d31d8a793466a77efb6ca20d11c302e42673da3c5", + "size": 86568 }, "executions/recipe/run/lat_month_mapplot/plot/diagnostic_provenance.yml": { - "sha256": "0ca6597dc3055d9748162a50e5938d356c16d89ce992b53b4c830c7b1333eb88", + "sha256": "619044183c428022e0a816e25f15634485039842bc90f5c7e5a2bd929ee4b408", "size": 2003 }, "executions/recipe/work/lat_month_mapplot/plot/hovmoeller_anncyc_vs_lat_or_lon_toz_LatTime_Map_bottom.nc": { - "sha256": "879ecd9f64c2187788cc83441e092fb44af75302efea0391025104d6940bdad1", - "size": 27460 + "sha256": "2af8f53ec6bd3c851588d955467f018da1ee6ca8dab5dba457791d413bbd6f34", + "size": 27730 }, "executions/recipe/work/lat_month_mapplot/plot/hovmoeller_anncyc_vs_lat_or_lon_toz_LatTime_Map_top_left.nc": { - "sha256": "6628c3f291aaf2b513082c74304791fc37df8d85ad80340e90c3e46edf820b84", - "size": 27460 + "sha256": "61a9a6a4a43890783ea0b1e0f8cfbeb8eea02a3fd69da83c4af6047092efe58c", + "size": 27692 }, "executions/recipe/work/lat_month_mapplot/plot/hovmoeller_anncyc_vs_lat_or_lon_toz_LatTime_Map_top_right.nc": { - "sha256": "0a218095f24010e42c2135104296e2915f02ef5f717bd22d1f16f49d8ec27fac", - "size": 24162 + "sha256": "17779c25fb4efc70e6ca6bc08fe86f49848c4da65b03470a9bf9b2fd506ef88a", + "size": 24002 }, "output.json": { "sha256": "c4992d750bbfcb7d7ffa2e54ef418af5a4b4986a96dd0e1146178468aab58aab", @@ -45,5 +45,5 @@ } }, "schema": 2, - "test_case_version": 2 + "test_case_version": 3 } diff --git a/packages/climate-ref-esmvaltool/tests/test-data/ozone-lat-time/cmip6/manifest.json b/packages/climate-ref-esmvaltool/tests/test-data/ozone-lat-time/cmip6/manifest.json index 799453455..1f31c5aae 100644 --- a/packages/climate-ref-esmvaltool/tests/test-data/ozone-lat-time/cmip6/manifest.json +++ b/packages/climate-ref-esmvaltool/tests/test-data/ozone-lat-time/cmip6/manifest.json @@ -5,7 +5,7 @@ "output.json": "806aec53b4c2ce0a9d9ec21cd2c0360d9b433ef2392f04053eead0f4e9e30a0e", "series.json": "37517e5f3dc66819f61f5a7bb8ace1921282415f10551d2defa5c3eb0985b570" }, - "diagnostic_version": 2, + "diagnostic_version": 3, "native": { "diagnostic.json": { "sha256": "e52b1e19e1ed5a2a046bb8aa01c004240305fabfe69c4ffb4e64898b1b6bbb84", @@ -16,24 +16,24 @@ "size": 14596 }, "executions/recipe/plots/lat_time_mapplot/plot/hovmoeller_time_vs_lat_or_lon_toz_LatTime_Map.png": { - "sha256": "27d58ff62aef6b1a6a358ad531d60b5d341e1fd0815ab253710808ebb40ced7a", - "size": 147681 + "sha256": "0675a7fc0d80724f5cbc855ee1c450e1952e8c104252affd7616a4c44523a527", + "size": 143815 }, "executions/recipe/run/lat_time_mapplot/plot/diagnostic_provenance.yml": { - "sha256": "bebd2719f0413f7dc998d62e1fd2ce06fa4852a28884dc31b53d3e4a0365466a", + "sha256": "f0e73f1d0f96c89b968fa82106f722c940de324f6ffe50305889f135a896a5d2", "size": 2037 }, "executions/recipe/work/lat_time_mapplot/plot/hovmoeller_time_vs_lat_or_lon_toz_LatTime_Map_bottom.nc": { - "sha256": "fd9c7ba45be087d4bab1fd96aeb9c5e35cebb1988de188bb6478e80bfa891a51", - "size": 64540 + "sha256": "92fe127bd8664b5ad3f58ec820dd7ca3e699b466d981b24ff442c7fe2cbdc5ac", + "size": 62576 }, "executions/recipe/work/lat_time_mapplot/plot/hovmoeller_time_vs_lat_or_lon_toz_LatTime_Map_top_left.nc": { - "sha256": "1364138224660d2e526f7ec9abcca2907bfb676fbb51f0234616e2bb8755a951", - "size": 64725 + "sha256": "40662d13663ee58356f9fda423e32cd5da7d366c49295b9fbe74ba4893d18801", + "size": 62576 }, "executions/recipe/work/lat_time_mapplot/plot/hovmoeller_time_vs_lat_or_lon_toz_LatTime_Map_top_right.nc": { - "sha256": "75cc0ff0c7804e583eae8bc81ad15a169e4e5ccb8e7e336890ad999ab310a280", - "size": 63332 + "sha256": "cf77b5cb327a3bb8ea00878719e39862fb3ec0315cc30a7be2135b4df1497625", + "size": 61649 }, "output.json": { "sha256": "126f74e9f4525fc3006ed075ee4c9d997e9b882a75fb61ad9c4c7bf41b1792b3", @@ -45,5 +45,5 @@ } }, "schema": 2, - "test_case_version": 2 + "test_case_version": 3 } diff --git a/packages/climate-ref-esmvaltool/tests/test-data/ozone-lat-time/cmip7/manifest.json b/packages/climate-ref-esmvaltool/tests/test-data/ozone-lat-time/cmip7/manifest.json index 053e72fe5..d2aa3cdc2 100644 --- a/packages/climate-ref-esmvaltool/tests/test-data/ozone-lat-time/cmip7/manifest.json +++ b/packages/climate-ref-esmvaltool/tests/test-data/ozone-lat-time/cmip7/manifest.json @@ -5,7 +5,7 @@ "output.json": "758c03396e0b6b00a89ace6651712a6f9dc268f5d207fe3bbb35365351b68205", "series.json": "37517e5f3dc66819f61f5a7bb8ace1921282415f10551d2defa5c3eb0985b570" }, - "diagnostic_version": 2, + "diagnostic_version": 3, "native": { "diagnostic.json": { "sha256": "e52b1e19e1ed5a2a046bb8aa01c004240305fabfe69c4ffb4e64898b1b6bbb84", @@ -16,24 +16,24 @@ "size": 14596 }, "executions/recipe/plots/lat_time_mapplot/plot/hovmoeller_time_vs_lat_or_lon_toz_LatTime_Map.png": { - "sha256": "0a94c85a94b0baf86a6c71ea499b711625e172ee50ddd13a38be84aafe465001", - "size": 168083 + "sha256": "7d2e4f1ef38c053116c9b22d81267e1d66a5ac694b34947dbbe0d5be63879c80", + "size": 170624 }, "executions/recipe/run/lat_time_mapplot/plot/diagnostic_provenance.yml": { - "sha256": "e9a5b935d9649ae35e61c93ed9bc41b01bd047ad5152024ed1bddd3c443d3001", + "sha256": "49390b691a621c5845656cc428de4a23655f94354479d35e5eaddfc8a690add6", "size": 2061 }, "executions/recipe/work/lat_time_mapplot/plot/hovmoeller_time_vs_lat_or_lon_toz_LatTime_Map_bottom.nc": { - "sha256": "6426b5d58587d8b1b17a5ab466f7f6c371ef4e6e293b0f1767855df8393984b4", - "size": 64527 + "sha256": "3eefd2b0b708115b499b1c6ab0063f5290bee7b5be736cadd549908ea7019f41", + "size": 76660 }, "executions/recipe/work/lat_time_mapplot/plot/hovmoeller_time_vs_lat_or_lon_toz_LatTime_Map_top_left.nc": { - "sha256": "4729d352ad9ff1e8cd2e9923c6332602f0f71e7c3f29f819557d6ce53a6f0e83", - "size": 64718 + "sha256": "d9ea384afde8c9d52f750cc15aa5a56e584d3db6f599b9e89d3cf8c405393ceb", + "size": 76660 }, "executions/recipe/work/lat_time_mapplot/plot/hovmoeller_time_vs_lat_or_lon_toz_LatTime_Map_top_right.nc": { - "sha256": "9b1813a9d073d759187002b85bcce5311dcb19233ab010782d996f28e5f6ebd0", - "size": 63332 + "sha256": "5b5f90a9846f5c83bdc194b4a0737140ef7f986df00ad16dea389c20d2c40397", + "size": 75761 }, "output.json": { "sha256": "013dd551a76fc70a5d76833df9d75f53d3602f5d7f3b797f6c2367fa5a58e92c", @@ -45,5 +45,5 @@ } }, "schema": 2, - "test_case_version": 2 + "test_case_version": 3 } diff --git a/packages/climate-ref-esmvaltool/tests/test-data/ozone-nh-mar/cmip6/manifest.json b/packages/climate-ref-esmvaltool/tests/test-data/ozone-nh-mar/cmip6/manifest.json index e6c2a51be..3a56f551a 100644 --- a/packages/climate-ref-esmvaltool/tests/test-data/ozone-nh-mar/cmip6/manifest.json +++ b/packages/climate-ref-esmvaltool/tests/test-data/ozone-nh-mar/cmip6/manifest.json @@ -3,9 +3,9 @@ "committed": { "diagnostic.json": "183d82f3963ad19b5a556b8025e6990c444f292adda1d464e12136d05a5ef3b3", "output.json": "a8589880fc34c8a12ab98fdccf5c893dc58c8d6ba76a72338c8297eb375af1f4", - "series.json": "9cd508338685d5054387550f19f9b008ddc8a255bd6f28ba4bc909cc242a43ec" + "series.json": "684291796af0d9e77a267a007644b7d9286b01a93cd3b7c55723f32971b34f22" }, - "diagnostic_version": 2, + "diagnostic_version": 3, "native": { "diagnostic.json": { "sha256": "e52b1e19e1ed5a2a046bb8aa01c004240305fabfe69c4ffb4e64898b1b6bbb84", @@ -16,26 +16,26 @@ "size": 13052 }, "executions/recipe/plots/polar_cap_time_series_NH/plot/timeseries_toz_NH_MAR.png": { - "sha256": "eeb9c4190ff576bdcd853df27cc35c14d30b7d7fbba15e4255b604f287bb0f4e", - "size": 88521 + "sha256": "e6775777110ebe11870c51360c3d576130edf2c270d023581fa1a276c414c95a", + "size": 92277 }, "executions/recipe/run/polar_cap_time_series_NH/plot/diagnostic_provenance.yml": { - "sha256": "cf593bb7ebcc717d4553797cf2275c555ac0b6453493765f92def49d1d404e6c", + "sha256": "2a5b8da1e921ba21c1c6c48a7730c485d815b2ed265dbc7009c087f8f117b8f8", "size": 650 }, "executions/recipe/work/polar_cap_time_series_NH/plot/timeseries_toz_NH_MAR.nc": { - "sha256": "faada0ad89a838855303fcc128bc85c5cdf6402133e14ecbd477047e2cfc4032", - "size": 10310 + "sha256": "c66ffac076d35dda2d4c4b037c5346d7c1771d5563097abf5169231d2b8cc1c4", + "size": 10128 }, "output.json": { "sha256": "20c4d99738604059dacdadc537600c2b0fbbcb5be3574734f855ab022cac4c86", "size": 1394 }, "series.json": { - "sha256": "26cd433d9f7937d5afecf383e662f25200fdb388dba6afafd39eb61035a8238c", - "size": 4422 + "sha256": "3ef5857c321be856a9fc31b1d220931c6a3bf38a01adda07295200a367d3994f", + "size": 4399 } }, "schema": 2, - "test_case_version": 2 + "test_case_version": 3 } diff --git a/packages/climate-ref-esmvaltool/tests/test-data/ozone-nh-mar/cmip6/regression/series.json b/packages/climate-ref-esmvaltool/tests/test-data/ozone-nh-mar/cmip6/regression/series.json index 98be03187..480e2bd8c 100644 --- a/packages/climate-ref-esmvaltool/tests/test-data/ozone-nh-mar/cmip6/regression/series.json +++ b/packages/climate-ref-esmvaltool/tests/test-data/ozone-nh-mar/cmip6/regression/series.json @@ -93,71 +93,71 @@ ], "index_name": "time", "values": [ - 407.5291, - 399.9013, - 393.7835, - 384.9622, - 400.4131, - 399.8168, - 417.0364, - 413.0714, - 418.2638, - 420.4407, - 441.4696, - 414.5495, - 415.2564, - 407.4001, - 414.2425, - 417.6407, - 425.7912, - 418.4874, - 425.032, - 417.3188, - 421.9473, - 417.0072, - 437.896, - 432.3808, - 414.6581, - 411.5723, - 423.5049, - 429.6352, - 405.6232, - 412.1506, - 423.0074, - 404.2964, - 421.5974, - 420.9508, - 409.0649, - 407.284, - 393.8818, - 395.1916, - 412.2841, - 427.6338, - 417.2104, - 400.0932, - 415.0448, - 397.6532, - 364.7538, - 419.7193, - 397.156, - 409.7177, - 397.3969, - 405.7892, - 408.873, - 414.8088, - 416.7144, - 408.9203, - 430.3568, - 417.829, - 411.0966, - 418.5334, - 416.4184, - 390.1082, - 415.1942, - 412.8432, - 388.7828, - 435.4207, - 415.2336, + 409.1578, + 403.9106, + 394.8572, + 385.2142, + 400.6157, + 402.3246, + 422.1779, + 414.4756, + 419.5641, + 423.1462, + 444.6286, + 416.2634, + 418.3649, + 409.8231, + 415.2847, + 419.9191, + 428.4659, + 420.6527, + 428.0645, + 420.2755, + 425.0454, + 419.4863, + 440.3428, + 435.1847, + 417.0232, + 413.2774, + 426.4794, + 432.5576, + 406.5273, + 412.8481, + 425.8034, + 407.3272, + 425.9691, + 424.2893, + 412.5556, + 411.069, + 396.3156, + 396.4222, + 413.774, + 430.6905, + 420.5451, + 401.6967, + 417.254, + 399.8174, + 364.8375, + 422.2297, + 398.8301, + 411.8998, + 401.148, + 407.8724, + 410.8814, + 417.4187, + 419.0831, + 411.0274, + 433.0693, + 419.9886, + 413.7646, + 421.7968, + 418.695, + 390.4908, + 416.4707, + 415.5194, + 389.5234, + 438.3305, + 418.7029, null, null, null, diff --git a/packages/climate-ref-esmvaltool/tests/test-data/ozone-nh-mar/cmip7/manifest.json b/packages/climate-ref-esmvaltool/tests/test-data/ozone-nh-mar/cmip7/manifest.json index 4de9d88b0..5c0cc1bf5 100644 --- a/packages/climate-ref-esmvaltool/tests/test-data/ozone-nh-mar/cmip7/manifest.json +++ b/packages/climate-ref-esmvaltool/tests/test-data/ozone-nh-mar/cmip7/manifest.json @@ -3,9 +3,9 @@ "committed": { "diagnostic.json": "183d82f3963ad19b5a556b8025e6990c444f292adda1d464e12136d05a5ef3b3", "output.json": "a8589880fc34c8a12ab98fdccf5c893dc58c8d6ba76a72338c8297eb375af1f4", - "series.json": "d8bf2a7bd65802c545927b8293bfda7ca47bc08c9160aa387291624b32c08571" + "series.json": "27aa41f4faa55afab4e18a7d9a38360915d03f197b9b2f61cca76574a79b9c04" }, - "diagnostic_version": 2, + "diagnostic_version": 3, "native": { "diagnostic.json": { "sha256": "e52b1e19e1ed5a2a046bb8aa01c004240305fabfe69c4ffb4e64898b1b6bbb84", @@ -16,26 +16,26 @@ "size": 13052 }, "executions/recipe/plots/polar_cap_time_series_NH/plot/timeseries_toz_NH_MAR.png": { - "sha256": "df3d914aabe06bce1de8c22979df349531e9829d9c9365d5069da9469fbbba2a", - "size": 89531 + "sha256": "a27718e9b76fc93d89ae3050487f96244a0fd17a22c2f50555ad23d7cded65ba", + "size": 96298 }, "executions/recipe/run/polar_cap_time_series_NH/plot/diagnostic_provenance.yml": { - "sha256": "099fb2f195cbb6fd4b40a688dd6e135a0a9b843ccf3797b33f46cf1b170108f1", + "sha256": "fdb5ed549b3858937c3221a5a54b3e1604ac12c58da5d9017039a3dd10b5d2fc", "size": 658 }, "executions/recipe/work/polar_cap_time_series_NH/plot/timeseries_toz_NH_MAR.nc": { - "sha256": "5a8abed8f37c7ac4386d4ff805c011917521d4d7fe6637f169198f4efb0f82e2", - "size": 10310 + "sha256": "47597adedbaa6c55b0d69be5417e5c34f64b8880d7718e3bf5b481c82f619a46", + "size": 9888 }, "output.json": { "sha256": "20c4d99738604059dacdadc537600c2b0fbbcb5be3574734f855ab022cac4c86", "size": 1394 }, "series.json": { - "sha256": "510a6b90c9cf1159c6014de0db874cb9ac910b67de80ed0668fd75198b57e1e7", - "size": 4139 + "sha256": "cfd81766c690e3bab916684172203fbd63139f85e3b73c1e74663dc71568624d", + "size": 3691 } }, "schema": 2, - "test_case_version": 2 + "test_case_version": 3 } diff --git a/packages/climate-ref-esmvaltool/tests/test-data/ozone-nh-mar/cmip7/regression/series.json b/packages/climate-ref-esmvaltool/tests/test-data/ozone-nh-mar/cmip7/regression/series.json index 962b08a97..bb63b4830 100644 --- a/packages/climate-ref-esmvaltool/tests/test-data/ozone-nh-mar/cmip7/regression/series.json +++ b/packages/climate-ref-esmvaltool/tests/test-data/ozone-nh-mar/cmip7/regression/series.json @@ -18,16 +18,6 @@ "variant_label": "r1i1p1f1" }, "index": [ - "1950-03-16T12:00:00", - "1951-03-16T12:00:00", - "1952-03-16T12:00:00", - "1953-03-16T12:00:00", - "1954-03-16T12:00:00", - "1955-03-16T12:00:00", - "1956-03-16T12:00:00", - "1957-03-16T12:00:00", - "1958-03-16T12:00:00", - "1959-03-16T12:00:00", "1960-03-16T12:00:00", "1961-03-16T12:00:00", "1962-03-16T12:00:00", @@ -93,78 +83,68 @@ ], "index_name": "time", "values": [ - 390.8379, - 392.4893, - 393.9082, 390.625, - 394.6045, - 392.7363, - 416.085, - 415.6807, - 413.3027, - 416.3018, - 442.6357, - 395.999, - 404.0322, - 405.2871, - 395.1367, - 404.668, - 416.6045, - 413.209, - 417.8857, - 412.0049, - 408.1055, - 402.0088, - 438.3867, - 433.6318, - 407.4619, - 398.6006, - 426.2959, - 423.7979, - 394.6318, - 406.9541, - 421.6367, - 397.9365, - 419.8115, - 414.498, - 405.3486, - 403.9297, - 391.5977, - 391.6953, - 403.3916, - 430.1777, - 416.4219, - 395.3516, - 409.8389, - 393.0449, - 384.9111, - 415.5645, - 395.7285, - 406.6064, - 391.8633, - 395.1436, - 393.5889, - 417.9062, - 412.8184, - 396.543, - 431.8486, - 409.7734, - 399.0156, - 417.5977, - 410.3057, + 394.2568, + 393.3506, + 422.4004, + 416.4199, + 415.7129, + 420.9268, + 446.6289, + 399.0508, + 410.6777, + 406.9658, + 394.7422, + 409.3281, + 422.874, + 416.5869, + 423.2217, + 418.6777, + 414.6055, + 407.1494, + 441.9463, + 437.4424, + 411.2734, + 398.3506, + 431.4551, + 429.4385, + 394.3867, + 407.0361, + 425.3867, + 401.626, + 425.6807, + 420.6748, + 411.4219, + 409.082, + 391.8711, + 391.6016, + 405.0176, + 434.2598, + 422.708, + 394.9375, + 413.374, + 395.168, + 385.4111, + 420.2324, + 395.9043, + 409.75, + 396.8086, + 396.6143, + 393.4316, + 420.4082, + 415.0361, + 398.8809, + 436.7852, + 412.7891, + 403.3672, + 422.873, + 413.7051, 390.625, - 393.6816, - 409.1328, - 388.6289, - 426.8887, - 416.9375, - null, - null, - null, - null, - null, - null, - null + 393.5195, + 413.2949, + 388.8037, + 431.9053, + 421.3887 ] } ] diff --git a/packages/climate-ref-esmvaltool/tests/test-data/ozone-sh-oct/cmip6/manifest.json b/packages/climate-ref-esmvaltool/tests/test-data/ozone-sh-oct/cmip6/manifest.json index 7db597e9c..978a76347 100644 --- a/packages/climate-ref-esmvaltool/tests/test-data/ozone-sh-oct/cmip6/manifest.json +++ b/packages/climate-ref-esmvaltool/tests/test-data/ozone-sh-oct/cmip6/manifest.json @@ -5,7 +5,7 @@ "output.json": "7474e7e327a830c53b821d5320e05bff2f55c24068a4926fb49c76c484ed2c9a", "series.json": "4b803facd29ee24afb14f81e2de5d5ae5dc3997a28f58a61eec90d27525d7c1d" }, - "diagnostic_version": 2, + "diagnostic_version": 3, "native": { "diagnostic.json": { "sha256": "e52b1e19e1ed5a2a046bb8aa01c004240305fabfe69c4ffb4e64898b1b6bbb84", @@ -16,16 +16,16 @@ "size": 13052 }, "executions/recipe/plots/polar_cap_time_series_SH/plot/timeseries_toz_SH_Oct.png": { - "sha256": "ef55006c1e5c1c22478a9e4dbfd537ff35b209b7d92573a2b546aaa0ed142460", - "size": 89533 + "sha256": "cfd39d90d69fedb364ddb43c4925bfaa72aab332544a42ec4ed236170b3a4199", + "size": 90958 }, "executions/recipe/run/polar_cap_time_series_SH/plot/diagnostic_provenance.yml": { - "sha256": "a3ec416d400446df8a996d5f9394fcad6aafb8bd0d7d2be1de13d9b44aee98f8", + "sha256": "9d38b674b4c8c10152fffffe178762741bdb78096592d0953ebbe5af6706c7d6", "size": 650 }, "executions/recipe/work/polar_cap_time_series_SH/plot/timeseries_toz_SH_Oct.nc": { - "sha256": "cd4afb40d1a98497e965109a4c9d5ee9359e6a08ca1cf1b9679fabd9dd6248c4", - "size": 10310 + "sha256": "dbea413f59ac4bb0d5096a95905557a93c55197f4ce115a145e19e2626aea760", + "size": 10128 }, "output.json": { "sha256": "85f5de5ad39e01de85c3bf9c35f255edf678dc014986df5e033cec81a8522f63", @@ -37,5 +37,5 @@ } }, "schema": 2, - "test_case_version": 2 + "test_case_version": 3 } diff --git a/packages/climate-ref-esmvaltool/tests/test-data/ozone-sh-oct/cmip7/manifest.json b/packages/climate-ref-esmvaltool/tests/test-data/ozone-sh-oct/cmip7/manifest.json index 454879bae..96416e190 100644 --- a/packages/climate-ref-esmvaltool/tests/test-data/ozone-sh-oct/cmip7/manifest.json +++ b/packages/climate-ref-esmvaltool/tests/test-data/ozone-sh-oct/cmip7/manifest.json @@ -3,9 +3,9 @@ "committed": { "diagnostic.json": "183d82f3963ad19b5a556b8025e6990c444f292adda1d464e12136d05a5ef3b3", "output.json": "7474e7e327a830c53b821d5320e05bff2f55c24068a4926fb49c76c484ed2c9a", - "series.json": "f40c1da8ac81e1ef2317fad9c17dbd78e04f336b226a9313307dbdfadbeb3fc0" + "series.json": "2ed6f8efe8ab07d6c70202cac1e8de07588745185c46e96af3159dfcc364a630" }, - "diagnostic_version": 2, + "diagnostic_version": 3, "native": { "diagnostic.json": { "sha256": "e52b1e19e1ed5a2a046bb8aa01c004240305fabfe69c4ffb4e64898b1b6bbb84", @@ -16,26 +16,26 @@ "size": 13052 }, "executions/recipe/plots/polar_cap_time_series_SH/plot/timeseries_toz_SH_Oct.png": { - "sha256": "4431266ab4bdb21b7d016900dcef88de35821647a9c4eba598dbe60e7f9f5f03", - "size": 89280 + "sha256": "4cc1058fd3f4c6b617a99c9ee6708b63a566a4beb78983ad95f4af892daa97f7", + "size": 91958 }, "executions/recipe/run/polar_cap_time_series_SH/plot/diagnostic_provenance.yml": { - "sha256": "eba310a7f6b9269b1026590a58d612bdbcf830617d91408efdc3bfb9ccbf5e76", + "sha256": "96029cd6c6286e2f09f77a2165bca67115cb93d7d09236e09889c33ca34799c0", "size": 658 }, "executions/recipe/work/polar_cap_time_series_SH/plot/timeseries_toz_SH_Oct.nc": { - "sha256": "1e6b935538f4e36d79d4d9dc9ffc59829c2d605c23680b5b32a8ac4d4a9a2da5", - "size": 10310 + "sha256": "92c02109c24d7c338074060d118a09841592c717d9a8778c21dc4414206cf71b", + "size": 9888 }, "output.json": { "sha256": "85f5de5ad39e01de85c3bf9c35f255edf678dc014986df5e033cec81a8522f63", "size": 1398 }, "series.json": { - "sha256": "b6fe210ff96a969bf2b55eb008eec330dd2957466285ed269e996fe1a2e41131", - "size": 4139 + "sha256": "2d9b2f792b74c522bf99bee5adc72625ea4cc1c047019a345c6acb60f08d9743", + "size": 3701 } }, "schema": 2, - "test_case_version": 2 + "test_case_version": 3 } diff --git a/packages/climate-ref-esmvaltool/tests/test-data/ozone-sh-oct/cmip7/regression/series.json b/packages/climate-ref-esmvaltool/tests/test-data/ozone-sh-oct/cmip7/regression/series.json index 2a27d8892..41aa66711 100644 --- a/packages/climate-ref-esmvaltool/tests/test-data/ozone-sh-oct/cmip7/regression/series.json +++ b/packages/climate-ref-esmvaltool/tests/test-data/ozone-sh-oct/cmip7/regression/series.json @@ -18,16 +18,6 @@ "variant_label": "r1i1p1f1" }, "index": [ - "1950-10-16T12:00:00", - "1951-10-16T12:00:00", - "1952-10-16T12:00:00", - "1953-10-16T12:00:00", - "1954-10-16T12:00:00", - "1955-10-16T12:00:00", - "1956-10-16T12:00:00", - "1957-10-16T12:00:00", - "1958-10-16T12:00:00", - "1959-10-16T12:00:00", "1960-10-16T12:00:00", "1961-10-16T12:00:00", "1962-10-16T12:00:00", @@ -93,9 +83,6 @@ ], "index_name": "time", "values": [ - 340.7197, - 334.5527, - 370.9551, 367.75, 361.7256, 346.042, @@ -157,14 +144,7 @@ 252.7188, 233.8916, 221.8467, - 248.0029, - null, - null, - null, - null, - null, - null, - null + 248.0029 ] } ] diff --git a/packages/climate-ref-esmvaltool/tests/test-data/ozone-zonal/cmip6/manifest.json b/packages/climate-ref-esmvaltool/tests/test-data/ozone-zonal/cmip6/manifest.json index 61b9a6899..25b189e09 100644 --- a/packages/climate-ref-esmvaltool/tests/test-data/ozone-zonal/cmip6/manifest.json +++ b/packages/climate-ref-esmvaltool/tests/test-data/ozone-zonal/cmip6/manifest.json @@ -5,7 +5,7 @@ "output.json": "c3ad14429dfae8653c4ee2a86e24c5c8b49fa7f5ec4e7b13f3183aaf719fb75a", "series.json": "37517e5f3dc66819f61f5a7bb8ace1921282415f10551d2defa5c3eb0985b570" }, - "diagnostic_version": 3, + "diagnostic_version": 4, "native": { "diagnostic.json": { "sha256": "e52b1e19e1ed5a2a046bb8aa01c004240305fabfe69c4ffb4e64898b1b6bbb84", @@ -16,24 +16,24 @@ "size": 14276 }, "executions/recipe/plots/zonal_mean_profiles/plot/zonal_mean_profile_o3_GFDL-ESM4_historical.png": { - "sha256": "c17841415d728c97298170781746bc0b17fcdb9a82160cf1ed2c4bf15ce7aee9", - "size": 79760 + "sha256": "b840b96062726ae5fd1f184b33fe6ade99ecaa833520ae40b3b198830e609751", + "size": 80412 }, "executions/recipe/run/zonal_mean_profiles/plot/diagnostic_provenance.yml": { - "sha256": "324e2ac1d52795da2463302b32c4f3e326402932b0786e3fcd1098e90abb6550", + "sha256": "8367b70ee45dc900b2c9307b6b9539c38beacd620f8053db698d4a50e933f174", "size": 1939 }, "executions/recipe/work/zonal_mean_profiles/plot/zonal_mean_profile_o3_GFDL-ESM4_historical_bottom.nc": { - "sha256": "b14e3aa4365c9c6198ae55876b7c07caa258609a743d5aa703a481d991b14135", - "size": 32222 + "sha256": "2e0246ca4bd08a07474b3d98c07bc17ad4cdfc2343d543b7bb914af2ba6f4939", + "size": 30414 }, "executions/recipe/work/zonal_mean_profiles/plot/zonal_mean_profile_o3_GFDL-ESM4_historical_top_left.nc": { - "sha256": "0a7740d496807edc01dac720e5d95f17b763a4c6898fcf999bdfc8dd2365d54c", - "size": 30030 + "sha256": "6f86ab127d7df99e64b86c8003ff53df9bdefac949966ca006b61a2abe4274ec", + "size": 28302 }, "executions/recipe/work/zonal_mean_profiles/plot/zonal_mean_profile_o3_GFDL-ESM4_historical_top_right.nc": { - "sha256": "0ba4599058ca2c64dc20ab80008f9d41d1939764e4a2aaa3d010a9435181bf61", - "size": 25615 + "sha256": "6762cc4158d5e741bf580427fdf228fca6834ccffe5d82617fdea1a1564f22ec", + "size": 24612 }, "output.json": { "sha256": "2e4a87a330ad8514d0c2878646d65809a0c7e9092ade03ec703ef36ce740fefd", @@ -45,5 +45,5 @@ } }, "schema": 2, - "test_case_version": 3 + "test_case_version": 4 } From 6122be82672d34d632ef467078f9426daee44698 Mon Sep 17 00:00:00 2001 From: Jared Lewis Date: Tue, 1 Sep 2026 22:59:53 +1000 Subject: [PATCH 8/8] fix: start the CMIP7 polar cap series at 1950 The fabricated CMIP7 coverage used to relabel the whole time axis, so a 1950-2014 series came back as 1957-2021 and the recipe had to ask for 1960 to find any data. Fabrication now repeats the final year instead, so the start is preserved and the polar cap diagnostics can ask for the full 1950/2021 range. Regenerates the ozone solve baselines, which still carried the datasets that the old 2014 end date let through. --- .../src/climate_ref_esmvaltool/diagnostics/ozone.py | 4 ++-- .../recipes/recipe_ozone_nh_mar_cmip7_obs4mips.yml | 2 +- .../recipes/recipe_ozone_sh_oct_cmip7_obs4mips.yml | 2 +- .../test_solve_regression_ozone_annual_cycle_.yml | 10 ---------- .../test_solve_regression_ozone_lat_time_.yml | 10 ---------- .../test_solve_regression_ozone_nh_mar_.yml | 10 ---------- .../test_solve_regression_ozone_sh_oct_.yml | 10 ---------- 7 files changed, 4 insertions(+), 44 deletions(-) diff --git a/packages/climate-ref-esmvaltool/src/climate_ref_esmvaltool/diagnostics/ozone.py b/packages/climate-ref-esmvaltool/src/climate_ref_esmvaltool/diagnostics/ozone.py index 90ab44b74..8b2d3edae 100644 --- a/packages/climate-ref-esmvaltool/src/climate_ref_esmvaltool/diagnostics/ozone.py +++ b/packages/climate-ref-esmvaltool/src/climate_ref_esmvaltool/diagnostics/ozone.py @@ -264,7 +264,7 @@ def update_recipe( input_files, "polar_cap_time_series_SH", "toz", - cmip7_timerange="1960/2021", + cmip7_timerange="1950/2021", ) @@ -316,7 +316,7 @@ def update_recipe( input_files, "polar_cap_time_series_NH", "toz", - cmip7_timerange="1960/2021", + cmip7_timerange="1950/2021", ) diff --git a/packages/climate-ref-esmvaltool/tests/unit/diagnostics/recipes/recipe_ozone_nh_mar_cmip7_obs4mips.yml b/packages/climate-ref-esmvaltool/tests/unit/diagnostics/recipes/recipe_ozone_nh_mar_cmip7_obs4mips.yml index aada81be0..be9abb3f4 100644 --- a/packages/climate-ref-esmvaltool/tests/unit/diagnostics/recipes/recipe_ozone_nh_mar_cmip7_obs4mips.yml +++ b/packages/climate-ref-esmvaltool/tests/unit/diagnostics/recipes/recipe_ozone_nh_mar_cmip7_obs4mips.yml @@ -107,7 +107,7 @@ diagnostics: polar_cap_time_series_NH: variables: toz: - timerange: 1960/2021 + timerange: 1950/2021 mip: aerosol exp: historical preprocessor: create_time_series_NH diff --git a/packages/climate-ref-esmvaltool/tests/unit/diagnostics/recipes/recipe_ozone_sh_oct_cmip7_obs4mips.yml b/packages/climate-ref-esmvaltool/tests/unit/diagnostics/recipes/recipe_ozone_sh_oct_cmip7_obs4mips.yml index 372621d71..b2272d38f 100644 --- a/packages/climate-ref-esmvaltool/tests/unit/diagnostics/recipes/recipe_ozone_sh_oct_cmip7_obs4mips.yml +++ b/packages/climate-ref-esmvaltool/tests/unit/diagnostics/recipes/recipe_ozone_sh_oct_cmip7_obs4mips.yml @@ -107,7 +107,7 @@ diagnostics: polar_cap_time_series_SH: variables: toz: - timerange: 1960/2021 + timerange: 1950/2021 mip: aerosol exp: historical preprocessor: create_time_series_SH diff --git a/packages/climate-ref-esmvaltool/tests/unit/test_solve_regression/test_solve_regression_ozone_annual_cycle_.yml b/packages/climate-ref-esmvaltool/tests/unit/test_solve_regression/test_solve_regression_ozone_annual_cycle_.yml index b9c297465..c427568d0 100644 --- a/packages/climate-ref-esmvaltool/tests/unit/test_solve_regression/test_solve_regression_ozone_annual_cycle_.yml +++ b/packages/climate-ref-esmvaltool/tests/unit/test_solve_regression/test_solve_regression_ozone_annual_cycle_.yml @@ -111,16 +111,6 @@ cmip7_gn_MRI-ESM2-0_r1i1p1f1__obs4mips_C3S-GTO-ECV-9-0: - CMIP7.CMIP.MRI.MRI-ESM2-0.historical.r1i1p1f1.glb.mon.toz.tavg-u-hxy-u.gn.v20200207 obs4mips: - obs4MIPs.obs4MIPs.DLR-BIRA.C3S-GTO-ECV-9-0.mon.toz.1x1degree.gn.v20231115 -cmip7_gn_UKESM1-0-LL_r1i1p1f2__obs4mips_C3S-GTO-ECV-9-0: - cmip7: - - CMIP7.CMIP.MOHC.UKESM1-0-LL.historical.r1i1p1f2.glb.mon.toz.tavg-u-hxy-u.gn.v20190406 - obs4mips: - - obs4MIPs.obs4MIPs.DLR-BIRA.C3S-GTO-ECV-9-0.mon.toz.1x1degree.gn.v20231115 -cmip7_gn_UKESM1-1-LL_r1i1p1f2__obs4mips_C3S-GTO-ECV-9-0: - cmip7: - - CMIP7.CMIP.MOHC.UKESM1-1-LL.historical.r1i1p1f2.glb.mon.toz.tavg-u-hxy-u.gn.v20220512 - obs4mips: - - obs4MIPs.obs4MIPs.DLR-BIRA.C3S-GTO-ECV-9-0.mon.toz.1x1degree.gn.v20231115 cmip7_gr1_GFDL-ESM4_r1i1p1f1__obs4mips_C3S-GTO-ECV-9-0: cmip7: - CMIP7.CMIP.NOAA-GFDL.GFDL-ESM4.historical.r1i1p1f1.glb.fx.areacella.ti-u-hxy-u.gr1.v20190726 diff --git a/packages/climate-ref-esmvaltool/tests/unit/test_solve_regression/test_solve_regression_ozone_lat_time_.yml b/packages/climate-ref-esmvaltool/tests/unit/test_solve_regression/test_solve_regression_ozone_lat_time_.yml index b9c297465..c427568d0 100644 --- a/packages/climate-ref-esmvaltool/tests/unit/test_solve_regression/test_solve_regression_ozone_lat_time_.yml +++ b/packages/climate-ref-esmvaltool/tests/unit/test_solve_regression/test_solve_regression_ozone_lat_time_.yml @@ -111,16 +111,6 @@ cmip7_gn_MRI-ESM2-0_r1i1p1f1__obs4mips_C3S-GTO-ECV-9-0: - CMIP7.CMIP.MRI.MRI-ESM2-0.historical.r1i1p1f1.glb.mon.toz.tavg-u-hxy-u.gn.v20200207 obs4mips: - obs4MIPs.obs4MIPs.DLR-BIRA.C3S-GTO-ECV-9-0.mon.toz.1x1degree.gn.v20231115 -cmip7_gn_UKESM1-0-LL_r1i1p1f2__obs4mips_C3S-GTO-ECV-9-0: - cmip7: - - CMIP7.CMIP.MOHC.UKESM1-0-LL.historical.r1i1p1f2.glb.mon.toz.tavg-u-hxy-u.gn.v20190406 - obs4mips: - - obs4MIPs.obs4MIPs.DLR-BIRA.C3S-GTO-ECV-9-0.mon.toz.1x1degree.gn.v20231115 -cmip7_gn_UKESM1-1-LL_r1i1p1f2__obs4mips_C3S-GTO-ECV-9-0: - cmip7: - - CMIP7.CMIP.MOHC.UKESM1-1-LL.historical.r1i1p1f2.glb.mon.toz.tavg-u-hxy-u.gn.v20220512 - obs4mips: - - obs4MIPs.obs4MIPs.DLR-BIRA.C3S-GTO-ECV-9-0.mon.toz.1x1degree.gn.v20231115 cmip7_gr1_GFDL-ESM4_r1i1p1f1__obs4mips_C3S-GTO-ECV-9-0: cmip7: - CMIP7.CMIP.NOAA-GFDL.GFDL-ESM4.historical.r1i1p1f1.glb.fx.areacella.ti-u-hxy-u.gr1.v20190726 diff --git a/packages/climate-ref-esmvaltool/tests/unit/test_solve_regression/test_solve_regression_ozone_nh_mar_.yml b/packages/climate-ref-esmvaltool/tests/unit/test_solve_regression/test_solve_regression_ozone_nh_mar_.yml index b9c297465..c427568d0 100644 --- a/packages/climate-ref-esmvaltool/tests/unit/test_solve_regression/test_solve_regression_ozone_nh_mar_.yml +++ b/packages/climate-ref-esmvaltool/tests/unit/test_solve_regression/test_solve_regression_ozone_nh_mar_.yml @@ -111,16 +111,6 @@ cmip7_gn_MRI-ESM2-0_r1i1p1f1__obs4mips_C3S-GTO-ECV-9-0: - CMIP7.CMIP.MRI.MRI-ESM2-0.historical.r1i1p1f1.glb.mon.toz.tavg-u-hxy-u.gn.v20200207 obs4mips: - obs4MIPs.obs4MIPs.DLR-BIRA.C3S-GTO-ECV-9-0.mon.toz.1x1degree.gn.v20231115 -cmip7_gn_UKESM1-0-LL_r1i1p1f2__obs4mips_C3S-GTO-ECV-9-0: - cmip7: - - CMIP7.CMIP.MOHC.UKESM1-0-LL.historical.r1i1p1f2.glb.mon.toz.tavg-u-hxy-u.gn.v20190406 - obs4mips: - - obs4MIPs.obs4MIPs.DLR-BIRA.C3S-GTO-ECV-9-0.mon.toz.1x1degree.gn.v20231115 -cmip7_gn_UKESM1-1-LL_r1i1p1f2__obs4mips_C3S-GTO-ECV-9-0: - cmip7: - - CMIP7.CMIP.MOHC.UKESM1-1-LL.historical.r1i1p1f2.glb.mon.toz.tavg-u-hxy-u.gn.v20220512 - obs4mips: - - obs4MIPs.obs4MIPs.DLR-BIRA.C3S-GTO-ECV-9-0.mon.toz.1x1degree.gn.v20231115 cmip7_gr1_GFDL-ESM4_r1i1p1f1__obs4mips_C3S-GTO-ECV-9-0: cmip7: - CMIP7.CMIP.NOAA-GFDL.GFDL-ESM4.historical.r1i1p1f1.glb.fx.areacella.ti-u-hxy-u.gr1.v20190726 diff --git a/packages/climate-ref-esmvaltool/tests/unit/test_solve_regression/test_solve_regression_ozone_sh_oct_.yml b/packages/climate-ref-esmvaltool/tests/unit/test_solve_regression/test_solve_regression_ozone_sh_oct_.yml index b9c297465..c427568d0 100644 --- a/packages/climate-ref-esmvaltool/tests/unit/test_solve_regression/test_solve_regression_ozone_sh_oct_.yml +++ b/packages/climate-ref-esmvaltool/tests/unit/test_solve_regression/test_solve_regression_ozone_sh_oct_.yml @@ -111,16 +111,6 @@ cmip7_gn_MRI-ESM2-0_r1i1p1f1__obs4mips_C3S-GTO-ECV-9-0: - CMIP7.CMIP.MRI.MRI-ESM2-0.historical.r1i1p1f1.glb.mon.toz.tavg-u-hxy-u.gn.v20200207 obs4mips: - obs4MIPs.obs4MIPs.DLR-BIRA.C3S-GTO-ECV-9-0.mon.toz.1x1degree.gn.v20231115 -cmip7_gn_UKESM1-0-LL_r1i1p1f2__obs4mips_C3S-GTO-ECV-9-0: - cmip7: - - CMIP7.CMIP.MOHC.UKESM1-0-LL.historical.r1i1p1f2.glb.mon.toz.tavg-u-hxy-u.gn.v20190406 - obs4mips: - - obs4MIPs.obs4MIPs.DLR-BIRA.C3S-GTO-ECV-9-0.mon.toz.1x1degree.gn.v20231115 -cmip7_gn_UKESM1-1-LL_r1i1p1f2__obs4mips_C3S-GTO-ECV-9-0: - cmip7: - - CMIP7.CMIP.MOHC.UKESM1-1-LL.historical.r1i1p1f2.glb.mon.toz.tavg-u-hxy-u.gn.v20220512 - obs4mips: - - obs4MIPs.obs4MIPs.DLR-BIRA.C3S-GTO-ECV-9-0.mon.toz.1x1degree.gn.v20231115 cmip7_gr1_GFDL-ESM4_r1i1p1f1__obs4mips_C3S-GTO-ECV-9-0: cmip7: - CMIP7.CMIP.NOAA-GFDL.GFDL-ESM4.historical.r1i1p1f1.glb.fx.areacella.ti-u-hxy-u.gr1.v20190726