From faeb00a364de7aa11f5df57fc52e997446e937a0 Mon Sep 17 00:00:00 2001 From: Jared Lewis Date: Fri, 28 Aug 2026 20:02:57 +1000 Subject: [PATCH 1/7] 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 490ed10eede0ba846c247617ea356236c5a878f7 Mon Sep 17 00:00:00 2001 From: Jared Lewis Date: Fri, 28 Aug 2026 20:08:21 +1000 Subject: [PATCH 2/7] 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 4585e164931a1637fab2b1ba8f750a8d0d49407c Mon Sep 17 00:00:00 2001 From: Jared Lewis Date: Fri, 28 Aug 2026 20:17:02 +1000 Subject: [PATCH 3/7] 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 d9dd306344d23b942bcdd5684af1cf92eec3a9d3 Mon Sep 17 00:00:00 2001 From: Jared Lewis Date: Fri, 28 Aug 2026 20:19:36 +1000 Subject: [PATCH 4/7] 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 a399c93a68e331a91d0ae8c3119eb0907b607f48 Mon Sep 17 00:00:00 2001 From: Jared Lewis Date: Fri, 28 Aug 2026 20:22:31 +1000 Subject: [PATCH 5/7] 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 33db825995bf749fa11a48c99a21950a9d505d37 Mon Sep 17 00:00:00 2001 From: Jared Lewis Date: Fri, 28 Aug 2026 20:25:33 +1000 Subject: [PATCH 6/7] 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 c47220bedf7d7853728da3642af28ec26e725087 Mon Sep 17 00:00:00 2001 From: Jared Lewis Date: Fri, 28 Aug 2026 21:09:34 +1000 Subject: [PATCH 7/7] 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 }