Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Recipe test results for v2.12.0 #3916

Open
sloosvel opened this issue Feb 17, 2025 · 64 comments
Open

Recipe test results for v2.12.0 #3916

sloosvel opened this issue Feb 17, 2025 · 64 comments
Labels

Comments

@sloosvel
Copy link
Contributor

sloosvel commented Feb 17, 2025

@ESMValGroup/esmvaltool-developmentteam Here is an overview of the tests performed for releasing v2.12.0. The results are summarized in https://esmvaltool.dkrz.de/shared/esmvaltool/v2.12.0rc1/

Here is the conda environment: esmvaltool_v212rc1.txt

Recipe running session 2025-02-17

125 out of 163 recipes ran successfully, 38 recipes failed. You can find below the errors summarized.

Recipes that failed due to errors related to missing ERA5 grib dataset keys:

  • recipe_check_obs
  • recipe_climwip_brunner20esd
  • recipe_climwip_brunner2019_med
  • recipe_climwip_test_basic
  • recipe_climwip_test_perforrmance_sigma
  • recipe_daily_era5
  • recipe_era5-land
  • recipe_galytska23jgr
  • recipe_globwat
  • recipe_hydro_forcing
  • recipe_impact
  • recipe_lauer22jclim_fig1_clim_amip
  • recipe_lauer22jclim_fig2_taylor
  • recipe_lauer22jclim_fig2_taylor_amip
  • recipe_lauer22jclim_fig7_seas
  • recipe_model_evaluation_basics
  • recipe_model_evaluation_clouds_clim
  • recipe_model_evaluation_precip_zonal

Recipes that failed due to diagnostic failures:

  • recipe_autoassess_stratosphere
  • recipe_ipccwg1ar6ch3_fig_3_42_b
  • recipe_julia
  • recipe_mpqb_xch4
  • recipe_rainfarm
  • recipe_russell18jgr
  • recipe_zmnam

Recipes that failed due to NetCDF HDF errors:

  • recipe_collins13ipcc
  • recipe_ipccwg1ar6ch3_atmosphere

Recipes that failed due to duplicated datasets that break concatenation:

  • recipe_ecs_scatter
  • recipe_python

Recipes that failed due to metadata issues that break concatenation

  • recipe_easy_ipcc

Recipes that failed due to out of memory errors:

  • recipe_lauer22jclim_fig3-4_zonal

Recipes that failed due to timeout errors

  • recipe_eyring06jgr
  • recipe_eyring13jgr_12
  • recipe_ipccwg1ar6ch3_fig_3_19
  • recipe_lauer22jclim_fig5_lifrac
  • recipe_miles_block
  • recipe_miles_eof
  • recipe_miles_regimes
@valeriupredoi
Copy link
Contributor

great, many thanks @sloosvel 🍺

@schlunma
Copy link
Contributor

schlunma commented Feb 17, 2025

For the ones that fail because of the missing ERA5 facets: We should not use the drs DKRZ-ERA5-GRIB in the configuration file for testing these, those recipes have not been defined to work with these kind of data.

I know this is certainly not optimal. A possible solution to this could be to set (useless) default values for these facets here. Unfortunately, this is also not a problem unique to ERA5, but could in principle happen for other data too (e.g., the freq_base facet is only necessary for the BSC DRS of project OBS).

@sloosvel
Copy link
Contributor Author

examples/recipe_python runs fine on JASMIN, not sure what the fuss on Levante

There seems to a be a duplicated dataset that prevents concatenation

For the ones that fail because of the missing ERA5 facets: We should not use the drs DKRZ-ERA5-GRIB in the configuration file for testing these, those recipes have not been defined to work with these kind of data.

Ok, I am relaunching the recipes editing the config-user.yml file so that it does not look into the pool of grib data. It's not a proper solution either, but maybe a comment should be added in there so that during the testing grib files are ignored.

@valeriupredoi
Copy link
Contributor

thanks, Saskia! Just don't worry about the example recipes, those are either fine or absolutely FUBAR (like Julia); also those with HDF5 errors - we never managed to figure out why they'd fail - they are flaky, so they go through no probs at times

@sloosvel
Copy link
Contributor Author

sloosvel commented Feb 18, 2025

Ignoring the grib pool, all recipes that were failing because of the missing facets except for 3 run successfully. The results in the DKRZ machine have also been updated, Below is the new summary:

Recipe running session 2025-02-18

Recipes that failed due to missing data:

  • recipe_check_obs

Recipes that failed due to diagnostic failures:

Recipes that failed due to NetCDF HDF errors:

  • recipe_collins13ipcc

Recipes that failed due to duplicated datasets that break concatenation:

Recipes that failed due to metadata issues that break concatenation

Recipes that failed due to out of memory errors:

  • recipe_lauer22jclim_fig3-4_zonal

Recipes that failed due to timeout errors

  • recipe_eyring06jgr
  • recipe_eyring13jgr_12
  • recipe_ipccwg1ar6ch3_fig_3_19
  • recipe_lauer22jclim_fig5_lifrac
  • recipe_miles_block
  • recipe_miles_eof
  • recipe_miles_regimes

Recipes that failed because of a failure to convert units:

@sloosvel
Copy link
Contributor Author

sloosvel commented Feb 18, 2025

Here are the results from the comparison tool: compare_output_2.12.0rc1.txt

The following recipes need to be inspected by a human:

  • recipe_albedolandcover.yml
  • recipe_anav13jclim.yml
  • recipe_aod_aeronet_assess.yml
  • recipe_autoassess_landsurface_permafrost.yml
  • recipe_autoassess_landsurface_soilmoisture.yml
  • recipe_autoassess_landsurface_surfrad.yml
  • recipe_autoassess_stratosphere.yml
  • recipe_bock20jgr_fig_1-4.yml
  • recipe_bock20jgr_fig_6-7.yml
  • recipe_bock20jgr_fig_8-10.yml
  • recipe_bock24acp_fig3-4_maps.yml
  • recipe_bock24acp_fig6_zonal.yml
  • recipe_bock24acp_fig7_boxplots.yml
  • recipe_carvalhais14nat.yml
  • recipe_climate_change_hotspot.yml
  • recipe_climate_patterns.yml
  • recipe_climwip_brunner20esd.yml
  • recipe_climwip_test_basic.yml
  • recipe_climwip_test_performance_sigma.yml:
  • recipe_clouds_bias.yml
  • recipe_clouds_ipcc.yml
  • recipe_cmug_h2o.yml
  • recipe_combined_indices.yml
  • recipe_cox18nature.yml
  • recipe_cvdp.yml
  • recipe_daily_era5.yml
  • recipe_deangelis15nat.yml
  • recipe_eady_growth_rate.yml
  • recipe_ecs.yml
  • recipe_ecs_constraints.yml
  • recipe_era5-land.yml
  • recipe_esacci_oc.yml
  • recipe_extreme_events.yml
  • recipe_flato13ipcc_figure_914.yml
  • recipe_flato13ipcc_figure_942.yml
  • recipe_flato13ipcc_figure_96.yml
  • recipe_flato13ipcc_figure_98.yml
  • recipe_flato13ipcc_figures_926_927.yml
  • recipe_flato13ipcc_figures_92_95.yml
  • recipe_galytska23jgr.yml
  • recipe_gier2020bg.yml
  • recipe_hyint_extreme_events.yml
  • recipe_iht_toa.yml
  • recipe_ipccwg1ar6ch3_atmosphere.yml
  • recipe_ipccwg1ar6ch3_fig_3_42_a.yml
  • recipe_ipccwg1ar6ch3_fig_3_43.yml
  • recipe_ipccwg1ar6ch3_fig_3_9.yml
  • recipe_kcs.yml
  • recipe_lauer13jclim.yml
  • recipe_lauer22jclim_fig1_clim_amip.yml
  • recipe_lauer22jclim_fig6_interannual.yml
  • recipe_lauer22jclim_fig7_seas.yml
  • recipe_lauer22jclim_fig8_dyn.yml
  • recipe_lauer22jclim_fig9-11ab_scatter.yml
  • recipe_marrmot.yml
  • recipe_martin18grl.yml
  • recipe_meehl20sciadv.yml
  • recipe_model_evaluation_basics.yml
  • recipe_model_evaluation_clouds_clim.yml
  • recipe_modes_of_variability.yml
  • recipe_monitor.yml
  • recipe_monitor_with_refs.yml
  • recipe_multimodel_products.yml
  • recipe_ocean_Landschuetzer2016.yml
  • recipe_ocean_amoc.yml
  • recipe_ocean_bgc.yml
  • recipe_ocean_example.yml
  • recipe_ocean_multimap.yml - something very weird with MRI-ESM1 fixed by Add option to ignore horizontal coordinates if there are multiple when regridding ESMValCore#2672 (bedankt @bouweandela 🍺 )
  • recipe_ocean_quadmap.yml
  • recipe_ocean_scalar_fields.yml
  • recipe_perfmetrics_CMIP5.yml
  • recipe_perfmetrics_CMIP5_4cds.yml
  • recipe_perfmetrics_land_CMIP5.yml
  • recipe_portrait_CMIP.yml
  • recipe_preprocessor_derive_test.yml
  • recipe_psyplot.yml
  • recipe_python_for_CI.yml
  • recipe_ref_cre.yml
  • recipe_schlund20esd.yml
  • recipe_seaice_drift.yml - output is different between 2.11 and 2.12 - seems that the error was in 2.11
  • recipe_shapeselect.yml
  • recipe_smpi.yml
  • recipe_smpi_4cds.yml
  • recipe_spei.yml
  • recipe_tcr.yml
  • recipe_tebaldi21esd.yml
  • recipe_toymodel.yml
  • recipe_validation.yml
  • recipe_validation_CMIP6.yml
  • recipe_wenzel14jgr.yml
  • recipe_wenzel16jclim.yml
  • recipe_wenzel16nat.yml

@valeriupredoi
Copy link
Contributor

@rbeucher please check here [] to verify you are a hooman 😆 Thanks a lot, @sloosvel - excellent progress, will have a look at those that I know a few things about 🍺

@lukruh
Copy link
Contributor

lukruh commented Feb 18, 2025

I have checked the output of recipe_spei.yml. It is the same as in version 2.11, just some colors changed.
The figure from recipe_portrait_CMIP.yml also looks fine. I guess thats only on the list because it is added in this version?

@valeriupredoi
Copy link
Contributor

@sloosvel the debug page https://esmvaltool.dkrz.de/shared/esmvaltool/v2.12.0rc1/debug.html still points to the first run you did, could you update it please, for the 18-Feb run? 🍺

@sloosvel
Copy link
Contributor Author

@sloosvel the debug page https://esmvaltool.dkrz.de/shared/esmvaltool/v2.12.0rc1/debug.html still points to the first run you did, could you update it please, for the 18-Feb run?

It's the same directory, I just added the recipes that were re-run

@bettina-gier
Copy link
Contributor

Looks like some small 4th digit changes in multi-model mean numbers on gier_2020bg, I assume this might be the case for more where the figure is not reported but the .nc data files

@valeriupredoi
Copy link
Contributor

hmm am looking at the run dates and none is from 18 February, and eg stratosphere still looks failed (from 15 Feb) https://esmvaltool.dkrz.de/shared/esmvaltool/v2.12.0rc1/recipe_autoassess_stratosphere_20250215_144720/

@sloosvel
Copy link
Contributor Author

@valeriupredoi Here you have the successful results: https://esmvaltool.dkrz.de/shared/esmvaltool/v2.12.0rc1/recipe_autoassess_stratosphere_20250218_082909/

@valeriupredoi
Copy link
Contributor

@valeriupredoi Here you have the successful results: https://esmvaltool.dkrz.de/shared/esmvaltool/v2.12.0rc1/recipe_autoassess_stratosphere_20250218_082909/

wunderpub! Just checked it, all looks great, and checked the box, thanks, Saskia 🍻

@valeriupredoi
Copy link
Contributor

valeriupredoi commented Feb 18, 2025

ocean_multimap has something going on very weirdly for just one model:

  • 2.12 vs 2.11
  • fgco2 and the wonky stuff is only for MRI-ESM1, all other models look the same

Both recipes used Found input files for Dataset: fgco2, Omon, CMIP5, MRI-ESM1, historical, r1i1p1, v20130307 and also checked the input file itself, so I would suspect there's something to do with Dask and masking here, but I wonder why only for this MRI model.

@TomasTorsvik
Copy link
Contributor

ocean_multimap has something going on very weirdly for just one model:

* [2.12](https://esmvaltool.dkrz.de/shared/esmvaltool/v2.12.0rc1/recipe_ocean_multimap_20250215_141445/plots/diag_surface_multimap/Global_Ocean_multi_vs_obs/multimodel_vs_Landschuetzer2016_fgco2__maps.png) vs [2.11](https://esmvaltool.dkrz.de/shared/esmvaltool/v2.11.0/recipe_ocean_multimap_20240523_085849/plots/diag_surface_multimap/Global_Ocean_multi_vs_obs/multimodel_vs_Landschuetzer2016_fgco2__maps.png)

* fgco2 and the wonky stuff is only for MRI-ESM1, all other models look the same

Both recipes used Found input files for Dataset: fgco2, Omon, CMIP5, MRI-ESM1, historical, r1i1p1, v20130307 and also checked the input file itself, so I would suspect there's something to do with Dask and masking here, but I wonder why only for this MRI model.

Actually, there are some small changes also for CESM1-BGC and NorESM1-ME, where the meridian at about 40 West turns into a white line. Also, for MRI-ESM1, the ocean field in the Pacific resembles the outline of South America. Could something have changed in the handling of the global grid?

@valeriupredoi
Copy link
Contributor

cheers @TomasTorsvik - I am rerunning this one with various Dask versions, maybe we'll catch the culprit there, if not then I'm out of ideas - I don't know what's being run in this recipe - @ledm would be of help here

@TomasTorsvik
Copy link
Contributor

ocean_quadmap is not available for 2.11. Comparing with 2.10 shows similar output, except the name for the OBS source has changed:

@mo-abodas
Copy link
Contributor

recipe_iht_toa looks fine, I've checked box.

@TomasTorsvik
Copy link
Contributor

recipe_seaice_drift produce different output when comparing 2.11 and 2.12

@fserva
Copy link
Contributor

fserva commented Feb 18, 2025

Hi all, thanks for the checks. For zmnam the error seems to be due to a deprecated method in matplotlib. Do I need to open a dedicated issue to fix this?

@sloosvel
Copy link
Contributor Author

Hi all, thanks for the checks. For zmnam the error seems to be due to a deprecated method in matplotlib. Do I need to open a dedicated issue to fix this?

@fserva yes, that would be helpful!

@bouweandela
Copy link
Member

Regarding recipe_impact.yml: it looks like something changed in how Iris loads bad data. Fix available in ESMValGroup/ESMValCore#2666.

@bouweandela
Copy link
Member

Regarding recipe_easy_ipcc.yml: it looks like the problem is caused by a newer version (v20230616 instead of v20191108, which was used for the v2.10 runs) of the NorESM2-MM ssp585 files that uses different names for the latitude and longitude index coordinate names ("first spatial index for variables stored on an unstructured grid") than are used for the historical experiment ("cell index along first dimension"). I'll write a fix.

@schlunma
Copy link
Contributor

schlunma commented Feb 18, 2025

  • recipe_anav13jclim: tos is slightly different (not significant)
  • recipe_cox18nature: some netcdf files are slightly different (not significant), plots are identical
  • recipe_ecs: Input data for NorESM1-M is slightly different (has been removed from DKRZ's CMIP5 archive, downloaded version is slightly different)
  • recipe_ecs_constraints: side effect of change in recipe_ecs
  • recipe_meehl20sciadv: side effect of change in recipe_ecs
  • recipe_monitor: error is "no reference found"
  • recipe_monitor_with_refs: Prevent overlapping time axis tick labels in monitoring recipe #3682
  • recipe_ref_cre: new recipe
  • recipe_portrait_CMIP: new recipe
  • recipe_psyplot: error is "no reference found"
  • recipe_python_for_CI: some netcdf files are slightly different (not significant), plots are identical
  • recipe_schlund20esd: side effect of side effect of change in recipe_ecs; Regridded tos fields are different with Dask<=2024.8.2 and Dask>=2024.9.0 ESMValCore#2607 has been fixed
  • recipe_tcr: some netcdf files are slightly different (not significant), plots are identical

@valeriupredoi
Copy link
Contributor

@TomasTorsvik you were right - Dask is not the problem (poor Dask gets the default blame now haha), it's iris-cartopy-matplotlib, with iris=3.10 (and other deps below) I am getting this error:

Saving plot to /work/scratch-pw2/valeriu/recipe_ocean_multimap_20250218_160436/plots/diag_surface_multimap/Global_Ocean_multi_vs_obs/multimodel_vs_Landschuetzer2016_fgco2__maps.png
Traceback (most recent call last):
  File "/apps/jasmin/community/esmvaltool/ESMValTool_2.11LD/esmvaltool/diag_scripts/ocean/diagnostic_maps_multimodel.py", line 418, in <module>
    main(config)
  File "/apps/jasmin/community/esmvaltool/ESMValTool_2.11LD/esmvaltool/diag_scripts/ocean/diagnostic_maps_multimodel.py", line 411, in main
    make_plots(cfg, metadatas, obs_filename)
  File "/apps/jasmin/community/esmvaltool/ESMValTool_2.11LD/esmvaltool/diag_scripts/ocean/diagnostic_maps_multimodel.py", line 363, in make_plots
    plt.savefig(plot_file, dpi=200)
  File "/apps/jasmin/community/esmvaltool/miniconda3_py312_latest/envs/esmvaltool211LD/lib/python3.12/site-packages/matplotlib/pyplot.py", line 1243, in savefig
    res = fig.savefig(*args, **kwargs)  # type: ignore[func-returns-value]
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/apps/jasmin/community/esmvaltool/miniconda3_py312_latest/envs/esmvaltool211LD/lib/python3.12/site-packages/matplotlib/figure.py", line 3490, in savefig
    self.canvas.print_figure(fname, **kwargs)
  File "/apps/jasmin/community/esmvaltool/miniconda3_py312_latest/envs/esmvaltool211LD/lib/python3.12/site-packages/matplotlib/backend_bases.py", line 2184, in print_figure
    result = print_method(
             ^^^^^^^^^^^^^
  File "/apps/jasmin/community/esmvaltool/miniconda3_py312_latest/envs/esmvaltool211LD/lib/python3.12/site-packages/matplotlib/backend_bases.py", line 2040, in <lambda>
    print_method = functools.wraps(meth)(lambda *args, **kwargs: meth(
                                                                 ^^^^^
  File "/apps/jasmin/community/esmvaltool/miniconda3_py312_latest/envs/esmvaltool211LD/lib/python3.12/site-packages/matplotlib/backends/backend_agg.py", line 481, in print_png
    self._print_pil(filename_or_obj, "png", pil_kwargs, metadata)
  File "/apps/jasmin/community/esmvaltool/miniconda3_py312_latest/envs/esmvaltool211LD/lib/python3.12/site-packages/matplotlib/backends/backend_agg.py", line 429, in _print_pil
    FigureCanvasAgg.draw(self)
  File "/apps/jasmin/community/esmvaltool/miniconda3_py312_latest/envs/esmvaltool211LD/lib/python3.12/site-packages/matplotlib/backends/backend_agg.py", line 382, in draw
    self.figure.draw(self.renderer)
  File "/apps/jasmin/community/esmvaltool/miniconda3_py312_latest/envs/esmvaltool211LD/lib/python3.12/site-packages/matplotlib/artist.py", line 94, in draw_wrapper
    result = draw(artist, renderer, *args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/apps/jasmin/community/esmvaltool/miniconda3_py312_latest/envs/esmvaltool211LD/lib/python3.12/site-packages/matplotlib/artist.py", line 71, in draw_wrapper
    return draw(artist, renderer)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/apps/jasmin/community/esmvaltool/miniconda3_py312_latest/envs/esmvaltool211LD/lib/python3.12/site-packages/matplotlib/figure.py", line 3257, in draw
    mimage._draw_list_compositing_images(
  File "/apps/jasmin/community/esmvaltool/miniconda3_py312_latest/envs/esmvaltool211LD/lib/python3.12/site-packages/matplotlib/image.py", line 134, in _draw_list_compositing_images
    a.draw(renderer)
  File "/apps/jasmin/community/esmvaltool/miniconda3_py312_latest/envs/esmvaltool211LD/lib/python3.12/site-packages/matplotlib/artist.py", line 71, in draw_wrapper
    return draw(artist, renderer)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/apps/jasmin/community/esmvaltool/miniconda3_py312_latest/envs/esmvaltool211LD/lib/python3.12/site-packages/cartopy/mpl/geoaxes.py", line 509, in draw
    self._draw_preprocess()
TypeError: _GeoAxesPatched._draw_preprocess() missing 1 required positional argument: 'renderer'

relevant deps:

(esmvaltool211LD) [valeriu@sci-vm-01 esmvaltool]$ conda list matplotlib
# packages in environment at /apps/jasmin/community/esmvaltool/miniconda3_py312_latest/envs/esmvaltool211LD:
#
# Name                    Version                   Build  Channel
matplotlib-base           3.10.0          py312hd3ec401_0    conda-forge
matplotlib-inline         0.1.7                    pypi_0    pypi
(esmvaltool211LD) [valeriu@sci-vm-01 esmvaltool]$ conda list cartopy
# packages in environment at /apps/jasmin/community/esmvaltool/miniconda3_py312_latest/envs/esmvaltool211LD:
#
# Name                    Version                   Build  Channel
cartopy                   0.24.0          py312hf9745cd_0    conda-forge

Let me try see if I downgrade Matplotlib if anything comes out of the woodwork - matplotlib=3.10 is full of API and other changes

@valeriupredoi
Copy link
Contributor

OK no luck, same plot even if I downgraded to cartopy==0.23 and matplotlib==3.9.4 - lower than that I am starting to have headaches that we are using old dependencies; surely something in amongst iris/cartopy/matplotlib changed since almost one year ago - but even so, we don't want to pin on any of these on a one year old version. That's why running these recipes more often is a useful thing. At any rate, as a specialist, @TomasTorsvik - do the plots look bad? Or just different (which could be bad 😆 )

@sloosvel
Copy link
Contributor Author

sloosvel commented Feb 19, 2025

It's definitely something in ESMValGroup/ESMValCore#2457, I ran before and after the commit and the results differ and the strange shift appears:

Image

@valeriupredoi
Copy link
Contributor

ooh we found us the smoking gun then! I am looking at a final possible culprit outside us, iris-esmf-regrid 0.11 build=1 I realized I've not tested with that

@valeriupredoi
Copy link
Contributor

nope - I am confident to say any possible and impossible combination of dependencies is not able to produce the sane-looking plot, it results either in a crash (whether it be preprocessor or diagnostic) or in a bizarre-looking plot, all this with a fixed esmvalcore latest dev. Saskia, Bouwe, it is us ie esmvalcore - and that PR looks to be the cause indeed 🍺

@bouweandela
Copy link
Member

bouweandela commented Feb 20, 2025

In ESMValGroup/ESMValCore#2457 we switched from using the ESMF regridding scheme esmvalcore.preprocessor.regrid_schemes.ESMPyLinear that is part of ESMValCore to the iris-esmf-regrid based esmvalcore.preprocessor.regrid_schemes.IrisESMFRegrid scheme. The former used the source coordinates with names latitude and longitude by default, while iris-esmf-regrid prefers to use the DimCoord associated with the X and Y axes, as requested in SciTools/iris-esmf-regrid#216. Because CMIP5 file fgco2_Omon_MRI-ESM1_historical_r1i1p1_185101-200512.nc contains grid_latitude and grid_longitude coordinates, those are used as the source grid, leading to the shift observed in the image. Removing these coordinates from the cube (or settings their ignore_axis attribute to True) avoids the issue for this particular dataset, but I'm not sure how to solve this generally, since it seems to be desired that grid_latitude and grid_longitude are preferred over the latitude and longitude data at least for CORDEX. @sloosvel Since you were involved in SciTools/iris-esmf-regrid#216, do you have an idea what a general solution of this issue could look like? Should we make the regridder configurable depending on whether we are using a global or a regional climate model? Or is this just an issue with this particular file and it provides wrong grid_latitude and grid_longitude causing the shift?

@sloosvel
Copy link
Contributor Author

I think the root of the problem is an issue with the CMORization of MRI-ESM1, in which instead of having a latitude and a longitude depend on dummy indices, like i and j or indices along a direction which is what most models do, they make it depend on an actual coordinate system (rlat and rlon)..

@bouweandela
Copy link
Member

I'll write a fix then.

@TomasTorsvik
Copy link
Contributor

@valeriupredoi , @bouweandela , @sloosvel
Could the regridding problem also be the cause of the changes in recipe_anav13jclim? It is difficult to see without a map plot, but I found one scatter plot for tos where the color scale does not change, and it would seem that the main problem is output for the inmcm4 model.

Comparing tos - Southern hemisphere : 2.12 vs 2.11

@sloosvel
Copy link
Contributor Author

Looks like so, because inmcm4 also has a dependency of the coordinates in rlat and rlon:

	float lat(rlat, rlon) ;
		lat:standard_name = "latitude" ;
		lat:long_name = "latitude coordinate" ;
		lat:units = "degrees_north" ;
		lat:bounds = "lat_vertices" ;
	float lon(rlat, rlon) ;
		lon:standard_name = "longitude" ;
		lon:long_name = "longitude coordinate" ;
		lon:units = "degrees_east" ;
		lon:bounds = "lon_vertices" ;

@valeriupredoi
Copy link
Contributor

Superb debugging work, folks! I am very happy to see this issue pinpointed now I was quite worried that we'd have to pin one or more of our dependencies, and that'd add fuel to an already burning fire from our env being already quite old. Sorry I wasn't communicating any faster, all my testing was being done on JASMIN, and she suffered quite a bit over the past few days from overcrowding 🍺

@bouweandela
Copy link
Member

I've been looking at this some more and the rotated pole grid coordinates for tos_Omon_inmcm4_historical_r1i1p1_185001-200512.nc seem fine, at least the grid_mapping is present:

	double rlat(rlat) ;
		rlat:units = "degrees" ;
		rlat:axis = "Y" ;
		rlat:long_name = "latitude in rotated pole grid" ;
		rlat:standard_name = "grid_latitude" ;
	double rlon(rlon) ;
		rlon:units = "degrees" ;
		rlon:axis = "X" ;
		rlon:long_name = "longitude in rotated pole grid" ;
		rlon:standard_name = "grid_longitude" ;
	int rotated_latitude_longitude ;
		rotated_latitude_longitude:grid_mapping_name = "rotated_latitude_longitude" ;
		rotated_latitude_longitude:grid_north_pole_latitude = 70. ;
		rotated_latitude_longitude:grid_north_pole_longitude = 100. ;
		rotated_latitude_longitude:north_pole_grid_longitude = -80. ;
	float lat(rlat, rlon) ;
		lat:standard_name = "latitude" ;
		lat:long_name = "latitude coordinate" ;
		lat:units = "degrees_north" ;
		lat:bounds = "lat_vertices" ;
	float lon(rlat, rlon) ;
		lon:standard_name = "longitude" ;
		lon:long_name = "longitude coordinate" ;
		lon:units = "degrees_east" ;
		lon:bounds = "lon_vertices" ;
	float lat_vertices(rlat, rlon, vertices) ;
		lat_vertices:units = "degrees_north" ;
	float lon_vertices(rlat, rlon, vertices) ;
		lon_vertices:units = "degrees_east" ;
	float tos(time, rlat, rlon) ;
                ...
		tos:grid_mapping = "rotated_latitude_longitude" ;
		tos:coordinates = "lat lon" ;

Regridding to a 1x1 grid gives the following image
Image
which looks a bit odd but I think that is because we assume that the target coordinate system is the same as the source coordinate system and therefore the 1x1 grid is in the same rotated pole coordinate system.

I'm not sure if we should fix this because I'm not sure if it is actually wrong. How about we keep using latitude and longitude as default coordinates for regridding and use grid_latitude/grid_longitude only as a fallback? Or would this cause problems for CORDEX data?

@valeriupredoi
Copy link
Contributor

that Polar Cap is hefty on that plot - may look appealing to the US President 😆 Does that data need de-haloing?

@sloosvel
Copy link
Contributor Author

I'm not sure if we should fix this because I'm not sure if it is actually wrong. How about we keep using latitude and longitude as default coordinates for regridding and use grid_latitude/grid_longitude only as a fallback? Or would this cause problems for CORDEX data?

i guess it should be ok, but I can test it for CORDEX data

@valeriupredoi
Copy link
Contributor

recipe_seaice_drift produce different output when comparing 2.11 and 2.12

* Sea Ice Drift : [2.12](https://esmvaltool.dkrz.de/shared/esmvaltool/v2.12.0rc1/recipe_seaice_drift_20250215_143730/plots/seaice_drift/sea_ice_drift/CMIP5/drift-strength.png) vs [2.11](https://esmvaltool.dkrz.de/shared/esmvaltool/v2.11.0/recipe_seaice_drift_20240523_091914/plots/seaice_drift/sea_ice_drift/CMIP5/drift-strength.png)

* Sea Ice Drift Scicex : [2.12](https://esmvaltool.dkrz.de/shared/esmvaltool/v2.12.0rc1/recipe_seaice_drift_20250215_143730/plots/seaice_drift/sea_ice_drift_SCICEX/CMIP5/drift-strength.png) vs [2.11](https://esmvaltool.dkrz.de/shared/esmvaltool/v2.11.0/recipe_seaice_drift_20240523_091914/plots/seaice_drift/sea_ice_drift_SCICEX/CMIP5/drift-strength.png)

thanks Tomas, this is also most prob fixed by ESMValGroup/ESMValCore#2672

@sloosvel
Copy link
Contributor Author

thanks Tomas, this is also most prob fixed by ESMValGroup/ESMValCore#2672

Regarding the sea-ice, if you go back to the results of version 2.8.0 (which is the last version in which the recipe worked before 2.11.0), the results look more similar to version 2.12.0. So maybe something was wrong in version 2.11.0 that went unnoticed.

@valeriupredoi
Copy link
Contributor

thanks Tomas, this is also most prob fixed by ESMValGroup/ESMValCore#2672

Regarding the sea-ice, if you go back to the results of version 2.8.0 (which is the last version in which the recipe worked before 2.11.0), the results look more similar to version 2.12.0. So maybe something was wrong in version 2.11.0 that went unnoticed.

vintage back in fashion - pls ignore me then, I have spoken out of my rear 😁

@sloosvel
Copy link
Contributor Author

sloosvel commented Feb 25, 2025

Here are the results for the second release candidate: https://esmvaltool.dkrz.de/shared/esmvaltool/v2.12.0rc2/
Environment: esmvaltool_v212rc2.txt

Recipe running session 2025-02-25

Recipes that failed due to missing data:

Recipes that failed due to diagnostic failures:

Recipes that failed due to NetCDF HDF errors:

  • recipe_ipccwg1ar6ch3_atmosphere

Recipes that failed due to out of memory errors:

  • recipe_ipccwg1ar6ch3_fig_3_19

Recipes that failed due to timeout errors

  • recipe_eyring13jgr_12
  • recipe_ipccwg1ar6ch3_fig_3_42_a
  • recipe_lauer22jclim_fig3-4_zonal
  • recipe_lauer22jclim_fig5_lifrac
  • recipe_miles_block
  • recipe_miles_eof
  • recipe_miles_regimes

Recipes that failed because of a failure to convert units:


Here are the results of the comparison tool: compare_output_2.12.0rc2.txt. The following recipes need to be inspected.

  • recipe_albedolandcover.yml
  • recipe_anav13jclim.yml
  • recipe_aod_aeronet_assess.yml
  • recipe_autoassess_landsurface_permafrost.yml
  • recipe_autoassess_landsurface_soilmoisture.yml
  • recipe_autoassess_landsurface_surfrad.yml
  • recipe_autoassess_stratosphere.yml
  • recipe_bock20jgr_fig_1-4.yml
  • recipe_bock20jgr_fig_6-7.yml
  • recipe_bock20jgr_fig_8-10.yml
  • recipe_bock24acp_fig3-4_maps.yml
  • recipe_bock24acp_fig6_zonal.yml
  • recipe_bock24acp_fig7_boxplots.yml
  • recipe_carvalhais14nat.yml08
  • recipe_climate_change_hotspot.yml
  • recipe_climate_patterns.yml
  • recipe_climwip_brunner20esd.yml
  • recipe_climwip_test_basic.yml
  • recipe_climwip_test_performance_sigma.yml
  • recipe_clouds_bias.yml
  • recipe_clouds_ipcc.yml
  • recipe_cmug_h2o.yml
  • recipe_combined_indices.yml
  • recipe_cox18nature.yml
  • recipe_cvdp.yml
  • recipe_daily_era5.yml
  • recipe_deangelis15nat.yml
  • recipe_eady_growth_rate.yml
  • recipe_easy_ipcc.yml
  • recipe_ecs.yml
  • recipe_ecs_constraints.yml
  • recipe_era5-land.yml
  • recipe_esacci_oc.yml
  • recipe_extreme_events.yml
  • recipe_eyring06jgr.yml
  • recipe_flato13ipcc_figure_914.yml
  • recipe_flato13ipcc_figure_942.yml
  • recipe_flato13ipcc_figure_96.yml
  • recipe_flato13ipcc_figure_98.yml
  • recipe_flato13ipcc_figures_926_927.yml
  • recipe_flato13ipcc_figures_92_95.yml
  • recipe_galytska23jgr.yml
  • recipe_gier2020bg.yml
  • recipe_hyint_extreme_events.yml
  • recipe_iht_toa.yml
  • recipe_impact.yml
  • recipe_ipccwg1ar6ch3_fig_3_42_b.yml
  • recipe_ipccwg1ar6ch3_fig_3_43.yml
  • recipe_ipccwg1ar6ch3_fig_3_9.yml
  • recipe_kcs.yml
  • recipe_lauer13jclim.yml
  • recipe_lauer22jclim_fig1_clim.yml
  • recipe_lauer22jclim_fig1_clim_amip.yml
  • recipe_lauer22jclim_fig6_interannual.yml
  • recipe_lauer22jclim_fig7_seas.yml
  • recipe_lauer22jclim_fig8_dyn.yml
  • recipe_lauer22jclim_fig9-11ab_scatter.yml
  • recipe_marrmot.yml
  • recipe_martin18grl.yml
  • recipe_meehl20sciadv.yml
  • recipe_model_evaluation_basics.yml
  • recipe_model_evaluation_clouds_clim.yml
  • recipe_modes_of_variability.yml
  • recipe_monitor.yml
  • recipe_monitor_with_refs.yml
  • recipe_mpqb_xch4.yml
  • recipe_multimodel_products.yml
  • recipe_ocean_Landschuetzer2016.yml
  • recipe_ocean_amoc.yml
  • recipe_ocean_bgc.yml
  • recipe_ocean_example.yml
  • recipe_ocean_multimap.yml
  • recipe_ocean_quadmap.yml
  • recipe_ocean_scalar_fields.yml
  • recipe_perfmetrics_CMIP5.yml
  • recipe_perfmetrics_CMIP5_4cds.yml
  • recipe_perfmetrics_land_CMIP5.yml
  • recipe_portrait_CMIP.yml
  • recipe_preprocessor_derive_test.yml
  • recipe_psyplot.yml
  • recipe_python_for_CI.yml
  • recipe_ref_cre.yml
  • recipe_schlund20esd.yml
  • recipe_seaice_drift.yml
  • recipe_shapeselect.yml
  • recipe_smpi.yml
  • recipe_smpi_4cds.yml
  • recipe_spei.yml
  • recipe_tcr.yml
  • recipe_tebaldi21esd.yml
  • recipe_toymodel.yml
  • recipe_validation.yml
  • recipe_validation_CMIP6.yml
  • recipe_wenzel14jgr.yml
  • recipe_wenzel16jclim.yml
  • recipe_wenzel16nat.yml

@schlunma
Copy link
Contributor

schlunma commented Feb 26, 2025

Summary for some recipes whose output differs: #3916 (comment)

For recipe_ecs_scatter, it seems that some observational data is duplicated:

$ ls -l /work/bd0854/DATA/ESMValTool2/download/obs4MIPs/TRMM/v20160613
...
-rw-rw---- 1 b380103 bd0854 442424824 Jul 19  2023 pr_TRMM-L3_v7-7A_199801-201312.nc
-rw-rw---- 1 b380866 bd0854 571450152 Nov  8  2023 pr_TRMM-L3_v7A_200001010130-200001312230.nc
-rw-rw---- 1 b380866 bd0854 534585768 Nov  8  2023 pr_TRMM-L3_v7A_200002010130-200002292230.nc
-rw-rw---- 1 b380866 bd0854 571450152 Nov  8  2023 pr_TRMM-L3_v7A_200003010130-200003312230.nc
-rw-rw---- 1 b380866 bd0854 553017960 Nov  8  2023 pr_TRMM-L3_v7A_200004010130-200004302230.nc
-rw-rw---- 1 b380866 bd0854 571450152 Nov  8  2023 pr_TRMM-L3_v7A_200005010130-200005312230.nc
-rw-rw---- 1 b380866 bd0854 553017960 Nov  8  2023 pr_TRMM-L3_v7A_200006010130-200006302230.nc
-rw-rw---- 1 b380866 bd0854 571450152 Nov  8  2023 pr_TRMM-L3_v7A_200007010130-200007312230.nc
...

I guess we could just remove some of those files? One problem is also that those different files do not cover the same time range...

This problem appears now due to ESMValGroup/ESMValCore#2448 (comment), so a solution would also be to specifically set

drs:  # preferred syntax
  CMIP3: DKRZ
  CMIP5: DKRZ
  CMIP6: DKRZ
  CORDEX: BADC
  obs4MIPS: default

in the config file, but I would fix this properly. @axel-lauer what do you think?

@axel-lauer
Copy link
Contributor

As far as I know, these are not duplicate files. pr_TRMM-L3_v7-7A_199801-201312.nc contains monthly means, the other files contain 3-hourly values. Both datasets are available as obs4MIPs data on ESGF. So I think simply deleting one dataset is not the optimum solution...

@sloosvel
Copy link
Contributor Author

I think the problem is that obs4MIPS data files are loaded only taking into account the short_name:

obs4MIPs:
  cmor_strict: false
  input_dir:
    default: 'Tier{tier}/{dataset}'
    ESGF: '{project}/{dataset}/{version}'
    RCAST: '/'
    IPSL: '{realm}/{short_name}/{freq}/{grid}/{institute}/{dataset}/{latest_version}'
  input_file:
    default: '{short_name}_*.nc'
    ESGF: '{short_name}_*.nc'
  output_file: '{project}_{dataset}_{short_name}'
  cmor_type: 'CMIP6'
  cmor_path: 'obs4mips'
  cmor_default_table_prefix: 'obs4MIPs_'

The files don't even have the same version, (v7-7A and v7), yet they are being loaded together just because they share the short_name and input_dir.

@schlunma
Copy link
Contributor

I think the problem is that obs4MIPS data files are loaded only taking into account the short_name:

Yes, I agree that this is bad, but we probably don't want to change this now right before the release. This would technically be a breaking change that has the potential to break a lot of things.

So how about we test the recipes now with

drs:
  obs4MIPS: default

and fix this after the release? The data is present in our default OBS pool:

$ ls -l /work/bd0854/DATA/ESMValTool2/OBS/Tier1/TRMM-L3
total 864120
-rw-rw-r--+ 1 b380103 bd0854 442424860 Feb 22  2019 prStderr_TRMM-L3_v7-7A_199801-201312.nc
lrwxrwxrwx  1 b380103 bd0854        39 Mar  6  2019 prStderr_TRMM-L3_v7_7A_199801-201312.nc -> prStderr_TRMM-L3_v7-7A_199801-201312.nc
-rw-rw-r--+ 1 b380103 bd0854 442424824 Feb 22  2019 pr_TRMM-L3_v7-7A_199801-201312.nc
lrwxrwxrwx  1 b380103 bd0854        33 Mar  6  2019 pr_TRMM-L3_v7_7A_199801-201312.nc -> pr_TRMM-L3_v7-7A_199801-201312.nc

I don't think we need a new rc for that.

@schlunma
Copy link
Contributor

I just created an issue about that so we don't forget: ESMValGroup/ESMValCore#2677

@sloosvel
Copy link
Contributor Author

Thanks @schlunma, the run was successful now! If there are no more comments I'll proceed with the release.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

10 participants