From defc2fe75046929c931ba953f061be7138f3b315 Mon Sep 17 00:00:00 2001 From: Manuel Schlund <32543114+schlunma@users.noreply.github.com> Date: Wed, 22 Nov 2023 14:27:58 +0100 Subject: [PATCH 01/20] Fixed plot paths in NCL provenance tracking (#3422) Co-authored-by: Klaus Zimmermann --- esmvaltool/diag_scripts/austral_jet/asr.ncl | 2 +- esmvaltool/diag_scripts/austral_jet/main.ncl | 2 +- .../diag_scripts/carbon_ec/carbon_beta.ncl | 6 +----- .../carbon_ec/carbon_co2_cycle.ncl | 6 +----- .../carbon_ec/carbon_constraint.ncl | 2 +- .../carbon_ec/carbon_gammaHist.ncl | 2 +- .../ch12_calc_IAV_for_stippandhatch.ncl | 3 +-- .../diag_scripts/mder/select_for_mder.ncl | 2 +- .../diag_scripts/perfmetrics/collect.ncl | 5 +++-- .../russell18jgr/russell18jgr-fig2.ncl | 2 +- .../russell18jgr/russell18jgr-fig3b-2.ncl | 2 +- .../russell18jgr/russell18jgr-fig3b.ncl | 2 +- .../russell18jgr/russell18jgr-fig4.ncl | 2 +- .../russell18jgr/russell18jgr-fig5.ncl | 2 +- .../russell18jgr/russell18jgr-fig5g.ncl | 2 +- .../russell18jgr/russell18jgr-fig6a.ncl | 2 +- .../russell18jgr/russell18jgr-fig6b.ncl | 2 +- .../russell18jgr/russell18jgr-fig7h.ncl | 2 +- .../russell18jgr/russell18jgr-fig7i.ncl | 2 +- .../russell18jgr/russell18jgr-fig9a.ncl | 2 +- .../russell18jgr/russell18jgr-fig9b.ncl | 2 +- .../russell18jgr/russell18jgr-fig9c.ncl | 2 +- .../russell18jgr/russell18jgr-polar.ncl | 2 +- .../tebaldi21esd/calc_IAV_hatching.ncl | 3 +-- .../diag_scripts/xco2_analysis/delta_T.ncl | 2 +- .../diag_scripts/xco2_analysis/global_maps.ncl | 4 ++-- esmvaltool/diag_scripts/xco2_analysis/main.ncl | 6 +++--- .../diag_scripts/xco2_analysis/panel_plots.ncl | 4 ++-- .../diag_scripts/xco2_analysis/sat_masks.ncl | 4 ++-- .../xco2_analysis/station_comparison.ncl | 6 +++--- esmvaltool/interface_scripts/logging.ncl | 18 +++++++++++++++++- 31 files changed, 56 insertions(+), 49 deletions(-) diff --git a/esmvaltool/diag_scripts/austral_jet/asr.ncl b/esmvaltool/diag_scripts/austral_jet/asr.ncl index c12b66f166..5d855ad393 100644 --- a/esmvaltool/diag_scripts/austral_jet/asr.ncl +++ b/esmvaltool/diag_scripts/austral_jet/asr.ncl @@ -289,7 +289,7 @@ begin work_dir = output@work_dir opt = diag_script_info log_info(opt@wdiag) - plot_path = "missing" + plot_path = "n/a" plot_type = "" ; Iterate over all datasets diff --git a/esmvaltool/diag_scripts/austral_jet/main.ncl b/esmvaltool/diag_scripts/austral_jet/main.ncl index 446133e1d5..c078830687 100644 --- a/esmvaltool/diag_scripts/austral_jet/main.ncl +++ b/esmvaltool/diag_scripts/austral_jet/main.ncl @@ -731,7 +731,7 @@ begin if (output) then work_dir := output@work_dir opt = diag_script_info - plot_path = "missing" + plot_path = "n/a" plot_type = "" ; Iterate over all desired diagnostics diff --git a/esmvaltool/diag_scripts/carbon_ec/carbon_beta.ncl b/esmvaltool/diag_scripts/carbon_ec/carbon_beta.ncl index eb43b10cd3..0d6319ea85 100644 --- a/esmvaltool/diag_scripts/carbon_ec/carbon_beta.ncl +++ b/esmvaltool/diag_scripts/carbon_ec/carbon_beta.ncl @@ -279,11 +279,7 @@ begin create_legend_lines(leg@annots, leg, plot_dir + \ DIAG_SCRIPT + "_legend", "markers") - if (file_type .ne. "png") then - plotname = plot_dir + plot_file + "." + file_type - else - plotname = plot_dir + plot_file + ".000001.png" - end if + plotname = plot_dir + plot_file + "." + file_type ; Call provenance logger log_provenance(ncdf_outfile, \ diff --git a/esmvaltool/diag_scripts/carbon_ec/carbon_co2_cycle.ncl b/esmvaltool/diag_scripts/carbon_ec/carbon_co2_cycle.ncl index 7876ffdb62..f37b7bc23a 100644 --- a/esmvaltool/diag_scripts/carbon_ec/carbon_co2_cycle.ncl +++ b/esmvaltool/diag_scripts/carbon_ec/carbon_co2_cycle.ncl @@ -492,11 +492,7 @@ begin ; Write NetCDF output ncdf_outfile = ncdf_write(CO2var, new_path) - if (file_type .ne. "png") then - plotname = plot_dir + plot_file + "." + file_type - else - plotname = plot_dir + plot_file + ".000001.png" - end if + plotname = plot_dir + plot_file + "." + file_type ; ----------------------------------------------------------- ; Call provenance logger diff --git a/esmvaltool/diag_scripts/carbon_ec/carbon_constraint.ncl b/esmvaltool/diag_scripts/carbon_ec/carbon_constraint.ncl index 94d5b8145c..61f1f5c5a3 100644 --- a/esmvaltool/diag_scripts/carbon_ec/carbon_constraint.ncl +++ b/esmvaltool/diag_scripts/carbon_ec/carbon_constraint.ncl @@ -331,7 +331,7 @@ begin ; Call provenance logger log_provenance(ncdf_outfile, \ - output_dir + "." + file_type, \ + output_dir + plot_file + "." + file_type, \ XStg + " vs " + YStg, \ (/"anomaly", "corr", "stddev"/), \ (/"trop", "global"/),\ diff --git a/esmvaltool/diag_scripts/carbon_ec/carbon_gammaHist.ncl b/esmvaltool/diag_scripts/carbon_ec/carbon_gammaHist.ncl index 1479620173..589b0d72e8 100644 --- a/esmvaltool/diag_scripts/carbon_ec/carbon_gammaHist.ncl +++ b/esmvaltool/diag_scripts/carbon_ec/carbon_gammaHist.ncl @@ -336,7 +336,7 @@ begin ; Call provenance logger log_provenance(ncdf_outfile, \ - output_dir + "." + file_type, \ + output_dir + plot_file + "." + file_type, \ XStg + " vs " + YStg, \ (/"anomaly", "corr", "stddev"/), \ (/"trop", "global"/),\ diff --git a/esmvaltool/diag_scripts/ipcc_ar5/ch12_calc_IAV_for_stippandhatch.ncl b/esmvaltool/diag_scripts/ipcc_ar5/ch12_calc_IAV_for_stippandhatch.ncl index df1ea2375a..e92d60ab43 100644 --- a/esmvaltool/diag_scripts/ipcc_ar5/ch12_calc_IAV_for_stippandhatch.ncl +++ b/esmvaltool/diag_scripts/ipcc_ar5/ch12_calc_IAV_for_stippandhatch.ncl @@ -410,7 +410,6 @@ begin ; collect meta-data nc_file = ncdf_outfile - plot_file = work_dir + "/None" caption = "Inter-annual variability based on piControl runs." statistics = ("var") domains = ("global") @@ -418,7 +417,7 @@ begin authors = (/"lorenz_ruth"/) references = (/"collins13ipcc"/) infiles = metadata_att_as_array(info_items, "filename") - log_provenance(nc_file, plot_file, caption, statistics, domains, \ + log_provenance(nc_file, "n/a", caption, statistics, domains, \ plot_types, authors, references, infiles) leave_msg(DIAG_SCRIPT, "") diff --git a/esmvaltool/diag_scripts/mder/select_for_mder.ncl b/esmvaltool/diag_scripts/mder/select_for_mder.ncl index 8c9198a8f6..d07cda657f 100644 --- a/esmvaltool/diag_scripts/mder/select_for_mder.ncl +++ b/esmvaltool/diag_scripts/mder/select_for_mder.ncl @@ -97,7 +97,7 @@ begin AUTHORS = (/"wenzel_sabrina", "schlund_manuel"/) DOMAIN = diag_script_info@domain PLOT_TYPE = "" - PLOT_FILE = "missing" + PLOT_FILE = "n/a" REFERENCES = (/"wenzel16jclim"/) ; Get reference dataset(s) diff --git a/esmvaltool/diag_scripts/perfmetrics/collect.ncl b/esmvaltool/diag_scripts/perfmetrics/collect.ncl index 503a9c50d8..a2b14ab733 100644 --- a/esmvaltool/diag_scripts/perfmetrics/collect.ncl +++ b/esmvaltool/diag_scripts/perfmetrics/collect.ncl @@ -502,8 +502,9 @@ begin domains = (/"global"/) ; Call provenance logger - log_provenance(ncdf_outfile, plotpath, caption, statistics, domains, \ - plottype, authors, references, data_files) + log_provenance(ncdf_outfile, plotpath + "." + file_type, caption, \ + statistics, domains, plottype, authors, references, \ + data_files) leave_msg(DIAG_SCRIPT, "") diff --git a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig2.ncl b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig2.ncl index aa0db4d6a6..034d3a1287 100644 --- a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig2.ncl +++ b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig2.ncl @@ -158,7 +158,7 @@ begin ; Call provenance logger log_provenance(ncdf_outfile, \ - plotpath, \ + plotpath + "." + output_type(), \ "Russell et al 2018 figure 2", \ "mean", \ "sh", \ diff --git a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig3b-2.ncl b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig3b-2.ncl index c182468947..c912663321 100644 --- a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig3b-2.ncl +++ b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig3b-2.ncl @@ -274,7 +274,7 @@ begin delete(last_index) delete(out_var) log_provenance(ncdf_outfile, \ - plotpath, \ + plotpath + "." + output_type(), \ "Russell et al 2018 figure 3b part 2", \ "mean", \ "sh", \ diff --git a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig3b.ncl b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig3b.ncl index 0b6b9d155f..fd4cf3f43b 100644 --- a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig3b.ncl +++ b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig3b.ncl @@ -264,7 +264,7 @@ begin delete(last_index) delete(out_var) log_provenance(ncdf_outfile, \ - plotpath, \ + plotpath + "." + output_type(), \ "Russell et al 2018 figure 3b", \ "mean", \ "sh", \ diff --git a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig4.ncl b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig4.ncl index 10f94a62b2..4e62c7b552 100644 --- a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig4.ncl +++ b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig4.ncl @@ -368,7 +368,7 @@ begin delete(totaltransport) ; Call provenance logger log_provenance(ncdf_outfile, \ - plotpath, \ + plotpath + "." + file_type, \ "Russell et al 2018 figure 4", \ "mean", \ "sh", \ diff --git a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig5.ncl b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig5.ncl index bddd26791b..5a60ea03d9 100644 --- a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig5.ncl +++ b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig5.ncl @@ -169,7 +169,7 @@ begin delete(dataset) log_provenance(ncdf_outfile, \ - plotpath, \ + plotpath + "." + output_type(), \ "Russell et al 2018 figure 5 -polar", \ "mean", \ "sh", \ diff --git a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig5g.ncl b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig5g.ncl index 128fb25f43..67d8c53491 100644 --- a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig5g.ncl +++ b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig5g.ncl @@ -226,7 +226,7 @@ begin ; Call provenance logger log_provenance(ncdf_outfile, \ - plotpath, \ + plotpath + "." + output_type(), \ "Russell et al 2018 figure 5g", \ "mean", \ "sh", \ diff --git a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig6a.ncl b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig6a.ncl index 29bbe4ace7..206d2909cc 100644 --- a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig6a.ncl +++ b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig6a.ncl @@ -699,7 +699,7 @@ begin ncdf_outfile = ncdf_write(out_var, nc_filename) log_provenance(ncdf_outfile, \ - plotpath, \ + plotpath + "." + output_type(), \ "Russell et al 2018 figure 6 part a", \ "mean", \ "sh", \ diff --git a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig6b.ncl b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig6b.ncl index bbbf72c72d..2287b62adf 100644 --- a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig6b.ncl +++ b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig6b.ncl @@ -678,7 +678,7 @@ begin ncdf_outfile = ncdf_write(out_var, nc_filename) log_provenance(ncdf_outfile, \ - plotpath, \ + plotpath + "." + output_type(), \ "Russell et al 2018 figure 6b", \ "mean", \ "sh", \ diff --git a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig7h.ncl b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig7h.ncl index 4a698f455e..249712d29f 100644 --- a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig7h.ncl +++ b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig7h.ncl @@ -164,7 +164,7 @@ begin delete(var_lon_avg) delete(dataset) log_provenance(ncdf_outfile, \ - plotpath, \ + plotpath + "." + output_type(), \ "Russell et al 2018 figure 7h", \ "mean", \ "sh", \ diff --git a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig7i.ncl b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig7i.ncl index dd56bd4a41..7abcc9e7a9 100644 --- a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig7i.ncl +++ b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig7i.ncl @@ -202,7 +202,7 @@ begin end if log_provenance(ncdf_outfile, \ - plotpath, \ + plotpath + "." + output_type(), \ "Russell et al 2018 figure 7i", \ "mean", \ "sh", \ diff --git a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig9a.ncl b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig9a.ncl index 99cf97b2ce..8bef8cb204 100644 --- a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig9a.ncl +++ b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig9a.ncl @@ -317,7 +317,7 @@ begin ncdf_outfile = ncdf_write(outvar, nc_filename) log_provenance(ncdf_outfile, \ - plotpath, \ + plotpath + "." + output_type(), \ "Russell et al 2018 figure 9a", \ "mean", \ "sh", \ diff --git a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig9b.ncl b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig9b.ncl index bade43d9cf..8afd05425a 100644 --- a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig9b.ncl +++ b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig9b.ncl @@ -335,7 +335,7 @@ begin ncdf_outfile = ncdf_write(outvar, nc_filename) log_provenance(ncdf_outfile, \ - plotpath, \ + plotpath + "." + output_type(), \ "Russell et al 2018 figure 9b", \ "mean", \ "sh", \ diff --git a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig9c.ncl b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig9c.ncl index e669bac579..0e5c828a6a 100644 --- a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig9c.ncl +++ b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig9c.ncl @@ -331,7 +331,7 @@ begin ncdf_outfile = ncdf_write(outvar, nc_filename) log_provenance(ncdf_outfile, \ - plotpath, \ + plotpath + "." + output_type(), \ "Russell et al 2018 figure 9c", \ "mean", \ "sh", \ diff --git a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-polar.ncl b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-polar.ncl index e01771babf..b9c8f1faaa 100644 --- a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-polar.ncl +++ b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-polar.ncl @@ -232,7 +232,7 @@ begin ncdf_outfile = ncdf_write(dataset, nc_filename) delete(dataset) log_provenance(ncdf_outfile, \ - plotpath, \ + plotpath + "." + output_type(), \ "Russell et al 2018 polar plot " + var0, \ "mean", \ "sh", \ diff --git a/esmvaltool/diag_scripts/tebaldi21esd/calc_IAV_hatching.ncl b/esmvaltool/diag_scripts/tebaldi21esd/calc_IAV_hatching.ncl index 8484a00871..f8f0d83511 100644 --- a/esmvaltool/diag_scripts/tebaldi21esd/calc_IAV_hatching.ncl +++ b/esmvaltool/diag_scripts/tebaldi21esd/calc_IAV_hatching.ncl @@ -399,7 +399,6 @@ begin ; collect meta-data nc_file = ncdf_outfile - plot_file = plot_dir + "/None" caption = "Inter-annual variability based on piControl runs." statistics = ("var") domains = ("global") @@ -407,7 +406,7 @@ begin authors = (/"lorenz_ruth"/) references = (/"collins13ipcc"/) infiles = metadata_att_as_array(info_items, "filename") - log_provenance(nc_file, plot_file, caption, statistics, domains, \ + log_provenance(nc_file, "n/a", caption, statistics, domains, \ plot_types, authors, references, infiles) leave_msg(DIAG_SCRIPT, "") diff --git a/esmvaltool/diag_scripts/xco2_analysis/delta_T.ncl b/esmvaltool/diag_scripts/xco2_analysis/delta_T.ncl index af7498d75b..f83f56cb31 100644 --- a/esmvaltool/diag_scripts/xco2_analysis/delta_T.ncl +++ b/esmvaltool/diag_scripts/xco2_analysis/delta_T.ncl @@ -332,7 +332,7 @@ begin ncdf_outfile = ncdf_write(delta_t_detr, outfile_netcdf_dtgr_detr) log_provenance(ncdf_outfile, \ - outfile_netcdf_dtgr_detr, \ + outfile_dtgr_detr + "." + file_type, \ "Sensitivity of interannual variability of " \ + var0 + " growth rate in the " + region + ", " + \ start_year + "-" + end_year + "to the interannual " \ diff --git a/esmvaltool/diag_scripts/xco2_analysis/global_maps.ncl b/esmvaltool/diag_scripts/xco2_analysis/global_maps.ncl index 9aa205db32..d1748425d4 100644 --- a/esmvaltool/diag_scripts/xco2_analysis/global_maps.ncl +++ b/esmvaltool/diag_scripts/xco2_analysis/global_maps.ncl @@ -472,7 +472,7 @@ begin ; Provenance log_provenance(ncdf_outfile, \ - outfile, \ + outfile + "." + file_type, \ "Maps of mean Seasonal Cycle Amplitude of " + var0 + " " \ + DATASETS(imod) + " for " + start_year + "-" \ + end_year + ". Top: SCA with observational sampling (left)" \ @@ -587,7 +587,7 @@ begin ; Provenance log_provenance(ncdf_outfile, \ - outfile_scap, \ + outfile_scap + "." + file_type, \ "Maps of mean Seasonal Cycle Amplitude of " \ + var0 + " for " + start_year + "-" \ + end_year + ". Similar to Gier et al 2020, Fig 5.", \ diff --git a/esmvaltool/diag_scripts/xco2_analysis/main.ncl b/esmvaltool/diag_scripts/xco2_analysis/main.ncl index 8f585e5f62..0739e52edb 100644 --- a/esmvaltool/diag_scripts/xco2_analysis/main.ncl +++ b/esmvaltool/diag_scripts/xco2_analysis/main.ncl @@ -438,7 +438,7 @@ begin ; Provenance log_provenance(ncdf_outfile, \ - outfile_ts_panels, \ + outfile_ts_panels + "." + file_type, \ "Timeseries, growth rate and seasonal cycle of " \ + var0 + " for " + region + ", " + start_year + "-" \ + end_year + ". Using masking: " + opt_mask \ @@ -550,7 +550,7 @@ begin ; Provenance log_provenance(ncdf_outfile, \ - outfile_grbp, \ + outfile_grbp + "." + file_type, \ "Growth Rate histogram of " \ + var0 + " for " + region + ", " + start_year + "-" \ + end_year + ". Using masking: " + opt_mask \ @@ -653,7 +653,7 @@ begin ; Provenance log_provenance(ncdf_outfile, \ - outfile_sabp, \ + outfile_sabp + "." + file_type, \ "Seasonal Cycle Amplitude histogram of " \ + var0 + " for " + region + ", " + start_year + "-" \ + end_year + ". Using masking: " + opt_mask, \ diff --git a/esmvaltool/diag_scripts/xco2_analysis/panel_plots.ncl b/esmvaltool/diag_scripts/xco2_analysis/panel_plots.ncl index bcd4c82002..08fe30ad0f 100644 --- a/esmvaltool/diag_scripts/xco2_analysis/panel_plots.ncl +++ b/esmvaltool/diag_scripts/xco2_analysis/panel_plots.ncl @@ -360,7 +360,7 @@ begin ; Provenance log_provenance(ncdf_outfile, \ - outfile_scaplot, \ + outfile_scaplot + "." + file_type, \ "Trend of Seasonal Cycle Amplitude with " \ + var0 + " for " + region + ", " + start_year + "-" \ + end_year + ". Using masking: " + opt_mask \ @@ -391,7 +391,7 @@ begin ; Provenance log_provenance(ncdf_outfile, \ - outfile_grplot, \ + outfile_grplot + "." + file_type, \ "Trend of Growth Rate with " \ + var0 + " for " + region + ", " + start_year + "-" \ + end_year + ". Using masking: " + opt_mask \ diff --git a/esmvaltool/diag_scripts/xco2_analysis/sat_masks.ncl b/esmvaltool/diag_scripts/xco2_analysis/sat_masks.ncl index c54df52d90..2bed5c74a6 100644 --- a/esmvaltool/diag_scripts/xco2_analysis/sat_masks.ncl +++ b/esmvaltool/diag_scripts/xco2_analysis/sat_masks.ncl @@ -258,7 +258,7 @@ begin ; Provenance log_provenance(ncdf_outfile, \ - outfile, \ + outfile + "." + file_type, \ var0 + "fractional data coverage " + start_year + "-" \ + end_year + ". Similar to Gier et al 2020, Fig 1.", \ (/"mean"/), \ @@ -377,7 +377,7 @@ begin delete(res) log_provenance(ncdf_outfile, \ - outfile_c3s, \ + outfile_c3s + "." + file_type, \ var0 + "fractional data coverage for different obs " \ + "periods. Similar to Gier et al 2020, Fig 8.", \ (/"mean"/), \ diff --git a/esmvaltool/diag_scripts/xco2_analysis/station_comparison.ncl b/esmvaltool/diag_scripts/xco2_analysis/station_comparison.ncl index 53734d94db..23155e36fa 100644 --- a/esmvaltool/diag_scripts/xco2_analysis/station_comparison.ncl +++ b/esmvaltool/diag_scripts/xco2_analysis/station_comparison.ncl @@ -285,7 +285,7 @@ begin ; Provenance log_provenance(ncdf_outfile, \ - outfile_stations_masked, \ + outfile_stations_masked + "." + file_type, \ "Time series of station " + station_array&station(istat) \ + ", dotted denoting areas masked like observations.", \ (/""/), \ @@ -334,7 +334,7 @@ begin ; Provenance log_provenance(ncdf_outfile, \ - outfile_stations_obs, \ + outfile_stations_obs + "." + file_type, \ "Time series of station " + station_array&station(istat) \ + ", for " + var0 + " and " + var1 + ".", \ (/"mean"/), \ @@ -501,7 +501,7 @@ begin ; Provenance log_provenance(ncdf_outfile, \ - outfile_map, \ + outfile_map + "." + file_type, \ "Time series for satellite, multi-model mean and station " \ + var0 + " and " + var1 \ + ". Similar to Gier et al, 2020 Fig. 2", \ diff --git a/esmvaltool/interface_scripts/logging.ncl b/esmvaltool/interface_scripts/logging.ncl index 3e1b10b0b2..4cb5ff1498 100644 --- a/esmvaltool/interface_scripts/logging.ncl +++ b/esmvaltool/interface_scripts/logging.ncl @@ -336,6 +336,12 @@ begin if (outfile .ne. "n/a") then suffix = get_file_suffix(outfile, 0) + if (ismissing(suffix)) then + error_msg("f", scriptname, funcname, "got invalid value for outfile " + \ + "(path to figure): '" + outfile + "'; expected path to a " + \ + "file or 'n/a'") + end if + ; For PNGs, additionally check for existence of files like ; "plot_file.000001.png", "plot_file.000002.png", etc. and save ; provenance record for each of them @@ -354,7 +360,10 @@ begin break end if end do - else + end if + + ; For all other cases, use outfile + if (.not. isvar("all_outfiles")) then all_outfiles = outfile end if @@ -362,6 +371,13 @@ begin original_entry = outstring do outfile_idx = 0, dimsizes(all_outfiles) - 1 file_to_add := all_outfiles(outfile_idx) + if (.not. fileexists(outfile)) then + error_msg("f", scriptname, funcname, "outfile (path to figure) '" + \ + file_to_add + "' does not exist (for PNGs, this " + \ + "function also searches for 'FILE.000001.png', " + \ + "'FILE.000002.png', etc.); if no plot file is available " + \ + "use 'n/a'") + end if new_entry = (/original_entry/) new_entry(0) = "? " + file_to_add outstring := array_append_record(outstring, new_entry, 0) From 8d8d4d9a51484e773d6b04fe7567d5c40eaa8709 Mon Sep 17 00:00:00 2001 From: Manuel Schlund <32543114+schlunma@users.noreply.github.com> Date: Thu, 30 Nov 2023 13:20:07 +0100 Subject: [PATCH 02/20] Correctly handle `~` when reading `plot_folder` option of monitoring diagnostic (#3449) --- esmvaltool/diag_scripts/monitor/monitor_base.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/esmvaltool/diag_scripts/monitor/monitor_base.py b/esmvaltool/diag_scripts/monitor/monitor_base.py index 135027f374..21dc159619 100644 --- a/esmvaltool/diag_scripts/monitor/monitor_base.py +++ b/esmvaltool/diag_scripts/monitor/monitor_base.py @@ -97,7 +97,9 @@ def __init__(self, config): ) plot_folder = plot_folder.replace('{plot_dir}', self.cfg[names.PLOT_DIR]) - self.plot_folder = os.path.abspath(plot_folder) + self.plot_folder = os.path.abspath( + os.path.expandvars(os.path.expanduser(plot_folder)) + ) self.plot_filename = config.get( 'plot_filename', '{plot_type}_{real_name}_{dataset}_{mip}_{exp}_{ensemble}') @@ -293,11 +295,7 @@ def get_plot_folder(self, var_info): 'real_name': self._real_name(var_info['variable_group']), **var_info } - folder = os.path.expandvars( - os.path.expanduser( - list(_replace_tags(self.plot_folder, info))[0] - ) - ) + folder = list(_replace_tags(self.plot_folder, info))[0] if self.plot_folder.startswith('/'): folder = '/' + folder if not os.path.isdir(folder): From b1c622875bcbc7806c23855b7bb28de98d9f5740 Mon Sep 17 00:00:00 2001 From: Bouwe Andela Date: Thu, 14 Dec 2023 16:08:20 +0100 Subject: [PATCH 03/20] Fix obs4MIPs frequency in recipe_bock20jgr_fig_1-4.yml (#3473) --- esmvaltool/recipes/bock20jgr/recipe_bock20jgr_fig_1-4.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/esmvaltool/recipes/bock20jgr/recipe_bock20jgr_fig_1-4.yml b/esmvaltool/recipes/bock20jgr/recipe_bock20jgr_fig_1-4.yml index 1ae9066ec3..07475e5d74 100644 --- a/esmvaltool/recipes/bock20jgr/recipe_bock20jgr_fig_1-4.yml +++ b/esmvaltool/recipes/bock20jgr/recipe_bock20jgr_fig_1-4.yml @@ -445,7 +445,11 @@ diagnostics: end_year: 1999 additional_datasets: *cmip3_tas additional_datasets: - - {dataset: GPCP-V2.3, project: obs4MIPs, tier: 1, mip: Amon} + - dataset: GPCP-V2.3 + project: obs4MIPs + tier: 1 + mip: Amon + frequency: mon scripts: model_bias: <<: *model_bias_settings From ba04b92bc57056324c373e9eb899b9a3ca5e1133 Mon Sep 17 00:00:00 2001 From: Klaus Zimmermann Date: Thu, 14 Dec 2023 16:13:38 +0100 Subject: [PATCH 04/20] Fix erroneous file_type handling in certain NCL diagnostics (#3474) --- ...12_calc_zonal_cont_diff_mmm_stippandhatch.ncl | 7 ------- .../ipcc_ar5/ch12_plot_map_diff_mmm_stipp.ncl | 7 ------- .../ipcc_ar5/ch12_plot_ts_line_mean_spread.ncl | 12 ++---------- .../ipcc_ar5/ch12_plot_zonal_diff_mmm_stipp.ncl | 6 ------ .../ipcc_ar5/ch12_snw_area_change_fig12-32.ncl | 7 ------- .../ipcc_ar5/ch12_ts_line_mean_spread.ncl | 7 ------- .../tebaldi21esd/calc_table_changes.ncl | 7 ------- .../tebaldi21esd/calc_table_warming_level.ncl | 7 ------- ...meseries_across_realization_stddev_runave.ncl | 7 ------- .../calc_timeseries_mean_spread_runave.ncl | 7 ------- .../calc_timeseries_mean_spread_ssp4.ncl | 7 ------- .../calc_timeseries_mean_spread_ssp5.ncl | 7 ------- .../diag_scripts/tebaldi21esd/plot_pattern.ncl | 7 ------- .../tebaldi21esd/plot_table_changes.ncl | 12 ++---------- .../tebaldi21esd/plot_table_warming_level.ncl | 12 ++---------- ...meseries_across_realization_stddev_runave.ncl | 16 ++++------------ .../tebaldi21esd/plot_timeseries_mean_spread.ncl | 12 ++---------- .../plot_timeseries_mean_spread_3scenarios.ncl | 12 ++---------- ...eries_mean_spread_constrained_projections.ncl | 12 ++---------- ...ot_timeseries_mean_spread_rightaxis_5scen.ncl | 12 ++---------- .../plot_timeseries_mean_spread_ssp4.ncl | 12 ++---------- .../plot_timeseries_mean_spread_ssp5.ncl | 12 ++---------- 22 files changed, 22 insertions(+), 185 deletions(-) diff --git a/esmvaltool/diag_scripts/ipcc_ar5/ch12_calc_zonal_cont_diff_mmm_stippandhatch.ncl b/esmvaltool/diag_scripts/ipcc_ar5/ch12_calc_zonal_cont_diff_mmm_stippandhatch.ncl index 1952cff668..dbe89529b6 100644 --- a/esmvaltool/diag_scripts/ipcc_ar5/ch12_calc_zonal_cont_diff_mmm_stippandhatch.ncl +++ b/esmvaltool/diag_scripts/ipcc_ar5/ch12_calc_zonal_cont_diff_mmm_stippandhatch.ncl @@ -78,13 +78,6 @@ begin end begin - ; Get environment variables - if (isatt(diag_script_info, "plot_type")) then - file_type = diag_script_info@plot_type - else - file_type = "pdf" - end if - ; Output netcdf directory work_dir = config_user_info@work_dir system("mkdir -p " + work_dir) diff --git a/esmvaltool/diag_scripts/ipcc_ar5/ch12_plot_map_diff_mmm_stipp.ncl b/esmvaltool/diag_scripts/ipcc_ar5/ch12_plot_map_diff_mmm_stipp.ncl index 720840ff12..77f6441f59 100644 --- a/esmvaltool/diag_scripts/ipcc_ar5/ch12_plot_map_diff_mmm_stipp.ncl +++ b/esmvaltool/diag_scripts/ipcc_ar5/ch12_plot_map_diff_mmm_stipp.ncl @@ -51,13 +51,6 @@ begin end begin - ; Get environment variables - if (isatt(diag_script_info, "plot_type")) then - file_type = diag_script_info@plot_type - else - file_type = "pdf" - end if - ; Output netcdf directory work_dir = config_user_info@work_dir system("mkdir -p " + work_dir) diff --git a/esmvaltool/diag_scripts/ipcc_ar5/ch12_plot_ts_line_mean_spread.ncl b/esmvaltool/diag_scripts/ipcc_ar5/ch12_plot_ts_line_mean_spread.ncl index 838888ae74..20a5e277ea 100644 --- a/esmvaltool/diag_scripts/ipcc_ar5/ch12_plot_ts_line_mean_spread.ncl +++ b/esmvaltool/diag_scripts/ipcc_ar5/ch12_plot_ts_line_mean_spread.ncl @@ -48,13 +48,6 @@ end begin - ; Get environment variables - if (isatt(diag_script_info, "plot_type")) then - file_type = diag_script_info@plot_type - else - file_type = "pdf" - end if - ; Output netcdf directory work_dir = config_user_info@work_dir system("mkdir -p " + work_dir) @@ -251,11 +244,10 @@ begin draw(wks) frame(wks) - log_info(" Wrote " + plot_dir + "/" + outfile + "." + file_type) + log_info(" Wrote " + wks@fullname) ; collect meta-data nc_file = datapath - plot_file = plot_dir + "/" + outfile + "." + file_type if (isatt(diag_script_info, "spread")) then spread_str = diag_script_info@spread @@ -279,7 +271,7 @@ begin authors = (/"lorenz_ruth"/) references = (/"collins13ipcc"/) infiles = metadata_att_as_array(info_items, "filename") - log_provenance(nc_file, plot_file, caption, statistics, domains, \ + log_provenance(nc_file, wks@fullname, caption, statistics, domains, \ plot_types, authors, references, infiles) leave_msg(DIAG_SCRIPT, "") diff --git a/esmvaltool/diag_scripts/ipcc_ar5/ch12_plot_zonal_diff_mmm_stipp.ncl b/esmvaltool/diag_scripts/ipcc_ar5/ch12_plot_zonal_diff_mmm_stipp.ncl index e58ae142c7..261082f79f 100644 --- a/esmvaltool/diag_scripts/ipcc_ar5/ch12_plot_zonal_diff_mmm_stipp.ncl +++ b/esmvaltool/diag_scripts/ipcc_ar5/ch12_plot_zonal_diff_mmm_stipp.ncl @@ -48,12 +48,6 @@ begin end begin - ; Get environment variables - if (isatt(diag_script_info, "plot_type")) then - file_type = diag_script_info@plot_type - else - file_type = "pdf" - end if ; Output netcdf directory work_dir = config_user_info@work_dir system("mkdir -p " + work_dir) diff --git a/esmvaltool/diag_scripts/ipcc_ar5/ch12_snw_area_change_fig12-32.ncl b/esmvaltool/diag_scripts/ipcc_ar5/ch12_snw_area_change_fig12-32.ncl index 51c0dcc787..4834f5ccf0 100644 --- a/esmvaltool/diag_scripts/ipcc_ar5/ch12_snw_area_change_fig12-32.ncl +++ b/esmvaltool/diag_scripts/ipcc_ar5/ch12_snw_area_change_fig12-32.ncl @@ -66,13 +66,6 @@ begin end begin - ; Get environment variables - if (isatt(diag_script_info, "plot_type")) then - file_type = diag_script_info@plot_type - else - file_type = "pdf" - end if - ; Output netcdf directory work_dir = config_user_info@work_dir system("mkdir -p " + work_dir) diff --git a/esmvaltool/diag_scripts/ipcc_ar5/ch12_ts_line_mean_spread.ncl b/esmvaltool/diag_scripts/ipcc_ar5/ch12_ts_line_mean_spread.ncl index c47902d8bb..e488d3a07f 100644 --- a/esmvaltool/diag_scripts/ipcc_ar5/ch12_ts_line_mean_spread.ncl +++ b/esmvaltool/diag_scripts/ipcc_ar5/ch12_ts_line_mean_spread.ncl @@ -47,13 +47,6 @@ begin end begin - ; Get environment variables - if (isatt(diag_script_info, "plot_type")) then - file_type = diag_script_info@plot_type - else - file_type = "pdf" - end if - ; Output netcdf directory work_dir = config_user_info@work_dir system("mkdir -p " + work_dir) diff --git a/esmvaltool/diag_scripts/tebaldi21esd/calc_table_changes.ncl b/esmvaltool/diag_scripts/tebaldi21esd/calc_table_changes.ncl index a2fc676d9b..0064e2da01 100644 --- a/esmvaltool/diag_scripts/tebaldi21esd/calc_table_changes.ncl +++ b/esmvaltool/diag_scripts/tebaldi21esd/calc_table_changes.ncl @@ -53,13 +53,6 @@ begin end begin - ; Get environment variables - if (isatt(diag_script_info, "plot_type")) then - file_type = diag_script_info@plot_type - else - file_type = "pdf" - end if - ; Output netcdf directory work_dir = config_user_info@work_dir system("mkdir -p " + work_dir) diff --git a/esmvaltool/diag_scripts/tebaldi21esd/calc_table_warming_level.ncl b/esmvaltool/diag_scripts/tebaldi21esd/calc_table_warming_level.ncl index 01fb0b5c41..942a725275 100644 --- a/esmvaltool/diag_scripts/tebaldi21esd/calc_table_warming_level.ncl +++ b/esmvaltool/diag_scripts/tebaldi21esd/calc_table_warming_level.ncl @@ -55,13 +55,6 @@ begin end begin - ; Get environment variables - if (isatt(diag_script_info, "plot_type")) then - file_type = diag_script_info@plot_type - else - file_type = "pdf" - end if - ; Output netcdf directory work_dir = config_user_info@work_dir system("mkdir -p " + work_dir) diff --git a/esmvaltool/diag_scripts/tebaldi21esd/calc_timeseries_across_realization_stddev_runave.ncl b/esmvaltool/diag_scripts/tebaldi21esd/calc_timeseries_across_realization_stddev_runave.ncl index 4e772935e7..5cf278a046 100644 --- a/esmvaltool/diag_scripts/tebaldi21esd/calc_timeseries_across_realization_stddev_runave.ncl +++ b/esmvaltool/diag_scripts/tebaldi21esd/calc_timeseries_across_realization_stddev_runave.ncl @@ -56,13 +56,6 @@ begin end begin - ; Get environment variables - if (isatt(diag_script_info, "plot_type")) then - file_type = diag_script_info@plot_type - else - file_type = "pdf" - end if - ; Output netcdf directory work_dir = config_user_info@work_dir system("mkdir -p " + work_dir) diff --git a/esmvaltool/diag_scripts/tebaldi21esd/calc_timeseries_mean_spread_runave.ncl b/esmvaltool/diag_scripts/tebaldi21esd/calc_timeseries_mean_spread_runave.ncl index e3c92d5458..ceda4512fb 100644 --- a/esmvaltool/diag_scripts/tebaldi21esd/calc_timeseries_mean_spread_runave.ncl +++ b/esmvaltool/diag_scripts/tebaldi21esd/calc_timeseries_mean_spread_runave.ncl @@ -55,13 +55,6 @@ begin end begin - ; Get environment variables - if (isatt(diag_script_info, "plot_type")) then - file_type = diag_script_info@plot_type - else - file_type = "pdf" - end if - ; Output netcdf directory work_dir = config_user_info@work_dir system("mkdir -p " + work_dir) diff --git a/esmvaltool/diag_scripts/tebaldi21esd/calc_timeseries_mean_spread_ssp4.ncl b/esmvaltool/diag_scripts/tebaldi21esd/calc_timeseries_mean_spread_ssp4.ncl index a64e5204ef..74baee5d88 100644 --- a/esmvaltool/diag_scripts/tebaldi21esd/calc_timeseries_mean_spread_ssp4.ncl +++ b/esmvaltool/diag_scripts/tebaldi21esd/calc_timeseries_mean_spread_ssp4.ncl @@ -54,13 +54,6 @@ begin end begin - ; Get environment variables - if (isatt(diag_script_info, "plot_type")) then - file_type = diag_script_info@plot_type - else - file_type = "pdf" - end if - ; Output netcdf directory work_dir = config_user_info@work_dir system("mkdir -p " + work_dir) diff --git a/esmvaltool/diag_scripts/tebaldi21esd/calc_timeseries_mean_spread_ssp5.ncl b/esmvaltool/diag_scripts/tebaldi21esd/calc_timeseries_mean_spread_ssp5.ncl index 938158d37d..0ec3479508 100644 --- a/esmvaltool/diag_scripts/tebaldi21esd/calc_timeseries_mean_spread_ssp5.ncl +++ b/esmvaltool/diag_scripts/tebaldi21esd/calc_timeseries_mean_spread_ssp5.ncl @@ -54,13 +54,6 @@ begin end begin - ; Get environment variables - if (isatt(diag_script_info, "plot_type")) then - file_type = diag_script_info@plot_type - else - file_type = "pdf" - end if - ; Output netcdf directory work_dir = config_user_info@work_dir system("mkdir -p " + work_dir) diff --git a/esmvaltool/diag_scripts/tebaldi21esd/plot_pattern.ncl b/esmvaltool/diag_scripts/tebaldi21esd/plot_pattern.ncl index 109975882b..cd5aeb93c6 100644 --- a/esmvaltool/diag_scripts/tebaldi21esd/plot_pattern.ncl +++ b/esmvaltool/diag_scripts/tebaldi21esd/plot_pattern.ncl @@ -58,13 +58,6 @@ begin end begin - ; Get environment variables - if (isatt(diag_script_info, "plot_type")) then - file_type = diag_script_info@plot_type - else - file_type = "pdf" - end if - ; Output netcdf directory work_dir = config_user_info@work_dir system("mkdir -p " + work_dir) diff --git a/esmvaltool/diag_scripts/tebaldi21esd/plot_table_changes.ncl b/esmvaltool/diag_scripts/tebaldi21esd/plot_table_changes.ncl index 115d04b130..60b1e731be 100644 --- a/esmvaltool/diag_scripts/tebaldi21esd/plot_table_changes.ncl +++ b/esmvaltool/diag_scripts/tebaldi21esd/plot_table_changes.ncl @@ -57,13 +57,6 @@ begin end begin - ; Get environment variables - if (isatt(diag_script_info, "plot_type")) then - file_type = diag_script_info@plot_type - else - file_type = "pdf" - end if - ; Output netcdf directory work_dir = config_user_info@work_dir system("mkdir -p " + work_dir) @@ -159,13 +152,12 @@ begin gsn_table(wks, ncr4, x4, y4, text4, res4) draw(wks) frame(wks) - log_info(" Wrote " + plot_dir + "/" + outfile + "." + file_type) + log_info(" Wrote " + wks@fullname) ; Collect meta-data netcdf_dir = diag_script_info@input_files(1) datapath = netcdf_dir + "/" + variable_info[0]@diagnostic + ".nc" nc_file = datapath - plot_file = plot_dir + "/" + outfile + "." + file_type caption = "Table of global annual mean" + \ variable_info[0]@long_name + " anomalies (relative to " + \ diag_script_info@begin_ref_year + "-" + diag_script_info@end_ref_year + \ @@ -177,7 +169,7 @@ begin authors = (/"debeire_kevin"/) references = (/"tebaldi21esd"/) infiles = metadata_att_as_array(info_items, "filename") - log_provenance(nc_file, plot_file, caption, statistics, domains, \ + log_provenance(nc_file, wks@fullname, caption, statistics, domains, \ plot_types, authors, references, infiles) leave_msg(DIAG_SCRIPT, "") end diff --git a/esmvaltool/diag_scripts/tebaldi21esd/plot_table_warming_level.ncl b/esmvaltool/diag_scripts/tebaldi21esd/plot_table_warming_level.ncl index 2d7da64ac5..4bd691b6ea 100644 --- a/esmvaltool/diag_scripts/tebaldi21esd/plot_table_warming_level.ncl +++ b/esmvaltool/diag_scripts/tebaldi21esd/plot_table_warming_level.ncl @@ -55,13 +55,6 @@ begin end begin - ; Get environment variables - if (isatt(diag_script_info, "plot_type")) then - file_type = diag_script_info@plot_type - else - file_type = "pdf" - end if - ; Output netcdf directory work_dir = config_user_info@work_dir system("mkdir -p " + work_dir) @@ -160,13 +153,12 @@ begin gsn_table(wks, ncr4, x4, y4, text4, res4) draw(wks) frame(wks) - log_info(" Wrote " + plot_dir + "/" + outfile + "." + file_type) + log_info(" Wrote " + wks@fullname) ; Collect meta-data netcdf_dir = diag_script_info@input_files(1) datapath = netcdf_dir + "/" + variable_info[0]@diagnostic + ".nc" nc_file = datapath - plot_file = plot_dir + "/" + outfile + "." + file_type caption = text4 statistics = ("mean") domains = ("global") @@ -174,7 +166,7 @@ begin authors = (/"debeire_kevin"/) references = (/"tebaldi21esd"/) infiles = metadata_att_as_array(info_items, "filename") - log_provenance(nc_file, plot_file, caption, statistics, domains, \ + log_provenance(nc_file, wks@fullname, caption, statistics, domains, \ plot_types, authors, references, infiles) leave_msg(DIAG_SCRIPT, "") diff --git a/esmvaltool/diag_scripts/tebaldi21esd/plot_timeseries_across_realization_stddev_runave.ncl b/esmvaltool/diag_scripts/tebaldi21esd/plot_timeseries_across_realization_stddev_runave.ncl index 04f3f90dab..c562115c2c 100644 --- a/esmvaltool/diag_scripts/tebaldi21esd/plot_timeseries_across_realization_stddev_runave.ncl +++ b/esmvaltool/diag_scripts/tebaldi21esd/plot_timeseries_across_realization_stddev_runave.ncl @@ -57,13 +57,6 @@ end begin - ; Get environment variables - if (isatt(diag_script_info, "plot_type")) then - file_type = diag_script_info@plot_type - else - file_type = "pdf" - end if - ; Output netcdf directory work_dir = config_user_info@work_dir system("mkdir -p " + work_dir) @@ -108,9 +101,9 @@ begin ; *********** PLOTTING ************ ; Create plot variables outfile = var0 + "_ts_line_" + syears(0) + "_" + eyears(nperiods - 1) - wks_type = file_type + wks_type = 0 wks_type@wkPaperSize = "A4" - wks = gsn_open_wks(wks_type, plot_dir + outfile) + wks = get_wks(wks_type, DIAG_SCRIPT, outfile) if(isatt(diag_script_info, "colormap")) then colormap = RGBtoCmap(diag_script_info@colormap) else @@ -229,18 +222,17 @@ begin draw(wks) frame(wks) - log_info(" Wrote " + plot_dir + "/" + outfile + "." + file_type) + log_info(" Wrote " + wks@fullname) ; collect meta-data nc_file = datapath - plot_file = plot_dir + "/" + outfile + "." + file_type statistics = ("stddev") domains = ("global") plot_types = ("times") authors = (/"debeire_kevin"/) references = (/"tebaldi21esd"/) infiles = metadata_att_as_array(info_items, "filename") - log_provenance(nc_file, plot_file, caption, statistics, domains, \ + log_provenance(nc_file, wks@fullname, caption, statistics, domains, \ plot_types, authors, references, infiles) leave_msg(DIAG_SCRIPT, "") diff --git a/esmvaltool/diag_scripts/tebaldi21esd/plot_timeseries_mean_spread.ncl b/esmvaltool/diag_scripts/tebaldi21esd/plot_timeseries_mean_spread.ncl index 8caaf9c62f..780de8a235 100644 --- a/esmvaltool/diag_scripts/tebaldi21esd/plot_timeseries_mean_spread.ncl +++ b/esmvaltool/diag_scripts/tebaldi21esd/plot_timeseries_mean_spread.ncl @@ -55,13 +55,6 @@ end begin - ; Get environment variables - if (isatt(diag_script_info, "plot_type")) then - file_type = diag_script_info@plot_type - else - file_type = "pdf" - end if - ; Output netcdf directory work_dir = config_user_info@work_dir system("mkdir -p " + work_dir) @@ -265,11 +258,10 @@ begin draw(wks) frame(wks) - log_info(" Wrote " + plot_dir + "/" + outfile + "." + file_type) + log_info(" Wrote " + wks@fullname) ; collect meta-data nc_file = datapath - plot_file = plot_dir + "/" + outfile + "." + file_type if (isatt(diag_script_info, "spread")) then spread_str = diag_script_info@spread @@ -282,7 +274,7 @@ begin authors = (/"debeire_kevin"/) references = (/"tebaldi21esd"/) infiles = metadata_att_as_array(info_items, "filename") - log_provenance(nc_file, plot_file, caption, statistics, domains, \ + log_provenance(nc_file, wks@fullname, caption, statistics, domains, \ plot_types, authors, references, infiles) leave_msg(DIAG_SCRIPT, "") diff --git a/esmvaltool/diag_scripts/tebaldi21esd/plot_timeseries_mean_spread_3scenarios.ncl b/esmvaltool/diag_scripts/tebaldi21esd/plot_timeseries_mean_spread_3scenarios.ncl index c95da587a4..6311d01782 100644 --- a/esmvaltool/diag_scripts/tebaldi21esd/plot_timeseries_mean_spread_3scenarios.ncl +++ b/esmvaltool/diag_scripts/tebaldi21esd/plot_timeseries_mean_spread_3scenarios.ncl @@ -55,13 +55,6 @@ end begin - ; Get environment variables - if (isatt(diag_script_info, "plot_type")) then - file_type = diag_script_info@plot_type - else - file_type = "pdf" - end if - ; Output netcdf directory work_dir = config_user_info@work_dir system("mkdir -p " + work_dir) @@ -261,11 +254,10 @@ begin draw(wks) frame(wks) - log_info(" Wrote " + plot_dir + "/" + outfile + "." + file_type) + log_info(" Wrote " + wks@fullname) ; collect meta-data nc_file = datapath - plot_file = plot_dir + "/" + outfile + "." + file_type if (isatt(diag_script_info, "spread")) then spread_str = diag_script_info@spread @@ -278,7 +270,7 @@ begin authors = (/"debeire_kevin"/) references = (/"tebaldi21esd"/) infiles = metadata_att_as_array(info_items, "filename") - log_provenance(nc_file, plot_file, caption, statistics, domains, \ + log_provenance(nc_file, wks@fullname, caption, statistics, domains, \ plot_types, authors, references, infiles) leave_msg(DIAG_SCRIPT, "") diff --git a/esmvaltool/diag_scripts/tebaldi21esd/plot_timeseries_mean_spread_constrained_projections.ncl b/esmvaltool/diag_scripts/tebaldi21esd/plot_timeseries_mean_spread_constrained_projections.ncl index 938804358a..0254d53e03 100644 --- a/esmvaltool/diag_scripts/tebaldi21esd/plot_timeseries_mean_spread_constrained_projections.ncl +++ b/esmvaltool/diag_scripts/tebaldi21esd/plot_timeseries_mean_spread_constrained_projections.ncl @@ -67,13 +67,6 @@ end begin - ; Get environment variables - if (isatt(diag_script_info, "plot_type")) then - file_type = diag_script_info@plot_type - else - file_type = "pdf" - end if - ; Output netcdf directory work_dir = config_user_info@work_dir system("mkdir -p " + work_dir) @@ -334,11 +327,10 @@ begin draw(wks) frame(wks) - log_info(" Wrote " + plot_dir + "/" + outfile + "." + file_type) + log_info(" Wrote " + wks@fullname) ; collect meta-data nc_file = datapath - plot_file = plot_dir + "/" + outfile + "." + file_type if (isatt(diag_script_info, "spread")) then spread_str = diag_script_info@spread @@ -351,7 +343,7 @@ begin authors = (/"debeire_kevin"/) references = (/"tebaldi21esd"/) infiles = metadata_att_as_array(info_items, "filename") - log_provenance(nc_file, plot_file, caption, statistics, domains, \ + log_provenance(nc_file, wks@fullname, caption, statistics, domains, \ plot_types, authors, references, infiles) leave_msg(DIAG_SCRIPT, "") diff --git a/esmvaltool/diag_scripts/tebaldi21esd/plot_timeseries_mean_spread_rightaxis_5scen.ncl b/esmvaltool/diag_scripts/tebaldi21esd/plot_timeseries_mean_spread_rightaxis_5scen.ncl index 475f9cbf56..72990171bc 100644 --- a/esmvaltool/diag_scripts/tebaldi21esd/plot_timeseries_mean_spread_rightaxis_5scen.ncl +++ b/esmvaltool/diag_scripts/tebaldi21esd/plot_timeseries_mean_spread_rightaxis_5scen.ncl @@ -58,13 +58,6 @@ end begin - ; Get environment variables - if (isatt(diag_script_info, "plot_type")) then - file_type = diag_script_info@plot_type - else - file_type = "pdf" - end if - ; Output netcdf directory work_dir = config_user_info@work_dir system("mkdir -p " + work_dir) @@ -279,11 +272,10 @@ begin draw(wks) frame(wks) - log_info(" Wrote " + plot_dir + "/" + outfile + "." + file_type) + log_info(" Wrote " + wks@fullname) ; collect meta-data nc_file = datapath - plot_file = plot_dir + "/" + outfile + "." + file_type if (isatt(diag_script_info, "spread")) then spread_str = diag_script_info@spread @@ -296,7 +288,7 @@ begin authors = (/"debeire_kevin"/) references = (/"tebaldi21esd"/) infiles = metadata_att_as_array(info_items, "filename") - log_provenance(nc_file, plot_file, caption, statistics, domains, \ + log_provenance(nc_file, wks@fullname, caption, statistics, domains, \ plot_types, authors, references, infiles) leave_msg(DIAG_SCRIPT, "") diff --git a/esmvaltool/diag_scripts/tebaldi21esd/plot_timeseries_mean_spread_ssp4.ncl b/esmvaltool/diag_scripts/tebaldi21esd/plot_timeseries_mean_spread_ssp4.ncl index 4162ec01c4..be50e29bb2 100644 --- a/esmvaltool/diag_scripts/tebaldi21esd/plot_timeseries_mean_spread_ssp4.ncl +++ b/esmvaltool/diag_scripts/tebaldi21esd/plot_timeseries_mean_spread_ssp4.ncl @@ -55,13 +55,6 @@ end begin - ; Get environment variables - if (isatt(diag_script_info, "plot_type")) then - file_type = diag_script_info@plot_type - else - file_type = "pdf" - end if - ; Output netcdf directory work_dir = config_user_info@work_dir system("mkdir -p " + work_dir) @@ -268,11 +261,10 @@ begin draw(wks) frame(wks) - log_info(" Wrote " + plot_dir + "/" + outfile + "." + file_type) + log_info(" Wrote " + wks@fullname) ; collect meta-data nc_file = datapath - plot_file = plot_dir + "/" + outfile + "." + file_type if (isatt(diag_script_info, "spread")) then spread_str = diag_script_info@spread @@ -285,7 +277,7 @@ begin authors = (/"debeire_kevin"/) references = (/"tebaldi21esd"/) infiles = metadata_att_as_array(info_items, "filename") - log_provenance(nc_file, plot_file, caption, statistics, domains, \ + log_provenance(nc_file, wks@fullname, caption, statistics, domains, \ plot_types, authors, references, infiles) leave_msg(DIAG_SCRIPT, "") diff --git a/esmvaltool/diag_scripts/tebaldi21esd/plot_timeseries_mean_spread_ssp5.ncl b/esmvaltool/diag_scripts/tebaldi21esd/plot_timeseries_mean_spread_ssp5.ncl index edbf881e49..9570b09ae4 100644 --- a/esmvaltool/diag_scripts/tebaldi21esd/plot_timeseries_mean_spread_ssp5.ncl +++ b/esmvaltool/diag_scripts/tebaldi21esd/plot_timeseries_mean_spread_ssp5.ncl @@ -55,13 +55,6 @@ end begin - ; Get environment variables - if (isatt(diag_script_info, "plot_type")) then - file_type = diag_script_info@plot_type - else - file_type = "pdf" - end if - ; Output netcdf directory work_dir = config_user_info@work_dir system("mkdir -p " + work_dir) @@ -253,11 +246,10 @@ begin draw(wks) frame(wks) - log_info(" Wrote " + plot_dir + "/" + outfile + "." + file_type) + log_info(" Wrote " + wks@fullname) ; collect meta-data nc_file = datapath - plot_file = plot_dir + "/" + outfile + "." + file_type if (isatt(diag_script_info, "spread")) then spread_str = diag_script_info@spread @@ -270,7 +262,7 @@ begin authors = (/"debeire_kevin"/) references = (/"tebaldi21esd"/) infiles = metadata_att_as_array(info_items, "filename") - log_provenance(nc_file, plot_file, caption, statistics, domains, \ + log_provenance(nc_file, wks@fullname, caption, statistics, domains, \ plot_types, authors, references, infiles) leave_msg(DIAG_SCRIPT, "") From 32962f06810c8f894081eababbfd2851b6624e6b Mon Sep 17 00:00:00 2001 From: Klaus Zimmermann Date: Thu, 14 Dec 2023 16:32:42 +0100 Subject: [PATCH 05/20] Adapt to changed style scheme name in matplotlib (#3475) --- esmvaltool/recipes/recipe_landcover.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/esmvaltool/recipes/recipe_landcover.yml b/esmvaltool/recipes/recipe_landcover.yml index d324c02dc9..75c892b37c 100644 --- a/esmvaltool/recipes/recipe_landcover.yml +++ b/esmvaltool/recipes/recipe_landcover.yml @@ -67,5 +67,5 @@ diagnostics: landcover: script: landcover/landcover.py comparison: variable - colorscheme: seaborn-darkgrid + colorscheme: seaborn-v0_8-darkgrid From b0e3e6c3b810c7fad7012bee100ed10a080d4b0c Mon Sep 17 00:00:00 2001 From: Manuel Schlund <32543114+schlunma@users.noreply.github.com> Date: Fri, 15 Dec 2023 11:12:53 +0100 Subject: [PATCH 06/20] Fix NCL provenance tracking (#3477) --- esmvaltool/interface_scripts/logging.ncl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/esmvaltool/interface_scripts/logging.ncl b/esmvaltool/interface_scripts/logging.ncl index 4cb5ff1498..6333479f96 100644 --- a/esmvaltool/interface_scripts/logging.ncl +++ b/esmvaltool/interface_scripts/logging.ncl @@ -371,7 +371,7 @@ begin original_entry = outstring do outfile_idx = 0, dimsizes(all_outfiles) - 1 file_to_add := all_outfiles(outfile_idx) - if (.not. fileexists(outfile)) then + if (.not. fileexists(file_to_add)) then error_msg("f", scriptname, funcname, "outfile (path to figure) '" + \ file_to_add + "' does not exist (for PNGs, this " + \ "function also searches for 'FILE.000001.png', " + \ From 54ec50daa2a13d197e5d1267d4ef4e4c9456b3d9 Mon Sep 17 00:00:00 2001 From: Manuel Schlund <32543114+schlunma@users.noreply.github.com> Date: Fri, 15 Dec 2023 11:12:53 +0100 Subject: [PATCH 07/20] Fix NCL provenance tracking (#3477) --- esmvaltool/interface_scripts/logging.ncl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/esmvaltool/interface_scripts/logging.ncl b/esmvaltool/interface_scripts/logging.ncl index 4cb5ff1498..6333479f96 100644 --- a/esmvaltool/interface_scripts/logging.ncl +++ b/esmvaltool/interface_scripts/logging.ncl @@ -371,7 +371,7 @@ begin original_entry = outstring do outfile_idx = 0, dimsizes(all_outfiles) - 1 file_to_add := all_outfiles(outfile_idx) - if (.not. fileexists(outfile)) then + if (.not. fileexists(file_to_add)) then error_msg("f", scriptname, funcname, "outfile (path to figure) '" + \ file_to_add + "' does not exist (for PNGs, this " + \ "function also searches for 'FILE.000001.png', " + \ From ab2aed766d04fb00990ee0bbf76c9e870efe129a Mon Sep 17 00:00:00 2001 From: Axel Lauer Date: Tue, 19 Dec 2023 09:23:12 +0100 Subject: [PATCH 08/20] Extension of CLARA-AVHRR, CLOUDSAT-L2 and ESACCI-CLOUD CMORizers (#3342) --- doc/sphinx/source/input.rst | 6 +- .../data/formatters/datasets/clara_avhrr.ncl | 59 ++++++++++++++++--- .../data/formatters/datasets/cloudsat_l2.ncl | 53 ++++++++++++----- .../data/formatters/datasets/esacci_cloud.ncl | 27 ++++++--- .../recipes/examples/recipe_check_obs.yml | 4 ++ 5 files changed, 113 insertions(+), 36 deletions(-) diff --git a/doc/sphinx/source/input.rst b/doc/sphinx/source/input.rst index 542dea1cb9..af431c5215 100644 --- a/doc/sphinx/source/input.rst +++ b/doc/sphinx/source/input.rst @@ -259,9 +259,9 @@ A list of the datasets for which a CMORizers is available is provided in the fol | CERES-SYN1deg | rlds, rldscs, rlus, rluscs, rlut, rlutcs, rsds, rsdscs, rsus, rsuscs, rsut, rsutcs (3hr) | 3 | NCL | | | rlds, rldscs, rlus, rlut, rlutcs, rsds, rsdt, rsus, rsut, rsutcs (Amon) | | | +------------------------------+------------------------------------------------------------------------------------------------------+------+-----------------+ -| CLARA-AVHRR | clt, clivi, lwp (Amon) | 3 | NCL | +| CLARA-AVHRR | clt, clivi, clwvi, lwp (Amon) | 3 | NCL | +------------------------------+------------------------------------------------------------------------------------------------------+------+-----------------+ -| CLOUDSAT-L2 | clw, clivi, lwp (Amon) | 3 | NCL | +| CLOUDSAT-L2 | clw, clivi, clwvi, lwp (Amon) | 3 | NCL | +------------------------------+------------------------------------------------------------------------------------------------------+------+-----------------+ | CowtanWay | tasa (Amon) | 2 | Python | +------------------------------+------------------------------------------------------------------------------------------------------+------+-----------------+ @@ -288,7 +288,7 @@ A list of the datasets for which a CMORizers is available is provided in the fol +------------------------------+------------------------------------------------------------------------------------------------------+------+-----------------+ | ESACCI-AEROSOL | abs550aer, od550aer, od550aerStderr, od550lt1aer, od870aer, od870aerStderr (aero) | 2 | NCL | +------------------------------+------------------------------------------------------------------------------------------------------+------+-----------------+ -| ESACCI-CLOUD | clivi, clt, cltStderr, lwp, rlut, rlutcs, rsut, rsutcs, rsdt, rlus, rsus, rsuscs (Amon) | 2 | NCL | +| ESACCI-CLOUD | clivi, clt, cltStderr, clwvi, lwp, rlut, rlutcs, rsut, rsutcs, rsdt, rlus, rsus, rsuscs (Amon) | 2 | NCL | +------------------------------+------------------------------------------------------------------------------------------------------+------+-----------------+ | ESACCI-FIRE | burntArea (Lmon) | 2 | NCL | +------------------------------+------------------------------------------------------------------------------------------------------+------+-----------------+ diff --git a/esmvaltool/cmorizers/data/formatters/datasets/clara_avhrr.ncl b/esmvaltool/cmorizers/data/formatters/datasets/clara_avhrr.ncl index 05912b7b0e..b275332d48 100644 --- a/esmvaltool/cmorizers/data/formatters/datasets/clara_avhrr.ncl +++ b/esmvaltool/cmorizers/data/formatters/datasets/clara_avhrr.ncl @@ -34,6 +34,7 @@ ; 7) Untar all .tar files into a single directory. ; ; Modification history +; 20230818-lauer_axel: added output of clwvi (in addition to iwp, lwp) ; 20210506-lauer_axel: output of lwp instead of clwvi ; 20210323-lauer_axel: written. ; @@ -57,30 +58,31 @@ begin YEAR2 = 2018 ; Selected variable (standard name) - VAR = (/"clt", "clivi", "lwp"/) + VAR = (/"clt", "clivi", "lwp", "clwvi"/) ; Name in the raw data - NAME = (/"cfc", "iwp_allsky", "lwp_allsky"/) + NAME = (/"cfc", "iwp_allsky", "lwp_allsky", "iwp_allsky"/) ; Filename base - FNBASE = (/"CFCmm", "IWPmm", "LWPmm"/) + FNBASE = (/"CFCmm", "IWPmm", "LWPmm", "IWPmm"/) ; Conversion factor ; Remark: total cloud cover (CFC) is reported as "1" but is actually "%" ; IWP and LWP use scale_factor to convert to kg/m2 - ; CONV = (/1., 1., 1./) + ; CONV = (/1., 1., 1., 1./) ; MIP - MIP = (/"Amon", "Amon", "Amon"/) + MIP = (/"Amon", "Amon", "Amon", "Amon"/) ; Frequency - FREQ = (/"mon", "mon", "mon"/) + FREQ = (/"mon", "mon", "mon", "mon"/) ; CMOR table CMOR_TABLE = getenv("cmor_tables") + \ (/"/cmip5/Tables/CMIP5_Amon", \ "/cmip5/Tables/CMIP5_Amon", \ - "/custom/CMOR_lwp.dat"/) + "/custom/CMOR_lwp.dat", \ + "/cmip5/Tables/CMIP5_Amon"/) ; Type TYPE = "sat" @@ -159,17 +161,56 @@ begin output&lat = f->lat output!2 = "lon" output&lon = f->lon + fillval = xx@_FillValue end if output(ind(toint(yy * 100 + mm).eq.date), :, :) = (/xx/) delete(fname) delete(f) - + delete(xx) + + ; *** calculate clwvi (lwp + iwp) *** + + if (VAR(vv) .eq. "clwvi") then + fname = systemfunc("ls " + input_dir_path + "LWPmm" + \ + syear + smonth + "01*.nc") + + ; No files found + if (ismissing(fname)) then + log_info("Warning: input data incomplete for variable " + \ + VAR(vv) + " (" + syear + smonth + ")") + continue + end if + + ; Extract data + f = addfile(fname, "r") + val = f->lwp_allsky + if (isatt(val, "scale_factor")) then + scalefac = tofloat(val@scale_factor) + else + scalefac = 1.0 + end if + if (isatt(val, "add_offset")) then + offset = tofloat(val@add_offset) + else + offset = 0.0 + end if + xx = tofloat(val) * scalefac + offset + delete(val) + + idx = ind(toint(yy * 100 + mm).eq.date) + output(idx, :, :) = output(idx, :, :) + (/xx(0, :, :)/) + + delete(idx) + delete(xx) + delete(fname) + delete(f) + end if ; if VAR(vv) .eq. "clwvi" end do end do ; Set fill value - output = where(output.eq.xx@_FillValue, output@_FillValue, output) + output = where(output.eq.fillval, output@_FillValue, output) ; Format coordinates output!0 = "time" diff --git a/esmvaltool/cmorizers/data/formatters/datasets/cloudsat_l2.ncl b/esmvaltool/cmorizers/data/formatters/datasets/cloudsat_l2.ncl index f056ac4de6..d26ed74cd6 100644 --- a/esmvaltool/cmorizers/data/formatters/datasets/cloudsat_l2.ncl +++ b/esmvaltool/cmorizers/data/formatters/datasets/cloudsat_l2.ncl @@ -58,6 +58,7 @@ ; --end=2015 CLOUDSAT-L2 ; ; Modification history +; 20230904-lauer_axel: added output of clwvi (iwp + lwp) ; 20220809-lauer_axel: adapted CMORizer to new format introduced in ; ESMValTool v2.5.0 and added info message ; 20210924-lauer_axel: added processing of lwp and iwp @@ -100,12 +101,13 @@ begin end if ; output variable (standard name) - outvar = (/"clw", "lwp", "clivi"/) + outvar = (/"clw", "lwp", "clivi", "clwvi"/) ; input variables var = (/"LO_RO_liquid_water_content_2B_CWC_RO", \ "LO_RO_liquid_water_path_2B_CWC_RO", \ - "IO_RO_ice_water_path_2B_CWC_RO"/) + "IO_RO_ice_water_path_2B_CWC_RO", \ + "dummy"/) var_flag = "Precip_flag_2C_PRECIP_COLUMN" @@ -120,6 +122,7 @@ begin CMOR_TABLE = getenv("cmor_tables") + \ (/"/cmip5/Tables/CMIP5_" + mip, \ "/custom/CMOR_lwp.dat", \ + "/cmip5/Tables/CMIP5_" + mip, \ "/cmip5/Tables/CMIP5_" + mip/) ; Type @@ -168,26 +171,26 @@ begin grid = new((/nt, nz, ny, nx/), float) gridpts = new((/nt, nz, ny, nx/), integer) - grid2d = new((/nt, 2, ny, nx/), float) - gridpts2d = new((/nt, 2, ny, nx/), integer) + grid2d = new((/nt, 3, ny, nx/), float) + gridpts2d = new((/nt, 3, ny, nx/), integer) ; "grid-box average" (all points) grid_avg = new((/nt, nz, ny, nx/), float) gridpts_avg = new((/nt, nz, ny, nx/), integer) - grid2d_avg = new((/nt, 2, ny, nx/), float) - gridpts2d_avg = new((/nt, 2, ny, nx/), integer) + grid2d_avg = new((/nt, 3, ny, nx/), float) + gridpts2d_avg = new((/nt, 3, ny, nx/), integer) ; "in-cloud" (no precipitation) grid_noprecip = new((/nt, nz, ny, nx/), float) gridpts_noprecip = new((/nt, nz, ny, nx/), integer) - grid2d_noprecip = new((/nt, 2, ny, nx/), float) - gridpts2d_noprecip = new((/nt, 2, ny, nx/), integer) + grid2d_noprecip = new((/nt, 3, ny, nx/), float) + gridpts2d_noprecip = new((/nt, 3, ny, nx/), integer) ; "grid-box average" (no precipitation) grid_avg_noprecip = new((/nt, nz, ny, nx/), float) gridpts_avg_noprecip = new((/nt, nz, ny, nx/), integer) - grid2d_avg_noprecip = new((/nt, 2, ny, nx/), float) - gridpts2d_avg_noprecip = new((/nt, 2, ny, nx/), integer) + grid2d_avg_noprecip = new((/nt, 3, ny, nx/), float) + gridpts2d_avg_noprecip = new((/nt, 3, ny, nx/), integer) ; boundaries of vertical (height) bins @@ -491,23 +494,29 @@ begin delete(lon_ext) delete(hgt1d) - ; =================================== - ; 2-dim cloud liquid / ice water path - ; =================================== + ; ============================================================ + ; 2-dim cloud liquid / ice water path / total cloud water path + ; ============================================================ - do ivar = 1, 2 + do ivar = 1, 3 if (outvar(ivar) .eq. "lwp") then x = l1d ilev = 0 else if (outvar(ivar) .eq. "clivi") then x = i1d ilev = 1 + else if (outvar(ivar) .eq. "clwvi") then + ; clwvi is calculated from the *output* fields of lwp and iwp + ; to make sure it is the sum of the two (masking, etc.) + ; --> nothing to do here + continue else log_info("Warning: output variable unknown: " + outvar(ivar) + \ ", skipping variable " + outvar(ivar) + ".") continue end if end if + end if ; Find all elements that contain valid (x > 0) or missing (x = 0) ; values; invalid values (x < 0) are filtered out. @@ -746,11 +755,23 @@ begin ; save results to files - do ivar = 1, 2 + do ivar = 1, 3 if (outvar(ivar) .eq. "lwp") then ilev = 0 else if (outvar(ivar) .eq. "clivi") then ilev = 1 + else if (outvar(ivar) .eq. "clwvi") then + ; calculate clwvi (lwp+iwp) as sum of output fields for lwp and iwp + ilev = 2 + grid2d(:, ilev, :, :) = grid2d(:, 0, :, :) \ + + grid2d(:, 1, :, :) + grid2d_avg(:, ilev, :, :) = grid2d_avg(:, 0, :, :) \ + + grid2d_avg(:, 1, :, :) + grid2d_noprecip(:, ilev, :, :) = grid2d_noprecip(:, 0, :, :) \ + + grid2d_noprecip(:, 1, :, :) + grid2d_avg_noprecip(:, ilev, :, :) = grid2d_avg_noprecip(:, 0, :, :) \ + + grid2d_avg_noprecip(:, 1, :, :) + end if end if end if @@ -842,7 +863,7 @@ begin write_nc(fout, outvar(ivar), output, bounds, gAtt) delete(output) delete(gAtt) - end do ; loop over implemented 2-dim variables (lwp, iwp) + end do ; loop over implemented 2-dim variables (lwp, iwp, lwp+iwp) end do ; loop over years end diff --git a/esmvaltool/cmorizers/data/formatters/datasets/esacci_cloud.ncl b/esmvaltool/cmorizers/data/formatters/datasets/esacci_cloud.ncl index 10cf50a2a7..b19ae0b865 100644 --- a/esmvaltool/cmorizers/data/formatters/datasets/esacci_cloud.ncl +++ b/esmvaltool/cmorizers/data/formatters/datasets/esacci_cloud.ncl @@ -22,11 +22,12 @@ ; --reject="index.html*" ; https://public.satproj.klima.dwd.de/data/ESA_Cloud_CCI/ ; CLD_PRODUCTS/v3.0/L3C/AVHRR-PM/ - +; ; All files are expected in a single directory (no subdirectories ; with years). ; ; Modification history +; 20230818-lauer_axel: added output of clwvi (in addition to iwp, lwp) ; 20210428-lauer_axel: AVHRR-AM and AVHRR-PM data are now averaged during ; the overlapping time; TOA radiative fluxes are now ; also processed @@ -56,24 +57,25 @@ begin YEAR2 = get_year(end_year, 2016) ; Selected variable (standard name) - VAR = (/"clt", "cltStderr", "clivi", "lwp", "rlut", "rlutcs", \ + VAR = (/"clt", "cltStderr", "clivi", "lwp", "clwvi", "rlut", "rlutcs", \ "rsut", "rsutcs", "rsdt", "rlus", "rsus", "rsuscs"/) ; Name in the raw data - NAME = (/"cfc", "cfc_unc", "iwp_allsky", "lwp_allsky", "toa_lwup", \ - "toa_lwup_clr", "toa_swup", "toa_swup_clr", "toa_swdn", \ - "boa_lwup", "boa_swup", "boa_swup_clr"/) + NAME = (/"cfc", "cfc_unc", "iwp_allsky", "lwp_allsky", "iwp_allsky", \ + "toa_lwup", "toa_lwup_clr", "toa_swup", "toa_swup_clr", \ + "toa_swdn", "boa_lwup", "boa_swup", "boa_swup_clr"/) ; Conversion factor - CONV = (/100., 1., 0.001, 0.001, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0/) + CONV = (/100., 1., 0.001, 0.001, 0.001, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, \ + 1.0, 1.0/) ; MIP MIP = (/"Amon", "Amon", "Amon", "Amon", "Amon", "Amon", "Amon", "Amon", \ - "Amon", "Amon", "Amon", "Amon"/) + "Amon", "Amon", "Amon", "Amon", "Amon"/) ; Frequency FREQ = (/"mon", "mon", "mon", "mon", "mon", "mon", "mon", "mon", "mon", \ - "mon", "mon", "mon"/) + "mon", "mon", "mon", "mon"/) ; CMOR table CMOR_TABLE = getenv("cmor_tables") + \ @@ -88,6 +90,7 @@ begin "/cmip5/Tables/CMIP5_Amon", \ "/cmip5/Tables/CMIP5_Amon", \ "/cmip5/Tables/CMIP5_Amon", \ + "/cmip5/Tables/CMIP5_Amon", \ "/cmip5/Tables/CMIP5_Amon"/) ; Type @@ -151,6 +154,13 @@ begin ; Convert units xx_all(i, :, :, :) = xx * CONV(vv) + ; *** calculate clwvi (lwp + iwp) *** + if (VAR(vv) .eq. "clwvi") then + xx2 = f->lwp_allsky * 0.001 + xx_all(i, :, :, :) = xx_all(i, :, :, :) + xx2 + delete(xx2) + end if + if (firstime) then lat = f->lat lon = f->lon @@ -161,6 +171,7 @@ begin delete(fname) delete(xx) + xx = dim_avg_n(xx_all, 0) ; ignore missing values delete(xx_all) diff --git a/esmvaltool/recipes/examples/recipe_check_obs.yml b/esmvaltool/recipes/examples/recipe_check_obs.yml index 9a9e080b52..8998a5a157 100644 --- a/esmvaltool/recipes/examples/recipe_check_obs.yml +++ b/esmvaltool/recipes/examples/recipe_check_obs.yml @@ -167,6 +167,7 @@ diagnostics: clivi: clt: cltStderr: + clwvi: lwp: rlut: rlutcs: @@ -1083,6 +1084,8 @@ diagnostics: mip: Amon clivi: mip: Amon + clwvi: + mip: Amon lwp: mip: Amon additional_datasets: @@ -1096,6 +1099,7 @@ diagnostics: variables: clivi: clw: + clwvi: lwp: additional_datasets: - {dataset: CLOUDSAT-L2, project: OBS, tier: 3, type: sat, From a93f710bc477d0fb2cb916bf16931b51f3cdb5b9 Mon Sep 17 00:00:00 2001 From: Manuel Schlund <32543114+schlunma@users.noreply.github.com> Date: Tue, 19 Dec 2023 09:33:33 +0100 Subject: [PATCH 09/20] Fix plots and provenance in Russell diagnostics (#3479) Co-authored-by: Axel Lauer --- .../russell18jgr/russell18jgr-fig2.ncl | 26 ++++++++++--------- .../russell18jgr/russell18jgr-fig3b-2.ncl | 23 +++++++++------- .../russell18jgr/russell18jgr-fig3b.ncl | 23 +++++++++------- .../russell18jgr/russell18jgr-fig4.ncl | 23 ++++++++-------- .../russell18jgr/russell18jgr-fig5.ncl | 23 ++++++++-------- .../russell18jgr/russell18jgr-fig5g.ncl | 26 ++++++++++--------- .../russell18jgr/russell18jgr-fig6a.ncl | 2 +- .../russell18jgr/russell18jgr-fig6b.ncl | 2 +- .../russell18jgr/russell18jgr-fig7h.ncl | 23 +++++++++------- .../russell18jgr/russell18jgr-fig7i.ncl | 24 +++++++++-------- .../russell18jgr/russell18jgr-fig9a.ncl | 4 ++- .../russell18jgr/russell18jgr-fig9b.ncl | 4 ++- .../russell18jgr/russell18jgr-fig9c.ncl | 4 ++- .../russell18jgr/russell18jgr-polar.ncl | 17 ++++++------ 14 files changed, 124 insertions(+), 100 deletions(-) diff --git a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig2.ncl b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig2.ncl index 034d3a1287..db6426cc3a 100644 --- a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig2.ncl +++ b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig2.ncl @@ -76,7 +76,7 @@ begin colors = project_style(input_file_info, diag_script_info, "colors") dashes = project_style(input_file_info, diag_script_info, "dashes") thicks = project_style(input_file_info, diag_script_info, "thicks") - plotpath = config_user_info@plot_dir + "/russell18jgr_fig2_" \ + plotpath = config_user_info@plot_dir + "russell18jgr_fig2_" \ + sprinti("%0.4i", min(toint(start_years_data))) + "-" \ + sprinti("%0.4i", max(toint(end_years_data))) @@ -156,17 +156,6 @@ begin delete(var_lon_avg) delete(dataset) - ; Call provenance logger - log_provenance(ncdf_outfile, \ - plotpath + "." + output_type(), \ - "Russell et al 2018 figure 2", \ - "mean", \ - "sh", \ - "geo", \ - "russell_joellen", \ - "russell18jgr", \ - infile_path) - if (iii .ne. 0) then overlay(plot(0), plot(iii)) end if @@ -192,4 +181,17 @@ begin "lgLineDashSegLenF" : 0.11 end create draw(legend) + + frame(wks) + + ; Call provenance logger + log_provenance(ncdf_outfile, \ + plotpath + "." + output_type(), \ + "Russell et al 2018 figure 2", \ + "mean", \ + "sh", \ + "geo", \ + "russell_joellen", \ + "russell18jgr", \ + infile_path) end diff --git a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig3b-2.ncl b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig3b-2.ncl index c912663321..add52a2b7a 100644 --- a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig3b-2.ncl +++ b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig3b-2.ncl @@ -72,7 +72,7 @@ begin thicks = project_style(input_file_info, diag_script_info, "thicks") plotpath = config_user_info@plot_dir \ - + "/russell18jgr_fig3_Polar-Front-position_" \ + + "russell18jgr_fig3_Polar-Front-position_" \ + sprinti("%0.4i", min(toint(start_years_data))) + "-" \ + sprinti("%0.4i", max(toint(end_years_data))) @@ -273,15 +273,6 @@ begin delete(e) delete(last_index) delete(out_var) - log_provenance(ncdf_outfile, \ - plotpath + "." + output_type(), \ - "Russell et al 2018 figure 3b part 2", \ - "mean", \ - "sh", \ - "geo", \ - "russell_joellen", \ - "russell18jgr", \ - inputfile_paths(iii)) end do draw(plot(0)) @@ -301,4 +292,16 @@ begin end create draw(legend) + frame(wks) + + log_provenance(ncdf_outfile, \ + plotpath + "." + output_type(), \ + "Russell et al 2018 figure 3b part 2", \ + "mean", \ + "sh", \ + "geo", \ + "russell_joellen", \ + "russell18jgr", \ + inputfile_paths) + end diff --git a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig3b.ncl b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig3b.ncl index fd4cf3f43b..41ee0c3194 100644 --- a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig3b.ncl +++ b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig3b.ncl @@ -69,7 +69,7 @@ begin dashes = project_style(input_file_info, diag_script_info, "dashes") thicks = project_style(input_file_info, diag_script_info, "thicks") - plotpath = config_user_info@plot_dir + "/Russell18jgr_fig3_Subantarctic" \ + plotpath = config_user_info@plot_dir + "Russell18jgr_fig3_Subantarctic" \ + "-Fronts_" + sprinti("%0.4i", min(toint(start_years_data))) \ + "-" + sprinti("%0.4i", max(toint(end_years_data))) @@ -263,15 +263,6 @@ begin delete(e) delete(last_index) delete(out_var) - log_provenance(ncdf_outfile, \ - plotpath + "." + output_type(), \ - "Russell et al 2018 figure 3b", \ - "mean", \ - "sh", \ - "geo", \ - "russell_joellen", \ - "russell18jgr", \ - inputfile_paths(iii)) end do draw(plot(0)) @@ -291,4 +282,16 @@ begin end create draw(legend) + frame(wks) + + log_provenance(ncdf_outfile, \ + plotpath + "." + output_type(), \ + "Russell et al 2018 figure 3b", \ + "mean", \ + "sh", \ + "geo", \ + "russell_joellen", \ + "russell18jgr", \ + inputfile_paths) + end diff --git a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig4.ncl b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig4.ncl index 4e62c7b552..b03b81959f 100644 --- a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig4.ncl +++ b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig4.ncl @@ -93,7 +93,7 @@ begin (/238, 91, 12/), (/209, 49, 7/), (/178, 0, 0/) /) colors_new = colors_new / 256.0 - plotpath = config_user_info@plot_dir + "/Russell18jgr-fig4_" \ + plotpath = config_user_info@plot_dir + "Russell18jgr-fig4_" \ + sprinti("%0.4i", min(toint(start_years_data))) + "-" \ + sprinti("%0.4i", max(toint(end_years_data))) @@ -366,16 +366,6 @@ begin delete(var_final) delete(exact_lon) delete(totaltransport) - ; Call provenance logger - log_provenance(ncdf_outfile, \ - plotpath + "." + file_type, \ - "Russell et al 2018 figure 4", \ - "mean", \ - "sh", \ - "geo", \ - "russell_joellen", \ - "russell18jgr", \ - (/inputfile_paths(iii), volfile_paths(iii)/)) end do @@ -389,4 +379,15 @@ begin + "This is not an error, no response is needed by user for " \ + "plotting. ") end if + + ; Call provenance logger + log_provenance(ncdf_outfile, \ + plotpath + "." + file_type, \ + "Russell et al 2018 figure 4", \ + "mean", \ + "sh", \ + "geo", \ + "russell_joellen", \ + "russell18jgr", \ + inputfile_paths) end diff --git a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig5.ncl b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig5.ncl index 5a60ea03d9..62a5a6be1a 100644 --- a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig5.ncl +++ b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig5.ncl @@ -59,7 +59,7 @@ end begin - plotpath = config_user_info@plot_dir + "/russell18jgr-fig5_" + var0 + "_" \ + plotpath = config_user_info@plot_dir + "russell18jgr-fig5_" + var0 + "_" \ + sprinti("%0.4i", min(toint(start_years_data))) + "-" \ + sprinti("%0.4i", max(toint(end_years_data))) @@ -168,16 +168,6 @@ begin ncdf_outfile = ncdf_write(dataset, nc_filename) delete(dataset) - log_provenance(ncdf_outfile, \ - plotpath + "." + output_type(), \ - "Russell et al 2018 figure 5 -polar", \ - "mean", \ - "sh", \ - "geo", \ - "russell_joellen", \ - "russell18jgr", \ - infile_path) - end do ; Draw the panel @@ -185,4 +175,15 @@ begin pres@gsnPanelLabelBar = False outfile = panelling(wks, plots, nvert, nhori, pres) + log_provenance(ncdf_outfile, \ + plotpath + "." + output_type(), \ + "Russell et al 2018 figure 5 -polar", \ + "mean", \ + "sh", \ + "geo", \ + "russell_joellen", \ + "russell18jgr", \ + infile_path) + + end diff --git a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig5g.ncl b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig5g.ncl index 67d8c53491..0b48c1e7ed 100644 --- a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig5g.ncl +++ b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig5g.ncl @@ -84,7 +84,7 @@ begin dashes = project_style(input_file_info, diag_script_info, "dashes") thicks = project_style(input_file_info, diag_script_info, "thicks") - plotpath = config_user_info@plot_dir + "/russell18jgr-fig5g_" + var0 + "_" \ + plotpath = config_user_info@plot_dir + "russell18jgr-fig5g_" + var0 + "_" \ + sprinti("%0.4i", min(toint(start_years_data))) + "-" \ + sprinti("%0.4i", max(toint(end_years_data))) @@ -224,17 +224,6 @@ begin overlay(plots(0), plots(iii)) end if - ; Call provenance logger - log_provenance(ncdf_outfile, \ - plotpath + "." + output_type(), \ - "Russell et al 2018 figure 5g", \ - "mean", \ - "sh", \ - "times", \ - "russell_joellen", \ - "russell18jgr", \ - infile_path) - end do draw(plots(0)) @@ -261,4 +250,17 @@ begin "not an error, no responce is needed by user for plotting ") end if + frame(wks) + + ; Call provenance logger + log_provenance(ncdf_outfile, \ + plotpath + "." + output_type(), \ + "Russell et al 2018 figure 5g", \ + "mean", \ + "sh", \ + "times", \ + "russell_joellen", \ + "russell18jgr", \ + infile_path) + end diff --git a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig6a.ncl b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig6a.ncl index 206d2909cc..bd672ed3cf 100644 --- a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig6a.ncl +++ b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig6a.ncl @@ -90,7 +90,7 @@ end begin - plotpath = config_user_info@plot_dir + "/Russell_figure-6a_" \ + plotpath = config_user_info@plot_dir + "Russell_figure-6a_" \ + sprinti("%0.4i", min(toint(start_years_data))) + "-" \ + sprinti("%0.4i", max(toint(end_years_data))) diff --git a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig6b.ncl b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig6b.ncl index 2287b62adf..6b019625f0 100644 --- a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig6b.ncl +++ b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig6b.ncl @@ -92,7 +92,7 @@ end begin - plotpath = config_user_info@plot_dir + "/russell18jgr-fig6b_" \ + plotpath = config_user_info@plot_dir + "russell18jgr-fig6b_" \ + sprinti("%0.4i", min(toint(start_years_data))) + "-" \ + sprinti("%0.4i", max(toint(end_years_data))) diff --git a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig7h.ncl b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig7h.ncl index 249712d29f..7700790e65 100644 --- a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig7h.ncl +++ b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig7h.ncl @@ -64,7 +64,7 @@ begin dashes = project_style(input_file_info, diag_script_info, "dashes") thicks = project_style(input_file_info, diag_script_info, "thicks") - plotpath = config_user_info@plot_dir + "/Russell_figure7h_" + var0 + "_" \ + plotpath = config_user_info@plot_dir + "Russell_figure7h_" + var0 + "_" \ + sprinti("%0.4i", min(toint(start_years_data))) + "-" \ + sprinti("%0.4i", max(toint(end_years_data))) @@ -163,15 +163,6 @@ begin ncdf_outfile = ncdf_write(var_lon_avg, nc_filename) delete(var_lon_avg) delete(dataset) - log_provenance(ncdf_outfile, \ - plotpath + "." + output_type(), \ - "Russell et al 2018 figure 7h", \ - "mean", \ - "sh", \ - "zonal", \ - "russell_joellen", \ - "russell18jgr", \ - infile_path) end do draw(plot(0)) @@ -192,4 +183,16 @@ begin end create draw(legend) + frame(wks) + + log_provenance(ncdf_outfile, \ + plotpath + "." + output_type(), \ + "Russell et al 2018 figure 7h", \ + "mean", \ + "sh", \ + "zonal", \ + "russell_joellen", \ + "russell18jgr", \ + infile_path) + end diff --git a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig7i.ncl b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig7i.ncl index 7abcc9e7a9..86ce4bee70 100644 --- a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig7i.ncl +++ b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig7i.ncl @@ -61,7 +61,7 @@ begin var0 = variable_info[0]@short_name - plotpath = config_user_info@plot_dir + "/Russell_figure7i_" + var0 + "_" \ + plotpath = config_user_info@plot_dir + "Russell_figure7i_" + var0 + "_" \ + sprinti("%0.4i", min(toint(start_years_data))) + "-" \ + sprinti("%0.4i", max(toint(end_years_data))) @@ -201,16 +201,6 @@ begin overlay(plot(0), plot(iii)) end if - log_provenance(ncdf_outfile, \ - plotpath + "." + output_type(), \ - "Russell et al 2018 figure 7i", \ - "mean", \ - "sh", \ - "zonal", \ - "russell_joellen", \ - "russell18jgr", \ - infile_path) - end do draw(plot(0)) @@ -230,4 +220,16 @@ begin end create draw(legend) + frame(wks) + + log_provenance(ncdf_outfile, \ + plotpath + "." + output_type(), \ + "Russell et al 2018 figure 7i", \ + "mean", \ + "sh", \ + "zonal", \ + "russell_joellen", \ + "russell18jgr", \ + infile_path) + end diff --git a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig9a.ncl b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig9a.ncl index 8bef8cb204..24ebe3f12e 100644 --- a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig9a.ncl +++ b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig9a.ncl @@ -103,7 +103,7 @@ end begin - plotpath = config_user_info@plot_dir + "/russell18jgr-fig9a_" \ + plotpath = config_user_info@plot_dir + "russell18jgr-fig9a_" \ + sprinti("%0.4i", min(toint(start_years_data))) + "-" \ + sprinti("%0.4i", max(toint(end_years_data))) @@ -297,6 +297,8 @@ begin end create draw(legend) + frame(wks) + do idd = 0, dimsizes(lat_width) - 1 nc_filename = config_user_info@work_dir + "russell18jgr_fig9a_" \ + annots(idd) + "_" + (start_years_data(idd)) + "-" \ diff --git a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig9b.ncl b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig9b.ncl index 8afd05425a..112cd846f5 100644 --- a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig9b.ncl +++ b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig9b.ncl @@ -94,7 +94,7 @@ end begin - plotpath = config_user_info@plot_dir + "/russell18jgr-fig9b_" \ + plotpath = config_user_info@plot_dir + "russell18jgr-fig9b_" \ + sprinti("%0.4i", min(toint(start_years_data))) + "-" \ + sprinti("%0.4i", max(toint(end_years_data))) @@ -315,6 +315,8 @@ begin end create draw(legend) + frame(wks) + do idd = 0, dimsizes(lat_width) - 1 nc_filename = config_user_info@work_dir + "russell18jgr_fig9b_" \ + annots(idd) + "_" + (start_years_data(idd)) + "-" \ diff --git a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig9c.ncl b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig9c.ncl index 0e5c828a6a..2fe0cc3e4a 100644 --- a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig9c.ncl +++ b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig9c.ncl @@ -107,7 +107,7 @@ end begin - plotpath = config_user_info@plot_dir + "/russell18jgr-fig9c_" \ + plotpath = config_user_info@plot_dir + "russell18jgr-fig9c_" \ + sprinti("%0.4i", min(toint(start_years_data))) + "-" \ + sprinti("%0.4i", max(toint(end_years_data))) @@ -312,6 +312,8 @@ begin end create draw(legend) + frame(wks) + do idd = 0, dimsizes(lat_width) - 1 nc_filename = config_user_info@work_dir + "russell18jgr_fig9c_" \ + annots(idd) + "_" + (start_years_data(idd)) + "-" \ diff --git a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-polar.ncl b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-polar.ncl index b9c8f1faaa..106f161801 100644 --- a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-polar.ncl +++ b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-polar.ncl @@ -77,7 +77,7 @@ end begin - plotpath = config_user_info@plot_dir + "/Russell_polar-contour_" + var0 + \ + plotpath = config_user_info@plot_dir + "Russell_polar-contour_" + var0 + \ "_" + sprinti("%0.4i", min(toint(start_years_data))) + "-" \ + sprinti("%0.4i", max(toint(end_years_data))) @@ -231,6 +231,13 @@ begin ncdf_outfile = ncdf_write(dataset, nc_filename) delete(dataset) + end do + + ; Draw the panel + pres = True + pres@gsnPanelLabelBar = False + outfile = panelling(wks, plots, nvert, nhori, pres) + log_provenance(ncdf_outfile, \ plotpath + "." + output_type(), \ "Russell et al 2018 polar plot " + var0, \ @@ -239,11 +246,5 @@ begin "geo", \ "russell_joellen", \ "russell18jgr", \ - inputfile_paths(iii)) - end do - - ; Draw the panel - pres = True - pres@gsnPanelLabelBar = False - outfile = panelling(wks, plots, nvert, nhori, pres) + inputfile_paths) end From cda8c8598f3628fd549626c9aacb21c535229ede Mon Sep 17 00:00:00 2001 From: Manuel Schlund <32543114+schlunma@users.noreply.github.com> Date: Tue, 19 Dec 2023 09:33:33 +0100 Subject: [PATCH 10/20] Fix plots and provenance in Russell diagnostics (#3479) Co-authored-by: Axel Lauer --- .../russell18jgr/russell18jgr-fig2.ncl | 26 ++++++++++--------- .../russell18jgr/russell18jgr-fig3b-2.ncl | 23 +++++++++------- .../russell18jgr/russell18jgr-fig3b.ncl | 23 +++++++++------- .../russell18jgr/russell18jgr-fig4.ncl | 23 ++++++++-------- .../russell18jgr/russell18jgr-fig5.ncl | 23 ++++++++-------- .../russell18jgr/russell18jgr-fig5g.ncl | 26 ++++++++++--------- .../russell18jgr/russell18jgr-fig6a.ncl | 2 +- .../russell18jgr/russell18jgr-fig6b.ncl | 2 +- .../russell18jgr/russell18jgr-fig7h.ncl | 23 +++++++++------- .../russell18jgr/russell18jgr-fig7i.ncl | 24 +++++++++-------- .../russell18jgr/russell18jgr-fig9a.ncl | 4 ++- .../russell18jgr/russell18jgr-fig9b.ncl | 4 ++- .../russell18jgr/russell18jgr-fig9c.ncl | 4 ++- .../russell18jgr/russell18jgr-polar.ncl | 17 ++++++------ 14 files changed, 124 insertions(+), 100 deletions(-) diff --git a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig2.ncl b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig2.ncl index 034d3a1287..db6426cc3a 100644 --- a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig2.ncl +++ b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig2.ncl @@ -76,7 +76,7 @@ begin colors = project_style(input_file_info, diag_script_info, "colors") dashes = project_style(input_file_info, diag_script_info, "dashes") thicks = project_style(input_file_info, diag_script_info, "thicks") - plotpath = config_user_info@plot_dir + "/russell18jgr_fig2_" \ + plotpath = config_user_info@plot_dir + "russell18jgr_fig2_" \ + sprinti("%0.4i", min(toint(start_years_data))) + "-" \ + sprinti("%0.4i", max(toint(end_years_data))) @@ -156,17 +156,6 @@ begin delete(var_lon_avg) delete(dataset) - ; Call provenance logger - log_provenance(ncdf_outfile, \ - plotpath + "." + output_type(), \ - "Russell et al 2018 figure 2", \ - "mean", \ - "sh", \ - "geo", \ - "russell_joellen", \ - "russell18jgr", \ - infile_path) - if (iii .ne. 0) then overlay(plot(0), plot(iii)) end if @@ -192,4 +181,17 @@ begin "lgLineDashSegLenF" : 0.11 end create draw(legend) + + frame(wks) + + ; Call provenance logger + log_provenance(ncdf_outfile, \ + plotpath + "." + output_type(), \ + "Russell et al 2018 figure 2", \ + "mean", \ + "sh", \ + "geo", \ + "russell_joellen", \ + "russell18jgr", \ + infile_path) end diff --git a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig3b-2.ncl b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig3b-2.ncl index c912663321..add52a2b7a 100644 --- a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig3b-2.ncl +++ b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig3b-2.ncl @@ -72,7 +72,7 @@ begin thicks = project_style(input_file_info, diag_script_info, "thicks") plotpath = config_user_info@plot_dir \ - + "/russell18jgr_fig3_Polar-Front-position_" \ + + "russell18jgr_fig3_Polar-Front-position_" \ + sprinti("%0.4i", min(toint(start_years_data))) + "-" \ + sprinti("%0.4i", max(toint(end_years_data))) @@ -273,15 +273,6 @@ begin delete(e) delete(last_index) delete(out_var) - log_provenance(ncdf_outfile, \ - plotpath + "." + output_type(), \ - "Russell et al 2018 figure 3b part 2", \ - "mean", \ - "sh", \ - "geo", \ - "russell_joellen", \ - "russell18jgr", \ - inputfile_paths(iii)) end do draw(plot(0)) @@ -301,4 +292,16 @@ begin end create draw(legend) + frame(wks) + + log_provenance(ncdf_outfile, \ + plotpath + "." + output_type(), \ + "Russell et al 2018 figure 3b part 2", \ + "mean", \ + "sh", \ + "geo", \ + "russell_joellen", \ + "russell18jgr", \ + inputfile_paths) + end diff --git a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig3b.ncl b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig3b.ncl index fd4cf3f43b..41ee0c3194 100644 --- a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig3b.ncl +++ b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig3b.ncl @@ -69,7 +69,7 @@ begin dashes = project_style(input_file_info, diag_script_info, "dashes") thicks = project_style(input_file_info, diag_script_info, "thicks") - plotpath = config_user_info@plot_dir + "/Russell18jgr_fig3_Subantarctic" \ + plotpath = config_user_info@plot_dir + "Russell18jgr_fig3_Subantarctic" \ + "-Fronts_" + sprinti("%0.4i", min(toint(start_years_data))) \ + "-" + sprinti("%0.4i", max(toint(end_years_data))) @@ -263,15 +263,6 @@ begin delete(e) delete(last_index) delete(out_var) - log_provenance(ncdf_outfile, \ - plotpath + "." + output_type(), \ - "Russell et al 2018 figure 3b", \ - "mean", \ - "sh", \ - "geo", \ - "russell_joellen", \ - "russell18jgr", \ - inputfile_paths(iii)) end do draw(plot(0)) @@ -291,4 +282,16 @@ begin end create draw(legend) + frame(wks) + + log_provenance(ncdf_outfile, \ + plotpath + "." + output_type(), \ + "Russell et al 2018 figure 3b", \ + "mean", \ + "sh", \ + "geo", \ + "russell_joellen", \ + "russell18jgr", \ + inputfile_paths) + end diff --git a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig4.ncl b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig4.ncl index 4e62c7b552..b03b81959f 100644 --- a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig4.ncl +++ b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig4.ncl @@ -93,7 +93,7 @@ begin (/238, 91, 12/), (/209, 49, 7/), (/178, 0, 0/) /) colors_new = colors_new / 256.0 - plotpath = config_user_info@plot_dir + "/Russell18jgr-fig4_" \ + plotpath = config_user_info@plot_dir + "Russell18jgr-fig4_" \ + sprinti("%0.4i", min(toint(start_years_data))) + "-" \ + sprinti("%0.4i", max(toint(end_years_data))) @@ -366,16 +366,6 @@ begin delete(var_final) delete(exact_lon) delete(totaltransport) - ; Call provenance logger - log_provenance(ncdf_outfile, \ - plotpath + "." + file_type, \ - "Russell et al 2018 figure 4", \ - "mean", \ - "sh", \ - "geo", \ - "russell_joellen", \ - "russell18jgr", \ - (/inputfile_paths(iii), volfile_paths(iii)/)) end do @@ -389,4 +379,15 @@ begin + "This is not an error, no response is needed by user for " \ + "plotting. ") end if + + ; Call provenance logger + log_provenance(ncdf_outfile, \ + plotpath + "." + file_type, \ + "Russell et al 2018 figure 4", \ + "mean", \ + "sh", \ + "geo", \ + "russell_joellen", \ + "russell18jgr", \ + inputfile_paths) end diff --git a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig5.ncl b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig5.ncl index 5a60ea03d9..62a5a6be1a 100644 --- a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig5.ncl +++ b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig5.ncl @@ -59,7 +59,7 @@ end begin - plotpath = config_user_info@plot_dir + "/russell18jgr-fig5_" + var0 + "_" \ + plotpath = config_user_info@plot_dir + "russell18jgr-fig5_" + var0 + "_" \ + sprinti("%0.4i", min(toint(start_years_data))) + "-" \ + sprinti("%0.4i", max(toint(end_years_data))) @@ -168,16 +168,6 @@ begin ncdf_outfile = ncdf_write(dataset, nc_filename) delete(dataset) - log_provenance(ncdf_outfile, \ - plotpath + "." + output_type(), \ - "Russell et al 2018 figure 5 -polar", \ - "mean", \ - "sh", \ - "geo", \ - "russell_joellen", \ - "russell18jgr", \ - infile_path) - end do ; Draw the panel @@ -185,4 +175,15 @@ begin pres@gsnPanelLabelBar = False outfile = panelling(wks, plots, nvert, nhori, pres) + log_provenance(ncdf_outfile, \ + plotpath + "." + output_type(), \ + "Russell et al 2018 figure 5 -polar", \ + "mean", \ + "sh", \ + "geo", \ + "russell_joellen", \ + "russell18jgr", \ + infile_path) + + end diff --git a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig5g.ncl b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig5g.ncl index 67d8c53491..0b48c1e7ed 100644 --- a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig5g.ncl +++ b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig5g.ncl @@ -84,7 +84,7 @@ begin dashes = project_style(input_file_info, diag_script_info, "dashes") thicks = project_style(input_file_info, diag_script_info, "thicks") - plotpath = config_user_info@plot_dir + "/russell18jgr-fig5g_" + var0 + "_" \ + plotpath = config_user_info@plot_dir + "russell18jgr-fig5g_" + var0 + "_" \ + sprinti("%0.4i", min(toint(start_years_data))) + "-" \ + sprinti("%0.4i", max(toint(end_years_data))) @@ -224,17 +224,6 @@ begin overlay(plots(0), plots(iii)) end if - ; Call provenance logger - log_provenance(ncdf_outfile, \ - plotpath + "." + output_type(), \ - "Russell et al 2018 figure 5g", \ - "mean", \ - "sh", \ - "times", \ - "russell_joellen", \ - "russell18jgr", \ - infile_path) - end do draw(plots(0)) @@ -261,4 +250,17 @@ begin "not an error, no responce is needed by user for plotting ") end if + frame(wks) + + ; Call provenance logger + log_provenance(ncdf_outfile, \ + plotpath + "." + output_type(), \ + "Russell et al 2018 figure 5g", \ + "mean", \ + "sh", \ + "times", \ + "russell_joellen", \ + "russell18jgr", \ + infile_path) + end diff --git a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig6a.ncl b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig6a.ncl index 206d2909cc..bd672ed3cf 100644 --- a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig6a.ncl +++ b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig6a.ncl @@ -90,7 +90,7 @@ end begin - plotpath = config_user_info@plot_dir + "/Russell_figure-6a_" \ + plotpath = config_user_info@plot_dir + "Russell_figure-6a_" \ + sprinti("%0.4i", min(toint(start_years_data))) + "-" \ + sprinti("%0.4i", max(toint(end_years_data))) diff --git a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig6b.ncl b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig6b.ncl index 2287b62adf..6b019625f0 100644 --- a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig6b.ncl +++ b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig6b.ncl @@ -92,7 +92,7 @@ end begin - plotpath = config_user_info@plot_dir + "/russell18jgr-fig6b_" \ + plotpath = config_user_info@plot_dir + "russell18jgr-fig6b_" \ + sprinti("%0.4i", min(toint(start_years_data))) + "-" \ + sprinti("%0.4i", max(toint(end_years_data))) diff --git a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig7h.ncl b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig7h.ncl index 249712d29f..7700790e65 100644 --- a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig7h.ncl +++ b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig7h.ncl @@ -64,7 +64,7 @@ begin dashes = project_style(input_file_info, diag_script_info, "dashes") thicks = project_style(input_file_info, diag_script_info, "thicks") - plotpath = config_user_info@plot_dir + "/Russell_figure7h_" + var0 + "_" \ + plotpath = config_user_info@plot_dir + "Russell_figure7h_" + var0 + "_" \ + sprinti("%0.4i", min(toint(start_years_data))) + "-" \ + sprinti("%0.4i", max(toint(end_years_data))) @@ -163,15 +163,6 @@ begin ncdf_outfile = ncdf_write(var_lon_avg, nc_filename) delete(var_lon_avg) delete(dataset) - log_provenance(ncdf_outfile, \ - plotpath + "." + output_type(), \ - "Russell et al 2018 figure 7h", \ - "mean", \ - "sh", \ - "zonal", \ - "russell_joellen", \ - "russell18jgr", \ - infile_path) end do draw(plot(0)) @@ -192,4 +183,16 @@ begin end create draw(legend) + frame(wks) + + log_provenance(ncdf_outfile, \ + plotpath + "." + output_type(), \ + "Russell et al 2018 figure 7h", \ + "mean", \ + "sh", \ + "zonal", \ + "russell_joellen", \ + "russell18jgr", \ + infile_path) + end diff --git a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig7i.ncl b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig7i.ncl index 7abcc9e7a9..86ce4bee70 100644 --- a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig7i.ncl +++ b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig7i.ncl @@ -61,7 +61,7 @@ begin var0 = variable_info[0]@short_name - plotpath = config_user_info@plot_dir + "/Russell_figure7i_" + var0 + "_" \ + plotpath = config_user_info@plot_dir + "Russell_figure7i_" + var0 + "_" \ + sprinti("%0.4i", min(toint(start_years_data))) + "-" \ + sprinti("%0.4i", max(toint(end_years_data))) @@ -201,16 +201,6 @@ begin overlay(plot(0), plot(iii)) end if - log_provenance(ncdf_outfile, \ - plotpath + "." + output_type(), \ - "Russell et al 2018 figure 7i", \ - "mean", \ - "sh", \ - "zonal", \ - "russell_joellen", \ - "russell18jgr", \ - infile_path) - end do draw(plot(0)) @@ -230,4 +220,16 @@ begin end create draw(legend) + frame(wks) + + log_provenance(ncdf_outfile, \ + plotpath + "." + output_type(), \ + "Russell et al 2018 figure 7i", \ + "mean", \ + "sh", \ + "zonal", \ + "russell_joellen", \ + "russell18jgr", \ + infile_path) + end diff --git a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig9a.ncl b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig9a.ncl index 8bef8cb204..24ebe3f12e 100644 --- a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig9a.ncl +++ b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig9a.ncl @@ -103,7 +103,7 @@ end begin - plotpath = config_user_info@plot_dir + "/russell18jgr-fig9a_" \ + plotpath = config_user_info@plot_dir + "russell18jgr-fig9a_" \ + sprinti("%0.4i", min(toint(start_years_data))) + "-" \ + sprinti("%0.4i", max(toint(end_years_data))) @@ -297,6 +297,8 @@ begin end create draw(legend) + frame(wks) + do idd = 0, dimsizes(lat_width) - 1 nc_filename = config_user_info@work_dir + "russell18jgr_fig9a_" \ + annots(idd) + "_" + (start_years_data(idd)) + "-" \ diff --git a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig9b.ncl b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig9b.ncl index 8afd05425a..112cd846f5 100644 --- a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig9b.ncl +++ b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig9b.ncl @@ -94,7 +94,7 @@ end begin - plotpath = config_user_info@plot_dir + "/russell18jgr-fig9b_" \ + plotpath = config_user_info@plot_dir + "russell18jgr-fig9b_" \ + sprinti("%0.4i", min(toint(start_years_data))) + "-" \ + sprinti("%0.4i", max(toint(end_years_data))) @@ -315,6 +315,8 @@ begin end create draw(legend) + frame(wks) + do idd = 0, dimsizes(lat_width) - 1 nc_filename = config_user_info@work_dir + "russell18jgr_fig9b_" \ + annots(idd) + "_" + (start_years_data(idd)) + "-" \ diff --git a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig9c.ncl b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig9c.ncl index 0e5c828a6a..2fe0cc3e4a 100644 --- a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig9c.ncl +++ b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-fig9c.ncl @@ -107,7 +107,7 @@ end begin - plotpath = config_user_info@plot_dir + "/russell18jgr-fig9c_" \ + plotpath = config_user_info@plot_dir + "russell18jgr-fig9c_" \ + sprinti("%0.4i", min(toint(start_years_data))) + "-" \ + sprinti("%0.4i", max(toint(end_years_data))) @@ -312,6 +312,8 @@ begin end create draw(legend) + frame(wks) + do idd = 0, dimsizes(lat_width) - 1 nc_filename = config_user_info@work_dir + "russell18jgr_fig9c_" \ + annots(idd) + "_" + (start_years_data(idd)) + "-" \ diff --git a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-polar.ncl b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-polar.ncl index b9c8f1faaa..106f161801 100644 --- a/esmvaltool/diag_scripts/russell18jgr/russell18jgr-polar.ncl +++ b/esmvaltool/diag_scripts/russell18jgr/russell18jgr-polar.ncl @@ -77,7 +77,7 @@ end begin - plotpath = config_user_info@plot_dir + "/Russell_polar-contour_" + var0 + \ + plotpath = config_user_info@plot_dir + "Russell_polar-contour_" + var0 + \ "_" + sprinti("%0.4i", min(toint(start_years_data))) + "-" \ + sprinti("%0.4i", max(toint(end_years_data))) @@ -231,6 +231,13 @@ begin ncdf_outfile = ncdf_write(dataset, nc_filename) delete(dataset) + end do + + ; Draw the panel + pres = True + pres@gsnPanelLabelBar = False + outfile = panelling(wks, plots, nvert, nhori, pres) + log_provenance(ncdf_outfile, \ plotpath + "." + output_type(), \ "Russell et al 2018 polar plot " + var0, \ @@ -239,11 +246,5 @@ begin "geo", \ "russell_joellen", \ "russell18jgr", \ - inputfile_paths(iii)) - end do - - ; Draw the panel - pres = True - pres@gsnPanelLabelBar = False - outfile = panelling(wks, plots, nvert, nhori, pres) + inputfile_paths) end From 7d61dc1c62bc3cab71bfc928e0225fa6ae984c8f Mon Sep 17 00:00:00 2001 From: Valeriu Predoi Date: Thu, 7 Dec 2023 07:45:58 +0000 Subject: [PATCH 11/20] regenerate Anconda shield/badge not to have ESMValTool version hardcoded in image name (#3453) Co-authored-by: Bouwe Andela --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 71403fbf90..d170ee2f20 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ [![Codacy Badge](https://app.codacy.com/project/badge/Coverage/79bf6932c2e844eea15d0fb1ed7e415c)](https://www.codacy.com/gh/ESMValGroup/ESMValTool?utm_source=github.com&utm_medium=referral&utm_content=ESMValGroup/ESMValTool&utm_campaign=Badge_Coverage) [![Codacy Badge](https://app.codacy.com/project/badge/Grade/79bf6932c2e844eea15d0fb1ed7e415c)](https://www.codacy.com/gh/ESMValGroup/ESMValTool?utm_source=github.com&utm_medium=referral&utm_content=ESMValGroup/ESMValTool&utm_campaign=Badge_Grade) [![Docker Build Status](https://img.shields.io/docker/cloud/build/esmvalgroup/esmvaltool.svg)](https://hub.docker.com/r/esmvalgroup/esmvaltool/) -[![Anaconda-Server Badge](https://img.shields.io/badge/Anaconda.org-2.9.0-blue.svg)](https://anaconda.org/conda-forge/esmvaltool) +[![Anaconda-Server Badge](https://img.shields.io/conda/vn/conda-forge/ESMValTool?color=blue&label=conda-forge&logo=conda-forge&logoColor=white)](https://anaconda.org/conda-forge/esmvaltool) ![stand with Ukraine](https://badgen.net/badge/stand%20with/UKRAINE/?color=0057B8&labelColor=FFD700) ![esmvaltoollogo](https://raw.githubusercontent.com/ESMValGroup/ESMValTool/main/doc/sphinx/source/figures/ESMValTool-logo-2.png) From 92564c56d8070e4ac3113eeaf990e19546437e21 Mon Sep 17 00:00:00 2001 From: Bouwe Andela Date: Tue, 19 Dec 2023 16:42:35 +0100 Subject: [PATCH 12/20] Add v2.10 release notes (#3485) Co-authored-by: Manuel Schlund <32543114+schlunma@users.noreply.github.com> --- CITATION.cff | 4 +- doc/sphinx/source/changelog.rst | 110 ++++++++++++++++++ .../source/recipes/broken_recipe_list.rst | 10 +- 3 files changed, 121 insertions(+), 3 deletions(-) diff --git a/CITATION.cff b/CITATION.cff index 147e3acd17..cca827c46d 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -388,11 +388,11 @@ authors: orcid: "https://orcid.org/0000-0003-3780-0784" cff-version: 1.2.0 -date-released: 2023-07-06 +date-released: 2023-12-19 doi: "10.5281/zenodo.3401363" license: "Apache-2.0" message: "If you use this software, please cite it using these metadata." repository-code: "https://github.com/ESMValGroup/ESMValTool/" title: ESMValTool -version: "v2.9.0" +version: "v2.10.0" ... diff --git a/doc/sphinx/source/changelog.rst b/doc/sphinx/source/changelog.rst index 52c3aa3086..e06be38aa0 100644 --- a/doc/sphinx/source/changelog.rst +++ b/doc/sphinx/source/changelog.rst @@ -3,6 +3,116 @@ Changelog ========= +v2.10.0 +------- +Highlights + +- Add a realistic IPCC example recipe that reproduces figure 9.3 from AR6. It + computes the mean sea-surface temperature anomaly between 1850-2100 over all + available CMIP6 models. See the :ref:`recipe documentation ` + or read the `blog post `__ + for more information. + +- Added more plot types to monitoring diagnostic: Hovmoeller Z vs. time, + Hovmoeller time vs latlon, variable vs. latitude are now available. See the + :ref:`recipe documentation ` for more information. + +- Add support for 4 new datasets: + + - NOAA-CIRES-20CR v3 reanalysis + - NASA MERRA reanalysis + - NOAA marine boundary layer data for CH4 + - MOBO-DIC2004-2019 + + See :ref:`supported_datasets` and :ref:`inputdata_observations` for more + information. + +- Many recipes now have up-to-date obs4MIPs dataset names so required data can + automatically be downloaded from ESGF. + +This release includes + +Bug fixes +~~~~~~~~~ + +- Update recipe shapeselect to work with shapely v2 (`#3283 `__) `Lukas `__ +- Correctly handle ``~`` when reading ``plot_folder`` option of monitoring diagnostic (`#3449 `__) `Manuel Schlund `__ +- Fixed provenance tracking for NCL multipanel PNGs (`#3332 `__) `Manuel Schlund `__ +- Fixed plot paths in NCL provenance tracking (`#3422 `__) `Manuel Schlund `__ +- Fix erroneous file_type handling in certain NCL diagnostics (`#3474 `__) `Klaus Zimmermann `__ +- Fix NCL provenance tracking (`#3477 `__) `Manuel Schlund `__ +- Fix plots and provenance in Russell diagnostics (`#3479 `__) `Manuel Schlund `__ + +Documentation +~~~~~~~~~~~~~ + +- Add merge instructions to release instructions (`#3292 `__) `Rémi Kazeroni `__ +- Update release schedule after release of v2.9.0 (`#3289 `__) `Rémi Kazeroni `__ +- Add list of failing recipes for v2.9.0 release (`#3294 `__) `Rémi Kazeroni `__ +- Update ``mamba`` version in readthedocs configuration docs builds (`#3310 `__) `Valeriu Predoi `__ +- Add Romain Beucher to citation file as contributor (`#3318 `__) `Valeriu Predoi `__ +- Removed recipe_carvalhais14nat from list of broken recipes (`#3319 `__) `Rémi Kazeroni `__ +- Add `OBS-maintainers `__ team to documentation on OBS data maintenance and CMORizer reviews (`#3335 `__) `Rémi Kazeroni `__ +- Add Pauline Bonnet to citation file (`#3347 `__) `Paulinebonnet111 `__ +- Ensure compatible zstandard and zstd in readthedocs builds (`#3362 `__) `Klaus Zimmermann `__ +- Fix documentation build (`#3397 `__) `Bouwe Andela `__ +- Minor updates to release tools (`#3216 `__) `Bouwe Andela `__ +- Enhance provenance documentation (`#3305 `__) `Alistair Sellar `__ +- Re-add communities and grants in zenodo file (`#3416 `__) `Valeriu Predoi `__ +- Update Anconda badge in README (`#3375 `__, `#3453 `__) `Valeriu Predoi `__ + +Diagnostics +~~~~~~~~~~~ + +- Slight refactoring of diagnostic script ``galytska23/select_variables_for_tigramite.py`` for generality and portability (`#3298 `__) `Valeriu Predoi `__ and `Evgenia Galytska `__ +- Allow custom variable grouping in diagnostic script ``monitor/multi_datasets.py`` (`#3343 `__) `Manuel Schlund `__ +- Extended monitor diagnostic with plot type variable vs. latitude (`#3340 `__) `ellensarauer `__ +- Add Hovmoeller Z vs. time plot to monitoring diagnostic (`#3345 `__) `cubeme `__ and `helgehr `__ +- Adding Hovmoeller time vs latlon plots to monitoring recipes (`#3341 `__) `Lukas `__ and `jeremykraftdlr `__ +- Implied heat transport new diagnostic (`#3177 `__) `Alejandro Bodas `__ +- Recipe changes for new statistics preprocessors (percentiles) (`#3351 `__) `Manuel Schlund `__ +- Add a realistic example recipe (`#3356 `__) `Peter9192 `__ and `Bouwe Andela `__ +- Support ``CenteredNorm`` in diagnostic monitor/multidatasets.py (`#3415 `__) `Manuel Schlund `__ +- Use new preprocessor statistics calling convention for recipe_easy_ipcc.yml (`#3418 `__) `Bouwe Andela `__ +- Adapt to changed style scheme name in matplotlib (`#3475 `__) `Klaus Zimmermann `__ +- Add version to dataset in python example recipe to avoid "Unknown file format" issue on JASMIN (`#3322 `__) `Emma Hogan `__ +- Add the dataset version in the heatwaves_coldwaves recipe to avoid the "Unknown file format" issue on JASMIN (`#3373 `__) `Emma Hogan `__ + +Observational and re-analysis dataset support +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- Cmorizer for NOAA-CIRES-20CR v3 reanalysis (clt, clwvi, hus, prw, rlut, rlutcs, rsut, rsutcs) (`#3137 `__) `Lisa Bock `__ +- CMORizer for NASA MERRA reanalysis (`#3039 `__) `Axel Lauer `__ +- Download and formatting of NOAA marine boundary layer data for CH4 (NOAA-MBL-CH4) (`#3301 `__) `FranziskaWinterstein `__ +- Added CMORizer for MOBO-DIC2004-2019 (`#3297 `__) `Manuel Schlund `__ +- Update obs4MIPs dataset names in quantilebias recipe (`#3330 `__) `Romain Beucher `__ +- Update obs4MIPs dataset names in Schlund20esd recipe (`#3329 `__) `Romain Beucher `__ +- Update obs4MIPs dataset names in flatoipcc recipes (`#3328 `__) `Romain Beucher `__ +- Update obs4mips dataset names in clouds recipes (`#3326 `__) `Romain Beucher `__ +- Update Obs4MIPs dataset names in ECS recipes (`#3327 `__) `Romain Beucher `__ +- Update obs4mips dataset names in Bock et al recipes (`#3324 `__, `#3389 `__ and `#3473 `__) `Romain Beucher `__ and `Bouwe Andela `__ +- Update obs4mips dataset names in radiation budget recipe (`#3323 `__) `Romain Beucher `__ +- Update Obs4MIPs dataset names in perfmetrics CMIP5 recipe (`#3325 `__) `Romain Beucher `__ + +Automatic testing +~~~~~~~~~~~~~~~~~ + +- Made sklearn test backwards-compatible with sklearn < 1.3 (`#3285 `__) `Manuel Schlund `__ +- Update conda lock creation Github Action workflow and ship updated conda-lock file (`#3307 `__, `#3407 `__) `Valeriu Predoi `__ +- Compress all bash shell setters into one default option per GitHub Action workflow (`#3315 `__) `Valeriu Predoi `__ +- Remove deprecated option ``offline`` from CI configuration (`#3367 `__) `Manuel Schlund `__ + +Installation +~~~~~~~~~~~~ + +- Use ESMValCore v2.10.0 release candidates (`#3404 `__) `Klaus Zimmermann `__ + +Improvements +~~~~~~~~~~~~ + +- Merge v2.9.x into main (`#3286 `__) `Manuel Schlund `__ +- Allow NCL unit conversion `kg s-1` -> `GtC y-1` (`#3300 `__) `Manuel Schlund `__ + .. _changelog-v2-9-0: v2.9.0 diff --git a/doc/sphinx/source/recipes/broken_recipe_list.rst b/doc/sphinx/source/recipes/broken_recipe_list.rst index 18471b2382..e2c5b874d8 100644 --- a/doc/sphinx/source/recipes/broken_recipe_list.rst +++ b/doc/sphinx/source/recipes/broken_recipe_list.rst @@ -20,7 +20,15 @@ More details can be found in the :ref:`broken recipe policy - `ERA5_native6` - Derivation of custom variables `rlus` and `rsus` - `#1388 `_ + * - :ref:`recipe_julia.yml ` + - `example` + - fill values are not interpreted, resulting in an unusable plot + - `#2595 `_ * - :ref:`recipe_seaice_drift.yml ` - `sea_ice_drift_SCICEX` - - ``shapely`` issue + - ``shapely 2`` issue - `#3243 `_ + * - :ref:`recipe_pysplot.yml ` + - `plot_map` + - ``shapely 2`` issue + - `#3483 `_ From c8c06bdd48415fa0c76b3ec0b02d9b21d16252f1 Mon Sep 17 00:00:00 2001 From: Bouwe Andela Date: Tue, 19 Dec 2023 16:42:35 +0100 Subject: [PATCH 13/20] Add v2.10 release notes (#3485) Co-authored-by: Manuel Schlund <32543114+schlunma@users.noreply.github.com> --- CITATION.cff | 4 +- doc/sphinx/source/changelog.rst | 110 ++++++++++++++++++ .../source/recipes/broken_recipe_list.rst | 10 +- 3 files changed, 121 insertions(+), 3 deletions(-) diff --git a/CITATION.cff b/CITATION.cff index 147e3acd17..cca827c46d 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -388,11 +388,11 @@ authors: orcid: "https://orcid.org/0000-0003-3780-0784" cff-version: 1.2.0 -date-released: 2023-07-06 +date-released: 2023-12-19 doi: "10.5281/zenodo.3401363" license: "Apache-2.0" message: "If you use this software, please cite it using these metadata." repository-code: "https://github.com/ESMValGroup/ESMValTool/" title: ESMValTool -version: "v2.9.0" +version: "v2.10.0" ... diff --git a/doc/sphinx/source/changelog.rst b/doc/sphinx/source/changelog.rst index 52c3aa3086..e06be38aa0 100644 --- a/doc/sphinx/source/changelog.rst +++ b/doc/sphinx/source/changelog.rst @@ -3,6 +3,116 @@ Changelog ========= +v2.10.0 +------- +Highlights + +- Add a realistic IPCC example recipe that reproduces figure 9.3 from AR6. It + computes the mean sea-surface temperature anomaly between 1850-2100 over all + available CMIP6 models. See the :ref:`recipe documentation ` + or read the `blog post `__ + for more information. + +- Added more plot types to monitoring diagnostic: Hovmoeller Z vs. time, + Hovmoeller time vs latlon, variable vs. latitude are now available. See the + :ref:`recipe documentation ` for more information. + +- Add support for 4 new datasets: + + - NOAA-CIRES-20CR v3 reanalysis + - NASA MERRA reanalysis + - NOAA marine boundary layer data for CH4 + - MOBO-DIC2004-2019 + + See :ref:`supported_datasets` and :ref:`inputdata_observations` for more + information. + +- Many recipes now have up-to-date obs4MIPs dataset names so required data can + automatically be downloaded from ESGF. + +This release includes + +Bug fixes +~~~~~~~~~ + +- Update recipe shapeselect to work with shapely v2 (`#3283 `__) `Lukas `__ +- Correctly handle ``~`` when reading ``plot_folder`` option of monitoring diagnostic (`#3449 `__) `Manuel Schlund `__ +- Fixed provenance tracking for NCL multipanel PNGs (`#3332 `__) `Manuel Schlund `__ +- Fixed plot paths in NCL provenance tracking (`#3422 `__) `Manuel Schlund `__ +- Fix erroneous file_type handling in certain NCL diagnostics (`#3474 `__) `Klaus Zimmermann `__ +- Fix NCL provenance tracking (`#3477 `__) `Manuel Schlund `__ +- Fix plots and provenance in Russell diagnostics (`#3479 `__) `Manuel Schlund `__ + +Documentation +~~~~~~~~~~~~~ + +- Add merge instructions to release instructions (`#3292 `__) `Rémi Kazeroni `__ +- Update release schedule after release of v2.9.0 (`#3289 `__) `Rémi Kazeroni `__ +- Add list of failing recipes for v2.9.0 release (`#3294 `__) `Rémi Kazeroni `__ +- Update ``mamba`` version in readthedocs configuration docs builds (`#3310 `__) `Valeriu Predoi `__ +- Add Romain Beucher to citation file as contributor (`#3318 `__) `Valeriu Predoi `__ +- Removed recipe_carvalhais14nat from list of broken recipes (`#3319 `__) `Rémi Kazeroni `__ +- Add `OBS-maintainers `__ team to documentation on OBS data maintenance and CMORizer reviews (`#3335 `__) `Rémi Kazeroni `__ +- Add Pauline Bonnet to citation file (`#3347 `__) `Paulinebonnet111 `__ +- Ensure compatible zstandard and zstd in readthedocs builds (`#3362 `__) `Klaus Zimmermann `__ +- Fix documentation build (`#3397 `__) `Bouwe Andela `__ +- Minor updates to release tools (`#3216 `__) `Bouwe Andela `__ +- Enhance provenance documentation (`#3305 `__) `Alistair Sellar `__ +- Re-add communities and grants in zenodo file (`#3416 `__) `Valeriu Predoi `__ +- Update Anconda badge in README (`#3375 `__, `#3453 `__) `Valeriu Predoi `__ + +Diagnostics +~~~~~~~~~~~ + +- Slight refactoring of diagnostic script ``galytska23/select_variables_for_tigramite.py`` for generality and portability (`#3298 `__) `Valeriu Predoi `__ and `Evgenia Galytska `__ +- Allow custom variable grouping in diagnostic script ``monitor/multi_datasets.py`` (`#3343 `__) `Manuel Schlund `__ +- Extended monitor diagnostic with plot type variable vs. latitude (`#3340 `__) `ellensarauer `__ +- Add Hovmoeller Z vs. time plot to monitoring diagnostic (`#3345 `__) `cubeme `__ and `helgehr `__ +- Adding Hovmoeller time vs latlon plots to monitoring recipes (`#3341 `__) `Lukas `__ and `jeremykraftdlr `__ +- Implied heat transport new diagnostic (`#3177 `__) `Alejandro Bodas `__ +- Recipe changes for new statistics preprocessors (percentiles) (`#3351 `__) `Manuel Schlund `__ +- Add a realistic example recipe (`#3356 `__) `Peter9192 `__ and `Bouwe Andela `__ +- Support ``CenteredNorm`` in diagnostic monitor/multidatasets.py (`#3415 `__) `Manuel Schlund `__ +- Use new preprocessor statistics calling convention for recipe_easy_ipcc.yml (`#3418 `__) `Bouwe Andela `__ +- Adapt to changed style scheme name in matplotlib (`#3475 `__) `Klaus Zimmermann `__ +- Add version to dataset in python example recipe to avoid "Unknown file format" issue on JASMIN (`#3322 `__) `Emma Hogan `__ +- Add the dataset version in the heatwaves_coldwaves recipe to avoid the "Unknown file format" issue on JASMIN (`#3373 `__) `Emma Hogan `__ + +Observational and re-analysis dataset support +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- Cmorizer for NOAA-CIRES-20CR v3 reanalysis (clt, clwvi, hus, prw, rlut, rlutcs, rsut, rsutcs) (`#3137 `__) `Lisa Bock `__ +- CMORizer for NASA MERRA reanalysis (`#3039 `__) `Axel Lauer `__ +- Download and formatting of NOAA marine boundary layer data for CH4 (NOAA-MBL-CH4) (`#3301 `__) `FranziskaWinterstein `__ +- Added CMORizer for MOBO-DIC2004-2019 (`#3297 `__) `Manuel Schlund `__ +- Update obs4MIPs dataset names in quantilebias recipe (`#3330 `__) `Romain Beucher `__ +- Update obs4MIPs dataset names in Schlund20esd recipe (`#3329 `__) `Romain Beucher `__ +- Update obs4MIPs dataset names in flatoipcc recipes (`#3328 `__) `Romain Beucher `__ +- Update obs4mips dataset names in clouds recipes (`#3326 `__) `Romain Beucher `__ +- Update Obs4MIPs dataset names in ECS recipes (`#3327 `__) `Romain Beucher `__ +- Update obs4mips dataset names in Bock et al recipes (`#3324 `__, `#3389 `__ and `#3473 `__) `Romain Beucher `__ and `Bouwe Andela `__ +- Update obs4mips dataset names in radiation budget recipe (`#3323 `__) `Romain Beucher `__ +- Update Obs4MIPs dataset names in perfmetrics CMIP5 recipe (`#3325 `__) `Romain Beucher `__ + +Automatic testing +~~~~~~~~~~~~~~~~~ + +- Made sklearn test backwards-compatible with sklearn < 1.3 (`#3285 `__) `Manuel Schlund `__ +- Update conda lock creation Github Action workflow and ship updated conda-lock file (`#3307 `__, `#3407 `__) `Valeriu Predoi `__ +- Compress all bash shell setters into one default option per GitHub Action workflow (`#3315 `__) `Valeriu Predoi `__ +- Remove deprecated option ``offline`` from CI configuration (`#3367 `__) `Manuel Schlund `__ + +Installation +~~~~~~~~~~~~ + +- Use ESMValCore v2.10.0 release candidates (`#3404 `__) `Klaus Zimmermann `__ + +Improvements +~~~~~~~~~~~~ + +- Merge v2.9.x into main (`#3286 `__) `Manuel Schlund `__ +- Allow NCL unit conversion `kg s-1` -> `GtC y-1` (`#3300 `__) `Manuel Schlund `__ + .. _changelog-v2-9-0: v2.9.0 diff --git a/doc/sphinx/source/recipes/broken_recipe_list.rst b/doc/sphinx/source/recipes/broken_recipe_list.rst index 18471b2382..e2c5b874d8 100644 --- a/doc/sphinx/source/recipes/broken_recipe_list.rst +++ b/doc/sphinx/source/recipes/broken_recipe_list.rst @@ -20,7 +20,15 @@ More details can be found in the :ref:`broken recipe policy - `ERA5_native6` - Derivation of custom variables `rlus` and `rsus` - `#1388 `_ + * - :ref:`recipe_julia.yml ` + - `example` + - fill values are not interpreted, resulting in an unusable plot + - `#2595 `_ * - :ref:`recipe_seaice_drift.yml ` - `sea_ice_drift_SCICEX` - - ``shapely`` issue + - ``shapely 2`` issue - `#3243 `_ + * - :ref:`recipe_pysplot.yml ` + - `plot_map` + - ``shapely 2`` issue + - `#3483 `_ From 10692548f67bdfa83e2d47170d133e70e128f0d1 Mon Sep 17 00:00:00 2001 From: Bouwe Andela Date: Tue, 19 Dec 2023 20:16:28 +0100 Subject: [PATCH 14/20] Use ESMValCore v2.10 (#3486) --- doc/sphinx/source/changelog.rst | 2 +- environment.yml | 4 ++-- environment_osx.yml | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/sphinx/source/changelog.rst b/doc/sphinx/source/changelog.rst index e06be38aa0..068a94a45b 100644 --- a/doc/sphinx/source/changelog.rst +++ b/doc/sphinx/source/changelog.rst @@ -105,7 +105,7 @@ Automatic testing Installation ~~~~~~~~~~~~ -- Use ESMValCore v2.10.0 release candidates (`#3404 `__) `Klaus Zimmermann `__ +- Use ESMValCore v2.10 (`#3486 `__) `Bouwe Andela `__ Improvements ~~~~~~~~~~~~ diff --git a/environment.yml b/environment.yml index fb2e5adb14..6409a35e6a 100644 --- a/environment.yml +++ b/environment.yml @@ -4,7 +4,7 @@ channels: # The release candidate channel should only be activated # during the rc phase right before the next release of the # ESMValCore. - - conda-forge/label/esmvalcore_rc + # - conda-forge/label/esmvalcore_rc - conda-forge - nodefaults @@ -24,7 +24,7 @@ dependencies: - ecmwf-api-client - eofs - esmpy - - esmvalcore =2.10.0rc1 + - esmvalcore 2.10.* - fiona - fire - gdal diff --git a/environment_osx.yml b/environment_osx.yml index 0734dee2c6..7207ec9112 100644 --- a/environment_osx.yml +++ b/environment_osx.yml @@ -4,7 +4,7 @@ channels: # The release candidate channel should only be activated # during the rc phase right before the next release of the # ESMValCore. - - conda-forge/label/esmvalcore_rc + # - conda-forge/label/esmvalcore_rc - conda-forge - nodefaults @@ -24,7 +24,7 @@ dependencies: - ecmwf-api-client - eofs - esmpy - - esmvalcore =2.10.0rc1 + - esmvalcore 2.10.* - fiona - fire - gdal From e869d157579e91f6ecfc91a6258f49bd43c69cc6 Mon Sep 17 00:00:00 2001 From: Bouwe Andela Date: Tue, 19 Dec 2023 20:16:28 +0100 Subject: [PATCH 15/20] Use ESMValCore v2.10 (#3486) --- doc/sphinx/source/changelog.rst | 2 +- environment.yml | 4 ++-- environment_osx.yml | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/sphinx/source/changelog.rst b/doc/sphinx/source/changelog.rst index e06be38aa0..068a94a45b 100644 --- a/doc/sphinx/source/changelog.rst +++ b/doc/sphinx/source/changelog.rst @@ -105,7 +105,7 @@ Automatic testing Installation ~~~~~~~~~~~~ -- Use ESMValCore v2.10.0 release candidates (`#3404 `__) `Klaus Zimmermann `__ +- Use ESMValCore v2.10 (`#3486 `__) `Bouwe Andela `__ Improvements ~~~~~~~~~~~~ diff --git a/environment.yml b/environment.yml index fb2e5adb14..6409a35e6a 100644 --- a/environment.yml +++ b/environment.yml @@ -4,7 +4,7 @@ channels: # The release candidate channel should only be activated # during the rc phase right before the next release of the # ESMValCore. - - conda-forge/label/esmvalcore_rc + # - conda-forge/label/esmvalcore_rc - conda-forge - nodefaults @@ -24,7 +24,7 @@ dependencies: - ecmwf-api-client - eofs - esmpy - - esmvalcore =2.10.0rc1 + - esmvalcore 2.10.* - fiona - fire - gdal diff --git a/environment_osx.yml b/environment_osx.yml index 0734dee2c6..7207ec9112 100644 --- a/environment_osx.yml +++ b/environment_osx.yml @@ -4,7 +4,7 @@ channels: # The release candidate channel should only be activated # during the rc phase right before the next release of the # ESMValCore. - - conda-forge/label/esmvalcore_rc + # - conda-forge/label/esmvalcore_rc - conda-forge - nodefaults @@ -24,7 +24,7 @@ dependencies: - ecmwf-api-client - eofs - esmpy - - esmvalcore =2.10.0rc1 + - esmvalcore 2.10.* - fiona - fire - gdal From 7e1ffaad0313629eaec39664ecf7df3b45e8d89c Mon Sep 17 00:00:00 2001 From: Bouwe Andela Date: Wed, 20 Dec 2023 08:45:54 +0100 Subject: [PATCH 16/20] Update release date --- CITATION.cff | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CITATION.cff b/CITATION.cff index cca827c46d..5c253e3bb5 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -388,7 +388,7 @@ authors: orcid: "https://orcid.org/0000-0003-3780-0784" cff-version: 1.2.0 -date-released: 2023-12-19 +date-released: 2023-12-20 doi: "10.5281/zenodo.3401363" license: "Apache-2.0" message: "If you use this software, please cite it using these metadata." From 7e60941dced9b16c41adb864651523a1df5e9da3 Mon Sep 17 00:00:00 2001 From: Bouwe Andela Date: Wed, 20 Dec 2023 10:31:50 +0100 Subject: [PATCH 17/20] Update dependencies (#3487) --- environment.yml | 10 +++++----- environment_osx.yml | 11 ++++++----- setup.py | 15 ++++++++------- 3 files changed, 19 insertions(+), 17 deletions(-) diff --git a/environment.yml b/environment.yml index 6409a35e6a..660cd7f11e 100644 --- a/environment.yml +++ b/environment.yml @@ -9,8 +9,6 @@ channels: - nodefaults dependencies: - - pip !=21.3 - - python >=3.9 - aiohttp - cartopy - cdo >=1.9.7 @@ -28,7 +26,7 @@ dependencies: - fiona - fire - gdal - - iris >=3.6.0 + - iris >=3.6.1 - iris-esmf-regrid >=0.7.0 - jinja2 - joblib @@ -40,9 +38,10 @@ dependencies: - netCDF4 - numba - numpy !=1.24.3 # severe masking bug - - packaging - openpyxl + - packaging - pandas + - pip !=21.3 - progressbar2 - prov - psyplot @@ -50,6 +49,7 @@ dependencies: - psy-reg - psy-simple - pyproj >=2.1 + - python >=3.9 - python-cdo - python-dateutil - pyyaml @@ -61,7 +61,7 @@ dependencies: - scipy - seaborn - seawater - - shapely + - shapely >=2 - xarray >=0.12.0 - xesmf >=0.7.1 - xgboost >1.6.1 # github.com/ESMValGroup/ESMValTool/issues/2779 diff --git a/environment_osx.yml b/environment_osx.yml index 7207ec9112..0d1f034e61 100644 --- a/environment_osx.yml +++ b/environment_osx.yml @@ -9,8 +9,6 @@ channels: - nodefaults dependencies: - - pip !=21.3 - - python >=3.9 - aiohttp - cartopy - cdo >=1.9.7 @@ -28,7 +26,7 @@ dependencies: - fiona - fire - gdal - - iris >=3.6.0 + - iris >=3.6.1 - iris-esmf-regrid >=0.7.0 - jinja2 - joblib @@ -38,10 +36,12 @@ dependencies: - natsort - nc-time-axis - netCDF4 + - numba - numpy !=1.24.3 # severe masking bug - - packaging - openpyxl + - packaging - pandas + - pip !=21.3 - progressbar2 - prov - psyplot @@ -49,6 +49,7 @@ dependencies: - psy-reg - psy-simple - pyproj>=2.1 + - python >=3.9 - python-cdo - python-dateutil - pyyaml @@ -60,7 +61,7 @@ dependencies: - scipy - seaborn - seawater - - shapely + - shapely >=2 - xarray >=0.12.0 - xesmf >=0.7.1 - xgboost >1.6.1 # github.com/ESMValGroup/ESMValTool/issues/2779 diff --git a/setup.py b/setup.py index bd584b7b3b..34ef66d80e 100755 --- a/setup.py +++ b/setup.py @@ -35,6 +35,7 @@ 'esmvalcore', 'esmf-regrid>=0.7.0', 'fiona', + 'fire', 'GDAL', 'jinja2', 'joblib', @@ -46,27 +47,27 @@ 'netCDF4', 'numba', 'numpy!=1.24.3', # severe masking bug - 'packaging', 'openpyxl', + 'packaging', 'pandas', - 'pyproj>=2.1', - 'pyyaml', 'progressbar2', 'psyplot', 'psy-maps', 'psy-reg', 'psy-simple', + 'pyproj>=2.1', + 'python-dateutil', + 'pyyaml', 'rasterio', + 'requests', 'ruamel.yaml', 'scikit-image', 'scikit-learn', 'scipy', - # See the following issue for info on the iris pin below: - # https://github.com/ESMValGroup/ESMValTool/issues/3239#issuecomment-1613298587 - 'scitools-iris>=3.4.0', + 'scitools-iris>=3.6.1', 'seaborn', 'seawater', - 'shapely', + 'shapely>=2', 'xarray>=0.12.0', 'xesmf>=0.7.1', 'xgboost>1.6.1', # github.com/ESMValGroup/ESMValTool/issues/2779 From 84706a06190febc43538846f2f5a1629f2b6321c Mon Sep 17 00:00:00 2001 From: Bouwe Andela Date: Wed, 20 Dec 2023 14:17:22 +0100 Subject: [PATCH 18/20] Improve release tools (#3462) --- doc/sphinx/source/changelog.rst | 1456 ++++++++--------- doc/sphinx/source/community/maintainer.rst | 7 +- .../detailed_release_procedure.rst | 14 +- .../release_strategy/release_strategy.rst | 58 +- doc/sphinx/source/conf.py | 35 + doc/sphinx/source/utils.rst | 32 +- esmvaltool/utils/batch-jobs/generate.py | 56 +- .../utils/batch-jobs/parse_recipes_output.py | 197 +-- esmvaltool/utils/draft_release_notes.py | 25 +- 9 files changed, 978 insertions(+), 902 deletions(-) diff --git a/doc/sphinx/source/changelog.rst b/doc/sphinx/source/changelog.rst index 068a94a45b..d1180d3b8b 100644 --- a/doc/sphinx/source/changelog.rst +++ b/doc/sphinx/source/changelog.rst @@ -35,83 +35,83 @@ This release includes Bug fixes ~~~~~~~~~ -- Update recipe shapeselect to work with shapely v2 (`#3283 `__) `Lukas `__ -- Correctly handle ``~`` when reading ``plot_folder`` option of monitoring diagnostic (`#3449 `__) `Manuel Schlund `__ -- Fixed provenance tracking for NCL multipanel PNGs (`#3332 `__) `Manuel Schlund `__ -- Fixed plot paths in NCL provenance tracking (`#3422 `__) `Manuel Schlund `__ -- Fix erroneous file_type handling in certain NCL diagnostics (`#3474 `__) `Klaus Zimmermann `__ -- Fix NCL provenance tracking (`#3477 `__) `Manuel Schlund `__ -- Fix plots and provenance in Russell diagnostics (`#3479 `__) `Manuel Schlund `__ +- Update recipe shapeselect to work with shapely v2 (:pull:`3283`) :user:`lukruh` +- Correctly handle ``~`` when reading ``plot_folder`` option of monitoring diagnostic (:pull:`3449`) :user:`schlunma` +- Fixed provenance tracking for NCL multipanel PNGs (:pull:`3332`) :user:`schlunma` +- Fixed plot paths in NCL provenance tracking (:pull:`3422`) :user:`schlunma` +- Fix erroneous file_type handling in certain NCL diagnostics (:pull:`3474`) :user:`zklaus` +- Fix NCL provenance tracking (:pull:`3477`) :user:`schlunma` +- Fix plots and provenance in Russell diagnostics (:pull:`3479`) :user:`schlunma` Documentation ~~~~~~~~~~~~~ -- Add merge instructions to release instructions (`#3292 `__) `Rémi Kazeroni `__ -- Update release schedule after release of v2.9.0 (`#3289 `__) `Rémi Kazeroni `__ -- Add list of failing recipes for v2.9.0 release (`#3294 `__) `Rémi Kazeroni `__ -- Update ``mamba`` version in readthedocs configuration docs builds (`#3310 `__) `Valeriu Predoi `__ -- Add Romain Beucher to citation file as contributor (`#3318 `__) `Valeriu Predoi `__ -- Removed recipe_carvalhais14nat from list of broken recipes (`#3319 `__) `Rémi Kazeroni `__ -- Add `OBS-maintainers `__ team to documentation on OBS data maintenance and CMORizer reviews (`#3335 `__) `Rémi Kazeroni `__ -- Add Pauline Bonnet to citation file (`#3347 `__) `Paulinebonnet111 `__ -- Ensure compatible zstandard and zstd in readthedocs builds (`#3362 `__) `Klaus Zimmermann `__ -- Fix documentation build (`#3397 `__) `Bouwe Andela `__ -- Minor updates to release tools (`#3216 `__) `Bouwe Andela `__ -- Enhance provenance documentation (`#3305 `__) `Alistair Sellar `__ -- Re-add communities and grants in zenodo file (`#3416 `__) `Valeriu Predoi `__ -- Update Anconda badge in README (`#3375 `__, `#3453 `__) `Valeriu Predoi `__ +- Add merge instructions to release instructions (:pull:`3292`) :user:`remi-kazeroni` +- Update release schedule after release of v2.9.0 (:pull:`3289`) :user:`remi-kazeroni` +- Add list of failing recipes for v2.9.0 release (:pull:`3294`) :user:`remi-kazeroni` +- Update ``mamba`` version in readthedocs configuration docs builds (:pull:`3310`) :user:`valeriupredoi` +- Add Romain Beucher to citation file as contributor (:pull:`3318`) :user:`valeriupredoi` +- Removed recipe_carvalhais14nat from list of broken recipes (:pull:`3319`) :user:`remi-kazeroni` +- Add `OBS-maintainers `__ team to documentation on OBS data maintenance and CMORizer reviews (:pull:`3335`) :user:`remi-kazeroni` +- Add Pauline Bonnet to citation file (:pull:`3347`) :user:`Paulinebonnet111` +- Ensure compatible zstandard and zstd in readthedocs builds (:pull:`3362`) :user:`zklaus` +- Fix documentation build (:pull:`3397`) :user:`bouweandela` +- Minor updates to release tools (:pull:`3216`) :user:`bouweandela` +- Enhance provenance documentation (:pull:`3305`) :user:`alistairsellar` +- Re-add communities and grants in zenodo file (:pull:`3416`) :user:`valeriupredoi` +- Update Anconda badge in README (:pull:`3375`, :pull:`3453`) :user:`valeriupredoi` Diagnostics ~~~~~~~~~~~ -- Slight refactoring of diagnostic script ``galytska23/select_variables_for_tigramite.py`` for generality and portability (`#3298 `__) `Valeriu Predoi `__ and `Evgenia Galytska `__ -- Allow custom variable grouping in diagnostic script ``monitor/multi_datasets.py`` (`#3343 `__) `Manuel Schlund `__ -- Extended monitor diagnostic with plot type variable vs. latitude (`#3340 `__) `ellensarauer `__ -- Add Hovmoeller Z vs. time plot to monitoring diagnostic (`#3345 `__) `cubeme `__ and `helgehr `__ -- Adding Hovmoeller time vs latlon plots to monitoring recipes (`#3341 `__) `Lukas `__ and `jeremykraftdlr `__ -- Implied heat transport new diagnostic (`#3177 `__) `Alejandro Bodas `__ -- Recipe changes for new statistics preprocessors (percentiles) (`#3351 `__) `Manuel Schlund `__ -- Add a realistic example recipe (`#3356 `__) `Peter9192 `__ and `Bouwe Andela `__ -- Support ``CenteredNorm`` in diagnostic monitor/multidatasets.py (`#3415 `__) `Manuel Schlund `__ -- Use new preprocessor statistics calling convention for recipe_easy_ipcc.yml (`#3418 `__) `Bouwe Andela `__ -- Adapt to changed style scheme name in matplotlib (`#3475 `__) `Klaus Zimmermann `__ -- Add version to dataset in python example recipe to avoid "Unknown file format" issue on JASMIN (`#3322 `__) `Emma Hogan `__ -- Add the dataset version in the heatwaves_coldwaves recipe to avoid the "Unknown file format" issue on JASMIN (`#3373 `__) `Emma Hogan `__ +- Slight refactoring of diagnostic script ``galytska23/select_variables_for_tigramite.py`` for generality and portability (:pull:`3298`) :user:`valeriupredoi` and :user:`egalytska` +- Allow custom variable grouping in diagnostic script ``monitor/multi_datasets.py`` (:pull:`3343`) :user:`schlunma` +- Extended monitor diagnostic with plot type variable vs. latitude (:pull:`3340`) :user:`ellensarauer` +- Add Hovmoeller Z vs. time plot to monitoring diagnostic (:pull:`3345`) :user:`cubeme` and :user:`helgehr` +- Adding Hovmoeller time vs latlon plots to monitoring recipes (:pull:`3341`) :user:`lukruh` and :user:`jeremykraftdlr` +- Implied heat transport new diagnostic (:pull:`3177`) :user:`mo-abodas` +- Recipe changes for new statistics preprocessors (percentiles) (:pull:`3351`) :user:`schlunma` +- Add a realistic example recipe (:pull:`3356`) :user:`Peter9191` and :user:`bouweandela` +- Support ``CenteredNorm`` in diagnostic monitor/multidatasets.py (:pull:`3415`) :user:`schlunma` +- Use new preprocessor statistics calling convention for recipe_easy_ipcc.yml (:pull:`3418`) :user:`bouweandela` +- Adapt to changed style scheme name in matplotlib (:pull:`3475`) :user:`zklaus` +- Add version to dataset in python example recipe to avoid "Unknown file format" issue on JASMIN (:pull:`3322`) :user:`ehogan` +- Add the dataset version in the heatwaves_coldwaves recipe to avoid the "Unknown file format" issue on JASMIN (:pull:`3373`) :user:`ehogan` Observational and re-analysis dataset support ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- Cmorizer for NOAA-CIRES-20CR v3 reanalysis (clt, clwvi, hus, prw, rlut, rlutcs, rsut, rsutcs) (`#3137 `__) `Lisa Bock `__ -- CMORizer for NASA MERRA reanalysis (`#3039 `__) `Axel Lauer `__ -- Download and formatting of NOAA marine boundary layer data for CH4 (NOAA-MBL-CH4) (`#3301 `__) `FranziskaWinterstein `__ -- Added CMORizer for MOBO-DIC2004-2019 (`#3297 `__) `Manuel Schlund `__ -- Update obs4MIPs dataset names in quantilebias recipe (`#3330 `__) `Romain Beucher `__ -- Update obs4MIPs dataset names in Schlund20esd recipe (`#3329 `__) `Romain Beucher `__ -- Update obs4MIPs dataset names in flatoipcc recipes (`#3328 `__) `Romain Beucher `__ -- Update obs4mips dataset names in clouds recipes (`#3326 `__) `Romain Beucher `__ -- Update Obs4MIPs dataset names in ECS recipes (`#3327 `__) `Romain Beucher `__ -- Update obs4mips dataset names in Bock et al recipes (`#3324 `__, `#3389 `__ and `#3473 `__) `Romain Beucher `__ and `Bouwe Andela `__ -- Update obs4mips dataset names in radiation budget recipe (`#3323 `__) `Romain Beucher `__ -- Update Obs4MIPs dataset names in perfmetrics CMIP5 recipe (`#3325 `__) `Romain Beucher `__ +- Cmorizer for NOAA-CIRES-20CR v3 reanalysis (clt, clwvi, hus, prw, rlut, rlutcs, rsut, rsutcs) (:pull:`3137`) :user:`LisaBock` +- CMORizer for NASA MERRA reanalysis (:pull:`3039`) :user:`axel-lauer` +- Download and formatting of NOAA marine boundary layer data for CH4 (NOAA-MBL-CH4) (:pull:`3301`) :user:`FranziskaWinterstein` +- Added CMORizer for MOBO-DIC2004-2019 (:pull:`3297`) :user:`schlunma` +- Update obs4MIPs dataset names in quantilebias recipe (:pull:`3330`) :user:`rbeucher` +- Update obs4MIPs dataset names in Schlund20esd recipe (:pull:`3329`) :user:`rbeucher` +- Update obs4MIPs dataset names in flatoipcc recipes (:pull:`3328`) :user:`rbeucher` +- Update obs4mips dataset names in clouds recipes (:pull:`3326`) :user:`rbeucher` +- Update Obs4MIPs dataset names in ECS recipes (:pull:`3327`) :user:`rbeucher` +- Update obs4mips dataset names in Bock et al recipes (:pull:`3324`, :pull:`3389` and :pull:`3473`) :user:`rbeucher` and :user:`bouweandela` +- Update obs4mips dataset names in radiation budget recipe (:pull:`3323`) :user:`rbeucher` +- Update Obs4MIPs dataset names in perfmetrics CMIP5 recipe (:pull:`3325`) :user:`rbeucher` Automatic testing ~~~~~~~~~~~~~~~~~ -- Made sklearn test backwards-compatible with sklearn < 1.3 (`#3285 `__) `Manuel Schlund `__ -- Update conda lock creation Github Action workflow and ship updated conda-lock file (`#3307 `__, `#3407 `__) `Valeriu Predoi `__ -- Compress all bash shell setters into one default option per GitHub Action workflow (`#3315 `__) `Valeriu Predoi `__ -- Remove deprecated option ``offline`` from CI configuration (`#3367 `__) `Manuel Schlund `__ +- Made sklearn test backwards-compatible with sklearn < 1.3 (:pull:`3285`) :user:`schlunma` +- Update conda lock creation Github Action workflow and ship updated conda-lock file (:pull:`3307`, :pull:`3407`) :user:`valeriupredoi` +- Compress all bash shell setters into one default option per GitHub Action workflow (:pull:`3315`) :user:`valeriupredoi` +- Remove deprecated option ``offline`` from CI configuration (:pull:`3367`) :user:`schlunma` Installation ~~~~~~~~~~~~ -- Use ESMValCore v2.10 (`#3486 `__) `Bouwe Andela `__ +- Use ESMValCore v2.10 (:pull:`3486`) :user:`bouweandela` Improvements ~~~~~~~~~~~~ -- Merge v2.9.x into main (`#3286 `__) `Manuel Schlund `__ -- Allow NCL unit conversion `kg s-1` -> `GtC y-1` (`#3300 `__) `Manuel Schlund `__ +- Merge v2.9.x into main (:pull:`3286`) :user:`schlunma` +- Allow NCL unit conversion `kg s-1` -> `GtC y-1` (:pull:`3300`) :user:`schlunma` .. _changelog-v2-9-0: @@ -156,70 +156,70 @@ This release includes Bug fixes ~~~~~~~~~ -- Fixed usage of ``work_dir`` in some CMORizer scripts (`#3192 `__) `Rémi Kazeroni `__ -- Realize data for scalar cube in `recipe_carvalhais14nat` to avert issue from dask latest (2023.6.0) (`#3265 `__) `Valeriu Predoi `__ -- Fix failing ``mlr`` diagnostic test by adding new scikit-learn default tag (`#3273 `__) `Rémi Kazeroni `__ -- Fix ordering of models in perfmetrics diagnostic script (`#3275 `__) `Lisa Bock `__ +- Fixed usage of ``work_dir`` in some CMORizer scripts (:pull:`3192`) :user:`remi-kazeroni` +- Realize data for scalar cube in `recipe_carvalhais14nat` to avert issue from dask latest (2023.6.0) (:pull:`3265`) :user:`valeriupredoi` +- Fix failing ``mlr`` diagnostic test by adding new scikit-learn default tag (:pull:`3273`) :user:`remi-kazeroni` +- Fix ordering of models in perfmetrics diagnostic script (:pull:`3275`) :user:`LisaBock` Documentation ~~~~~~~~~~~~~ -- Update release schedule after v2.8.0 (`#3138 `__) `Rémi Kazeroni `__ -- Added reference entry for Winterstein (`#3154 `__) `FranziskaWinterstein `__ -- Show logo on PyPI (`#3185 `__) `Valeriu Predoi `__ -- Add Release Managers for v2.9.0 and v2.10.0 (`#3184 `__) `Rémi Kazeroni `__ -- Fix readthedocs build with esmpy>=8.4.0 and missing ESMFMKFILE variable (`#3205 `__) `Valeriu Predoi `__ -- Add ESMValCore release v2.8.1 into the documentation (`#3235 `__) `Rémi Kazeroni `__ -- Modified links to the tutorial (`#3236 `__) `Rémi Kazeroni `__ -- Fix gitter badge in README (`#3258 `__) `Rémi Kazeroni `__ -- Add release notes for v2.9.0 (`#3266 `__) `Bouwe Andela `__ +- Update release schedule after v2.8.0 (:pull:`3138`) :user:`remi-kazeroni` +- Added reference entry for Winterstein (:pull:`3154`) :user:`FranziskaWinterstein` +- Show logo on PyPI (:pull:`3185`) :user:`valeriupredoi` +- Add Release Managers for v2.9.0 and v2.10.0 (:pull:`3184`) :user:`remi-kazeroni` +- Fix readthedocs build with esmpy>=8.4.0 and missing ESMFMKFILE variable (:pull:`3205`) :user:`valeriupredoi` +- Add ESMValCore release v2.8.1 into the documentation (:pull:`3235`) :user:`remi-kazeroni` +- Modified links to the tutorial (:pull:`3236`) :user:`remi-kazeroni` +- Fix gitter badge in README (:pull:`3258`) :user:`remi-kazeroni` +- Add release notes for v2.9.0 (:pull:`3266`) :user:`bouweandela` Diagnostics ~~~~~~~~~~~ -- New plot_type 1d_profile in monitor (`#3178 `__) `FranziskaWinterstein `__ -- Add Seaborn diagnostic (`#3155 `__) `Manuel Schlund `__ -- New recipe and diagnostic for Arctic-midlatitude research (`#3021 `__) `Evgenia Galytska `__ -- Generate climatology on the fly for AutoAssess soil moisture (`#3197 `__) `Alistair Sellar `__ -- Remove "fx_variables" from recipe_tebaldi21esd.yml (`#3211 `__) `Birgit Hassler `__ -- Remove "fx_variables" from ipccwg1ar5ch9 recipes (`#3215 `__) `katjaweigel `__ -- Remove "fx_variables" from recipe_wenzel14jgr.yml (`#3212 `__) `Birgit Hassler `__ -- Update obs4MIPs dataset to the current naming scheme in recipe_smpi.yml (`#2991 `__) `Bouwe Andela `__ -- Fixed pandas diagnostics for pandas>=2.0.0 (`#3209 `__) `Manuel Schlund `__ -- Update recipe_impact.yml to work with newer versions of `pandas` (`#3220 `__) `Bouwe Andela `__ -- Add variable long names to provenance record in monitoring diagnostics (`#3222 `__) `Brei Soliño `__ +- New plot_type 1d_profile in monitor (:pull:`3178`) :user:`FranziskaWinterstein` +- Add Seaborn diagnostic (:pull:`3155`) :user:`schlunma` +- New recipe and diagnostic for Arctic-midlatitude research (:pull:`3021`) :user:`egalytska` +- Generate climatology on the fly for AutoAssess soil moisture (:pull:`3197`) :user:`alistairsellar` +- Remove "fx_variables" from recipe_tebaldi21esd.yml (:pull:`3211`) :user:`hb326` +- Remove "fx_variables" from ipccwg1ar5ch9 recipes (:pull:`3215`) :user:`katjaweigel` +- Remove "fx_variables" from recipe_wenzel14jgr.yml (:pull:`3212`) :user:`hb326` +- Update obs4MIPs dataset to the current naming scheme in recipe_smpi.yml (:pull:`2991`) :user:`bouweandela` +- Fixed pandas diagnostics for pandas>=2.0.0 (:pull:`3209`) :user:`schlunma` +- Update recipe_impact.yml to work with newer versions of `pandas` (:pull:`3220`) :user:`bouweandela` +- Add variable long names to provenance record in monitoring diagnostics (:pull:`3222`) :user:`bsolino` Observational and re-analysis dataset support ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- Add CMORizer for GPCP-SG (pr) (`#3150 `__) `FranziskaWinterstein `__ -- Extension of NASA MERRA2 CMORizer (cl, cli, clivi, clw, clwvi) (`#3167 `__) `Axel Lauer `__ +- Add CMORizer for GPCP-SG (pr) (:pull:`3150`) :user:`FranziskaWinterstein` +- Extension of NASA MERRA2 CMORizer (cl, cli, clivi, clw, clwvi) (:pull:`3167`) :user:`axel-lauer` Automatic testing ~~~~~~~~~~~~~~~~~ -- Add a CircleCI-testing-specific ``recipe_python_for_CI.yml`` to avoid calling geolocator/Nominatim over CI (`#3159 `__) `Valeriu Predoi `__ -- Check if Python minor version changed after Julia install in development installation test (`#3213 `__) `Valeriu Predoi `__ -- Fix tests using deprecated ``esmvalcore._config`` module that has been removed in ESMValCore v2.9 (`#3204 `__) `Valeriu Predoi `__ +- Add a CircleCI-testing-specific ``recipe_python_for_CI.yml`` to avoid calling geolocator/Nominatim over CI (:pull:`3159`) :user:`valeriupredoi` +- Check if Python minor version changed after Julia install in development installation test (:pull:`3213`) :user:`valeriupredoi` +- Fix tests using deprecated ``esmvalcore._config`` module that has been removed in ESMValCore v2.9 (:pull:`3204`) :user:`valeriupredoi` Installation ~~~~~~~~~~~~ -- Add support for Python=3.11 (`#3173 `__) `Valeriu Predoi `__ -- Drop python=3.8 support (`#3193 `__) `Valeriu Predoi `__ -- Repair generation of conda lock files (`#3148 `__) `Valeriu Predoi `__ -- Modernize lock creation script and repair lock generation (`#3174 `__) `Valeriu Predoi `__ -- Pin numpy !=1.24.3 due to severe masking bug (`#3182 `__) `Valeriu Predoi `__ -- Update xesmf to versions >= 0.4.0 (`#2728 `__) `Klaus Zimmermann `__ -- Update esmpy import for ESMF version 8.4.0 or larger (`#3188 `__) `Valeriu Predoi `__ -- Relax the pin on iris to allow the use of older versions for performance reasons (`#3270 `__) `Bouwe Andela `__ -- Use ESMValCore v2.9.0 (`#3274 `__) `Bouwe Andela `__ +- Add support for Python=3.11 (:pull:`3173`) :user:`valeriupredoi` +- Drop python=3.8 support (:pull:`3193`) :user:`valeriupredoi` +- Repair generation of conda lock files (:pull:`3148`) :user:`valeriupredoi` +- Modernize lock creation script and repair lock generation (:pull:`3174`) :user:`valeriupredoi` +- Pin numpy !=1.24.3 due to severe masking bug (:pull:`3182`) :user:`valeriupredoi` +- Update xesmf to versions >= 0.4.0 (:pull:`2728`) :user:`zklaus` +- Update esmpy import for ESMF version 8.4.0 or larger (:pull:`3188`) :user:`valeriupredoi` +- Relax the pin on iris to allow the use of older versions for performance reasons (:pull:`3270`) :user:`bouweandela` +- Use ESMValCore v2.9.0 (:pull:`3274`) :user:`bouweandela` Improvements ~~~~~~~~~~~~ -- Update pre-commit hooks (`#3189 `__) `Bouwe Andela `__ -- Add support for using a dask distributed scheduler (`#3151 `__) `Bouwe Andela `__ +- Update pre-commit hooks (:pull:`3189`) :user:`bouweandela` +- Add support for using a dask distributed scheduler (:pull:`3151`) :user:`bouweandela` .. _changelog-v2-8-0: @@ -262,22 +262,22 @@ Backwards incompatible changes Please read the descriptions of the linked pull requests for detailed upgrade instructions. - Deprecated features scheduled for removal in v2.8.0 or earlier have now been removed - (`#2941 `__) - `Manuel Schlund `__. + (:pull:`2941`) + :user:`schlunma`. Removed ``esmvaltool.iris_helpers.var_name_constraint`` (has been deprecated in v2.6.0; please use :class:`iris.NameConstraint` with the keyword argument ``var_name`` instead). Removed `write_netcdf` and `write_plots` from `recipe_filer.py`. - No files from the ``native6`` project will be found if a non-existent version of a dataset is specified (`#3041 `_) - `Rémi Kazeroni `__. + :user:`remi-kazeroni`. The tool now searches for exact ``version`` of ``native6`` datasets. Therefore, it is necessary to make sure that the version number in the directory tree matches with the version number in the recipe to find the files. - The conversion of precipitation units from monitoring diagnostic is now done at the preprocessor stage (`#3049 `_) - `Manuel Schlund `__. + :user:`schlunma`. To use the unit conversion for precipitation in the new version of this diagnostic, add it as a preprocessor for the precipitation dataset to the recipe. @@ -285,145 +285,145 @@ Please read the descriptions of the linked pull requests for detailed upgrade in Bug fixes ~~~~~~~~~ -- Fix for provenance records from `seaice_tsline.ncl` (`#2938 `__) `Axel Lauer `__ -- Fix in `validation.py` for resolving datasets with identical names by using distinct aliases (`#2955 `__) `FranziskaWinterstein `__ -- Bugfix: masking of non-significant differences in `zonal.ncl` (perfmetrics) (`#2957 `__) `Axel Lauer `__ -- Fix typo in `perfmetrics/main.ncl` to add tropopause (`#2966 `__) `FranziskaWinterstein `__ -- Fix .png bug in `wenzel16nat` diagnostics (`#2976 `__) `Axel Lauer `__ -- `Recipe_ocean_Landschuetzer2016`: Fix typo in filename to run model vs OBS diagnostics (`#2997 `__) `Tomas Torsvik `__ -- Fix read_cmor in NCL utilities (`#3007 `__) `Axel Lauer `__ -- Removed usages of deprecated features that cause diagnostic crashes (`#3009 `__) `Manuel Schlund `__ -- Replace removed `matplotlib.pyplot.savefig` option `additional_artists` (`#3075 `__) `Manuel Schlund `__ -- Added missing comma to `sommer17joss.bibtex` (`#3078 `__) `Manuel Schlund `__ -- Fix call of output_type in `aux_plotting.ncl` (`#3083 `__) `Lisa Bock `__ -- Remove colorbar from `bbox_extra_artists` (`#3087 `__) `Manuel Schlund `__ -- Fix `MPI-ESM1-2-HR` entries in `recipe_tebaldi21esd` (`#3093 `__) `Rémi Kazeroni `__ -- Fix bug in provenance writing of `perfmetrics` recipes v2.8.0 (`#3098 `__) `Axel Lauer `__ -- Fix `recipe_sea_surface_salinity` for v2.8 (`#3102 `__) `sloosvel `__ -- Fix variable `short_name` and metadata for ESACCI-LST CMORizer (`#3104 `__) `Rémi Kazeroni `__ -- Fix `recipe_carvalhais14`: replace outline patch with splines (`#3111 `__) `Valeriu Predoi `__ -- Replace deprecated function `cm.register_cmap` with `mpl.colormaps.register` for `recipe_ arctic_ocean` (`#3112 `__) `Tomas Torsvik `__ -- Fix `recipe_extract_shape.yml` (lacking caption for provenance) (`#3126 `__) `Valeriu Predoi `__ +- Fix for provenance records from `seaice_tsline.ncl` (:pull:`2938`) :user:`axel-lauer` +- Fix in `validation.py` for resolving datasets with identical names by using distinct aliases (:pull:`2955`) :user:`FranziskaWinterstein` +- Bugfix: masking of non-significant differences in `zonal.ncl` (perfmetrics) (:pull:`2957`) :user:`axel-lauer` +- Fix typo in `perfmetrics/main.ncl` to add tropopause (:pull:`2966`) :user:`FranziskaWinterstein` +- Fix .png bug in `wenzel16nat` diagnostics (:pull:`2976`) :user:`axel-lauer` +- `Recipe_ocean_Landschuetzer2016`: Fix typo in filename to run model vs OBS diagnostics (:pull:`2997`) :user:`TomasTorsvik` +- Fix read_cmor in NCL utilities (:pull:`3007`) :user:`axel-lauer` +- Removed usages of deprecated features that cause diagnostic crashes (:pull:`3009`) :user:`schlunma` +- Replace removed `matplotlib.pyplot.savefig` option `additional_artists` (:pull:`3075`) :user:`schlunma` +- Added missing comma to `sommer17joss.bibtex` (:pull:`3078`) :user:`schlunma` +- Fix call of output_type in `aux_plotting.ncl` (:pull:`3083`) :user:`LisaBock` +- Remove colorbar from `bbox_extra_artists` (:pull:`3087`) :user:`schlunma` +- Fix `MPI-ESM1-2-HR` entries in `recipe_tebaldi21esd` (:pull:`3093`) :user:`remi-kazeroni` +- Fix bug in provenance writing of `perfmetrics` recipes v2.8.0 (:pull:`3098`) :user:`axel-lauer` +- Fix `recipe_sea_surface_salinity` for v2.8 (:pull:`3102`) :user:`sloosvel` +- Fix variable `short_name` and metadata for ESACCI-LST CMORizer (:pull:`3104`) :user:`remi-kazeroni` +- Fix `recipe_carvalhais14`: replace outline patch with splines (:pull:`3111`) :user:`valeriupredoi` +- Replace deprecated function `cm.register_cmap` with `mpl.colormaps.register` for `recipe_ arctic_ocean` (:pull:`3112`) :user:`TomasTorsvik` +- Fix `recipe_extract_shape.yml` (lacking caption for provenance) (:pull:`3126`) :user:`valeriupredoi` Community ~~~~~~~~~ -- Update documentation on pre-installed versions on HPC clusters (`#2934 `__) `Rémi Kazeroni `__ +- Update documentation on pre-installed versions on HPC clusters (:pull:`2934`) :user:`remi-kazeroni` Deprecations ~~~~~~~~~~~~ -- Remove radiation recipes that have been superseded by :ref:`recipe_radiation_budget ` along with associated diagnostic scripts (`#3115 `_) `Alistair Sellar `__ +- Remove radiation recipes that have been superseded by :ref:`recipe_radiation_budget ` along with associated diagnostic scripts (`#3115 `_) :user:`alistairsellar` Documentation ~~~~~~~~~~~~~ -- Backward compatibility policy (`#2879 `__) `Alistair Sellar `__ -- Suppress installing and reinstalling dependencies with pip during readthedocs builds (`#2913 `__) `Valeriu Predoi `__ -- Update installation instructions (`#2939 `__) `Bouwe Andela `__ -- Update documentation for `recipe_extreme_index` (`#2951 `__) `katjaweigel `__ -- Update documentation and `recipe_check_obs` (ERA5) (`#2952 `__) `Axel Lauer `__ -- Updated ICON dataset entry in documentation (`#2954 `__) `Manuel Schlund `__ -- Add Franziska Winterstein as collaborator in CITATION file (`#3001 `__) `Valeriu Predoi `__ -- Update release schedule for v2.7.0 and v2.8.0 (`#3010 `__) `Rémi Kazeroni `__ -- Add ESMValCore Bugfix release v2.7.1 to the release overview table (`#3028 `__) `Valeriu Predoi `__ -- Detailed instructions for release procedure: running recipes and analyzing the output (`#3032 `__) `Valeriu Predoi `__ -- Link backward compatibility policy to top level of ESMValCore changelog (`#3052 `__) `Alistair Sellar `__ -- Update release instructions (`#3066 `__) `Rémi Kazeroni `__ -- Updated docs and tests regarding new `search_esgf` option (`#3069 `__) `Manuel Schlund `__ -- Update script to draft release notes (`#3070 `__) `Rémi Kazeroni `__ -- Synchronize documentation table of contents with ESMValCore (`#3073 `__) `Bouwe Andela `__ -- Update environment handling in release documentation (`#3096 `__) `Rémi Kazeroni `__ -- Clarify use (or not) of Jasmin climatology files by soil moisture & permafrost recipes (`#3103 `__) `Alistair Sellar `__ -- Add link to recipe portal in the gallery page (`#3113 `__) `Rémi Kazeroni `__ -- Improve stratosphere documentation (`#3114 `__) `Alistair Sellar `__ -- Added note to documentation that not all datasets used in `schlund20jgr` recipes are available on ESGF (`#3121 `__) `Manuel Schlund `__ -- Draft changelog for `v2.8.0` (`#3124 `__) `Rémi Kazeroni `__ -- Documenting broken recipes after recipe testing for releases (`#3129 `__) `Rémi Kazeroni `__ -- Increase ESMValTool version to 2.8.0 and update release dates (`#3136 `__) `Rémi Kazeroni `__ +- Backward compatibility policy (:pull:`2879`) :user:`alistairsellar` +- Suppress installing and reinstalling dependencies with pip during readthedocs builds (:pull:`2913`) :user:`valeriupredoi` +- Update installation instructions (:pull:`2939`) :user:`bouweandela` +- Update documentation for `recipe_extreme_index` (:pull:`2951`) :user:`katjaweigel` +- Update documentation and `recipe_check_obs` (ERA5) (:pull:`2952`) :user:`axel-lauer` +- Updated ICON dataset entry in documentation (:pull:`2954`) :user:`schlunma` +- Add Franziska Winterstein as collaborator in CITATION file (:pull:`3001`) :user:`valeriupredoi` +- Update release schedule for v2.7.0 and v2.8.0 (:pull:`3010`) :user:`remi-kazeroni` +- Add ESMValCore Bugfix release v2.7.1 to the release overview table (:pull:`3028`) :user:`valeriupredoi` +- Detailed instructions for release procedure: running recipes and analyzing the output (:pull:`3032`) :user:`valeriupredoi` +- Link backward compatibility policy to top level of ESMValCore changelog (:pull:`3052`) :user:`alistairsellar` +- Update release instructions (:pull:`3066`) :user:`remi-kazeroni` +- Updated docs and tests regarding new `search_esgf` option (:pull:`3069`) :user:`schlunma` +- Update script to draft release notes (:pull:`3070`) :user:`remi-kazeroni` +- Synchronize documentation table of contents with ESMValCore (:pull:`3073`) :user:`bouweandela` +- Update environment handling in release documentation (:pull:`3096`) :user:`remi-kazeroni` +- Clarify use (or not) of Jasmin climatology files by soil moisture & permafrost recipes (:pull:`3103`) :user:`alistairsellar` +- Add link to recipe portal in the gallery page (:pull:`3113`) :user:`remi-kazeroni` +- Improve stratosphere documentation (:pull:`3114`) :user:`alistairsellar` +- Added note to documentation that not all datasets used in `schlund20jgr` recipes are available on ESGF (:pull:`3121`) :user:`schlunma` +- Draft changelog for `v2.8.0` (:pull:`3124`) :user:`remi-kazeroni` +- Documenting broken recipes after recipe testing for releases (:pull:`3129`) :user:`remi-kazeroni` +- Increase ESMValTool version to 2.8.0 and update release dates (:pull:`3136`) :user:`remi-kazeroni` Diagnostics ~~~~~~~~~~~ -- Cloud diagnostics for Lauer et al. (2023) (`#2750 `__) `Axel Lauer `__ -- Splitting of `flato13ipcc.yml` into separate recipes and adding recipes for regional Figures (`#2156 `__) `katjaweigel `__ -- Adding IPCC AR6 Chapter 3 Figure 3.43 - Pattern Correlation (`#2772 `__) `Lisa Bock `__ -- Adding IPCC AR6 Chapter 3 Fig. 3.42 - Perfmetrics (`#2856 `__) `Lisa Bock `__ -- Comment missing datasets and remove deprecated argument in `recipe_climate_change_hotspot` (`#2920 `__) `sloosvel `__ -- Add plot type `annual_cycle` to multi-dataset monitoring diagnostic (`#2922 `__) `Manuel Schlund `__ -- Adding IPCC AR6 Chapter 3 Fig. 3.19 - Speed-Up Of Zonal Mean Wind (`#2984 `__) `Lisa Bock `__ -- Adding IPCC AR6 Chapter 3 Fig. 3.9 - Attribution (`#2986 `__) `Lisa Bock `__ -- Obs4mips CERES-EBAF: update version to latest available through esgf in `recipe_validation.yml` (`#3002 `__) `Valeriu Predoi `__ -- Improve flexibility of cloud diagnostics (`#3016 `__) `Axel Lauer `__ -- Let `recipe_impact.yml` write a CSV file that can directly be used in C4I portal (`#2258 `__) `Peter Kalverla `__ -- Fix version numbers of native6 datasets in recipes (`#3041`_) `Rémi Kazeroni `__ -- Removed automatic conversion of precipitation units from monitoring diagnostic (`#3049`_) `Manuel Schlund `__. -- Updated recipes for ESMValCore v2.8 (`#3064 `__) `Manuel Schlund `__ -- Fix `cos22esd` for release of 2.8 (`#3097 `__) `sloosvel `__ -- Diagnostic for `recipe_autoassess_stratosphere.yml`: remove unused feature incompatible with Matplotlib=3.7.1 (`#3089 `__) `Valeriu Predoi `__ -- Fix numpy deprecation in `hype` diagnostic (`#3101 `__) `Peter Kalverla `__ -- Remove superseded radiation recipes (`#3115`_) `Alistair Sellar `__ -- Removed `fx_variables` in `recipe_mpqb_xch4` and `recipe_lauer22jclim_fig8` (`#3117 `__) `Axel Lauer `__ -- Update Python example recipe (`#3119 `__) `Bouwe Andela `__ -- Updated figure settings to account for newer matplotlib version (`#3133 `__) `katjaweigel `__ +- Cloud diagnostics for Lauer et al. (2023) (:pull:`2750`) :user:`axel-lauer` +- Splitting of `flato13ipcc.yml` into separate recipes and adding recipes for regional Figures (:pull:`2156`) :user:`katjaweigel` +- Adding IPCC AR6 Chapter 3 Figure 3.43 - Pattern Correlation (:pull:`2772`) :user:`LisaBock` +- Adding IPCC AR6 Chapter 3 Fig. 3.42 - Perfmetrics (:pull:`2856`) :user:`LisaBock` +- Comment missing datasets and remove deprecated argument in `recipe_climate_change_hotspot` (:pull:`2920`) :user:`sloosvel` +- Add plot type `annual_cycle` to multi-dataset monitoring diagnostic (:pull:`2922`) :user:`schlunma` +- Adding IPCC AR6 Chapter 3 Fig. 3.19 - Speed-Up Of Zonal Mean Wind (:pull:`2984`) :user:`LisaBock` +- Adding IPCC AR6 Chapter 3 Fig. 3.9 - Attribution (:pull:`2986`) :user:`LisaBock` +- Obs4mips CERES-EBAF: update version to latest available through esgf in `recipe_validation.yml` (:pull:`3002`) :user:`valeriupredoi` +- Improve flexibility of cloud diagnostics (:pull:`3016`) :user:`axel-lauer` +- Let `recipe_impact.yml` write a CSV file that can directly be used in C4I portal (:pull:`2258`) :user:`Peter9192` +- Fix version numbers of native6 datasets in recipes (`#3041`_) :user:`remi-kazeroni` +- Removed automatic conversion of precipitation units from monitoring diagnostic (`#3049`_) :user:`schlunma`. +- Updated recipes for ESMValCore v2.8 (:pull:`3064`) :user:`schlunma` +- Fix `cos22esd` for release of 2.8 (:pull:`3097`) :user:`sloosvel` +- Diagnostic for `recipe_autoassess_stratosphere.yml`: remove unused feature incompatible with Matplotlib=3.7.1 (:pull:`3089`) :user:`valeriupredoi` +- Fix numpy deprecation in `hype` diagnostic (:pull:`3101`) :user:`Peter9192` +- Remove superseded radiation recipes (`#3115`_) :user:`alistairsellar` +- Removed `fx_variables` in `recipe_mpqb_xch4` and `recipe_lauer22jclim_fig8` (:pull:`3117`) :user:`axel-lauer` +- Update Python example recipe (:pull:`3119`) :user:`bouweandela` +- Updated figure settings to account for newer matplotlib version (:pull:`3133`) :user:`katjaweigel` Observational and re-analysis dataset support ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- Earth System Data Cube (ESDC) cmorizer (`#2799 `__) `Brei Soliño `__ -- Added CMORizer for Landschützer2020 (spco2) (`#2908 `__) `Manuel Schlund `__ -- Added CMORizer for MOBO-DIC_MPIM (dissic) (`#2909 `__) `Manuel Schlund `__ -- Added CMORizer for OceanSODA-ETHZ (areacello, co3os, dissicos, fgco2, phos, spco2, talkos) (`#2915 `__) `Manuel Schlund `__ -- Extension of ERA-Interim CMORizer (cl, cli, clw, lwp, rlut, rlutcs, rsut, rsutcs) (`#2923 `__) `Axel Lauer `__ -- Add JRA-25 cmorizer (clt, hus, prw, rlut, rlutcs, rsut, rsutcs) (`#2927 `__) `Lisa Bock `__ -- New CMORizers for datasets from the NCEP family (NCEP-DOE-R2, NCEP-NCAR-R1, NOAA-CIRES-20CR) (`#2931 `__) `Birgit Hassler `__ -- Updates to the recipes that use the NCEP reanalysis dataset (`#2932 `__) `Birgit Hassler `__ -- MERRA2 cmorizer convert vertical level coordinate units from hPa to Pa (`#3003 `__) `Valeriu Predoi `__ -- MERRA2 cmorizer set UNLIMITED time coordinate (`#3006 `__) `Valeriu Predoi `__ -- Added CMORizers for TCOM-CH4 (CH4) and TCOM-N2O (N2O) (`#3014 `__) `Manuel Schlund `__ -- Update HadISST cmorizer to include recent years (`#3027 `__) `Rémi Kazeroni `__ +- Earth System Data Cube (ESDC) cmorizer (:pull:`2799`) :user:`bsolino` +- Added CMORizer for Landschützer2020 (spco2) (:pull:`2908`) :user:`schlunma` +- Added CMORizer for MOBO-DIC_MPIM (dissic) (:pull:`2909`) :user:`schlunma` +- Added CMORizer for OceanSODA-ETHZ (areacello, co3os, dissicos, fgco2, phos, spco2, talkos) (:pull:`2915`) :user:`schlunma` +- Extension of ERA-Interim CMORizer (cl, cli, clw, lwp, rlut, rlutcs, rsut, rsutcs) (:pull:`2923`) :user:`axel-lauer` +- Add JRA-25 cmorizer (clt, hus, prw, rlut, rlutcs, rsut, rsutcs) (:pull:`2927`) :user:`LisaBock` +- New CMORizers for datasets from the NCEP family (NCEP-DOE-R2, NCEP-NCAR-R1, NOAA-CIRES-20CR) (:pull:`2931`) :user:`hb326` +- Updates to the recipes that use the NCEP reanalysis dataset (:pull:`2932`) :user:`hb326` +- MERRA2 cmorizer convert vertical level coordinate units from hPa to Pa (:pull:`3003`) :user:`valeriupredoi` +- MERRA2 cmorizer set UNLIMITED time coordinate (:pull:`3006`) :user:`valeriupredoi` +- Added CMORizers for TCOM-CH4 (CH4) and TCOM-N2O (N2O) (:pull:`3014`) :user:`schlunma` +- Update HadISST cmorizer to include recent years (:pull:`3027`) :user:`remi-kazeroni` Automatic testing ~~~~~~~~~~~~~~~~~ -- Add DKRZ/Levante batch scripts for release recipe running (`#2883 `__) `Valeriu Predoi `__ -- Remove `pytest-flake8` and call the use of `flake8` straight (`#2904 `__) `Valeriu Predoi `__ -- Unpin `flake8` (`#2937 `__) `Valeriu Predoi `__ -- Fix failing tests that use deprecated feature of `sklearn` (`#2961 `__) `Manuel Schlund `__ -- Fix recipe loading tests for esmvalcore before and after version 2.8 (`#3020 `__) `Valeriu Predoi `__ -- Update recipe load test for v2.8 (`#3040 `__) `Bouwe Andela `__ -- Test running recipes with the development version of ESMValCore (`#3072 `__) `Bouwe Andela `__ -- Fix `test_naming.py` so it doesn't let through directories that need be ignored (`#3082 `__) `Valeriu Predoi `__ -- Conda environment files for interim use of `esmvalcore=2.8.0rc1` (`#3090 `__) `Valeriu Predoi `__ -- Move `flake8` check to a step separate from installation on CircleCI (`#3105 `__) `Bouwe Andela `__ -- Recreate conda lock file to harpoon esmvalcore=2.8.0rc1 (`#3108 `__) `Valeriu Predoi `__ -- Update batch script generation to run all recipes in one command (`#3130 `__) `Rémi Kazeroni `__ +- Add DKRZ/Levante batch scripts for release recipe running (:pull:`2883`) :user:`valeriupredoi` +- Remove `pytest-flake8` and call the use of `flake8` straight (:pull:`2904`) :user:`valeriupredoi` +- Unpin `flake8` (:pull:`2937`) :user:`valeriupredoi` +- Fix failing tests that use deprecated feature of `sklearn` (:pull:`2961`) :user:`schlunma` +- Fix recipe loading tests for esmvalcore before and after version 2.8 (:pull:`3020`) :user:`valeriupredoi` +- Update recipe load test for v2.8 (:pull:`3040`) :user:`bouweandela` +- Test running recipes with the development version of ESMValCore (:pull:`3072`) :user:`bouweandela` +- Fix `test_naming.py` so it doesn't let through directories that need be ignored (:pull:`3082`) :user:`valeriupredoi` +- Conda environment files for interim use of `esmvalcore=2.8.0rc1` (:pull:`3090`) :user:`valeriupredoi` +- Move `flake8` check to a step separate from installation on CircleCI (:pull:`3105`) :user:`bouweandela` +- Recreate conda lock file to harpoon esmvalcore=2.8.0rc1 (:pull:`3108`) :user:`valeriupredoi` +- Update batch script generation to run all recipes in one command (:pull:`3130`) :user:`remi-kazeroni` Installation ~~~~~~~~~~~~ -- Merge release branch `release_270stable` in main so we pick up unsquashed commits and set the correct version 2.7.0 for main (and up version in CITATION.cff) (`#2896 `__) `Valeriu Predoi `__ -- Unpin `NetCDF4` (`#2929 `__) `Valeriu Predoi `__ -- Unpin `cf-units` (`#2930 `__) `Bouwe Andela `__ -- Set the version number on the development branches to one minor version more than the last release (`#2964 `__) `Bouwe Andela `__ -- Pin `shapely<2.0.0` for linux64 (`#2970 `__) `Valeriu Predoi `__ -- Unpin `matplotlib` (`#3068 `__) `Valeriu Predoi `__ -- Add `packaging` as direct dependency to ESMValTool (`#3099 `__) `Valeriu Predoi `__ -- Re-pin sphinx to latest (6.1.3) and add nbsphinx to the environment (`#3118 `__) `Valeriu Predoi `__ -- Conda environment files for esmvalcore=2.8.0rc2 (`#3120 `__) `Rémi Kazeroni `__ -- Remove rc (release candidates) conda channel and re-pin esmvalcore to new stable 2.8 (`#3131 `__) `Valeriu Predoi `__ +- Merge release branch `release_270stable` in main so we pick up unsquashed commits and set the correct version 2.7.0 for main (and up version in CITATION.cff) (:pull:`2896`) :user:`valeriupredoi` +- Unpin `NetCDF4` (:pull:`2929`) :user:`valeriupredoi` +- Unpin `cf-units` (:pull:`2930`) :user:`bouweandela` +- Set the version number on the development branches to one minor version more than the last release (:pull:`2964`) :user:`bouweandela` +- Pin `shapely<2.0.0` for linux64 (:pull:`2970`) :user:`valeriupredoi` +- Unpin `matplotlib` (:pull:`3068`) :user:`valeriupredoi` +- Add `packaging` as direct dependency to ESMValTool (:pull:`3099`) :user:`valeriupredoi` +- Re-pin sphinx to latest (6.1.3) and add nbsphinx to the environment (:pull:`3118`) :user:`valeriupredoi` +- Conda environment files for esmvalcore=2.8.0rc2 (:pull:`3120`) :user:`remi-kazeroni` +- Remove rc (release candidates) conda channel and re-pin esmvalcore to new stable 2.8 (:pull:`3131`) :user:`valeriupredoi` Improvements ~~~~~~~~~~~~ -- Read `config-user.yml` using `esmvalcore.config` module (`#2736 `__) `Bouwe Andela `__ -- Make results of recipes `schlund20jgr_*.yml` deterministic (`#2900 `__) `Manuel Schlund `__ -- `Recipe_gier2020bg.yml`: add sorting to SA barplot (`#2905 `__) `Bettina Gier `__ -- Add the outline of a climatological tropopause to the zonalmean_profile plots (`#2947 `__) `FranziskaWinterstein `__ -- Update data finder imports (`#2958 `__) `Bouwe Andela `__ -- Add support for the upcoming ESMValCore v2.8 release to the recipe filler tool (`#2995 `__) `Bouwe Andela `__ -- Updated monitoring diagnostics with netCDF output and additional logging (`#3029 `__) `Manuel Schlund `__ -- Use aliases in perfmetrics (`#3058 `__) `FranziskaWinterstein `__ +- Read `config-user.yml` using `esmvalcore.config` module (:pull:`2736`) :user:`bouweandela` +- Make results of recipes `schlund20jgr_*.yml` deterministic (:pull:`2900`) :user:`schlunma` +- `Recipe_gier2020bg.yml`: add sorting to SA barplot (:pull:`2905`) :user:`bettina-gier` +- Add the outline of a climatological tropopause to the zonalmean_profile plots (:pull:`2947`) :user:`FranziskaWinterstein` +- Update data finder imports (:pull:`2958`) :user:`bouweandela` +- Add support for the upcoming ESMValCore v2.8 release to the recipe filler tool (:pull:`2995`) :user:`bouweandela` +- Updated monitoring diagnostics with netCDF output and additional logging (:pull:`3029`) :user:`schlunma` +- Use aliases in perfmetrics (:pull:`3058`) :user:`FranziskaWinterstein` .. _changelog-v2-7-0: @@ -441,81 +441,81 @@ Highlights Backwards incompatible changes ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- Remove installation of R dependencies from the help message (`#2761 `__) `Rémi Kazeroni `__ +- Remove installation of R dependencies from the help message (:pull:`2761`) :user:`remi-kazeroni` Bug fixes ~~~~~~~~~ -- Fix misplaced provenance records from IPCC AR5 Ch.12 diags (`#2758 `__) `Axel Lauer `__ -- Fix `esmvaltool.utils.testing.regression.compare` module to run with Python<3.10 too (`#2778 `__) `Valeriu Predoi `__ -- Fixed small bug that could lead to wrong pr units in `monitor/multi_datasets.py` (`#2788 `__) `Manuel Schlund `__ -- Pin `xgboost>1.6.1` so we avert documentation failing to build with `1.6.1` (`#2780 `__) `Valeriu Predoi `__ -- Pin `matplotlib-base<3.6.0` to avoid conflict from `mapgenerator` that fails doc builds (`#2830 `__) `Valeriu Predoi `__ -- Fixed wrong latitudes in NDP CMORizer (`#2832 `__) `Manuel Schlund `__ -- Fix indexer in Autoassess supermeans module use a tuple of `(slice(), idx, idx)` (`#2838 `__) `Valeriu Predoi `__ -- Replace xarray ufuncs with bogstandard numpy in weighting/climwip/calibrate_sigmas.py (`#2848 `__) `Valeriu Predoi `__ -- Fix units MERRA2 CMORizer (`#2850 `__) `Axel Lauer `__ -- Fix bug when using log-scale y-axis for ocean transects. (`#2862 `__) `Tomas Torsvik `__ +- Fix misplaced provenance records from IPCC AR5 Ch.12 diags (:pull:`2758`) :user:`axel-lauer` +- Fix `esmvaltool.utils.testing.regression.compare` module to run with Python<3.10 too (:pull:`2778`) :user:`valeriupredoi` +- Fixed small bug that could lead to wrong pr units in `monitor/multi_datasets.py` (:pull:`2788`) :user:`schlunma` +- Pin `xgboost>1.6.1` so we avert documentation failing to build with `1.6.1` (:pull:`2780`) :user:`valeriupredoi` +- Pin `matplotlib-base<3.6.0` to avoid conflict from `mapgenerator` that fails doc builds (:pull:`2830`) :user:`valeriupredoi` +- Fixed wrong latitudes in NDP CMORizer (:pull:`2832`) :user:`schlunma` +- Fix indexer in Autoassess supermeans module use a tuple of `(slice(), idx, idx)` (:pull:`2838`) :user:`valeriupredoi` +- Replace xarray ufuncs with bogstandard numpy in weighting/climwip/calibrate_sigmas.py (:pull:`2848`) :user:`valeriupredoi` +- Fix units MERRA2 CMORizer (:pull:`2850`) :user:`axel-lauer` +- Fix bug when using log-scale y-axis for ocean transects. (:pull:`2862`) :user:`TomasTorsvik` Community ~~~~~~~~~ -- Add MO-paths to config file (`#2784 `__) `mo-tgeddes `__ +- Add MO-paths to config file (:pull:`2784`) `mo-tgeddes `__ Deprecations ~~~~~~~~~~~~ -- Recipe `recipe_esacci_oc.yml` replace with new regrid scheme `nearest_extrapolate` (`#2841 `__) `Valeriu Predoi `__ +- Recipe `recipe_esacci_oc.yml` replace with new regrid scheme `nearest_extrapolate` (:pull:`2841`) :user:`valeriupredoi` Documentation ~~~~~~~~~~~~~ -- Update release schedule for v2.7 (`#2747 `__) `Bouwe Andela `__ -- Add Met Office installation method (`#2751 `__) `mo-tgeddes `__ -- Add release dates for 2023 (`#2769 `__) `Rémi Kazeroni `__ -- Made `maintainer` entry mandatory for published recipes (`#2703 `__) `Manuel Schlund `__ -- Use command with current command line opts for `cffconvert` in documentation (`#2791 `__) `Valeriu Predoi `__ -- Update CMORizer documentation with command options (`#2795 `__) `Rémi Kazeroni `__ -- Fixed broken link for monthly meetings (`#2806 `__) `Rémi Kazeroni `__ -- Update MO obs4MIPs paths in the user configuration file (`#2813 `__) `mo-tgeddes `__ -- Fix Windows incompatible file names in documentation of recipe_climate_change_hotspot.yml (`#2823 `__) `Lee de Mora `__ -- Update documentation for the Landschuetzer 2016 recipe. (`#2801 `__) `Tomas Torsvik `__ -- Fixed anaconda badge in README (`#2866 `__) `Valeriu Predoi `__ -- Update release strategy notes (`#2734 `__) `sloosvel `__ -- Add documentation on how to handle CMORizers for multiple dataset versions (`#2730 `__) `Rémi Kazeroni `__ -- Extending documentation: recipe maintainer + broken recipe policy (`#2719 `__) `Axel Lauer `__ +- Update release schedule for v2.7 (:pull:`2747`) :user:`bouweandela` +- Add Met Office installation method (:pull:`2751`) `mo-tgeddes `__ +- Add release dates for 2023 (:pull:`2769`) :user:`remi-kazeroni` +- Made `maintainer` entry mandatory for published recipes (:pull:`2703`) :user:`schlunma` +- Use command with current command line opts for `cffconvert` in documentation (:pull:`2791`) :user:`valeriupredoi` +- Update CMORizer documentation with command options (:pull:`2795`) :user:`remi-kazeroni` +- Fixed broken link for monthly meetings (:pull:`2806`) :user:`remi-kazeroni` +- Update MO obs4MIPs paths in the user configuration file (:pull:`2813`) `mo-tgeddes `__ +- Fix Windows incompatible file names in documentation of recipe_climate_change_hotspot.yml (:pull:`2823`) :user:`ledm` +- Update documentation for the Landschuetzer 2016 recipe. (:pull:`2801`) :user:`TomasTorsvik` +- Fixed anaconda badge in README (:pull:`2866`) :user:`valeriupredoi` +- Update release strategy notes (:pull:`2734`) :user:`sloosvel` +- Add documentation on how to handle CMORizers for multiple dataset versions (:pull:`2730`) :user:`remi-kazeroni` +- Extending documentation: recipe maintainer + broken recipe policy (:pull:`2719`) :user:`axel-lauer` Diagnostics ~~~~~~~~~~~ -- Recipe and diagnostics for : Tebaldi et al.,ESD, 2021 (`#2052 `__) `debe-kevin `__ -- Figures for IPCC AR6 WG1 Chapter 3 (Atmosphere) (`#2533 `__) `Lisa Bock `__ +- Recipe and diagnostics for : Tebaldi et al.,ESD, 2021 (:pull:`2052`) `debe-kevin `__ +- Figures for IPCC AR6 WG1 Chapter 3 (Atmosphere) (:pull:`2533`) :user:`LisaBock` Observational and re-analysis dataset support ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- Update CERES-EBAF to Ed4.1 (`#2752 `__) `Axel Lauer `__ -- New CMORizer for CALIPSO-ICECLOUD (`#2753 `__) `Axel Lauer `__ -- New CMORizer for CLOUDSAT-L2 (`#2754 `__) `Axel Lauer `__ -- Update MERRA2 cmorizer with extra 2D and 3D variables (`#2774 `__) `Valeriu Predoi `__ +- Update CERES-EBAF to Ed4.1 (:pull:`2752`) :user:`axel-lauer` +- New CMORizer for CALIPSO-ICECLOUD (:pull:`2753`) :user:`axel-lauer` +- New CMORizer for CLOUDSAT-L2 (:pull:`2754`) :user:`axel-lauer` +- Update MERRA2 cmorizer with extra 2D and 3D variables (:pull:`2774`) :user:`valeriupredoi` Automatic testing ~~~~~~~~~~~~~~~~~ -- Pin `netcdf4 != 1.6.1` since that is spitting large numbers of SegFaults (`#2796 `__) `Valeriu Predoi `__ +- Pin `netcdf4 != 1.6.1` since that is spitting large numbers of SegFaults (:pull:`2796`) :user:`valeriupredoi` Installation ~~~~~~~~~~~~ -- Increase esmvalcore version to 2.7.0 in environment files (`#2860 `__) `Valeriu Predoi `__ -- Add iris-esmf-regrid as a dependency (`#2880 `__) `Klaus Zimmermann `__ +- Increase esmvalcore version to 2.7.0 in environment files (:pull:`2860`) :user:`valeriupredoi` +- Add iris-esmf-regrid as a dependency (:pull:`2880`) :user:`zklaus` Improvements ~~~~~~~~~~~~ -- Fix tebaldi21esd (`#2749 `__) `Axel Lauer `__ -- Added option to show basic statistics in plots of `monitor/multi_datasets.py` (`#2790 `__) `Manuel Schlund `__ -- Remove retracted datasets from `recipe_climate_change_hotspot` (`#2854 `__) `sloosvel `__ +- Fix tebaldi21esd (:pull:`2749`) :user:`axel-lauer` +- Added option to show basic statistics in plots of `monitor/multi_datasets.py` (:pull:`2790`) :user:`schlunma` +- Remove retracted datasets from `recipe_climate_change_hotspot` (:pull:`2854`) :user:`sloosvel` .. _changelog-v2-6-0: @@ -541,83 +541,83 @@ This release includes Bug fixes ~~~~~~~~~ -- Fix dtype for Marrmot recipe results (`#2646 `__) `SarahAlidoost `__ -- Adapt test_fix_coords to new version of cf-units (`#2707 `__) `Klaus Zimmermann `__ -- Fix nested axes in `recipe_martin18_grl` and `recipe_li17natcc` (`#2712 `__) `Lukas `__ -- Update common_climdex_preprocessing_for_plots.R (`#2727 `__) `Enrico Arnone `__ +- Fix dtype for Marrmot recipe results (:pull:`2646`) :user:`SarahAlidoost` +- Adapt test_fix_coords to new version of cf-units (:pull:`2707`) :user:`zklaus` +- Fix nested axes in `recipe_martin18_grl` and `recipe_li17natcc` (:pull:`2712`) :user:`lukruh` +- Update common_climdex_preprocessing_for_plots.R (:pull:`2727`) :user:`earnone` Community ~~~~~~~~~ -- Collecting github user names for config-references (`#2677 `__) `Lukas `__ +- Collecting github user names for config-references (:pull:`2677`) :user:`lukruh` Deprecations ~~~~~~~~~~~~ -- Deprecate the function `esmvaltool.diag_scripts.shared.var_name_constraint`. This function is scheduled for removal in v2.8.0. Please use :class:`iris.NameConstraint` with the keyword argument var_name instead: this is an exact replacement. (`#2655 `__) `Manuel Schlund `__ +- Deprecate the function `esmvaltool.diag_scripts.shared.var_name_constraint`. This function is scheduled for removal in v2.8.0. Please use :class:`iris.NameConstraint` with the keyword argument var_name instead: this is an exact replacement. (:pull:`2655`) :user:`schlunma` Documentation ~~~~~~~~~~~~~ -- Documentation Improvements (`#2580 `__) `stacristo `__ -- Fixed broken label in the documentation (`#2616 `__) `Rémi Kazeroni `__ -- Add readthedocs configuration file (`#2627 `__) `Bouwe Andela `__ -- Update the command for building the documentation (`#2622 `__) `Bouwe Andela `__ -- Added DKRZ-Levante to `config-user-example.yml` (`#2632 `__) `Rémi Kazeroni `__ -- Improved documentation on native dataset support (`#2635 `__) `Manuel Schlund `__ -- Add documentation on building and uploading Docker images (`#2662 `__) `Bouwe Andela `__ -- Remove support for Mistral in `config-user-example.yml` (`#2667 `__) `Rémi Kazeroni `__ -- Add note to clarify that CORDEX support is work in progress (`#2682 `__) `Bouwe Andela `__ -- Restore accidentally deleted text from input data docs (`#2683 `__) `Bouwe Andela `__ -- Add running settings note in `recipe_wenzel16nat.yml` documentation (`#2692 `__) `sloosvel `__ -- Add a note on transferring permissions to the release manager (`#2688 `__) `Bouwe Andela `__ -- Update documentation on ESMValTool module at DKRZ (`#2696 `__) `Rémi Kazeroni `__ -- Add note on how to run recipe_wenzel14jgr.yml (`#2717 `__) `sloosvel `__ -- Added conda forge feedstock repo link in README (`#2555 `__) `Valeriu Predoi `__ +- Documentation Improvements (:pull:`2580`) :user:`stacristo` +- Fixed broken label in the documentation (:pull:`2616`) :user:`remi-kazeroni` +- Add readthedocs configuration file (:pull:`2627`) :user:`bouweandela` +- Update the command for building the documentation (:pull:`2622`) :user:`bouweandela` +- Added DKRZ-Levante to `config-user-example.yml` (:pull:`2632`) :user:`remi-kazeroni` +- Improved documentation on native dataset support (:pull:`2635`) :user:`schlunma` +- Add documentation on building and uploading Docker images (:pull:`2662`) :user:`bouweandela` +- Remove support for Mistral in `config-user-example.yml` (:pull:`2667`) :user:`remi-kazeroni` +- Add note to clarify that CORDEX support is work in progress (:pull:`2682`) :user:`bouweandela` +- Restore accidentally deleted text from input data docs (:pull:`2683`) :user:`bouweandela` +- Add running settings note in `recipe_wenzel16nat.yml` documentation (:pull:`2692`) :user:`sloosvel` +- Add a note on transferring permissions to the release manager (:pull:`2688`) :user:`bouweandela` +- Update documentation on ESMValTool module at DKRZ (:pull:`2696`) :user:`remi-kazeroni` +- Add note on how to run recipe_wenzel14jgr.yml (:pull:`2717`) :user:`sloosvel` +- Added conda forge feedstock repo link in README (:pull:`2555`) :user:`valeriupredoi` Diagnostics ~~~~~~~~~~~ -- Compute bias instead of correlation in `compare_salinity.py` (`#2642 `__) `sloosvel `__ -- Update monitor diagnostics (`#2608 `__) `Manuel Schlund `__ -- Add new Psyplot diagnostic (`#2653 `__) `Manuel Schlund `__ -- Reduce memory usage of lisflood recipe (`#2634 `__) `Stefan Verhoeven `__ -- Provenance in ocean diagnostics (`#2651 `__) `Tomas Lovato `__ -- Extend monitor diagnostics with multi-dataset plots (`#2657 `__) `Manuel Schlund `__ -- Recipe and diagnostics to plot climate change hotspots: Cos et al., ESD 2022 (`#2614 `__) `Pep Cos `__ -- Update plots of consecutive dry days recipe (`#2671 `__) `Bouwe Andela `__ -- Fix the format of ids in Hype forcing files (`#2679 `__) `SarahAlidoost `__ -- WFlow diagnostic script: remove manual rechunking (`#2680 `__) `Peter Kalverla `__ +- Compute bias instead of correlation in `compare_salinity.py` (:pull:`2642`) :user:`sloosvel` +- Update monitor diagnostics (:pull:`2608`) :user:`schlunma` +- Add new Psyplot diagnostic (:pull:`2653`) :user:`schlunma` +- Reduce memory usage of lisflood recipe (:pull:`2634`) :user:`sverhoeven` +- Provenance in ocean diagnostics (:pull:`2651`) :user:`tomaslovato` +- Extend monitor diagnostics with multi-dataset plots (:pull:`2657`) :user:`schlunma` +- Recipe and diagnostics to plot climate change hotspots: Cos et al., ESD 2022 (:pull:`2614`) :user:`pepcos` +- Update plots of consecutive dry days recipe (:pull:`2671`) :user:`bouweandela` +- Fix the format of ids in Hype forcing files (:pull:`2679`) :user:`SarahAlidoost` +- WFlow diagnostic script: remove manual rechunking (:pull:`2680`) :user:`Peter9192` Observational and re-analysis dataset support ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- Extending the HadCRUT5 cmorizer (`#2509 `__) `Lisa Bock `__ -- Cmorize Kadow2020 dataset (`#2513 `__) `Lisa Bock `__ -- Cmorize NOAAGlobalTemp dataset (`#2515 `__) `Lisa Bock `__ -- Add option to CMORize ts as tos in ESACCI data (`#2731 `__) `sloosvel `__ +- Extending the HadCRUT5 cmorizer (:pull:`2509`) :user:`LisaBock` +- Cmorize Kadow2020 dataset (:pull:`2513`) :user:`LisaBock` +- Cmorize NOAAGlobalTemp dataset (:pull:`2515`) :user:`LisaBock` +- Add option to CMORize ts as tos in ESACCI data (:pull:`2731`) :user:`sloosvel` Automatic testing ~~~~~~~~~~~~~~~~~ -- Add a tool for comparing recipe runs to previous runs (`#2613 `__) `Bouwe Andela `__ -- Ignore NCL interface files when comparing recipe runs (`#2673 `__) `Bouwe Andela `__ -- Add a short version of recipe deangelis15nat for testing (`#2685 `__) `katjaweigel `__ -- Expanded recipe output comparison tool to better handle absolute paths in output (`#2709 `__) `Manuel Schlund `__ -- Update development infrastructure (`#2663 `__) `Bouwe Andela `__ +- Add a tool for comparing recipe runs to previous runs (:pull:`2613`) :user:`bouweandela` +- Ignore NCL interface files when comparing recipe runs (:pull:`2673`) :user:`bouweandela` +- Add a short version of recipe deangelis15nat for testing (:pull:`2685`) :user:`katjaweigel` +- Expanded recipe output comparison tool to better handle absolute paths in output (:pull:`2709`) :user:`schlunma` +- Update development infrastructure (:pull:`2663`) :user:`bouweandela` Installation ~~~~~~~~~~~~ -- Removed `package/meta.yaml` and all references to it (`#2612 `__) `Manuel Schlund `__ +- Removed `package/meta.yaml` and all references to it (:pull:`2612`) :user:`schlunma` Improvements ~~~~~~~~~~~~ -- Improved handling of weights in MLR diagnostics (`#2625 `__) `Manuel Schlund `__ -- Fixed order of variables in perfemetrics plot of Anav13jclim recipe (`#2706 `__) `Manuel Schlund `__ -- Added input file sorting to many diagnostic to make output exactly reproducible (`#2710 `__) `Manuel Schlund `__ -- Removed 'ancestors' attributes before saving netcdf files in emergent constraints diagnostics (`#2713 `__) `Manuel Schlund `__ +- Improved handling of weights in MLR diagnostics (:pull:`2625`) :user:`schlunma` +- Fixed order of variables in perfemetrics plot of Anav13jclim recipe (:pull:`2706`) :user:`schlunma` +- Added input file sorting to many diagnostic to make output exactly reproducible (:pull:`2710`) :user:`schlunma` +- Removed 'ancestors' attributes before saving netcdf files in emergent constraints diagnostics (:pull:`2713`) :user:`schlunma` .. _changelog-v2-5-0: @@ -643,115 +643,115 @@ This release includes Backwards incompatible changes ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- Streamline observations download (`#1657 `__) `Javier Vegas-Regidor `__. This change removes the ``cmorize_obs`` command which has previously been used to CMORize observations and other datasets. The new command ``esmvaltool data`` provides many new features apart from the CMORization (``esmvaltool data format``), for example, automatic downloading of observational datasets (``esmvaltool data download``). More details on this can be found :ref:`here` and :ref:`here`. -- Dropped Python 3.7 (`#2585 `__) `Manuel Schlund `__. ESMValTool v2.5.0 dropped support for Python 3.7. From now on Python >=3.8 is required to install ESMValTool. The main reason for this is that conda-forge dropped support for Python 3.7 for OSX and arm64 (more details are given `here `__). +- Streamline observations download (:pull:`1657`) `Javier Vegas-Regidor `__. This change removes the ``cmorize_obs`` command which has previously been used to CMORize observations and other datasets. The new command ``esmvaltool data`` provides many new features apart from the CMORization (``esmvaltool data format``), for example, automatic downloading of observational datasets (``esmvaltool data download``). More details on this can be found :ref:`here` and :ref:`here`. +- Dropped Python 3.7 (:pull:`2585`) :user:`schlunma`. ESMValTool v2.5.0 dropped support for Python 3.7. From now on Python >=3.8 is required to install ESMValTool. The main reason for this is that conda-forge dropped support for Python 3.7 for OSX and arm64 (more details are given `here `__). Bug fixes ~~~~~~~~~ -- Remove the use of `esmvalgroup` channel from the conda install Github Action workflow (`#2420 `__) `Valeriu Predoi `__ -- Ignore .pymon-journal file in test discovery (`#2491 `__) `Klaus Zimmermann `__ -- Relocate pytest-monitor outputted database `.pymon` so `.pymon-journal` file should not be looked for by `pytest` (`#2501 `__) `Valeriu Predoi `__ -- Re-establish Python 3.7 compatibility (`#2506 `__) `Klaus Zimmermann `__ -- Update intersphinx mapping (`#2531 `__) `Klaus Zimmermann `__ -- Fixed `KeyError` in `recipe_ocean_bgc.yml` (`#2540 `__) `Manuel Schlund `__ -- Corrected ESACCI-SEA-SURFACE-SALINITY from OBS to OBS6 (`#2542 `__) `Axel Lauer `__ -- Fixed `recipe_kcs.yml` (`#2541 `__) `Manuel Schlund `__ -- Fix MDER diagnostic regression_stepwise (`#2545 `__) `Axel Lauer `__ -- Fix for recipe_wenzel16nat (`#2547 `__) `Axel Lauer `__ -- Fixed `recipe_carvalhais14nat` and removed deprecated use of np.float (`#2558 `__) `Manuel Schlund `__ -- Fix `recipe_wenzel14jgr` (`#2577 `__) `Rémi Kazeroni `__ -- Fixed various recipes by removing faulty or non-available datasets (`#2563 `__) `Manuel Schlund `__ -- Remove missing CMIP5 data from 2 recipes (`#2579 `__) `Rémi Kazeroni `__ -- Fix `recipe_seaice` (`#2578 `__) `Rémi Kazeroni `__ -- Fix `recipe_climwip_brunner20esd` (`#2581 `__) `Rémi Kazeroni `__ +- Remove the use of `esmvalgroup` channel from the conda install Github Action workflow (:pull:`2420`) :user:`valeriupredoi` +- Ignore .pymon-journal file in test discovery (:pull:`2491`) :user:`zklaus` +- Relocate pytest-monitor outputted database `.pymon` so `.pymon-journal` file should not be looked for by `pytest` (:pull:`2501`) :user:`valeriupredoi` +- Re-establish Python 3.7 compatibility (:pull:`2506`) :user:`zklaus` +- Update intersphinx mapping (:pull:`2531`) :user:`zklaus` +- Fixed `KeyError` in `recipe_ocean_bgc.yml` (:pull:`2540`) :user:`schlunma` +- Corrected ESACCI-SEA-SURFACE-SALINITY from OBS to OBS6 (:pull:`2542`) :user:`axel-lauer` +- Fixed `recipe_kcs.yml` (:pull:`2541`) :user:`schlunma` +- Fix MDER diagnostic regression_stepwise (:pull:`2545`) :user:`axel-lauer` +- Fix for recipe_wenzel16nat (:pull:`2547`) :user:`axel-lauer` +- Fixed `recipe_carvalhais14nat` and removed deprecated use of np.float (:pull:`2558`) :user:`schlunma` +- Fix `recipe_wenzel14jgr` (:pull:`2577`) :user:`remi-kazeroni` +- Fixed various recipes by removing faulty or non-available datasets (:pull:`2563`) :user:`schlunma` +- Remove missing CMIP5 data from 2 recipes (:pull:`2579`) :user:`remi-kazeroni` +- Fix `recipe_seaice` (:pull:`2578`) :user:`remi-kazeroni` +- Fix `recipe_climwip_brunner20esd` (:pull:`2581`) :user:`remi-kazeroni` Deprecations ~~~~~~~~~~~~ -- Remove `--use-feature=2020-resolver` command line option for obsolete pip 2020 solver (`#2493 `__) `Valeriu Predoi `__ -- Renamed vertical regridding schemes in affected recipes (`#2487 `__) `Manuel Schlund `__ +- Remove `--use-feature=2020-resolver` command line option for obsolete pip 2020 solver (:pull:`2493`) :user:`valeriupredoi` +- Renamed vertical regridding schemes in affected recipes (:pull:`2487`) :user:`schlunma` Documentation ~~~~~~~~~~~~~ -- Update release manager for v2.5 (`#2429 `__) `Axel Lauer `__ -- Mention ENES Climate Analytics service (`#2438 `__) `Bouwe Andela `__ -- Add recipe overview page (`#2439 `__) `Bouwe Andela `__ -- Fix pointer to Tutorial lesson on preprocessor from 05 to 06 (`#2473 `__) `Valeriu Predoi `__ -- Removed obsolete option `synda-download` from documentation (`#2485 `__) `Manuel Schlund `__ -- Update CMUG XCH4 docu figure (`#2502 `__) `Axel Lauer `__ -- Add Python=3.10 to package info, update Circle CI auto install and documentation for Python=3.10 (`#2503 `__) `Manuel Schlund `__ -- Unify user configuration file (`#2507 `__) `Manuel Schlund `__ -- Synchronized `config-user.yml` with version from ESMValCore (`#2516 `__) `Manuel Schlund `__ -- CITATION.cff fix and automatic validation of your citation metadata (`#2517 `__) `Abel Siqueira `__ -- Add backwards incompatible changes at the top of the release notes draft (`#2431 `__) `Bouwe Andela `__ -- Fixed intersphinx mapping of `scipy` (`#2523 `__) `Manuel Schlund `__ -- Add authors to citation cff (`#2525 `__) `SarahAlidoost `__ -- Update documentation on running a recipe (`#2432 `__) `Bouwe Andela `__ -- Fix recipe `hydrology/recipe_wflow.yml` (`#2549 `__) `Rémi Kazeroni `__ -- Update `draft_release_notes.py` for new release (`#2553 `__) `Manuel Schlund `__ -- Added stand with Ukraine badge (`#2565 `__) `Valeriu Predoi `__ -- Updated CREM docu (recipe_williams09climdyn.yml) (`#2567 `__) `Axel Lauer `__ -- First draft for v2.5.0 changelog (`#2554 `__) `Manuel Schlund `__ -- Replace nonfunctional Github Actions badge with cool one in README (`#2582 `__) `Valeriu Predoi `__ -- Updated changelog (`#2589 `__) `Manuel Schlund `__ -- Updated release strategy with current release and upcoming release (`#2597 `__) `Manuel Schlund `__ -- Increased ESMValTool version to 2.5.0 (`#2600 `__) `Manuel Schlund `__ +- Update release manager for v2.5 (:pull:`2429`) :user:`axel-lauer` +- Mention ENES Climate Analytics service (:pull:`2438`) :user:`bouweandela` +- Add recipe overview page (:pull:`2439`) :user:`bouweandela` +- Fix pointer to Tutorial lesson on preprocessor from 05 to 06 (:pull:`2473`) :user:`valeriupredoi` +- Removed obsolete option `synda-download` from documentation (:pull:`2485`) :user:`schlunma` +- Update CMUG XCH4 docu figure (:pull:`2502`) :user:`axel-lauer` +- Add Python=3.10 to package info, update Circle CI auto install and documentation for Python=3.10 (:pull:`2503`) :user:`schlunma` +- Unify user configuration file (:pull:`2507`) :user:`schlunma` +- Synchronized `config-user.yml` with version from ESMValCore (:pull:`2516`) :user:`schlunma` +- CITATION.cff fix and automatic validation of your citation metadata (:pull:`2517`) :user:`abelsiqueira` +- Add backwards incompatible changes at the top of the release notes draft (:pull:`2431`) :user:`bouweandela` +- Fixed intersphinx mapping of `scipy` (:pull:`2523`) :user:`schlunma` +- Add authors to citation cff (:pull:`2525`) :user:`SarahAlidoost` +- Update documentation on running a recipe (:pull:`2432`) :user:`bouweandela` +- Fix recipe `hydrology/recipe_wflow.yml` (:pull:`2549`) :user:`remi-kazeroni` +- Update `draft_release_notes.py` for new release (:pull:`2553`) :user:`schlunma` +- Added stand with Ukraine badge (:pull:`2565`) :user:`valeriupredoi` +- Updated CREM docu (recipe_williams09climdyn.yml) (:pull:`2567`) :user:`axel-lauer` +- First draft for v2.5.0 changelog (:pull:`2554`) :user:`schlunma` +- Replace nonfunctional Github Actions badge with cool one in README (:pull:`2582`) :user:`valeriupredoi` +- Updated changelog (:pull:`2589`) :user:`schlunma` +- Updated release strategy with current release and upcoming release (:pull:`2597`) :user:`schlunma` +- Increased ESMValTool version to 2.5.0 (:pull:`2600`) :user:`schlunma` Diagnostics ~~~~~~~~~~~ -- AutoAssess: Add new diagnostic for radiation budget (`#2282 `__) `Jon Lillis `__ -- CMUG Sea Surface Salinity dataset and diagnostic (`#1832 `__) `Javier Vegas-Regidor `__ -- Recipe with new diagnostics for ESA-CMUG H2O (`#1834 `__) `katjaweigel `__ -- Cleaned Schlund et al. (2020) recipe and fixed small bugs in corresponding diagnostic (`#2484 `__) `Manuel Schlund `__ -- Add ESA CCI LST cmorizer and diagnostic (`#1897 `__) `morobking `__ -- XCH4 ESA CMUG diagnostics (subset of the MPQB diagnostics) (`#1960 `__) `Birgit Hassler `__ -- Add support for ESACCI Ocean Color (Chlorophyll) observations (`#2055 `__) `ulrikaw-cloud `__ -- Updated `recipe_zmnam.yml` with hemisphere selection (`#2230 `__) `fserva `__ -- Add recipe and diagnostic scripts to compute figures of D9.4 of ISENES3 (`#2441 `__) `sloosvel `__ -- Save resampled climates from KCS diagnostic local_resampling.py (`#2221 `__) `Emma Daniels `__ -- Use years from KCS recipe (`#2223 `__) `Emma Daniels `__ -- Recipe to plot generic output from the preprocessor (`#2184 `__) `Javier Vegas-Regidor `__ -- Fixed provenance tracking for emergent constraint diagnostics (`#2573 `__) `Manuel Schlund `__ +- AutoAssess: Add new diagnostic for radiation budget (:pull:`2282`) :user:`Jon-Lillis` +- CMUG Sea Surface Salinity dataset and diagnostic (:pull:`1832`) `Javier Vegas-Regidor `__ +- Recipe with new diagnostics for ESA-CMUG H2O (:pull:`1834`) :user:`katjaweigel` +- Cleaned Schlund et al. (2020) recipe and fixed small bugs in corresponding diagnostic (:pull:`2484`) :user:`schlunma` +- Add ESA CCI LST cmorizer and diagnostic (:pull:`1897`) :user:`morobking` +- XCH4 ESA CMUG diagnostics (subset of the MPQB diagnostics) (:pull:`1960`) :user:`hb326` +- Add support for ESACCI Ocean Color (Chlorophyll) observations (:pull:`2055`) `ulrikaw-cloud `__ +- Updated `recipe_zmnam.yml` with hemisphere selection (:pull:`2230`) :user:`fserva` +- Add recipe and diagnostic scripts to compute figures of D9.4 of ISENES3 (:pull:`2441`) :user:`sloosvel` +- Save resampled climates from KCS diagnostic local_resampling.py (:pull:`2221`) :user:`Emmadd` +- Use years from KCS recipe (:pull:`2223`) :user:`Emmadd` +- Recipe to plot generic output from the preprocessor (:pull:`2184`) `Javier Vegas-Regidor `__ +- Fixed provenance tracking for emergent constraint diagnostics (:pull:`2573`) :user:`schlunma` Observational and re-analysis dataset support ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- Ensure dummy data for cmorize_obs_woa test are written to the correct directory (`#2451 `__) `Emma Hogan `__ +- Ensure dummy data for cmorize_obs_woa test are written to the correct directory (:pull:`2451`) :user:`ehogan` - Add ESA CCI LST cmorizer and diagnostic (see previous section `Diagnostics`) Automatic testing ~~~~~~~~~~~~~~~~~ -- Run a nightly Github Actions workflow to monitor tests memory per test (configurable for other metrics too) and lists the slowest 100 tests (`#2449 `__) `Valeriu Predoi `__ -- Fix individual pytest runs broken due to missing explicit imports from `iris` and adding a couple missing package markers (`#2455 `__) `Valeriu Predoi `__ -- Add Python=3.10 to Github Actions and switch to Python=3.10 for the Github Action that builds the PyPi package (`#2488 `__) `Valeriu Predoi `__ -- Switch all github actions from miniconda to mambaforge (`#2498 `__) `Klaus Zimmermann `__ -- Pin `flake8<4` to have actual FLAKE8 error printed if tests fail and not garbage (`#2492 `__) `Valeriu Predoi `__ -- Implementing conda lock (`#2193 `__) `Valeriu Predoi `__ -- [Docker] Update Docker container builds with correct installations of Julia (`#2530 `__) `Valeriu Predoi `__ +- Run a nightly Github Actions workflow to monitor tests memory per test (configurable for other metrics too) and lists the slowest 100 tests (:pull:`2449`) :user:`valeriupredoi` +- Fix individual pytest runs broken due to missing explicit imports from `iris` and adding a couple missing package markers (:pull:`2455`) :user:`valeriupredoi` +- Add Python=3.10 to Github Actions and switch to Python=3.10 for the Github Action that builds the PyPi package (:pull:`2488`) :user:`valeriupredoi` +- Switch all github actions from miniconda to mambaforge (:pull:`2498`) :user:`zklaus` +- Pin `flake8<4` to have actual FLAKE8 error printed if tests fail and not garbage (:pull:`2492`) :user:`valeriupredoi` +- Implementing conda lock (:pull:`2193`) :user:`valeriupredoi` +- [Docker] Update Docker container builds with correct installations of Julia (:pull:`2530`) :user:`valeriupredoi` - Update Linux condalock file (various pull requests) github-actions[bot] Installation ~~~~~~~~~~~~ -- Comment out release candidate channel in environment.yml (`#2417 `__) `Klaus Zimmermann `__ -- Comment out rc channel in osx environment file (`#2421 `__) `Valeriu Predoi `__ -- Add `python-cdo` as conda-forge dependency in environment files to ensure `cdo` gets used from conda-forge and not pip (`#2469 `__) `Valeriu Predoi `__ -- Install rasterio from conda-forge and avoid issues from python=3.10 (`#2479 `__) `Valeriu Predoi `__ -- Updated dependencies with new ESMValCore version (`#2599 `__) `Manuel Schlund `__ +- Comment out release candidate channel in environment.yml (:pull:`2417`) :user:`zklaus` +- Comment out rc channel in osx environment file (:pull:`2421`) :user:`valeriupredoi` +- Add `python-cdo` as conda-forge dependency in environment files to ensure `cdo` gets used from conda-forge and not pip (:pull:`2469`) :user:`valeriupredoi` +- Install rasterio from conda-forge and avoid issues from python=3.10 (:pull:`2479`) :user:`valeriupredoi` +- Updated dependencies with new ESMValCore version (:pull:`2599`) :user:`schlunma` Improvements ~~~~~~~~~~~~ -- Remove use of OBS and use CMIP instead in `examples/recipe_ncl.yml` (`#2494 `__) `Valeriu Predoi `__ -- Expanded `recipe_preprocessor_test.yml` to account for new `multi_model_statistics` features (`#2519 `__) `Manuel Schlund `__ -- Updated piControl periods for recipes that use KACE-1-0-G (`#2537 `__) `Manuel Schlund `__ -- Reduced time range in `recipe_globwat.yml` (`#2548 `__) `Manuel Schlund `__ -- Removed models with missing data from recipe_williams09climdyn.yml (`#2566 `__) `Axel Lauer `__ -- Restored original versions of `recipe_schlund20esd.yml` and `recipe_meehl20sciadv.yml` (`#2583 `__) `Manuel Schlund `__ +- Remove use of OBS and use CMIP instead in `examples/recipe_ncl.yml` (:pull:`2494`) :user:`valeriupredoi` +- Expanded `recipe_preprocessor_test.yml` to account for new `multi_model_statistics` features (:pull:`2519`) :user:`schlunma` +- Updated piControl periods for recipes that use KACE-1-0-G (:pull:`2537`) :user:`schlunma` +- Reduced time range in `recipe_globwat.yml` (:pull:`2548`) :user:`schlunma` +- Removed models with missing data from recipe_williams09climdyn.yml (:pull:`2566`) :user:`axel-lauer` +- Restored original versions of `recipe_schlund20esd.yml` and `recipe_meehl20sciadv.yml` (:pull:`2583`) :user:`schlunma` .. _changelog-v2-4-0: @@ -778,119 +778,119 @@ This release includes Bug fixes ~~~~~~~~~ -- Fixed `recipe_meehl20sciadv.yml` for ESMValCore 2.3 (`#2253 `__) `Manuel Schlund `__ -- Fix provenance of NCL figures created using the log_provenance function (`#2279 `__) `Bouwe Andela `__ -- Fix bug in ClimWIP brunner19 recipe when plotting (`#2226 `__) `Lukas Brunner `__ -- Pin docutils <0.17 to fix sphinx build with rtd theme (`#2312 `__) `Klaus Zimmermann `__ -- Fix example recipes (`#2338 `__) `Valeriu Predoi `__ -- Do not add bounds to plev (plev19) in era interim cmorizer (`#2328 `__) `Valeriu Predoi `__ -- Fix problem with pip 21.3 that prevents installation from source (`#2344 `__) `Klaus Zimmermann `__ -- Add title to recipe embedded in test_diagnostic_run.py (`#2353 `__) `Klaus Zimmermann `__ -- Fix capitalization of obs4MIPs (`#2368 `__) `Bouwe Andela `__ -- Specify that areacella is needed for area statistics in the Python example recipe (`#2371 `__) `Bouwe Andela `__ -- Enabling variable `obs550lt1aer` in recipes (`#2388 `__) `Rémi Kazeroni `__ -- Update a diagnostic to new Iris version (`#2390 `__) `katjaweigel `__ -- Fixed bug in provenance tracking of ecs_scatter.ncl (`#2391 `__) `Manuel Schlund `__ -- Fix provenance issue in pv_capacity_factor.R (`#2392 `__) `katjaweigel `__ -- Remove obsolete write_plots option from R diagnostics (`#2395 `__) `Klaus Zimmermann `__ -- Fix arctic ocean diagnostic (`#2397 `__) `Klaus Zimmermann `__ -- Fix sea ice drift recipe and script (`#2404 `__) `sloosvel `__ -- Adapt diagnostic script to new version of iris (`#2403 `__) `Klaus Zimmermann `__ -- Fix ocean multimap (`#2406 `__) `Klaus Zimmermann `__ -- Fix diagnostic that uses `xarray`: `dtype` correctly set and harmonize `xarray` and `matplotlib` (`#2409 `__) `Klaus Zimmermann `__ -- Deactivate provenance logging for plots in thermodyn toolbox (`#2414 `__) `Klaus Zimmermann `__ +- Fixed `recipe_meehl20sciadv.yml` for ESMValCore 2.3 (:pull:`2253`) :user:`schlunma` +- Fix provenance of NCL figures created using the log_provenance function (:pull:`2279`) :user:`bouweandela` +- Fix bug in ClimWIP brunner19 recipe when plotting (:pull:`2226`) :user:`lukasbrunner` +- Pin docutils <0.17 to fix sphinx build with rtd theme (:pull:`2312`) :user:`zklaus` +- Fix example recipes (:pull:`2338`) :user:`valeriupredoi` +- Do not add bounds to plev (plev19) in era interim cmorizer (:pull:`2328`) :user:`valeriupredoi` +- Fix problem with pip 21.3 that prevents installation from source (:pull:`2344`) :user:`zklaus` +- Add title to recipe embedded in test_diagnostic_run.py (:pull:`2353`) :user:`zklaus` +- Fix capitalization of obs4MIPs (:pull:`2368`) :user:`bouweandela` +- Specify that areacella is needed for area statistics in the Python example recipe (:pull:`2371`) :user:`bouweandela` +- Enabling variable `obs550lt1aer` in recipes (:pull:`2388`) :user:`remi-kazeroni` +- Update a diagnostic to new Iris version (:pull:`2390`) :user:`katjaweigel` +- Fixed bug in provenance tracking of ecs_scatter.ncl (:pull:`2391`) :user:`schlunma` +- Fix provenance issue in pv_capacity_factor.R (:pull:`2392`) :user:`katjaweigel` +- Remove obsolete write_plots option from R diagnostics (:pull:`2395`) :user:`zklaus` +- Fix arctic ocean diagnostic (:pull:`2397`) :user:`zklaus` +- Fix sea ice drift recipe and script (:pull:`2404`) :user:`sloosvel` +- Adapt diagnostic script to new version of iris (:pull:`2403`) :user:`zklaus` +- Fix ocean multimap (:pull:`2406`) :user:`zklaus` +- Fix diagnostic that uses `xarray`: `dtype` correctly set and harmonize `xarray` and `matplotlib` (:pull:`2409`) :user:`zklaus` +- Deactivate provenance logging for plots in thermodyn toolbox (:pull:`2414`) :user:`zklaus` Deprecations ~~~~~~~~~~~~ -- Removed write_plots and write_netcdf from some NCL diagnostics (`#2293 `__) `Manuel Schlund `__ -- Fixed provenance logging of all python diagnostics by removing 'plot_file' entry (`#2296 `__) `Manuel Schlund `__ -- Do not deprecate classes Variable, Variables and Datasets on a specific version (`#2286 `__) `Manuel Schlund `__ -- Remove obsolete write_netcdf option from ncl diagnostic scripts (`#2387 `__) `Klaus Zimmermann `__ -- Remove write plots from ocean diagnostics (`#2393 `__) `Valeriu Predoi `__ -- More removals of instances of `write_plots` from Python diagnostics (appears to be the final removal from Py diags) (`#2394 `__) `Valeriu Predoi `__ +- Removed write_plots and write_netcdf from some NCL diagnostics (:pull:`2293`) :user:`schlunma` +- Fixed provenance logging of all python diagnostics by removing 'plot_file' entry (:pull:`2296`) :user:`schlunma` +- Do not deprecate classes Variable, Variables and Datasets on a specific version (:pull:`2286`) :user:`schlunma` +- Remove obsolete write_netcdf option from ncl diagnostic scripts (:pull:`2387`) :user:`zklaus` +- Remove write plots from ocean diagnostics (:pull:`2393`) :user:`valeriupredoi` +- More removals of instances of `write_plots` from Python diagnostics (appears to be the final removal from Py diags) (:pull:`2394`) :user:`valeriupredoi` Documentation ~~~~~~~~~~~~~ -- List Manuel Schlund as release manager for v2.5 (`#2268 `__) `Bouwe Andela `__ -- GlobWat fix download links and gdal command (`#2334 `__) `Banafsheh Abdollahi `__ -- Add titles to recipes authored by `predoi_valeriu` (`#2333 `__) `Valeriu Predoi `__ -- Added titles to recipes maintained by lauer_axel (`#2332 `__) `Axel Lauer `__ -- Update the documentation of the GRACE CMORizer (`#2349 `__) `Rémi Kazeroni `__ -- Add titles in BSC recipes (`#2351 `__) `sloosvel `__ -- Update esmvalcore dependency to 2.4.0rc1 (`#2348 `__) `Klaus Zimmermann `__ -- Add titles to recipes maintained by Peter Kalverla (`#2356 `__) `Peter Kalverla `__ -- Adding titles to the recipes with maintainer hb326 (`#2358 `__) `Birgit Hassler `__ -- Add title for zmnam as for #2354 (`#2363 `__) `fserva `__ -- Added recipe titles the the ocean recipes. (`#2364 `__) `Lee de Mora `__ -- Update recipe_thermodyn_diagtool.yml - add title (`#2365 `__) `ValerioLembo `__ -- Fix provenance of figures of several R diagnostics (`#2300 `__) `Bouwe Andela `__ -- Adding titles to Mattia's recipes (`#2367 `__) `Rémi Kazeroni `__ -- Adding titles to wenzel recipes (`#2366 `__) `Birgit Hassler `__ -- Fix formatting of some recipe titles merged from PR 2364 (`#2372 `__) `Klaus Zimmermann `__ -- Adding titles to Bjoern's recipes (`#2369 `__) `Rémi Kazeroni `__ -- Add titles to ocean recipes (maintainer Lovato) (`#2375 `__) `Tomas Lovato `__ -- Add titles for three c3s-magic recipes (`#2378 `__) `Klaus Zimmermann `__ -- Add title for recipe maintained by Ruth Lorenz (`#2379 `__) `Klaus Zimmermann `__ -- Fix toymodel recipe (`#2381 `__) `Javier Vegas-Regidor `__ -- Added titles for recipes of maintainer `schlund_manuel` (`#2377 `__) `Manuel Schlund `__ -- Write_plots and titles for deangelis15nat, li17natcc, martin18grl, pv_capacity_factor (`#2382 `__) `katjaweigel `__ -- Add titles for some recipes (`#2383 `__) `Klaus Zimmermann `__ -- Adding titles for recipes by von Hardenberg and Arnone (`#2384 `__) `Klaus Zimmermann `__ -- Last two missing titles (`#2386 `__) `Valeriu Predoi `__ -- Update documentation on downloading data (`#2370 `__) `Bouwe Andela `__ -- Fix installation instructions for Julia (`#2335 `__) `Klaus Zimmermann `__ -- Fix provenance of Julia example diagnostic (`#2289 `__) `Bouwe Andela `__ -- Added notes on use of mamba in the installation documentation chapter (`#2236 `__) `Valeriu Predoi `__ -- Update version number for 2.4.0 release (`#2410 `__) `Klaus Zimmermann `__ -- Update release schedule for 2.4.0 (`#2412 `__) `Klaus Zimmermann `__ -- Update changelog for 2.4.0 release (`#2411 `__) `Klaus Zimmermann `__ +- List Manuel Schlund as release manager for v2.5 (:pull:`2268`) :user:`bouweandela` +- GlobWat fix download links and gdal command (:pull:`2334`) :user:`babdollahi` +- Add titles to recipes authored by `predoi_valeriu` (:pull:`2333`) :user:`valeriupredoi` +- Added titles to recipes maintained by lauer_axel (:pull:`2332`) :user:`axel-lauer` +- Update the documentation of the GRACE CMORizer (:pull:`2349`) :user:`remi-kazeroni` +- Add titles in BSC recipes (:pull:`2351`) :user:`sloosvel` +- Update esmvalcore dependency to 2.4.0rc1 (:pull:`2348`) :user:`zklaus` +- Add titles to recipes maintained by Peter Kalverla (:pull:`2356`) :user:`Peter9192` +- Adding titles to the recipes with maintainer hb326 (:pull:`2358`) :user:`hb326` +- Add title for zmnam as for #2354 (:pull:`2363`) :user:`fserva` +- Added recipe titles the the ocean recipes. (:pull:`2364`) :user:`ledm` +- Update recipe_thermodyn_diagtool.yml - add title (:pull:`2365`) :user:`ValerioLembo` +- Fix provenance of figures of several R diagnostics (:pull:`2300`) :user:`bouweandela` +- Adding titles to Mattia's recipes (:pull:`2367`) :user:`remi-kazeroni` +- Adding titles to wenzel recipes (:pull:`2366`) :user:`hb326` +- Fix formatting of some recipe titles merged from PR 2364 (:pull:`2372`) :user:`zklaus` +- Adding titles to Bjoern's recipes (:pull:`2369`) :user:`remi-kazeroni` +- Add titles to ocean recipes (maintainer Lovato) (:pull:`2375`) :user:`tomaslovato` +- Add titles for three c3s-magic recipes (:pull:`2378`) :user:`zklaus` +- Add title for recipe maintained by Ruth Lorenz (:pull:`2379`) :user:`zklaus` +- Fix toymodel recipe (:pull:`2381`) `Javier Vegas-Regidor `__ +- Added titles for recipes of maintainer `schlund_manuel` (:pull:`2377`) :user:`schlunma` +- Write_plots and titles for deangelis15nat, li17natcc, martin18grl, pv_capacity_factor (:pull:`2382`) :user:`katjaweigel` +- Add titles for some recipes (:pull:`2383`) :user:`zklaus` +- Adding titles for recipes by von Hardenberg and Arnone (:pull:`2384`) :user:`zklaus` +- Last two missing titles (:pull:`2386`) :user:`valeriupredoi` +- Update documentation on downloading data (:pull:`2370`) :user:`bouweandela` +- Fix installation instructions for Julia (:pull:`2335`) :user:`zklaus` +- Fix provenance of Julia example diagnostic (:pull:`2289`) :user:`bouweandela` +- Added notes on use of mamba in the installation documentation chapter (:pull:`2236`) :user:`valeriupredoi` +- Update version number for 2.4.0 release (:pull:`2410`) :user:`zklaus` +- Update release schedule for 2.4.0 (:pull:`2412`) :user:`zklaus` +- Update changelog for 2.4.0 release (:pull:`2411`) :user:`zklaus` Diagnostics ~~~~~~~~~~~ -- Add all available CMIP5 and CMIP6 models to recipe_impact.yml (`#2251 `__) `Bouwe Andela `__ -- Add Fig. 6, 7 and 9 of Bock20jgr (`#2252 `__) `Lisa Bock `__ -- Generalize `recipe_validation*` diagnostic to work with identical control and experiment dataset names (`#2284 `__) `Valeriu Predoi `__ -- Add missing preprocessor to recipe_gier2020bg and adapt to available data (`#2399 `__) `Bettina Gier `__ -- Removed custom version of `AtmosphereSigmaFactory` in diagnostics (`#2405 `__) `Manuel Schlund `__ +- Add all available CMIP5 and CMIP6 models to recipe_impact.yml (:pull:`2251`) :user:`bouweandela` +- Add Fig. 6, 7 and 9 of Bock20jgr (:pull:`2252`) :user:`LisaBock` +- Generalize `recipe_validation*` diagnostic to work with identical control and experiment dataset names (:pull:`2284`) :user:`valeriupredoi` +- Add missing preprocessor to recipe_gier2020bg and adapt to available data (:pull:`2399`) :user:`bettina-gier` +- Removed custom version of `AtmosphereSigmaFactory` in diagnostics (:pull:`2405`) :user:`schlunma` Observational and re-analysis dataset support ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- Replace recipe_era5.yml with recipe_daily_era5.yml (`#2182 `__) `SarahAlidoost `__ -- Update WOA cmorizer for WOA18 and WOA13v2 (`#1812 `__) `Lisa Bock `__ -- GLODAP v2.2016 ocean data cmorizer (`#2185 `__) `Tomas Lovato `__ -- Updated GCP CMORizer (`#2295 `__) `Manuel Schlund `__ +- Replace recipe_era5.yml with recipe_daily_era5.yml (:pull:`2182`) :user:`SarahAlidoost` +- Update WOA cmorizer for WOA18 and WOA13v2 (:pull:`1812`) :user:`LisaBock` +- GLODAP v2.2016 ocean data cmorizer (:pull:`2185`) :user:`tomaslovato` +- Updated GCP CMORizer (:pull:`2295`) :user:`schlunma` Automatic testing ~~~~~~~~~~~~~~~~~ -- Add a cylc suite to run all recipes (`#2219 `__) `Bouwe Andela `__ -- Retire test with Python 3.6 from full development Github Actions test (`#2229 `__) `Valeriu Predoi `__ -- Remove Python 3.6 tests from GitHub Actions (`#2264 `__) `Valeriu Predoi `__ -- Unpin upper bound for iris (previously was at <3.0.4) (`#2266 `__) `Valeriu Predoi `__ -- Pin latest esmvalcore to allow use of the bugfix release 2.3.1 always (`#2269 `__) `Valeriu Predoi `__ -- Add apt update so Julia gets found and installed by Docker (`#2290 `__) `Valeriu Predoi `__ -- Use mamba for environment update and creation in the Docker container build on DockerHub (`#2297 `__) `Valeriu Predoi `__ -- Docker container experimental - run a full env solve with mamba instead of a conda update (`#2306 `__) `Valeriu Predoi `__ -- Full use of mamba in Github Actions source install test and use generic Python 3.7 (removing the very specific 3.7.10) (`#2287 `__) `Valeriu Predoi `__ -- Replace use of conda with mamba for conda_install test on Circle CI (`#2237 `__) `Valeriu Predoi `__ -- Update circleci configuration (`#2357 `__) `Klaus Zimmermann `__ +- Add a cylc suite to run all recipes (:pull:`2219`) :user:`bouweandela` +- Retire test with Python 3.6 from full development Github Actions test (:pull:`2229`) :user:`valeriupredoi` +- Remove Python 3.6 tests from GitHub Actions (:pull:`2264`) :user:`valeriupredoi` +- Unpin upper bound for iris (previously was at <3.0.4) (:pull:`2266`) :user:`valeriupredoi` +- Pin latest esmvalcore to allow use of the bugfix release 2.3.1 always (:pull:`2269`) :user:`valeriupredoi` +- Add apt update so Julia gets found and installed by Docker (:pull:`2290`) :user:`valeriupredoi` +- Use mamba for environment update and creation in the Docker container build on DockerHub (:pull:`2297`) :user:`valeriupredoi` +- Docker container experimental - run a full env solve with mamba instead of a conda update (:pull:`2306`) :user:`valeriupredoi` +- Full use of mamba in Github Actions source install test and use generic Python 3.7 (removing the very specific 3.7.10) (:pull:`2287`) :user:`valeriupredoi` +- Replace use of conda with mamba for conda_install test on Circle CI (:pull:`2237`) :user:`valeriupredoi` +- Update circleci configuration (:pull:`2357`) :user:`zklaus` Installation ~~~~~~~~~~~~ -- Remove `mpich` from conda dependencies list (`#2343 `__) `Valeriu Predoi `__ +- Remove `mpich` from conda dependencies list (:pull:`2343`) :user:`valeriupredoi` Improvements ~~~~~~~~~~~~ -- Add script for extracting a list of input files from the provenance (`#2278 `__) `Bouwe Andela `__ -- Update github actions (`#2360 `__) `Klaus Zimmermann `__ -- Removed 'write_plots' from all NCL diagnostics (`#2331 `__) `Axel Lauer `__ -- Update and modernize `config-user-example.yml` (`#2374 `__) `Valeriu Predoi `__ +- Add script for extracting a list of input files from the provenance (:pull:`2278`) :user:`bouweandela` +- Update github actions (:pull:`2360`) :user:`zklaus` +- Removed 'write_plots' from all NCL diagnostics (:pull:`2331`) :user:`axel-lauer` +- Update and modernize `config-user-example.yml` (:pull:`2374`) :user:`valeriupredoi` .. _changelog-v2-3-0: @@ -903,91 +903,91 @@ This release includes Bug fixes ~~~~~~~~~ -- Indent block to pick up and raise exception if cmorizer data not found (TierX dir is not there) (`#1877 `__) `Valeriu Predoi `__ -- Skip recipe filler tests until we have a new release since GA tests are failing (`#2089 `__) `Valeriu Predoi `__ -- Fixed broken link to contributions in README (`#2102 `__) `Manuel Schlund `__ -- Fix recipe filler for the case the variable doesn't contain short_name (`#2104 `__) `Valeriu Predoi `__ -- Add fix for iris longitude bug to ClimWIP (`#2107 `__) `Lukas Brunner `__ -- Update for outdated link to reference Déandreis et al. (2014). (`#2076 `__) `katjaweigel `__ -- Fixed recipes for ESMValCore 2.3.0 (`#2203 `__) `Manuel Schlund `__ -- Fix the WFDE5 cmorizer (`#2211 `__) `Rémi Kazeroni `__ -- Fix broken CMORizer log message if no Tier directory exists (`#2207 `__) `jmrgonza `__ -- Fix bug in ClimWIP basic test recipe when plotting (`#2225 `__) `Lukas Brunner `__ -- Fix bug in ClimWIP advanced test recipe when plotting (`#2227 `__) `Lukas Brunner `__ -- Adjust time range for the `WDFE5` dataset in the `recipe_check_obs.yml` (`#2232 `__) `Rémi Kazeroni `__ -- Fix plot and provenance of recipe_consecdrydays (`#2244 `__) `Bouwe Andela `__ +- Indent block to pick up and raise exception if cmorizer data not found (TierX dir is not there) (:pull:`1877`) :user:`valeriupredoi` +- Skip recipe filler tests until we have a new release since GA tests are failing (:pull:`2089`) :user:`valeriupredoi` +- Fixed broken link to contributions in README (:pull:`2102`) :user:`schlunma` +- Fix recipe filler for the case the variable doesn't contain short_name (:pull:`2104`) :user:`valeriupredoi` +- Add fix for iris longitude bug to ClimWIP (:pull:`2107`) :user:`lukasbrunner` +- Update for outdated link to reference Déandreis et al. (2014). (:pull:`2076`) :user:`katjaweigel` +- Fixed recipes for ESMValCore 2.3.0 (:pull:`2203`) :user:`schlunma` +- Fix the WFDE5 cmorizer (:pull:`2211`) :user:`remi-kazeroni` +- Fix broken CMORizer log message if no Tier directory exists (:pull:`2207`) :user:`jmrgonza` +- Fix bug in ClimWIP basic test recipe when plotting (:pull:`2225`) :user:`lukasbrunner` +- Fix bug in ClimWIP advanced test recipe when plotting (:pull:`2227`) :user:`lukasbrunner` +- Adjust time range for the `WDFE5` dataset in the `recipe_check_obs.yml` (:pull:`2232`) :user:`remi-kazeroni` +- Fix plot and provenance of recipe_consecdrydays (:pull:`2244`) :user:`bouweandela` Documentation ~~~~~~~~~~~~~ -- Improving the README.md file with a more appealing look and bit more info (`#2065 `__) `Valeriu Predoi `__ -- Update plot title martin18grl (`#2080 `__) `katjaweigel `__ -- Update contribution guidelines (`#2031 `__) `Bouwe Andela `__ -- Update links in pull request template to point to latest documentation (`#2083 `__) `Bouwe Andela `__ -- Update release schedule (`#2081 `__) `Bouwe Andela `__ -- Updates to contribution guidelines (`#2092 `__) `Bouwe Andela `__ -- Update documentation for ERA5 with new variables (`#2111 `__) `Lukas Brunner `__ -- Add OSX installation instructions to docs (`#2115 `__) `Barbara Vreede `__ -- Instructions to use pre-installed versions on HPC clusters (`#2197 `__) `Rémi Kazeroni `__ -- Add functional Autoassess diagnostics: land surface metrics: permafrost, soil moisture, surface radiation (`#2170 `__) `Valeriu Predoi `__ -- Add citation info in `recipe_eady_growth_rate.yml` (`#2188 `__) `sloosvel `__ -- Update version number to 2.3.0 (`#2213 `__) `Klaus Zimmermann `__ -- Update release schedule for 2.3.0 (`#2247 `__) `Klaus Zimmermann `__ -- Changelog update to v2.3.0 (`#2214 `__) `Klaus Zimmermann `__ +- Improving the README.md file with a more appealing look and bit more info (:pull:`2065`) :user:`valeriupredoi` +- Update plot title martin18grl (:pull:`2080`) :user:`katjaweigel` +- Update contribution guidelines (:pull:`2031`) :user:`bouweandela` +- Update links in pull request template to point to latest documentation (:pull:`2083`) :user:`bouweandela` +- Update release schedule (:pull:`2081`) :user:`bouweandela` +- Updates to contribution guidelines (:pull:`2092`) :user:`bouweandela` +- Update documentation for ERA5 with new variables (:pull:`2111`) :user:`lukasbrunner` +- Add OSX installation instructions to docs (:pull:`2115`) :user:`bvreede` +- Instructions to use pre-installed versions on HPC clusters (:pull:`2197`) :user:`remi-kazeroni` +- Add functional Autoassess diagnostics: land surface metrics: permafrost, soil moisture, surface radiation (:pull:`2170`) :user:`valeriupredoi` +- Add citation info in `recipe_eady_growth_rate.yml` (:pull:`2188`) :user:`sloosvel` +- Update version number to 2.3.0 (:pull:`2213`) :user:`zklaus` +- Update release schedule for 2.3.0 (:pull:`2247`) :user:`zklaus` +- Changelog update to v2.3.0 (:pull:`2214`) :user:`zklaus` Diagnostics ~~~~~~~~~~~ -- Added figures 8 and 10 to recipe_bock20jgr.yml (`#2074 `__) `Manuel Schlund `__ -- Add hydrological forcing comparison recipe (`#2013 `__) `Stef Smeets `__ -- Added recipe for Meehl et al., Sci. Adv. (2020) (`#2094 `__) `Manuel Schlund `__ -- Add GlobWat recipe and diagnostic (`#1808 `__) `Banafsheh Abdollahi `__ -- Add ClimWIP recipe to reproduce Brunner et al. 2019 (`#2109 `__) `Lukas Brunner `__ -- Update Climwip recipe to reproduce brunner2020esd (`#1859 `__) `Ruth Lorenz `__ -- Update recipe_thermodyn_diagtool.yml: code improvements and more user options (`#1391 `__) `ValerioLembo `__ -- Remove model AWI-CM-1-1-MR from recipe_impact.yml (`#2238 `__) `Bouwe Andela `__ -- PV capacity factor for ESMValTool GMD paper (`#2153 `__) `katjaweigel `__ +- Added figures 8 and 10 to recipe_bock20jgr.yml (:pull:`2074`) :user:`schlunma` +- Add hydrological forcing comparison recipe (:pull:`2013`) :user:`stefsmeets` +- Added recipe for Meehl et al., Sci. Adv. (2020) (:pull:`2094`) :user:`schlunma` +- Add GlobWat recipe and diagnostic (:pull:`1808`) :user:`babdollahi` +- Add ClimWIP recipe to reproduce Brunner et al. 2019 (:pull:`2109`) :user:`lukasbrunner` +- Update Climwip recipe to reproduce brunner2020esd (:pull:`1859`) :user:`ruthlorenz` +- Update recipe_thermodyn_diagtool.yml: code improvements and more user options (:pull:`1391`) :user:`ValerioLembo` +- Remove model AWI-CM-1-1-MR from recipe_impact.yml (:pull:`2238`) :user:`bouweandela` +- PV capacity factor for ESMValTool GMD paper (:pull:`2153`) :user:`katjaweigel` Observational and re-analysis dataset support ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- Cmorize wfde5 (`#1991 `__) `mwjury `__ -- Make cmorizer utils funcs public in utilities.py and add some numpy style docstrings (`#2206 `__) `Valeriu Predoi `__ -- CMORizer for CLARA-AVHRR cloud data (`#2101 `__) `Axel Lauer `__ -- Update of ESACCI-CLOUD CMORizer (`#2144 `__) `Axel Lauer `__ +- Cmorize wfde5 (:pull:`1991`) :user:`mwjury` +- Make cmorizer utils funcs public in utilities.py and add some numpy style docstrings (:pull:`2206`) :user:`valeriupredoi` +- CMORizer for CLARA-AVHRR cloud data (:pull:`2101`) :user:`axel-lauer` +- Update of ESACCI-CLOUD CMORizer (:pull:`2144`) :user:`axel-lauer` Automatic testing ~~~~~~~~~~~~~~~~~ -- Force latest Python in empty environment in conda install CI test (`#2069 `__) `Valeriu Predoi `__ -- Removed imports from private sklearn modules and improved test coverage of custom_sklearn.py (`#2078 `__) `Manuel Schlund `__ -- Move private _(global)_stock_cube from esmvacore.preprocessor._regrid to cmorizer (`#2087 `__) `Valeriu Predoi `__ -- Try mamba install esmvaltool (`#2125 `__) `Valeriu Predoi `__ -- Reinstate OSX Github Action tests (`#2110 `__) `Valeriu Predoi `__ -- Pin mpich to avoid default install of 3.4.1 and 3.4.2 with external_0 builds (`#2220 `__) `Valeriu Predoi `__ -- Include test sources in distribution (`#2234 `__) `Klaus Zimmermann `__ -- Pin `iris<3.0.4` to ensure we still (sort of) support Python 3.6 (`#2246 `__) `Valeriu Predoi `__ +- Force latest Python in empty environment in conda install CI test (:pull:`2069`) :user:`valeriupredoi` +- Removed imports from private sklearn modules and improved test coverage of custom_sklearn.py (:pull:`2078`) :user:`schlunma` +- Move private _(global)_stock_cube from esmvacore.preprocessor._regrid to cmorizer (:pull:`2087`) :user:`valeriupredoi` +- Try mamba install esmvaltool (:pull:`2125`) :user:`valeriupredoi` +- Reinstate OSX Github Action tests (:pull:`2110`) :user:`valeriupredoi` +- Pin mpich to avoid default install of 3.4.1 and 3.4.2 with external_0 builds (:pull:`2220`) :user:`valeriupredoi` +- Include test sources in distribution (:pull:`2234`) :user:`zklaus` +- Pin `iris<3.0.4` to ensure we still (sort of) support Python 3.6 (:pull:`2246`) :user:`valeriupredoi` Installation ~~~~~~~~~~~~ -- Fix conda build by skipping documentation test (`#2058 `__) `Javier Vegas-Regidor `__ -- Update pin on esmvalcore pick up esmvalcore=2.3.0 (`#2200 `__) `Valeriu Predoi `__ -- Pin Python to 3.9 for development installation (`#2208 `__) `Bouwe Andela `__ +- Fix conda build by skipping documentation test (:pull:`2058`) `Javier Vegas-Regidor `__ +- Update pin on esmvalcore pick up esmvalcore=2.3.0 (:pull:`2200`) :user:`valeriupredoi` +- Pin Python to 3.9 for development installation (:pull:`2208`) :user:`bouweandela` Improvements ~~~~~~~~~~~~ -- Add EUCP and IS-ENES3 projects to config-references (`#2066 `__) `Peter Kalverla `__ -- Fix flake8 tests on CircleCI (`#2070 `__) `Bouwe Andela `__ -- Added recipe filler. (`#1707 `__) `Lee de Mora `__ -- Update use of fx vars to new syntax (`#2145 `__) `sloosvel `__ -- Add recipe for climate impact research (`#2072 `__) `Peter Kalverla `__ -- Update references "master" to "main" (`#2172 `__) `Axel Lauer `__ -- Force git to ignore VSCode workspace files (`#2186 `__) `Javier Vegas-Regidor `__ -- Update to new ESMValTool logo (`#2168 `__) `Axel Lauer `__ -- Python cmorizers for CDR1 and CDR2 ESACCI H2O (TCWV=prw) data. (`#2152 `__) `katjaweigel `__ -- Remove obsolete conda package (closes #2100) (`#2103 `__) `Klaus Zimmermann `__ +- Add EUCP and IS-ENES3 projects to config-references (:pull:`2066`) :user:`Peter9192` +- Fix flake8 tests on CircleCI (:pull:`2070`) :user:`bouweandela` +- Added recipe filler. (:pull:`1707`) :user:`ledm` +- Update use of fx vars to new syntax (:pull:`2145`) :user:`sloosvel` +- Add recipe for climate impact research (:pull:`2072`) :user:`Peter9192` +- Update references "master" to "main" (:pull:`2172`) :user:`axel-lauer` +- Force git to ignore VSCode workspace files (:pull:`2186`) `Javier Vegas-Regidor `__ +- Update to new ESMValTool logo (:pull:`2168`) :user:`axel-lauer` +- Python cmorizers for CDR1 and CDR2 ESACCI H2O (TCWV=prw) data. (:pull:`2152`) :user:`katjaweigel` +- Remove obsolete conda package (closes #2100) (:pull:`2103`) :user:`zklaus` .. _changelog-v2-2-0: @@ -1008,110 +1008,110 @@ This release includes Bug fixes ~~~~~~~~~ -- Bugfix: time weights in time_operations (`#1956 `__) `Axel Lauer `__ -- Fix issues with bibtex references (`#1955 `__) `Stef Smeets `__ -- Fix ImportError for `configure_logging` (`#1976 `__) `Stef Smeets `__ -- Add required functional parameters for extract time in recipe_er5.yml (`#1978 `__) `Valeriu Predoi `__ -- Revert "Fix ImportError for `configure_logging`" (`#1992 `__) `Bouwe Andela `__ -- Fix import of esmvalcore _logging module in cmorize_obs.py (`#2020 `__) `Valeriu Predoi `__ -- Fix logging import in cmorize_obs again since last merge was nulled by pre-commit hooks (`#2022 `__) `Valeriu Predoi `__ -- Refactor the functions in derive_evspsblpot due to new iris (`#2023 `__) `SarahAlidoost `__ -- Avoid importing private ESMValCore functions in CMORizer (`#2027 `__) `Bouwe Andela `__ -- Fix extract_seasons in validation recipe (`#2054 `__) `Javier Vegas-Regidor `__ +- Bugfix: time weights in time_operations (:pull:`1956`) :user:`axel-lauer` +- Fix issues with bibtex references (:pull:`1955`) :user:`stefsmeets` +- Fix ImportError for `configure_logging` (:pull:`1976`) :user:`stefsmeets` +- Add required functional parameters for extract time in recipe_er5.yml (:pull:`1978`) :user:`valeriupredoi` +- Revert "Fix ImportError for `configure_logging`" (:pull:`1992`) :user:`bouweandela` +- Fix import of esmvalcore _logging module in cmorize_obs.py (:pull:`2020`) :user:`valeriupredoi` +- Fix logging import in cmorize_obs again since last merge was nulled by pre-commit hooks (:pull:`2022`) :user:`valeriupredoi` +- Refactor the functions in derive_evspsblpot due to new iris (:pull:`2023`) :user:`SarahAlidoost` +- Avoid importing private ESMValCore functions in CMORizer (:pull:`2027`) :user:`bouweandela` +- Fix extract_seasons in validation recipe (:pull:`2054`) `Javier Vegas-Regidor `__ Deprecations ~~~~~~~~~~~~ -- Deprecate classes Variable, Variables and Datasets (`#1944 `__) `Manuel Schlund `__ -- Python 3.9: remove pynio as dependency and replace with rasterio and pin Matplotlib>3.3.1 and pin cartopy>=0.18 (`#1997 `__) `Valeriu Predoi `__ -- Removed write_plots and write_netcdf in some python diagnostics (`#2036 `__) `Manuel Schlund `__ +- Deprecate classes Variable, Variables and Datasets (:pull:`1944`) :user:`schlunma` +- Python 3.9: remove pynio as dependency and replace with rasterio and pin Matplotlib>3.3.1 and pin cartopy>=0.18 (:pull:`1997`) :user:`valeriupredoi` +- Removed write_plots and write_netcdf in some python diagnostics (:pull:`2036`) :user:`schlunma` Documentation ~~~~~~~~~~~~~ -- Update instructions on making a release (`#1867 `__) `Bouwe Andela `__ -- Update review.rst (`#1917 `__) `Axel Lauer `__ -- Add guidance on how to review a pull request (`#1872 `__) `Bouwe Andela `__ -- Adding tutorial links to documentation (`#1927 `__) `Birgit Hassler `__ -- Added bibtex file for schlund20jgr (`#1928 `__) `Manuel Schlund `__ -- Documentation contact added the actual email for the mailing list (`#1938 `__) `Valeriu Predoi `__ -- Make CircleCI badge specific to main branch (`#1831 `__) `Bouwe Andela `__ -- Documentation on how to move code from a private repository to a public repository (`#1920 `__) `Birgit Hassler `__ -- Refine pull request review guidelines (`#1924 `__) `Stef Smeets `__ -- Update release schedule (`#1948 `__) `Klaus Zimmermann `__ -- Improve contact info and move to more prominent location (`#1950 `__) `Bouwe Andela `__ -- Add some maintainers to some recipes that are missing them (`#1970 `__) `Valeriu Predoi `__ -- Update core team info (`#1973 `__) `Axel Lauer `__ -- Combine installation from source instructions and add common issues (`#1971 `__) `Bouwe Andela `__ -- Update iris documentation URL for sphinx (`#2003 `__) `Bouwe Andela `__ -- Fix iris documentation link(s) with new iris3 location on readthedocs (`#2012 `__) `Valeriu Predoi `__ -- Document how to run tests for installation verification (`#1847 `__) `Valeriu Predoi `__ -- List Remi Kazeroni as a code owner and sole merger of CMORizers (`#2017 `__) `Bouwe Andela `__ -- Install documentation: mention that we build conda package with python>=3.7 (`#2030 `__) `Valeriu Predoi `__ -- Recipe and documentation update for ERA5-Land. (`#1906 `__) `katjaweigel `__ -- Update changelog and changelog tool for v2.2.0 (`#2043 `__) `Javier Vegas-Regidor `__ -- Final update to the changelog for v2.2.0 (`#2056 `__) `Javier Vegas-Regidor `__ +- Update instructions on making a release (:pull:`1867`) :user:`bouweandela` +- Update review.rst (:pull:`1917`) :user:`axel-lauer` +- Add guidance on how to review a pull request (:pull:`1872`) :user:`bouweandela` +- Adding tutorial links to documentation (:pull:`1927`) :user:`hb326` +- Added bibtex file for schlund20jgr (:pull:`1928`) :user:`schlunma` +- Documentation contact added the actual email for the mailing list (:pull:`1938`) :user:`valeriupredoi` +- Make CircleCI badge specific to main branch (:pull:`1831`) :user:`bouweandela` +- Documentation on how to move code from a private repository to a public repository (:pull:`1920`) :user:`hb326` +- Refine pull request review guidelines (:pull:`1924`) :user:`stefsmeets` +- Update release schedule (:pull:`1948`) :user:`zklaus` +- Improve contact info and move to more prominent location (:pull:`1950`) :user:`bouweandela` +- Add some maintainers to some recipes that are missing them (:pull:`1970`) :user:`valeriupredoi` +- Update core team info (:pull:`1973`) :user:`axel-lauer` +- Combine installation from source instructions and add common issues (:pull:`1971`) :user:`bouweandela` +- Update iris documentation URL for sphinx (:pull:`2003`) :user:`bouweandela` +- Fix iris documentation link(s) with new iris3 location on readthedocs (:pull:`2012`) :user:`valeriupredoi` +- Document how to run tests for installation verification (:pull:`1847`) :user:`valeriupredoi` +- List Remi Kazeroni as a code owner and sole merger of CMORizers (:pull:`2017`) :user:`bouweandela` +- Install documentation: mention that we build conda package with python>=3.7 (:pull:`2030`) :user:`valeriupredoi` +- Recipe and documentation update for ERA5-Land. (:pull:`1906`) :user:`katjaweigel` +- Update changelog and changelog tool for v2.2.0 (:pull:`2043`) `Javier Vegas-Regidor `__ +- Final update to the changelog for v2.2.0 (:pull:`2056`) `Javier Vegas-Regidor `__ Diagnostics ~~~~~~~~~~~ -- Add mapplot diagnostic to ClimWIP (`#1864 `__) `Lukas Brunner `__ -- Add the option to weight variable groups in ClimWIP (`#1856 `__) `Lukas Brunner `__ -- Implementation of ensemble member recognition to the ClimWIP diagnostic (`#1852 `__) `Lukas Brunner `__ -- Restructure ClimWIP (`#1919 `__) `Lukas Brunner `__ -- Diagnostic for recipe_eyring13jgr.yml Fig. 12 (`#1922 `__) `Lisa Bock `__ -- Added changes in shared functions necessary for schlund20esd (`#1967 `__) `Manuel Schlund `__ -- Adding recipe and diagnostics for Gier et al 2020 (`#1914 `__) `Bettina Gier `__ -- Added recipe, diagnostics and documentation for Schlund et al., ESD (2020) (`#2015 `__) `Manuel Schlund `__ -- Add PRIMAVERA Eady Growth Rate diagnostic (`#1285 `__) `sloosvel `__ -- Implement shape parameter calibration for ClimWIP (`#1905 `__) `Lukas Brunner `__ +- Add mapplot diagnostic to ClimWIP (:pull:`1864`) :user:`lukasbrunner` +- Add the option to weight variable groups in ClimWIP (:pull:`1856`) :user:`lukasbrunner` +- Implementation of ensemble member recognition to the ClimWIP diagnostic (:pull:`1852`) :user:`lukasbrunner` +- Restructure ClimWIP (:pull:`1919`) :user:`lukasbrunner` +- Diagnostic for recipe_eyring13jgr.yml Fig. 12 (:pull:`1922`) :user:`LisaBock` +- Added changes in shared functions necessary for schlund20esd (:pull:`1967`) :user:`schlunma` +- Adding recipe and diagnostics for Gier et al 2020 (:pull:`1914`) :user:`bettina-gier` +- Added recipe, diagnostics and documentation for Schlund et al., ESD (2020) (:pull:`2015`) :user:`schlunma` +- Add PRIMAVERA Eady Growth Rate diagnostic (:pull:`1285`) :user:`sloosvel` +- Implement shape parameter calibration for ClimWIP (:pull:`1905`) :user:`lukasbrunner` Observational and re-analysis dataset support ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- Extended ESRL cmorizer (`#1937 `__) `Bettina Gier `__ -- Cmorizer for GRACE data (`#1694 `__) `bascrezee `__ -- Cmorizer for latest ESACCI-SST data (`#1895 `__) `Valeriu Predoi `__ -- Fix longitude in ESRL cmorizer (`#1988 `__) `Bettina Gier `__ -- Selectively turn off fixing bounds for coordinates during cmorization with utilities.py (`#2014 `__) `Valeriu Predoi `__ -- Cmorize hadcrut5 (`#1977 `__) `mwjury `__ -- Cmorize gpcc masking (`#1995 `__) `mwjury `__ -- Cmorize_utils_save_1mon_Amon (`#1990 `__) `mwjury `__ -- Cmorize gpcc fix (`#1982 `__) `mwjury `__ -- Fix flake8 raised by develop test in cmorize_obs_gpcc.py (`#2038 `__) `Valeriu Predoi `__ +- Extended ESRL cmorizer (:pull:`1937`) :user:`bettina-gier` +- Cmorizer for GRACE data (:pull:`1694`) :user:`bascrezee` +- Cmorizer for latest ESACCI-SST data (:pull:`1895`) :user:`valeriupredoi` +- Fix longitude in ESRL cmorizer (:pull:`1988`) :user:`bettina-gier` +- Selectively turn off fixing bounds for coordinates during cmorization with utilities.py (:pull:`2014`) :user:`valeriupredoi` +- Cmorize hadcrut5 (:pull:`1977`) :user:`mwjury` +- Cmorize gpcc masking (:pull:`1995`) :user:`mwjury` +- Cmorize_utils_save_1mon_Amon (:pull:`1990`) :user:`mwjury` +- Cmorize gpcc fix (:pull:`1982`) :user:`mwjury` +- Fix flake8 raised by develop test in cmorize_obs_gpcc.py (:pull:`2038`) :user:`valeriupredoi` Automatic testing ~~~~~~~~~~~~~~~~~ -- Switched miniconda conda setup hooks for Github Actions workflows (`#1913 `__) `Valeriu Predoi `__ -- Fix style issue (`#1929 `__) `Bouwe Andela `__ -- Fix mlr test with solution that works for CentOS too (`#1936 `__) `Valeriu Predoi `__ -- Temporary deactivation Github Actions on OSX (`#1939 `__) `Valeriu Predoi `__ -- Fix conda installation test on CircleCI (`#1952 `__) `Bouwe Andela `__ -- Github Actions: change time for cron job that installs from conda (`#1969 `__) `Valeriu Predoi `__ -- CI upload relevant artifacts for test job (`#1999 `__) `Valeriu Predoi `__ -- Github Actions test that runs with the latest ESMValCore main (`#1989 `__) `Valeriu Predoi `__ -- Introduce python 39 in Github Actions tests (`#2029 `__) `Valeriu Predoi `__ -- Remove test for conda package installation on Python 3.6 (`#2033 `__) `Valeriu Predoi `__ -- Update codacy coverage reporter to fix coverage (`#2039 `__) `Bouwe Andela `__ +- Switched miniconda conda setup hooks for Github Actions workflows (:pull:`1913`) :user:`valeriupredoi` +- Fix style issue (:pull:`1929`) :user:`bouweandela` +- Fix mlr test with solution that works for CentOS too (:pull:`1936`) :user:`valeriupredoi` +- Temporary deactivation Github Actions on OSX (:pull:`1939`) :user:`valeriupredoi` +- Fix conda installation test on CircleCI (:pull:`1952`) :user:`bouweandela` +- Github Actions: change time for cron job that installs from conda (:pull:`1969`) :user:`valeriupredoi` +- CI upload relevant artifacts for test job (:pull:`1999`) :user:`valeriupredoi` +- Github Actions test that runs with the latest ESMValCore main (:pull:`1989`) :user:`valeriupredoi` +- Introduce python 39 in Github Actions tests (:pull:`2029`) :user:`valeriupredoi` +- Remove test for conda package installation on Python 3.6 (:pull:`2033`) :user:`valeriupredoi` +- Update codacy coverage reporter to fix coverage (:pull:`2039`) :user:`bouweandela` Installation ~~~~~~~~~~~~ -- Simplify installation of R development dependencies (`#1930 `__) `Bouwe Andela `__ -- Fix docker build (`#1934 `__) `Bouwe Andela `__ -- Use new conda environment for installing ESMValTool in Docker containers (`#1993 `__) `Bouwe Andela `__ -- Fix conda build (`#2026 `__) `Bouwe Andela `__ +- Simplify installation of R development dependencies (:pull:`1930`) :user:`bouweandela` +- Fix docker build (:pull:`1934`) :user:`bouweandela` +- Use new conda environment for installing ESMValTool in Docker containers (:pull:`1993`) :user:`bouweandela` +- Fix conda build (:pull:`2026`) :user:`bouweandela` Improvements ~~~~~~~~~~~~ -- Allow multiple references for a cmorizer script (`#1953 `__) `SarahAlidoost `__ -- Add GRACE to the recipe check_obs (`#1963 `__) `Rémi Kazeroni `__ -- Align ESMValTool to ESMValCore=2.2.0 (adopt iris3, fix environment for new Core release) (`#1874 `__) `Stef Smeets `__ -- Make it possible to use write_plots and write_netcdf from recipe instead of config-user.yml (`#2018 `__) `Bouwe Andela `__ -- Revise lisflood and hype recipes (`#2035 `__) `SarahAlidoost `__ -- Set version to 2.2.0 (`#2042 `__) `Javier Vegas-Regidor `__ +- Allow multiple references for a cmorizer script (:pull:`1953`) :user:`SarahAlidoost` +- Add GRACE to the recipe check_obs (:pull:`1963`) :user:`remi-kazeroni` +- Align ESMValTool to ESMValCore=2.2.0 (adopt iris3, fix environment for new Core release) (:pull:`1874`) :user:`stefsmeets` +- Make it possible to use write_plots and write_netcdf from recipe instead of config-user.yml (:pull:`2018`) :user:`bouweandela` +- Revise lisflood and hype recipes (:pull:`2035`) :user:`SarahAlidoost` +- Set version to 2.2.0 (:pull:`2042`) `Javier Vegas-Regidor `__ .. _changelog-v2-1-1: @@ -1123,14 +1123,14 @@ This release includes Improvements ~~~~~~~~~~~~ -- Fix the conda build on CircleCI (`#1883 `__) `Bouwe Andela `__ -- Pin matplotlib to <3.3 and add compilers (`#1898 `__) `Bouwe Andela `__ -- Pin esmvaltool subpackages to the same version and build as the esmvaltool conda package (`#1899 `__) `Bouwe Andela `__ +- Fix the conda build on CircleCI (:pull:`1883`) :user:`bouweandela` +- Pin matplotlib to <3.3 and add compilers (:pull:`1898`) :user:`bouweandela` +- Pin esmvaltool subpackages to the same version and build as the esmvaltool conda package (:pull:`1899`) :user:`bouweandela` Documentation ~~~~~~~~~~~~~ -- Release notes v2.1.1 (`#1932 `__) `Valeriu Predoi `__ +- Release notes v2.1.1 (:pull:`1932`) :user:`valeriupredoi` .. _changelog-v2-1-0: @@ -1142,51 +1142,51 @@ This release includes Diagnostics ~~~~~~~~~~~ -- Add extra steps to diagnostic to make output of hydrology/recipe_lisflood.yml usable by the LISFLOOD model (`#1737 `__) `Jaro Camphuijsen `__ -- Recipe to reproduce the 2014 KNMI Climate Scenarios (kcs). (`#1667 `__) `Peter Kalverla `__ -- Implement the climwip weighting scheme in a recipe and diagnostic (`#1648 `__) `Jaro Camphuijsen `__ -- Remove unreviewed autoassess recipes (`#1840 `__) `Valeriu Predoi `__ -- Changes in shared scripts for Schlund et al., JGR: Biogeosciences, 2020 (`#1845 `__) `Manuel Schlund `__ -- Updated derivation test recipe (`#1790 `__) `Manuel Schlund `__ -- Support for multiple model occurrence in perf main (`#1649 `__) `Bettina Gier `__ -- Add recipe and diagnostics for Schlund et al., JGR: Biogeosciences, 2020 (`#1860 `__) `Manuel Schlund `__ -- Adjust recipe_extract_shape.yml to recent changes in the example diagnostic.py (`#1880 `__) `Bouwe Andela `__ +- Add extra steps to diagnostic to make output of hydrology/recipe_lisflood.yml usable by the LISFLOOD model (:pull:`1737`) :user:`JaroCamphuijsen` +- Recipe to reproduce the 2014 KNMI Climate Scenarios (kcs). (:pull:`1667`) :user:`Peter9192` +- Implement the climwip weighting scheme in a recipe and diagnostic (:pull:`1648`) :user:`JaroCamphuijsen` +- Remove unreviewed autoassess recipes (:pull:`1840`) :user:`valeriupredoi` +- Changes in shared scripts for Schlund et al., JGR: Biogeosciences, 2020 (:pull:`1845`) :user:`schlunma` +- Updated derivation test recipe (:pull:`1790`) :user:`schlunma` +- Support for multiple model occurrence in perf main (:pull:`1649`) :user:`bettina-gier` +- Add recipe and diagnostics for Schlund et al., JGR: Biogeosciences, 2020 (:pull:`1860`) :user:`schlunma` +- Adjust recipe_extract_shape.yml to recent changes in the example diagnostic.py (:pull:`1880`) :user:`bouweandela` Documentation ~~~~~~~~~~~~~ -- Add pip installation instructions (`#1783 `__) `Bouwe Andela `__ -- Add installation instruction for R and Julia dependencies tot pip install (`#1787 `__) `Bouwe Andela `__ -- Avoid autodocsumm 0.2.0 and update documentation build dependencies (`#1794 `__) `Bouwe Andela `__ -- Add more information on working on cluster attached to ESGF node (`#1821 `__) `Bouwe Andela `__ -- Add release strategy to community documentation (`#1809 `__) `Klaus Zimmermann `__ -- Update esmvaltool run command everywhere in documentation (`#1820 `__) `Bouwe Andela `__ -- Add more info on documenting a recipe (`#1795 `__) `Bouwe Andela `__ -- Improve the Python example diagnostic and documentation (`#1827 `__) `Bouwe Andela `__ -- Improve description of how to use draft_release_notes.py (`#1848 `__) `Bouwe Andela `__ -- Update changelog for release 2.1 (`#1886 `__) `Valeriu Predoi `__ +- Add pip installation instructions (:pull:`1783`) :user:`bouweandela` +- Add installation instruction for R and Julia dependencies tot pip install (:pull:`1787`) :user:`bouweandela` +- Avoid autodocsumm 0.2.0 and update documentation build dependencies (:pull:`1794`) :user:`bouweandela` +- Add more information on working on cluster attached to ESGF node (:pull:`1821`) :user:`bouweandela` +- Add release strategy to community documentation (:pull:`1809`) :user:`zklaus` +- Update esmvaltool run command everywhere in documentation (:pull:`1820`) :user:`bouweandela` +- Add more info on documenting a recipe (:pull:`1795`) :user:`bouweandela` +- Improve the Python example diagnostic and documentation (:pull:`1827`) :user:`bouweandela` +- Improve description of how to use draft_release_notes.py (:pull:`1848`) :user:`bouweandela` +- Update changelog for release 2.1 (:pull:`1886`) :user:`valeriupredoi` Improvements ~~~~~~~~~~~~ -- Fix R installation in WSL (`#1789 `__) `Javier Vegas-Regidor `__ -- Add pre-commit for linting/formatting (`#1796 `__) `Stef Smeets `__ -- Speed up tests on CircleCI and use pytest to run them (`#1804 `__) `Bouwe Andela `__ -- Move pre-commit excludes to top-level and correct order of lintr and styler (`#1805 `__) `Stef Smeets `__ -- Remove isort setup to fix formatting conflict with yapf (`#1815 `__) `Stef Smeets `__ -- GitHub Actions (`#1806 `__) `Valeriu Predoi `__ -- Fix yapf-isort import formatting conflict (`#1822 `__) `Stef Smeets `__ -- Replace vmprof with vprof as the default profiler (`#1829 `__) `Bouwe Andela `__ -- Update ESMValCore v2.1.0 requirement (`#1839 `__) `Javier Vegas-Regidor `__ -- Pin iris to version 2 (`#1881 `__) `Bouwe Andela `__ -- Pin eccodes to not use eccodes=2.19.0 for cdo to work fine (`#1869 `__) `Valeriu Predoi `__ -- Increase version to 2.1.0 and add release notes (`#1868 `__) `Valeriu Predoi `__ -- Github Actions Build Packages and Deploy tests (conda and PyPi) (`#1858 `__) `Valeriu Predoi `__ +- Fix R installation in WSL (:pull:`1789`) `Javier Vegas-Regidor `__ +- Add pre-commit for linting/formatting (:pull:`1796`) :user:`stefsmeets` +- Speed up tests on CircleCI and use pytest to run them (:pull:`1804`) :user:`bouweandela` +- Move pre-commit excludes to top-level and correct order of lintr and styler (:pull:`1805`) :user:`stefsmeets` +- Remove isort setup to fix formatting conflict with yapf (:pull:`1815`) :user:`stefsmeets` +- GitHub Actions (:pull:`1806`) :user:`valeriupredoi` +- Fix yapf-isort import formatting conflict (:pull:`1822`) :user:`stefsmeets` +- Replace vmprof with vprof as the default profiler (:pull:`1829`) :user:`bouweandela` +- Update ESMValCore v2.1.0 requirement (:pull:`1839`) `Javier Vegas-Regidor `__ +- Pin iris to version 2 (:pull:`1881`) :user:`bouweandela` +- Pin eccodes to not use eccodes=2.19.0 for cdo to work fine (:pull:`1869`) :user:`valeriupredoi` +- Increase version to 2.1.0 and add release notes (:pull:`1868`) :user:`valeriupredoi` +- Github Actions Build Packages and Deploy tests (conda and PyPi) (:pull:`1858`) :user:`valeriupredoi` Observational and re-analysis dataset support ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- Added CMORizer for Scripps-CO2-KUM (`#1857 `__) `Manuel Schlund `__ +- Added CMORizer for Scripps-CO2-KUM (:pull:`1857`) :user:`schlunma` .. _changelog-v2-0-0: @@ -1198,106 +1198,106 @@ This release includes Bug fixes ~~~~~~~~~ -- Fix pep8-naming errors and fix zmnam diagnostic (`#1702 `__) `Bouwe Andela `__ -- Fix keyword argument in cmorize_obs (`#1721 `__) `Mattia Righi `__ -- Fixed JMA-TRANSCOM CMORizer (`#1735 `__) `Manuel Schlund `__ -- Fix bug in extract_doi_value (`#1734 `__) `bascrezee `__ -- Fix small errors in the arctic_ocean diagnostic (`#1722 `__) `Nikolay Koldunov `__ -- Flatten ancestor lists for diag_spei.R and diag_spi.R. (`#1745 `__) `katjaweigel `__ -- Fix for recipe_ocean_ice_extent.yml (`#1744 `__) `Mattia Righi `__ -- Fix recipe_combined_indices.yml provenance (`#1746 `__) `Javier Vegas-Regidor `__ -- Fix provenance in recipe_multimodel_products (`#1747 `__) `Javier Vegas-Regidor `__ -- Exclude FGOALS-g2 due to ESMValCore issue #728 (`#1749 `__) `Mattia Righi `__ -- Fix recipe_modes_of_variability (`#1753 `__) `Javier Vegas-Regidor `__ -- Flatten lists for ancestors for hyint to prevent nested lists. (`#1752 `__) `katjaweigel `__ -- Fix bug in cmorize_obs_eppley_vgpm_modis.py (#1729) (`#1759 `__) `Tomas Lovato `__ -- Correct mip for clltkisccp in example derive preprocessor recipe (`#1768 `__) `Bouwe Andela `__ -- Update date conversion in recipe_hype.yml (`#1769 `__) `Bouwe Andela `__ -- Fix recipe_correlation.yml (`#1767 `__) `Bouwe Andela `__ -- Add attribute positive: down to plev coordinate in ERA-Interim CMORizer (`#1771 `__) `Bouwe Andela `__ -- Fix sispeed in recipe_preprocessor_derive_test (`#1772 `__) `Javier Vegas-Regidor `__ -- Fix extreme events and extreme index ancestors (`#1774 `__) `katjaweigel `__ -- Correct date in output filenames of ERA5 CMORizer recipe (`#1773 `__) `Bouwe Andela `__ -- Exclude WOA from multi-model stats in recipe_ocean_bgc (`#1778 `__) `Mattia Righi `__ +- Fix pep8-naming errors and fix zmnam diagnostic (:pull:`1702`) :user:`bouweandela` +- Fix keyword argument in cmorize_obs (:pull:`1721`) :user:`mattiarighi` +- Fixed JMA-TRANSCOM CMORizer (:pull:`1735`) :user:`schlunma` +- Fix bug in extract_doi_value (:pull:`1734`) :user:`bascrezee` +- Fix small errors in the arctic_ocean diagnostic (:pull:`1722`) :user:`koldunovn` +- Flatten ancestor lists for diag_spei.R and diag_spi.R. (:pull:`1745`) :user:`katjaweigel` +- Fix for recipe_ocean_ice_extent.yml (:pull:`1744`) :user:`mattiarighi` +- Fix recipe_combined_indices.yml provenance (:pull:`1746`) `Javier Vegas-Regidor `__ +- Fix provenance in recipe_multimodel_products (:pull:`1747`) `Javier Vegas-Regidor `__ +- Exclude FGOALS-g2 due to ESMValCore issue #728 (:pull:`1749`) :user:`mattiarighi` +- Fix recipe_modes_of_variability (:pull:`1753`) `Javier Vegas-Regidor `__ +- Flatten lists for ancestors for hyint to prevent nested lists. (:pull:`1752`) :user:`katjaweigel` +- Fix bug in cmorize_obs_eppley_vgpm_modis.py (#1729) (:pull:`1759`) :user:`tomaslovato` +- Correct mip for clltkisccp in example derive preprocessor recipe (:pull:`1768`) :user:`bouweandela` +- Update date conversion in recipe_hype.yml (:pull:`1769`) :user:`bouweandela` +- Fix recipe_correlation.yml (:pull:`1767`) :user:`bouweandela` +- Add attribute positive: down to plev coordinate in ERA-Interim CMORizer (:pull:`1771`) :user:`bouweandela` +- Fix sispeed in recipe_preprocessor_derive_test (:pull:`1772`) `Javier Vegas-Regidor `__ +- Fix extreme events and extreme index ancestors (:pull:`1774`) :user:`katjaweigel` +- Correct date in output filenames of ERA5 CMORizer recipe (:pull:`1773`) :user:`bouweandela` +- Exclude WOA from multi-model stats in recipe_ocean_bgc (:pull:`1778`) :user:`mattiarighi` Diagnostics ~~~~~~~~~~~ -- Enhancement of the hyint recipe to include etccdi indices (`#1133 `__) `Enrico Arnone `__ -- Add lazy regridding for wflow diagnostic (`#1630 `__) `Bouwe Andela `__ -- Miles default domains to include lat=0 (`#1626 `__) `Jost von Hardenberg `__ -- Miles: selection of reference dataset based on experiment (`#1632 `__) `Jost von Hardenberg `__ -- New recipe/diagnostic: recipe_li17natcc.yml for Axels GMD Paper (`#1567 `__) `katjaweigel `__ -- New recipe/diagnostics: recipe_deangelis_for_gmdpart4.yml for Axels GMD Paper (`#1576 `__) `katjaweigel `__ -- EWaterCycle: Add recipe to prepare input for LISFLOOD (`#1298 `__) `Stefan Verhoeven `__ -- Use area weighted regridding in wflow diagnostic (`#1643 `__) `Bouwe Andela `__ -- Workaround for permetrics recipe until Iris3 (`#1674 `__) `Mattia Righi `__ -- C3S_511_MPQB_bas-features (`#1465 `__) `bascrezee `__ -- Additional Land perfmetrics (`#1641 `__) `Bettina Gier `__ -- Necessary diagnostic from eyring06jgr for the release of version2 (`#1686 `__) `Birgit Hassler `__ -- Drought characteristics based on Martin2018 and SPI for gmd paper (`#1689 `__) `katjaweigel `__ -- Additional features and bugfixes for recipe anav13clim (`#1723 `__) `Bettina Gier `__ -- Gmd laueretal2020 revisions (`#1725 `__) `Axel Lauer `__ -- Wenzel16nature (`#1692 `__) `zechlau `__ -- Add mask albedolandcover (`#1673 `__) `bascrezee `__ -- IPCC AR5 fig. 9.3 (seasonality) (`#1726 `__) `Axel Lauer `__ -- Added additional emergent constraints on ECS (`#1585 `__) `Manuel Schlund `__ -- A diagnostic to evaluate the turnover times of land ecosystem carbon (`#1395 `__) `koir-su `__ -- Removed multi_model_statistics step in recipe_oceans_example.yml as a workaround (`#1779 `__) `Valeriu Predoi `__ +- Enhancement of the hyint recipe to include etccdi indices (:pull:`1133`) :user:`earnone` +- Add lazy regridding for wflow diagnostic (:pull:`1630`) :user:`bouweandela` +- Miles default domains to include lat=0 (:pull:`1626`) :user:`jhardenberg` +- Miles: selection of reference dataset based on experiment (:pull:`1632`) :user:`jhardenberg` +- New recipe/diagnostic: recipe_li17natcc.yml for Axels GMD Paper (:pull:`1567`) :user:`katjaweigel` +- New recipe/diagnostics: recipe_deangelis_for_gmdpart4.yml for Axels GMD Paper (:pull:`1576`) :user:`katjaweigel` +- EWaterCycle: Add recipe to prepare input for LISFLOOD (:pull:`1298`) :user:`sverhoeven` +- Use area weighted regridding in wflow diagnostic (:pull:`1643`) :user:`bouweandela` +- Workaround for permetrics recipe until Iris3 (:pull:`1674`) :user:`mattiarighi` +- C3S_511_MPQB_bas-features (:pull:`1465`) :user:`bascrezee` +- Additional Land perfmetrics (:pull:`1641`) :user:`bettina-gier` +- Necessary diagnostic from eyring06jgr for the release of version2 (:pull:`1686`) :user:`hb326` +- Drought characteristics based on Martin2018 and SPI for gmd paper (:pull:`1689`) :user:`katjaweigel` +- Additional features and bugfixes for recipe anav13clim (:pull:`1723`) :user:`bettina-gier` +- Gmd laueretal2020 revisions (:pull:`1725`) :user:`axel-lauer` +- Wenzel16nature (:pull:`1692`) :user:`zechlau` +- Add mask albedolandcover (:pull:`1673`) :user:`bascrezee` +- IPCC AR5 fig. 9.3 (seasonality) (:pull:`1726`) :user:`axel-lauer` +- Added additional emergent constraints on ECS (:pull:`1585`) :user:`schlunma` +- A diagnostic to evaluate the turnover times of land ecosystem carbon (:pull:`1395`) `koir-su `__ +- Removed multi_model_statistics step in recipe_oceans_example.yml as a workaround (:pull:`1779`) :user:`valeriupredoi` Documentation ~~~~~~~~~~~~~ -- Extend getting started instructions to obtain config-user.yml (`#1642 `__) `Peter Kalverla `__ -- Extend information about native6 support on RTD (`#1652 `__) `Peter Kalverla `__ -- Update citation of ESMValTool paper in the doc (`#1664 `__) `Mattia Righi `__ -- Updated references to documentation (now docs.esmvaltool.org) (`#1679 `__) `Axel Lauer `__ -- Replace dead link with ESGF link. (`#1681 `__) `Mattia Righi `__ -- Add all European grants to Zenodo (`#1682 `__) `Bouwe Andela `__ -- Update Sphinx to v3 or later (`#1685 `__) `Bouwe Andela `__ -- Small fix to number of models in ensclus documentation (`#1691 `__) `Jost von Hardenberg `__ -- Move draft_release_notes.py from ESMValCore to here and update (`#1701 `__) `Bouwe Andela `__ -- Improve the installation instructions (`#1634 `__) `Valeriu Predoi `__ -- Improve description of how to implement provenance in diagnostic (`#1750 `__) `SarahAlidoost `__ -- Update command line interface documentation and add links to ESMValCore configuration documentation (`#1776 `__) `Bouwe Andela `__ -- Documentation on how to find shapefiles for hydrology recipes (`#1777 `__) `Jaro Camphuijsen `__ +- Extend getting started instructions to obtain config-user.yml (:pull:`1642`) :user:`Peter9192` +- Extend information about native6 support on RTD (:pull:`1652`) :user:`Peter9192` +- Update citation of ESMValTool paper in the doc (:pull:`1664`) :user:`mattiarighi` +- Updated references to documentation (now docs.esmvaltool.org) (:pull:`1679`) :user:`axel-lauer` +- Replace dead link with ESGF link. (:pull:`1681`) :user:`mattiarighi` +- Add all European grants to Zenodo (:pull:`1682`) :user:`bouweandela` +- Update Sphinx to v3 or later (:pull:`1685`) :user:`bouweandela` +- Small fix to number of models in ensclus documentation (:pull:`1691`) :user:`jhardenberg` +- Move draft_release_notes.py from ESMValCore to here and update (:pull:`1701`) :user:`bouweandela` +- Improve the installation instructions (:pull:`1634`) :user:`valeriupredoi` +- Improve description of how to implement provenance in diagnostic (:pull:`1750`) :user:`SarahAlidoost` +- Update command line interface documentation and add links to ESMValCore configuration documentation (:pull:`1776`) :user:`bouweandela` +- Documentation on how to find shapefiles for hydrology recipes (:pull:`1777`) :user:`JaroCamphuijsen` Improvements ~~~~~~~~~~~~ -- Pin flake8<3.8.0 (`#1635 `__) `Valeriu Predoi `__ -- Update conda package path in more places (`#1636 `__) `Bouwe Andela `__ -- Remove curly brackets around issue number in pull request template (`#1637 `__) `Bouwe Andela `__ -- Fix style issue in test (`#1639 `__) `Bouwe Andela `__ -- Update Codacy badges (`#1662 `__) `Bouwe Andela `__ -- Support extra installation methods in R (`#1360 `__) `Javier Vegas-Regidor `__ -- Add ncdf4.helpers package as a dependency again (`#1678 `__) `Bouwe Andela `__ -- Speed up conda installation (`#1677 `__) `Bouwe Andela `__ -- Update CMORizers and recipes for ESMValCore v2.0.0 (`#1699 `__) `SarahAlidoost `__ -- Update setup.py for PyPI package (`#1700 `__) `Bouwe Andela `__ -- Cleanup recipe headers before the release (`#1740 `__) `Mattia Righi `__ -- Add colortables as esmvaltool subcommand (`#1666 `__) `Javier Vegas-Regidor `__ -- Increase version to v2.0.0 (`#1756 `__) `Bouwe Andela `__ -- Update job script (`#1757 `__) `Mattia Righi `__ -- Read authors and description from .zenodo.json (`#1758 `__) `Bouwe Andela `__ -- Update docker recipe to install from source (`#1651 `__) `Javier Vegas-Regidor `__ +- Pin flake8<3.8.0 (:pull:`1635`) :user:`valeriupredoi` +- Update conda package path in more places (:pull:`1636`) :user:`bouweandela` +- Remove curly brackets around issue number in pull request template (:pull:`1637`) :user:`bouweandela` +- Fix style issue in test (:pull:`1639`) :user:`bouweandela` +- Update Codacy badges (:pull:`1662`) :user:`bouweandela` +- Support extra installation methods in R (:pull:`1360`) `Javier Vegas-Regidor `__ +- Add ncdf4.helpers package as a dependency again (:pull:`1678`) :user:`bouweandela` +- Speed up conda installation (:pull:`1677`) :user:`bouweandela` +- Update CMORizers and recipes for ESMValCore v2.0.0 (:pull:`1699`) :user:`SarahAlidoost` +- Update setup.py for PyPI package (:pull:`1700`) :user:`bouweandela` +- Cleanup recipe headers before the release (:pull:`1740`) :user:`mattiarighi` +- Add colortables as esmvaltool subcommand (:pull:`1666`) `Javier Vegas-Regidor `__ +- Increase version to v2.0.0 (:pull:`1756`) :user:`bouweandela` +- Update job script (:pull:`1757`) :user:`mattiarighi` +- Read authors and description from .zenodo.json (:pull:`1758`) :user:`bouweandela` +- Update docker recipe to install from source (:pull:`1651`) `Javier Vegas-Regidor `__ Observational and re-analysis dataset support ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- Cmorize aphro ma (`#1555 `__) `mwjury `__ -- Respectable testing for cmorizers/obs/utilities.py and cmorizers/obs/cmorize_obs.py (`#1517 `__) `Valeriu Predoi `__ -- Fix start year in recipe_check_obs (`#1638 `__) `Mattia Righi `__ -- Cmorizer for the PERSIANN-CDR precipitation data (`#1633 `__) `Birgit Hassler `__ -- Cmorize eobs (`#1554 `__) `mwjury `__ -- Update download cds satellite lai fapar (`#1654 `__) `bascrezee `__ -- Added monthly mean vars (ta, va, zg) to era5 cmorizer via recipe (`#1644 `__) `Evgenia Galytska `__ -- Make format time check more flexible (`#1661 `__) `Mattia Righi `__ -- Exclude od550lt1aer from recipe_check_obs.yml (`#1720 `__) `Mattia Righi `__ -- PERSIANN-CDR cmorizer update: adding the capability to save monthly mean files (`#1728 `__) `Birgit Hassler `__ -- Add standard_name attribute to lon and lat in cmorize_obs_esacci_oc.py (`#1760 `__) `Tomas Lovato `__ -- Allow for incomplete months on daily frequency in cmorizer ncl utilities (`#1754 `__) `Mattia Righi `__ -- Fix AURA-TES cmorizer (`#1766 `__) `Mattia Righi `__ +- Cmorize aphro ma (:pull:`1555`) :user:`mwjury` +- Respectable testing for cmorizers/obs/utilities.py and cmorizers/obs/cmorize_obs.py (:pull:`1517`) :user:`valeriupredoi` +- Fix start year in recipe_check_obs (:pull:`1638`) :user:`mattiarighi` +- Cmorizer for the PERSIANN-CDR precipitation data (:pull:`1633`) :user:`hb326` +- Cmorize eobs (:pull:`1554`) :user:`mwjury` +- Update download cds satellite lai fapar (:pull:`1654`) :user:`bascrezee` +- Added monthly mean vars (ta, va, zg) to era5 cmorizer via recipe (:pull:`1644`) :user:`egalytska` +- Make format time check more flexible (:pull:`1661`) :user:`mattiarighi` +- Exclude od550lt1aer from recipe_check_obs.yml (:pull:`1720`) :user:`mattiarighi` +- PERSIANN-CDR cmorizer update: adding the capability to save monthly mean files (:pull:`1728`) :user:`hb326` +- Add standard_name attribute to lon and lat in cmorize_obs_esacci_oc.py (:pull:`1760`) :user:`tomaslovato` +- Allow for incomplete months on daily frequency in cmorizer ncl utilities (:pull:`1754`) :user:`mattiarighi` +- Fix AURA-TES cmorizer (:pull:`1766`) :user:`mattiarighi` .. _changelog-v2-0-0b4: @@ -1309,43 +1309,43 @@ This release includes Bug fixes ~~~~~~~~~ -- Fix HALOE plev coordinate (`#1590 `__) `Mattia Righi `__ -- Fix tro3 units in HALOE (`#1591 `__) `Mattia Righi `__ +- Fix HALOE plev coordinate (:pull:`1590`) :user:`mattiarighi` +- Fix tro3 units in HALOE (:pull:`1591`) :user:`mattiarighi` Diagnostics ~~~~~~~~~~~ -- Applicate sea ice negative feedback (`#1299 `__) `Javier Vegas-Regidor `__ -- Add Russell18jgr ocean diagnostics (`#1592 `__) `Bouwe Andela `__ -- Refactor marrmot recipe and diagnostic to use ERA5 daily data made by new cmorizer (`#1600 `__) `SarahAlidoost `__ -- In recipe_wflow, use daily ERA5 data from the new cmorizer. (`#1599 `__) `Peter Kalverla `__ -- In wflow diagnostic, calculate PET after(!) interpolation and lapse rate correction (`#1618 `__) `Jerom Aerts `__ -- Fixed wenz14jgr (`#1562 `__) `zechlau `__ -- Update portrait_plot.ncl (`#1625 `__) `Bettina Gier `__ +- Applicate sea ice negative feedback (:pull:`1299`) `Javier Vegas-Regidor `__ +- Add Russell18jgr ocean diagnostics (:pull:`1592`) :user:`bouweandela` +- Refactor marrmot recipe and diagnostic to use ERA5 daily data made by new cmorizer (:pull:`1600`) :user:`SarahAlidoost` +- In recipe_wflow, use daily ERA5 data from the new cmorizer. (:pull:`1599`) :user:`Peter9192` +- In wflow diagnostic, calculate PET after(!) interpolation and lapse rate correction (:pull:`1618`) :user:`jeromaerts` +- Fixed wenz14jgr (:pull:`1562`) :user:`zechlau` +- Update portrait_plot.ncl (:pull:`1625`) :user:`bettina-gier` Documentation ~~~~~~~~~~~~~ -- Restructure documentation (`#1587 `__) `Bouwe Andela `__ -- Add more links to documentation (`#1595 `__) `Bouwe Andela `__ -- Update links in readme (`#1598 `__) `Bouwe Andela `__ -- Minor improvements to installation documentation (`#1608 `__) `Bouwe Andela `__ -- Add info for new mailing list to documentation. (`#1607 `__) `Björn Brötz `__ -- Update making a release documentation (`#1627 `__) `Bouwe Andela `__ +- Restructure documentation (:pull:`1587`) :user:`bouweandela` +- Add more links to documentation (:pull:`1595`) :user:`bouweandela` +- Update links in readme (:pull:`1598`) :user:`bouweandela` +- Minor improvements to installation documentation (:pull:`1608`) :user:`bouweandela` +- Add info for new mailing list to documentation. (:pull:`1607`) :user:`bjoernbroetz` +- Update making a release documentation (:pull:`1627`) :user:`bouweandela` Improvements ~~~~~~~~~~~~ -- Avoid broken pytest-html plugin (`#1583 `__) `Bouwe Andela `__ -- Remove reference section in config-references.yml (`#1545 `__) `SarahAlidoost `__ -- Various improvements to development infrastructure (`#1570 `__) `Bouwe Andela `__ -- Install scikit-learn from conda, remove libunwind as a direct dependency (`#1611 `__) `Valeriu Predoi `__ -- Create conda subpackages and enable tests (`#1624 `__) `Bouwe Andela `__ +- Avoid broken pytest-html plugin (:pull:`1583`) :user:`bouweandela` +- Remove reference section in config-references.yml (:pull:`1545`) :user:`SarahAlidoost` +- Various improvements to development infrastructure (:pull:`1570`) :user:`bouweandela` +- Install scikit-learn from conda, remove libunwind as a direct dependency (:pull:`1611`) :user:`valeriupredoi` +- Create conda subpackages and enable tests (:pull:`1624`) :user:`bouweandela` Observational and re-analysis dataset support ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- Cmorizer for HALOE (`#1581 `__) `Mattia Righi `__ -- Add CMORizer for CT2019 (`#1604 `__) `Manuel Schlund `__ +- Cmorizer for HALOE (:pull:`1581`) :user:`mattiarighi` +- Add CMORizer for CT2019 (:pull:`1604`) :user:`schlunma` For older releases, see the release notes on https://github.com/ESMValGroup/ESMValTool/releases. diff --git a/doc/sphinx/source/community/maintainer.rst b/doc/sphinx/source/community/maintainer.rst index 5bec2e825e..7e73748be9 100644 --- a/doc/sphinx/source/community/maintainer.rst +++ b/doc/sphinx/source/community/maintainer.rst @@ -8,7 +8,7 @@ the interface of library functions may change when updating to new versions. Thi withdrawal of datasets used by a recipe can result in an existing recipe to stop working. Such "broken" recipes might require some work to fix such problems and make the recipe fully functional again. -A first **contact point** for the technical lead development team (`@ESMValGroup/technical-lead-development-team`_) in such cases is the recipe "maintainer". The recipe +A first **contact point** for the technical lead development team (:team:`technical-lead-development-team`) in such cases is the recipe "maintainer". The recipe maintainer is then asked to check the affected recipe and if possible, fix the problems or work with the technical lead development team to find a solution. Ideally, a recipe maintainer is able to tell whether the results of a fixed recipe are scientifically valid and look as expected. Being a recipe maintainer consists of the following tasks: @@ -22,10 +22,7 @@ recipe are scientifically valid and look as expected. Being a recipe maintainer * informing the core development team when no longer available as maintainer Ideally, a recipe maintainer is named when contributing a new recipe to the ESMValTool. Recipe maintainers are asked to inform -the core development team (`@ESMValGroup/esmvaltool-coreteam`_) when they are no longer able to act as maintainer or when they would like to step down from this duty +the core development team (:team:`esmvaltool-coreteam`) when they are no longer able to act as maintainer or when they would like to step down from this duty for any reason. The core development team will then try to find a successor. If no recipe maintainer can be found, the :ref:`policy on unmaintained broken (non-working) recipes` might apply eventually leading to retirement of the affected recipe. - -.. _`@ESMValGroup/technical-lead-development-team`: https://github.com/orgs/ESMValGroup/teams/technical-lead-development-team -.. _`@ESMValGroup/esmvaltool-coreteam`: https://github.com/orgs/ESMValGroup/teams/esmvaltool-coreteam diff --git a/doc/sphinx/source/community/release_strategy/detailed_release_procedure.rst b/doc/sphinx/source/community/release_strategy/detailed_release_procedure.rst index 3f710eaa21..a73643f454 100644 --- a/doc/sphinx/source/community/release_strategy/detailed_release_procedure.rst +++ b/doc/sphinx/source/community/release_strategy/detailed_release_procedure.rst @@ -136,8 +136,8 @@ Recipe output can be copied by doing from the VM: .. code-block:: bash - nohup rsync -rlt /path_to_testing/esmvaltool_output/* /shared/esmvaltool/v2.x.x/ - + nohup rsync --exclude preproc/ -rlt /path_to_testing/esmvaltool_output/* /shared/esmvaltool/v2.x.x/ + By copying the debug.html and index.html files into /shared/esmvaltool/v2.x.x/, the output becomes available online, see for `example `_. @@ -151,13 +151,13 @@ Link the overview webpage to the release issue. This makes it much easier to ask for feedback from recipe developers and analyse failures. Results produced with the final ESMValCore release candidate should be put in a VM directory -named after the version number, e.g. ``v2.x.x``. +named after the version number, e.g. ``v2.x.x``. Once the release process is over, test results produced with previous release candidates can be deleted to save space on the VM. .. note:: If you wrote recipe runs output to Levante's `/scratch` partition, be aware that - the data will be removed after two weeks, so you will have to quickly move the + the data will be removed after two weeks, so you will have to quickly move the output data to the VM, using the ``nohup`` command above. Running the comparison @@ -189,15 +189,15 @@ The steps to running the compare tool on the VM are the following: - prerequisite - install `imagehash`: `pip install imagehash` - reference run (v2.7.0; previous stable release): `export reference_dir=/work/bd0854/b382109/v270` (contains `preproc/` dirs too, 122 recipes) - current run (v2.8.0): `export current_dir=path_to_current_run` -- run the :ref:`comparison script` with: +- run the :ref:`comparison script` with: .. code-block:: bash nohup python ESMValTool/esmvaltool/utils/testing/regression/compare.py --reference $reference_dir --current $current_dir > compare_v280_output.txt Copy the comparison txt file to the release issue. -Some of the recipes will appear as having identical output to the one from previous release. -However, others will need human inspection. +Some of the recipes will appear as having identical output to the one from previous release. +However, others will need human inspection. Ask the recipe maintainers (`@ESMValGroup/esmvaltool-recipe-maintainers`_) and ESMValTool Development Team (`@ESMValGroup/esmvaltool-developmentteam`_) to provide assistance in checking the results. Here are some guidelines on how to perform the human inspection: diff --git a/doc/sphinx/source/community/release_strategy/release_strategy.rst b/doc/sphinx/source/community/release_strategy/release_strategy.rst index 9bd8d71e2d..b358fdb7f3 100644 --- a/doc/sphinx/source/community/release_strategy/release_strategy.rst +++ b/doc/sphinx/source/community/release_strategy/release_strategy.rst @@ -54,34 +54,40 @@ With the following release schedule, we strive to have three releases per year a Upcoming releases ^^^^^^^^^^^^^^^^^ -- 2.10.0 (Release Manager: `Klaus Zimmermann`_) +- 2.11.0 (Release Manager: TBD) -+------------+--------------------------+ -| 2023-10-02 |ESMValCore feature freeze | -+------------+--------------------------+ -| 2023-10-09 |ESMValCore release | -+------------+--------------------------+ -| 2023-10-16 |ESMValTool feature freeze | -+------------+--------------------------+ -| 2023-10-23 |ESMValTool release | -+------------+--------------------------+ +Planned for February or March 2024 Past releases ^^^^^^^^^^^^^ +- 2.10.0 (Release Manager: `Klaus Zimmermann`_) + ++------------+------------+----------------------------------------+-------------------------------------+ +| Planned | Done | Event | Changelog | ++============+============+========================================+=====================================+ +| 2023-10-02 | | ESMValCore `Feature Freeze`_ | | ++------------+------------+----------------------------------------+-------------------------------------+ +| 2023-10-09 | 2023-12-19 | :esmvalcore-release:`v2.10.0` released | :ref:`esmvalcore:changelog-v2-10-0` | ++------------+------------+----------------------------------------+-------------------------------------+ +| 2023-10-16 | | ESMValTool `Feature Freeze`_ | | ++------------+------------+----------------------------------------+-------------------------------------+ +| 2023-10-16 | 2023-12-20 | :release:`v2.10.0` released | :ref:`changelog-v2-10-0` | ++------------+------------+----------------------------------------+-------------------------------------+ + - 2.9.0 (Release Manager: `Bouwe Andela`_) -+------------+------------+---------------------------------------------------------------------------------------------+------------------------------------+ -| Planned | Done | Event | Changelog | -+============+============+=============================================================================================+====================================+ -| 2023-06-05 | | ESMValCore Feature Freeze | | -+------------+------------+---------------------------------------------------------------------------------------------+------------------------------------+ -| 2023-06-12 | 2023-07-04 | `ESMValCore Release 2.9.0 `_ | :ref:`esmvalcore:changelog-v2-9-0` | -+------------+------------+---------------------------------------------------------------------------------------------+------------------------------------+ -| 2023-06-19 | | ESMValTool Feature Freeze | | -+------------+------------+---------------------------------------------------------------------------------------------+------------------------------------+ -| 2023-06-26 | 2023-07-06 | `ESMValTool Release 2.9.0 `_ | :ref:`changelog-v2-9-0` | -+------------+------------+---------------------------------------------------------------------------------------------+------------------------------------+ ++------------+------------+---------------------------------------+-------------------------------------+ +| Planned | Done | Event | Changelog | ++============+============+=======================================+=====================================+ +| 2023-06-05 | | ESMValCore `Feature Freeze`_ | | ++------------+------------+---------------------------------------+-------------------------------------+ +| 2023-06-12 | 2023-07-04 | :esmvalcore-release:`v2.9.0` released | :ref:`esmvalcore:changelog-v2-9-0` | ++------------+------------+---------------------------------------+-------------------------------------+ +| 2023-06-19 | | ESMValTool `Feature Freeze`_ | | ++------------+------------+---------------------------------------+-------------------------------------+ +| 2023-06-26 | 2023-07-06 | :release:`v2.9.0` released | :ref:`changelog-v2-9-0` | ++------------+------------+---------------------------------------+-------------------------------------+ - 2.8.1 (Bugfix, Release Manager: `Valeriu Predoi`_) @@ -287,6 +293,8 @@ These are the detailed steps to take to make a release. - If a bug is discovered that needs to be fixed before the release, a pull request can be made to the main branch to fix the bug. The person making the pull request can then ask the release manager to cherry-pick that commit into the release branch. - Update the :ref:`list of broken recipes ` with new recipes that could not be run successfully during the testing. Open a separate GitHub issue for each failing recipe and assign the next milestone. + Open an overview issue, see :issue:`3484` for an example, and review past overview issues. + Take action to ensure that the broken recipe policy is followed. #. ESMValCore release @@ -339,7 +347,7 @@ Glossary Feature freeze ~~~~~~~~~~~~~~ -The date on which no new features may be submitted for the upcoming release. +The date on which no new features may be submitted for the upcoming release. After this date, only critical bug fixes can still be included to the :ref:`release_branch`. Development work can continue in the main branch. If you are unsure whether new developments could interfere with the release, check with the :ref:`release_manager`. @@ -411,7 +419,7 @@ All tests should pass before making a release (branch). ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The version number is automatically generated from the information provided by -git using [setuptools-scm](https://pypi.org/project/setuptools-scm/), but a +git using `setuptools-scm `__, but a static version number is stored in ``CITATION.cff``. Make sure to update the version number and release date in ``CITATION.cff``. See https://semver.org for more information on choosing a version number. @@ -464,8 +472,8 @@ and create the new release from the release branch (i.e. not from ``main``). The release tag always starts with the letter ``v`` followed by the version number, e.g. ``v2.1.0``. -6. Mark the release in the main branch -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +6. Merge the release branch back into the main branch +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ When the (pre-)release is tagged, it is time to merge the release branch back into `main`. We do this for two reasons, namely, one, to mark the point up to which commits in `main` diff --git a/doc/sphinx/source/conf.py b/doc/sphinx/source/conf.py index 5ef08c3b06..600eaa8253 100644 --- a/doc/sphinx/source/conf.py +++ b/doc/sphinx/source/conf.py @@ -63,6 +63,7 @@ extensions = [ 'sphinx.ext.autodoc', 'sphinx.ext.doctest', + 'sphinx.ext.extlinks', 'sphinx.ext.intersphinx', 'sphinx.ext.todo', 'sphinx.ext.coverage', @@ -441,6 +442,40 @@ 'sklearn': ('https://scikit-learn.org/stable', None), } +# -- Extlinks extension ------------------------------------------------------- +# See https://www.sphinx-doc.org/en/master/usage/extensions/extlinks.html + +extlinks = { + "discussion": ( + "https://github.com/ESMValGroup/ESMValTool/discussions/%s", + "Discussion #%s", + ), + "issue": ( + "https://github.com/ESMValGroup/ESMValTool/issues/%s", + "Issue #%s", + ), + "pull": ( + "https://github.com/ESMValGroup/ESMValTool/pull/%s", + "Pull request #%s", + ), + "release": ( + "https://github.com/ESMValGroup/ESMValTool/releases/tag/%s", + "ESMValTool %s", + ), + "esmvalcore-release": ( + "https://github.com/ESMValGroup/ESMValCore/releases/tag/%s", + "ESMValCore %s", + ), + "team": ( + "https://github.com/orgs/ESMValGroup/teams/%s", + "@ESMValGroup/%s", + ), + "user": ( + "https://github.com/%s", + "@%s", + ), +} + # -- Custom Document processing ---------------------------------------------- import gensidebar diff --git a/doc/sphinx/source/utils.rst b/doc/sphinx/source/utils.rst index e5e7b00553..03e2793dca 100644 --- a/doc/sphinx/source/utils.rst +++ b/doc/sphinx/source/utils.rst @@ -118,11 +118,11 @@ Running multiple recipes It is possible to run more than one recipe in one go. This can for example be achieved by using ``rose`` and/or ``cylc``, tools -that may be available at your local HPC cluster. +that may be available at your local HPC cluster. In the case in which neither ``rose`` nor ``cylc`` are available at your HPC cluster, it is possible to automatically generate job submission scripts, as well as a summary of the -job outputs using the scripts available in +job outputs using the scripts available in `esmvaltool/utils/batch-jobs `__. Using cylc @@ -218,7 +218,7 @@ a copy of `u-bd684` is always located in ``/home/users/valeriu/roses/u-bd684`` o Using the scripts in `utils/batch-jobs` --------------------------------------- -In `utils/batch-jobs `_, +In `utils/batch-jobs `_, you can find a script to generate slurm submission scripts for all available recipes in ESMValTool, as well as a script to parse the job outputs. @@ -227,15 +227,15 @@ as well as a script to parse the job outputs. Using `generate.py` ................... -The script `generate.py `_, +The script `generate.py `_, is a simple python script that creates slurm submission scripts, and if configured, submits them to the HPC cluster. It has been tested in `DKRZ's Levante cluster `_. The following parameters have to be set in the script in order to make it run: * ``env``, *str*: Name of the conda environment in which `esmvaltool` is installed. -* ``mail``, *bool*: Whether or not to recieve mail notifications when a submitted job fails or finishes successfully. Default is ``False``. -* ``submit``, *bool*: Wheter or not to automatically submit the job after creating the launch script. Default value is ``False``. +* ``mail``, *bool*: Whether or not to receive mail notifications when a submitted job fails or finishes successfully. Default is ``False``. +* ``submit``, *bool*: Whether or not to automatically submit the job after creating the launch script. Default value is ``False``. * ``account``, *str*: Name of the DKRZ account in which the job will be billed. * ``outputs``, *str*: Name of the directory in which the job outputs (.out and .err files) are going to be saved. The outputs will be saved in `/home/user/`. * ``conda_path``, *str*: Full path to the `mambaforge/etc/profile.d/conda.sh` executable. @@ -247,10 +247,10 @@ Optionally, the following parameters can be edited: * ``memory``, *str*: Amount of memory requested for each run. Default is ``64G`` to allow to run 4 recipes on the same node in parallel. * ``time``, *str*: Time limit. Default is ``04:00:00`` to increase the job priority. Jobs can run for up to 8 hours and 12 hours on the compute and interactive partitions, respectively. * ``default_max_parallel_tasks``, *int*: Default is ``8`` which works for most recipes. For other cases, an entry needs to be made to the ``MAX_PARALLEL_TASKS`` dictionary (see below). - + The script will generate a submission script for all recipes using by default the ``interactive`` queue and with a time limit of 4h. In case a recipe may require of additional resources, they can be defined in the ``SPECIAL_RECIPES`` dictionary. The recipe name has to be given as a ``key`` in which the -values are another dictionary. +values are another dictionary. The latter are used to specify the ``partition`` in which to submit the recipe, the new ``time`` limit and other ``memory`` requirements given by the slurm flags ``--mem``, ``--constraint`` or ``--ntasks``. In general, an entry in ``SPECIAL_RECIPES`` should be set as: @@ -284,17 +284,15 @@ Using `parse_recipes_outputs` You can run this script (simply as a standalone Python script) after all recipes have been run, to gather a bird's eye view of the run status for each recipe; running the script provides you with a Markdown-formatted list of recipes that succeeded, recipes that failed due to a diagnostic error, and recipes that failed due to missing data (the two most common causes for -recipe run failure). You should add a ``SLURM_OUT_DIR`` e.g. ``SLURM_OUT_DIR = "/home/b/b382109/output_v270"`` - this is the -physical location of your SLURM output, after all recipes have finished running and a ``GLOB_PATTERN``, a glob pattern, -which is reccommended to be set to the ``*.out`` extension, so that the script finds all the ``.out`` files. - -To keep the script execution fast, it is recommended to use ``log_level: info`` in your config-user.yml file so that SLURM -output files are rather small. This script also requires a list of recipes stored in a ``all_recipes.txt`` file, which can -be obtained by running: +recipe run failure). You should provide the location of the output log files from SLURM (``*.out`` and ``*.err``) to the +script as well as a list of all available recipes. To generate the list, run the command: .. code-block:: bash - for recipe in $(esmvaltool recipes list | grep '\.yml$'); do echo "$recipe"; done > all_recipes.txt + for recipe in $(esmvaltool recipes list | grep '\.yml$'); do echo $(basename "$recipe"); done > all_recipes.txt + +To keep the script execution fast, it is recommended to use ``log_level: info`` in your config-user.yml file so that SLURM +output files are rather small. .. _overview_page: @@ -323,7 +321,7 @@ Comparing recipe runs A command-line tool is available for comparing one or more recipe runs to known good previous run(s). This tool uses `xarray `_ to compare NetCDF -files and difference hasing provided by +files and difference hashing provided by `imagehash `_ to compare PNG images. All other file types are compared byte for byte. diff --git a/esmvaltool/utils/batch-jobs/generate.py b/esmvaltool/utils/batch-jobs/generate.py index fc9deb8339..960ddd3e86 100644 --- a/esmvaltool/utils/batch-jobs/generate.py +++ b/esmvaltool/utils/batch-jobs/generate.py @@ -84,10 +84,6 @@ 'time': '#SBATCH --time=08:00:00 \n', 'memory': '#SBATCH --constraint=512G \n', }, - 'recipe_daily_era5': { - 'partition': '#SBATCH --partition=compute \n', - 'memory': '#SBATCH --constraint=512G \n', - }, 'recipe_eady_growth_rate': { 'partition': '#SBATCH --partition=compute \n', }, @@ -190,6 +186,9 @@ 'recipe_thermodyn_diagtool': { 'partition': '#SBATCH --partition=compute \n', }, + 'recipe_wflow': { + 'partition': '#SBATCH --partition=compute \n', + }, 'recipe_wenzel16jclim': { 'partition': '#SBATCH --partition=compute \n', }, @@ -207,6 +206,9 @@ 'recipe_bock20jgr_fig_1-4': 1, 'recipe_bock20jgr_fig_6-7': 1, 'recipe_bock20jgr_fig_8-10': 1, + 'recipe_daily_era5': 1, + 'recipe_easy_ipcc': 1, + 'recipe_climate_change_hotspot': 1, 'recipe_flato13ipcc_figure_96': 1, 'recipe_flato13ipcc_figures_938_941_cmip3': 1, 'recipe_ipccwg1ar6ch3_fig_3_9': 1, @@ -214,25 +216,55 @@ 'recipe_ipccwg1ar6ch3_fig_3_43': 1, 'recipe_check_obs': 1, 'recipe_collins13ipcc': 1, - 'recipe_lauer22jclim_fig3-4_zonal': 3, - 'recipe_lauer22jclim_fig5_lifrac': 3, + 'recipe_lauer22jclim_fig3-4_zonal': 1, + 'recipe_lauer22jclim_fig5_lifrac': 1, 'recipe_smpi': 1, 'recipe_smpi_4cds': 1, 'recipe_wenzel14jgr': 1, } +DISTRIBUTED_RECIPES = [ + 'recipe_easy_ipcc', + 'recipe_daily_era5', + 'recipe_marrmot', + 'recipe_pcrglobwb', +] + +DEFAULT_DASK_FILE = f""" +cluster: + type: dask_jobqueue.SLURMCluster + queue: compute + account: {account} + cores: 128 + memory: 256GiB + processes: 32 + interface: ib0 + local_directory: /scratch/{os.getlogin()[0]}/{os.getlogin()}/dask-tmp + n_workers: 32 + walltime: '8:00:00' +""" + def generate_submit(): """Generate and submit scripts.""" + print("It is recommended that you run the following recipes with the " + "configuration in dask.yml in ~/.esmvaltool/dask.yml:") + for recipe in DISTRIBUTED_RECIPES: + print(f"- {recipe}.yml") + Path('dask.yml').write_text(DEFAULT_DASK_FILE, encoding='utf-8') + home = os.path.expanduser('~') # Fill the list with the names of the recipes to be excluded # This includes recipes containing missing datasets - exclude = ['recipe_schlund20jgr_gpp_abs_rcp85', - 'recipe_schlund20jgr_gpp_change_1pct', - 'recipe_schlund20jgr_gpp_change_rcp85'] + exclude = [ + 'recipe_schlund20jgr_gpp_abs_rcp85', + 'recipe_schlund20jgr_gpp_change_1pct', + 'recipe_schlund20jgr_gpp_change_rcp85' + ] dir_recipes = Path('/'.join((esmvaltool.__path__[0], 'recipes'))) for recipe in Path(dir_recipes).rglob('*.yml'): + recipe = recipe.relative_to(dir_recipes) filename = f'launch_{recipe.stem}.sh' if recipe.stem in exclude: continue @@ -241,11 +273,9 @@ def generate_submit(): file.write('\n') file.write(f'#SBATCH --job-name={recipe.stem}.%J\n') file.write( - f'#SBATCH --output={home}/{outputs}/{recipe.stem}.%J.out\n' - ) + f'#SBATCH --output={home}/{outputs}/{recipe.stem}.%J.out\n') file.write( - f'#SBATCH --error={home}/{outputs}/{recipe.stem}.%J.err\n' - ) + f'#SBATCH --error={home}/{outputs}/{recipe.stem}.%J.err\n') file.write(f'#SBATCH --account={account}\n') if not SPECIAL_RECIPES.get(recipe.stem, None): # continue diff --git a/esmvaltool/utils/batch-jobs/parse_recipes_output.py b/esmvaltool/utils/batch-jobs/parse_recipes_output.py index 9df80c6cc0..7daf202924 100644 --- a/esmvaltool/utils/batch-jobs/parse_recipes_output.py +++ b/esmvaltool/utils/batch-jobs/parse_recipes_output.py @@ -1,121 +1,126 @@ -""" -Parse recipes run output. +"""Parse recipes run output. -Parse typical batch job output files like .out and .err -to identify recipes that have succeeded or failed; display -results in a convenient Markdown format, to be added to -a GitHub issue or any other such documentation. +Parse typical batch job output files like .out and .err to identify +recipes that have succeeded or failed; display results in a convenient +Markdown format, to be added to a GitHub issue or any other such +documentation. """ import datetime -import glob import os +import re +from pathlib import Path +from typing import Iterator -# User change needed -# directory where SLURM output files (.out and .err) are -# written to, e.g. on Levante for user b382109 -# SLURM_OUT_DIR = "/home/b/b382109/output_v270" -SLURM_OUT_DIR = "" -# SLURM output file pattern (extension); usually all SLURM -# output is held in .out, unless there are internal/system errors -# so this is what you need most if the times -GLOB_PATTERN = "*.out*" +import fire -def parse_slurm_output(dirname, pattern): - """ - Parse the out dir from SLURM. +def parse_slurm_output(dirname: str, pattern: str) -> Iterator[Path]: + """Parse the out dir from SLURM. - Perform a glob on dirname/pattern where dirname - is the directory where SLURM output is stored, and - pattern is the out file pattern, like .out. Returns - all the files in dirname that have pattern extension. + Perform a glob on dirname/pattern where dirname is the directory + where SLURM output is stored, and pattern is the out file pattern, + like .out. Returns all the files in dirname that have pattern + extension. """ - pat = os.path.join(dirname, pattern) - files = glob.glob(pat) + return Path(dirname).expanduser().glob(pattern) - return files +def parse_output_file(slurm_out_dir: str) -> dict[str, list[str]]: + """Parse .out and .err files in a given dir. -def parse_output_file(): + Returns a tuple of lists of sorted .out files for each of these + criteria: recipes that ran successfulltm recipes that failed with + diagnostic errors, recipes that failed due to missing data. """ - Parse .out files in a given dir. + categories = [ + 'success', + 'diagnostic error', + 'missing data', + 'out of memory', + 'out of time', + 'unknown', + ] + results: dict[str, list[str]] = {k: [] for k in categories} - Returns a tuple of lists of sorted .out files for each - of these criteria: recipes that ran successfulltm recipes - that failed with diagnostic errors, recipes that failed - due to missing data. - """ - files = parse_slurm_output(SLURM_OUT_DIR, GLOB_PATTERN) - success_rec = [] - diag_fail_rec = [] - missing_data = [] - for fil in files: - with open(fil, "r", encoding='utf-8') as outfile: + files = parse_slurm_output(slurm_out_dir, '*.out') + for file in files: + recipe = str(Path(file.stem).with_suffix('.yml')) + with open(file, "r", encoding='utf-8') as outfile: lines = outfile.readlines() for line in lines: if "Run was successful\n" in line: - success_rec.append(fil) + results['success'].append(recipe) + break elif "esmvalcore._task.DiagnosticError" in line: - diag_fail_rec.append(fil) + results['diagnostic error'].append(recipe) + break elif "ERROR Missing data for preprocessor" in line: - missing_data.append(fil) - - # typical list elem - # /home/b/b382109/output_v270/recipe_zmnam.2378956.out - ok_recipe_outs = [os.path.basename(ofile) for ofile in success_rec] - ok_recipe_outs = [f.split(".")[0] + ".yml" for f in ok_recipe_outs] - df_recipe_outs = [os.path.basename(ofile) for ofile in diag_fail_rec] - df_recipe_outs = [f.split(".")[0] + ".yml" for f in df_recipe_outs] - md_recipe_outs = [os.path.basename(ofile) for ofile in missing_data] - md_recipe_outs = [f.split(".")[0] + ".yml" for f in md_recipe_outs] - - return (sorted(set(ok_recipe_outs)), - sorted(set(df_recipe_outs)), - sorted(set(md_recipe_outs))) - - -def display_in_md(): - """Print out recipes in Markdown list.""" + results['missing data'].append(recipe) + break + else: + if not file.with_suffix('.err').exists(): + results['unknown'].append(recipe) + else: + err = file.with_suffix('.err').read_text(encoding='utf-8') + if "killed by the cgroup out-of-memory" in err: + results['out of memory'].append(recipe) + elif "step tasks have been OOM Killed" in err: + results['out of memory'].append(recipe) + elif re.match(".* CANCELLED AT .* DUE TO TIME LIMIT", err): + results['out of time'].append(recipe) + else: + results['unknown'].append(recipe) + + results = {k: sorted(v) for k, v in results.items()} + + return results + + +def display_in_md( + slurm_out_dir: str = '.', + all_recipes_file: str = 'all_recipes.txt', +) -> None: + """Print out recipes in Markdown list. + + Parameters + ---------- + slurm_out_dir: + Directory where SLURM output files (.out and .err) are written to. + + all_recipes_file: + Text file containing a list of all recipes. + """ todaynow = datetime.datetime.now() print(f"## Recipe running session {todaynow}\n") - with open("all_recipes.txt", "r", encoding='utf-8') as allrecs: - all_recs = [ - os.path.basename(rec.strip()) for rec in allrecs.readlines() + with open(all_recipes_file, "r", encoding='utf-8') as file: + all_recipes = [ + os.path.basename(line.strip()) for line in file.readlines() ] - - # parse different types of recipe outcomes - recipe_list, failed, missing_dat = parse_output_file() - print("### Successfully ran recipes\n\n") - print(f"{len(recipe_list)} out of {len(all_recs)}\n") - for rec in recipe_list: - print("- " + rec) - - # surely failed with diagnostic error - print("\n### Recipes that failed with DiagnosticError\n") - print(f"{len(failed)} out of {len(all_recs)}\n") - for rec in failed: - print("- " + rec) - - # missing data - print("\n### Recipes that failed of Missing Data\n") - print(f"{len(missing_dat)} out of {len(all_recs)}\n") - for rec in missing_dat: - print("- " + rec) - - # look at other fails or still running - bad_recs = [ - rec for rec in all_recs - if rec not in recipe_list and rec not in failed - and rec not in missing_dat - ] - bad_recs = sorted(bad_recs) - print( - "\n### Recipes that failed of other reasons or are still running\n" - ) - print(f"{len(bad_recs)} out of {len(all_recs)} so far\n") - for rec in bad_recs: - print("- " + rec) + n_recipes = len(all_recipes) + + results = parse_output_file(slurm_out_dir) + results["no run"] = sorted( + set(all_recipes) - set(recipe for v in results.values() + for recipe in v)) + prefix = "Recipes that" + err_prefix = f"{prefix} failed because" + messages = { + "success": f"{prefix} ran successfully", + "diagnostic error": f"{err_prefix} the diagnostic script failed", + "missing data": f"{err_prefix} of missing data", + "out of time": f"{err_prefix} the run took too long", + "out of memory": f"{err_prefix} they used too much memory", + "unknown": f"{prefix} failed of other reasons or are still running", + "no run": f"{prefix} never ran", + } + for type_, msg in messages.items(): + result = results[type_] + if result: + print(f"### {msg} ({len(result)} out of {n_recipes})") + for recipe in result: + print(f"- {recipe}") + print() if __name__ == '__main__': - display_in_md() + fire.Fire(display_in_md) diff --git a/esmvaltool/utils/draft_release_notes.py b/esmvaltool/utils/draft_release_notes.py index 13bcb4324c..a11b03a9ae 100644 --- a/esmvaltool/utils/draft_release_notes.py +++ b/esmvaltool/utils/draft_release_notes.py @@ -41,11 +41,11 @@ 'esmvaltool': "ESMValGroup/ESMValTool", } +TIMEZONE = ZoneInfo("CET") + PREVIOUS_RELEASE = { - 'esmvalcore': - datetime.datetime(2023, 7, 4, 11, tzinfo=ZoneInfo("CET")), - 'esmvaltool': - datetime.datetime(2022, 10, 28, 18, tzinfo=ZoneInfo("CET")), + 'esmvalcore': datetime.datetime(2023, 6, 6, 0, tzinfo=TIMEZONE), + 'esmvaltool': datetime.datetime(2023, 6, 20, 0, tzinfo=TIMEZONE), } LABELS = { @@ -130,11 +130,17 @@ def draft_notes_since(project, previous_release_date=None, labels=None): print(f"Note: Unmerged PRs or PRs that have been merged before " f"{previous_release_date} are not shown\n") for pull in pulls: - if pull.updated_at < previous_release_date: + if pull.updated_at.astimezone(TIMEZONE) < previous_release_date: break - if not pull.merged or pull.merged_at < previous_release_date: + if (not pull.merged or + pull.merged_at.astimezone(TIMEZONE) < previous_release_date): continue - print(pull.updated_at, pull.merged_at, pull.number, pull.title) + print( + pull.updated_at.astimezone(TIMEZONE), + pull.merged_at.astimezone(TIMEZONE), + pull.number, + pull.title, + ) pr_labels = {label.name for label in pull.labels} if 'automatedPR' in pr_labels: continue @@ -205,12 +211,9 @@ def _list_labelless_pulls(labelless_pulls): def _compose_note(pull): user = pull.user - username = user.login if user.name is None else user.name title = pull.title title = title[0].upper() + title[1:] - return (f"- {title} (`#{pull.number} " - f"<{pull.html_url}>`__) " - f"`{username} `__") + return f"- {title} (:pull:`{pull.number}`) by :user:`{user.login}`" def main(): From ce887aa93325f50131bf1209baf4093a05f227d3 Mon Sep 17 00:00:00 2001 From: Bouwe Andela Date: Wed, 20 Dec 2023 16:10:04 +0100 Subject: [PATCH 19/20] Move code into function in batch job generation script (#3491) --- esmvaltool/utils/batch-jobs/generate.py | 30 ++++++++++++------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/esmvaltool/utils/batch-jobs/generate.py b/esmvaltool/utils/batch-jobs/generate.py index 960ddd3e86..afba37906f 100644 --- a/esmvaltool/utils/batch-jobs/generate.py +++ b/esmvaltool/utils/batch-jobs/generate.py @@ -24,6 +24,7 @@ """ import os import subprocess +import textwrap from pathlib import Path import esmvaltool @@ -230,28 +231,27 @@ 'recipe_pcrglobwb', ] -DEFAULT_DASK_FILE = f""" -cluster: - type: dask_jobqueue.SLURMCluster - queue: compute - account: {account} - cores: 128 - memory: 256GiB - processes: 32 - interface: ib0 - local_directory: /scratch/{os.getlogin()[0]}/{os.getlogin()}/dask-tmp - n_workers: 32 - walltime: '8:00:00' -""" - def generate_submit(): """Generate and submit scripts.""" print("It is recommended that you run the following recipes with the " "configuration in dask.yml in ~/.esmvaltool/dask.yml:") + default_dask_config_file = textwrap.dedent(f""" + cluster: + type: dask_jobqueue.SLURMCluster + queue: compute + account: {account} + cores: 128 + memory: 256GiB + processes: 32 + interface: ib0 + local_directory: /scratch/{os.getlogin()[0]}/{os.getlogin()}/dask-tmp + n_workers: 32 + walltime: '8:00:00' + """) for recipe in DISTRIBUTED_RECIPES: print(f"- {recipe}.yml") - Path('dask.yml').write_text(DEFAULT_DASK_FILE, encoding='utf-8') + Path('dask.yml').write_text(default_dask_config_file, encoding='utf-8') home = os.path.expanduser('~') # Fill the list with the names of the recipes to be excluded From 679912f7cb75af1cae46cc57cb36a29c55504f7f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 21 Dec 2023 12:06:27 +0200 Subject: [PATCH 20/20] [Condalock] Update Linux condalock file (#3492) Co-authored-by: valeriupredoi --- conda-linux-64.lock | 66 ++++++++++++++++++++++----------------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/conda-linux-64.lock b/conda-linux-64.lock index b0facf9382..36de51bd52 100644 --- a/conda-linux-64.lock +++ b/conda-linux-64.lock @@ -1,6 +1,6 @@ # Generated by conda-lock. # platform: linux-64 -# input_hash: 05ccb0eb21a22bcda85523e4fc91a3c5d43c69b2fc56e17f5c81159b2e906d6b +# input_hash: 9ebadc06c6267b4960d64d1b5af80ef1cf3716c4c49f5d7f45b0bfd2e4d7f8f3 @EXPLICIT https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81 https://conda.anaconda.org/conda-forge/linux-64/_py-xgboost-mutex-2.0-gpu_0.tar.bz2#7702188077361f43a4d61e64c694f850 @@ -30,7 +30,7 @@ https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-13.2.0-h807b86a_3.cond https://conda.anaconda.org/conda-forge/linux-64/aom-3.5.0-h27087fc_0.tar.bz2#a08150fd2298460cd1fcccf626305642 https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.8.23-hd590300_0.conda#cc4f06f7eedb1523f3b83fd0fb3942ff https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hd590300_5.conda#69b8b6202a07720f448be700e300ccf4 -https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.23.0-hd590300_0.conda#d459949bc10f64dee1595c176c2e6291 +https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.24.0-hd590300_0.conda#f5842b88e9cbfa177abfaeacd457a45d https://conda.anaconda.org/conda-forge/linux-64/charls-2.4.2-h59595ed_0.conda#4336bd67920dd504cd8c6761d6a99645 https://conda.anaconda.org/conda-forge/linux-64/dav1d-1.2.1-hd590300_0.conda#418c6ca5929a611cbd69204907a83995 https://conda.anaconda.org/conda-forge/linux-64/freexl-1.0.6-h166bdaf_1.tar.bz2#897e772a157faf3330d72dd291486f62 @@ -57,7 +57,7 @@ https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda#172b https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.5.0-hcb278e6_1.conda#6305a3dd2752c76335295da4e581f2fd https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2#d645c6d2ac96843a2bfaccd2d62b3ac3 https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-13.2.0-ha4646dd_3.conda#c714d905cdfa0e70200f68b80cc04764 -https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-h166bdaf_0.tar.bz2#b62b52da46c39ee2bc3c162ac7f1804d +https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda#d66573916ffcf376178462f1b61c941e https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-2.1.5.1-hd590300_1.conda#323e90742f0f48fc22bea908735f55e6 https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda#30fd6e37fe21f86f4bd26d6ee73eeec7 https://conda.anaconda.org/conda-forge/linux-64/libnuma-2.0.16-h0b41bf4_1.conda#28bfe2cb11357ccc5be21101a6b7ce86 @@ -102,7 +102,7 @@ https://conda.anaconda.org/conda-forge/linux-64/xorg-xproto-7.0.31-h7f98852_1007 https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda#f08fb5c89edfc4aadee1c81d4cfb1fa1 https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2#2161070d867d1b1204ea749c8eec4ef0 https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2#4cb3ad778ec2d5a7acbdf254eb1c42ae -https://conda.anaconda.org/conda-forge/linux-64/zfp-1.0.0-h59595ed_4.conda#9cfbafab420f42b572f3c032ad59da85 +https://conda.anaconda.org/conda-forge/linux-64/zfp-1.0.1-h59595ed_0.conda#fd486bffbf0d6841cf1456a8f2e3a995 https://conda.anaconda.org/conda-forge/linux-64/zlib-ng-2.0.7-h0b41bf4_0.conda#49e8329110001f04923fe7e864990b0c https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.6.0-h93469e0_0.conda#580a52a05f5be28ce00764149017c6d4 https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.2.17-h862ab75_1.conda#0013fcee7acb3cfc801c5929824feb3c @@ -128,7 +128,7 @@ https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.44.2-h2797004_0.cond https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.0-h0841786_0.conda#1f5a58e686b13bcfde88b93f547d23fe https://conda.anaconda.org/conda-forge/linux-64/libudunits2-2.2.28-h40f5838_3.conda#4bdace082e911a3e1f1f0b721bed5b56 https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.15-h0b41bf4_0.conda#33277193f5b92bad9fdd230eb700929c -https://conda.anaconda.org/conda-forge/linux-64/libxgboost-1.7.6-cuda118_hd3b444d_6.conda#78509401d0879ef5aac72b8d1e104493 +https://conda.anaconda.org/conda-forge/linux-64/libxgboost-2.0.3-cuda118_hd3b444d_0.conda#cd2836b10eb0a5dec0ee63e0a2b80609 https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.11.5-h0d562d8_0.conda#558ab736404275d7df61c473c1af35aa https://conda.anaconda.org/conda-forge/linux-64/libzip-1.10.1-h2629f0a_3.conda#ac79812548e7e8cf61f7b0abdef01d3b https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h9458935_0.conda#4c28f3210b30250037a4a627eeee9e0f @@ -166,7 +166,7 @@ https://conda.anaconda.org/conda-forge/linux-64/libopenblas-ilp64-0.3.25-pthread https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.18.1-h8fd135c_2.conda#bbf65f7688512872f063810623b755dc https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.5.1-h8b53f26_1.conda#5b09e13d732dda1a2bc9adc711164f4d https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.37-h0054252_1.conda#f27960e8873abb5476e96ef33bdbdccd -https://conda.anaconda.org/conda-forge/linux-64/nss-3.95-h1d7d5a4_0.conda#d3a8067adcc45a923f4b1987c91d69da +https://conda.anaconda.org/conda-forge/linux-64/nss-3.96-h1d7d5a4_0.conda#1c8f8b8eb041ecd54053fc4b6ad57957 https://conda.anaconda.org/conda-forge/linux-64/orc-1.9.0-h385abfd_1.conda#2cd5aac7ef1b4c6ac51bf521251a89b3 https://conda.anaconda.org/conda-forge/linux-64/pandoc-3.1.3-h32600fe_0.conda#8287aeb8462e2d4b235eff788e75919d https://conda.anaconda.org/conda-forge/linux-64/python-3.11.6-hab00c5b_0_cpython.conda#b0dfbe2fcbfdb097d321bfd50ecddab1 @@ -195,10 +195,10 @@ https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz https://conda.anaconda.org/conda-forge/noarch/config-0.5.1-pyhd8ed1ab_0.tar.bz2#97275d4898af65967b1ad57923cef770 https://conda.anaconda.org/conda-forge/noarch/configargparse-1.7-pyhd8ed1ab_0.conda#0d07dc29b1c1cc973f76b74beb44915f https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_0.conda#5cd86562580f274031ede6aa6aa24441 -https://conda.anaconda.org/conda-forge/linux-64/cython-3.0.6-py311hb755f60_0.conda#88cc84238dda72e11285d9cfcbe43e51 +https://conda.anaconda.org/conda-forge/linux-64/cython-3.0.7-py311hb755f60_0.conda#97b12677eec6c2fd23c7867db1c7a87d https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2#961b3a227b437d82ad7054484cfa71b2 https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda#5e4f3466526c52bc9af2d2353a1460bd -https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.7-pyhd8ed1ab_0.conda#12d8aae6994f342618443a8f05c652a0 +https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.8-pyhd8ed1ab_0.conda#db16c66b759a64dc5183d69cc3745a52 https://conda.anaconda.org/conda-forge/linux-64/docutils-0.20.1-py311h38be061_3.conda#1c33f55e5cdcc2a2b973c432b5225bfe https://conda.anaconda.org/conda-forge/noarch/dodgy-0.2.1-py_0.tar.bz2#62a69d073f7446c90f417b0787122f5b https://conda.anaconda.org/conda-forge/noarch/ecmwf-api-client-1.6.3-pyhd8ed1ab_0.tar.bz2#15621abf59053e184114d3e1d4f9d01e @@ -210,8 +210,8 @@ https://conda.anaconda.org/conda-forge/noarch/fasteners-0.17.3-pyhd8ed1ab_0.tar. https://conda.anaconda.org/conda-forge/noarch/filelock-3.13.1-pyhd8ed1ab_0.conda#0c1729b74a8152fde6a38ba0a2ab9f45 https://conda.anaconda.org/conda-forge/noarch/findlibs-0.0.5-pyhd8ed1ab_0.conda#8f325f63020af6f7acbe2c4cb4c920db https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.14.2-h14ed4e7_0.conda#0f69b688f52ff6da70bccb7ff7001d1d -https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.4.0-py311h459d7ec_1.conda#23d0b2d02252b32ee14e5063ccfb41e2 -https://conda.anaconda.org/conda-forge/noarch/fsspec-2023.12.1-pyhca7485f_0.conda#b38946846cdf39f9bce93f75f571d913 +https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.4.1-py311h459d7ec_0.conda#b267e553a337e1878512621e374845c5 +https://conda.anaconda.org/conda-forge/noarch/fsspec-2023.12.2-pyhca7485f_0.conda#bf40f2a8835b78b1f91083d306b493d2 https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.10-h6b639ba_2.conda#ee8220db21db8094998005990418fe5b https://conda.anaconda.org/conda-forge/noarch/geographiclib-1.52-pyhd8ed1ab_0.tar.bz2#6880e7100ebae550a33ce26663316d85 https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda#4d8df0b0db060d33c9a702ada998a8fe @@ -221,7 +221,7 @@ https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.b https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda#f800d2da156d08e289b14e87e43c1ae5 https://conda.anaconda.org/conda-forge/noarch/itsdangerous-2.1.2-pyhd8ed1ab_0.tar.bz2#3c3de74912f11d2b590184f03c7cd09b https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.5-py311h9547e67_1.conda#2c65bdf442b0d37aad080c8a4e0d452f -https://conda.anaconda.org/conda-forge/linux-64/lazy-object-proxy-1.9.0-py311h459d7ec_1.conda#7cc99d87755a9e64586a6004c5f0f534 +https://conda.anaconda.org/conda-forge/linux-64/lazy-object-proxy-1.10.0-py311h459d7ec_0.conda#d39020c78fd00ed774ff9c876e8aba07 https://conda.anaconda.org/conda-forge/noarch/lazy_loader-0.3-pyhd8ed1ab_0.conda#69ea1d0fa7ab33b48c88394ad1dead65 https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.15-haa2dc70_1.conda#980d8aca0bc23ca73fa8caa3e7c84c28 https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-20_linux64_openblas.conda#2b7bb4f7562c8cf334fc2e20c2d28abc @@ -250,7 +250,7 @@ https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda#405678b942f2481cecdb3e010f4925d9 https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.1.0-pyhd8ed1ab_0.conda#45a5065664da0d1dfa8f8cd2eaf05ab9 https://conda.anaconda.org/conda-forge/noarch/pluggy-1.3.0-pyhd8ed1ab_0.conda#2390bd10bed1f3fdc7a537fb5a447d8d -https://conda.anaconda.org/conda-forge/linux-64/psutil-5.9.5-py311h459d7ec_1.conda#490d7fa8675afd1aa6f1b2332d156a45 +https://conda.anaconda.org/conda-forge/linux-64/psutil-5.9.7-py311h459d7ec_0.conda#b4f2d78860bf9c8887b528c10995b427 https://conda.anaconda.org/conda-forge/noarch/pycodestyle-2.9.1-pyhd8ed1ab_0.tar.bz2#0191dd7efe1a94262812770183b68892 https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2#076becd9e05608f8dc72757d5f3a91ff https://conda.anaconda.org/conda-forge/noarch/pyflakes-2.5.0-pyhd8ed1ab_0.tar.bz2#1b3bef4313288ae8d35b1dfba4cd84a3 @@ -264,7 +264,7 @@ https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.4.1-py311h459d7e https://conda.anaconda.org/conda-forge/noarch/pytz-2023.3.post1-pyhd8ed1ab_0.conda#c93346b446cd08c169d843ae5fc0da97 https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.1-py311h459d7ec_1.conda#52719a74ad130de8fb5d047dc91f247a https://conda.anaconda.org/conda-forge/linux-64/pyzmq-25.1.2-py311h34ded2d_0.conda#819aa640a0493d4b52faf938e94d129e -https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.13.2-py311h46250e7_0.conda#c5f5089dd1fe0000fecaf0d12eca50b9 +https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.15.2-py311h46250e7_0.conda#1ec6376840c74c230f42e71092851fb6 https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.7-py311h459d7ec_2.conda#56bc3fe5180c0b23e05c7a5708153ac7 https://conda.anaconda.org/conda-forge/noarch/semver-3.0.2-pyhd8ed1ab_0.conda#5efb3fccda53974aed800b6d575f72ed https://conda.anaconda.org/conda-forge/noarch/setoptconf-tmp-0.3.1-pyhd8ed1ab_0.tar.bz2#af3e36d4effb85b9b9f93cd1db0963df @@ -310,7 +310,7 @@ https://conda.anaconda.org/conda-forge/noarch/asgiref-3.7.2-pyhd8ed1ab_0.conda#5 https://conda.anaconda.org/conda-forge/linux-64/astroid-2.15.8-py311h38be061_0.conda#46d70fcb74472aab178991f0231ee3c6 https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.7.0-hf8751d9_2.conda#deb12196f0c64c441bb3d083d06d0cf8 https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.8.14-h2e270ba_2.conda#58bbee5fd6cf2d4fffbead1bc33a5d3b -https://conda.anaconda.org/conda-forge/noarch/babel-2.13.1-pyhd8ed1ab_0.conda#3ccff479c246692468f604df9c85ef26 +https://conda.anaconda.org/conda-forge/noarch/babel-2.14.0-pyhd8ed1ab_0.conda#9669586875baeced8fc30c0826c3270e https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.2-pyha770c72_0.conda#a362ff7d976217f8fa78c0f1c4f59717 https://conda.anaconda.org/conda-forge/noarch/bleach-6.1.0-pyhd8ed1ab_0.conda#0ed9d7c0e9afa7c025807a9a8136ea3e https://conda.anaconda.org/conda-forge/linux-64/brunsli-0.1-h9c3ff4c_0.tar.bz2#c1ac6229d0bfd14f8354ff9ad2a26cad @@ -319,23 +319,23 @@ https://conda.anaconda.org/conda-forge/linux-64/cffi-1.16.0-py311hb3a22ac_0.cond https://conda.anaconda.org/conda-forge/linux-64/cfitsio-4.2.0-hd9d235c_0.conda#8c57a9adbafd87f5eff842abde599cb4 https://conda.anaconda.org/conda-forge/noarch/click-plugins-1.1.1-py_0.tar.bz2#4fd2c6b53934bd7d96d1f3fdaf99b79f https://conda.anaconda.org/conda-forge/noarch/cligj-0.7.2-pyhd8ed1ab_1.tar.bz2#a29b7c141d6b2de4bb67788a5f107734 -https://conda.anaconda.org/conda-forge/linux-64/coverage-7.3.2-py311h459d7ec_0.conda#7b3145fed7adc7c63a0e08f6f29f5480 +https://conda.anaconda.org/conda-forge/linux-64/coverage-7.3.3-py311h459d7ec_0.conda#9db2c1316e96068c0189beaeb716f3fe https://conda.anaconda.org/conda-forge/linux-64/curl-8.1.2-h409715c_0.conda#9f88cfb15b7d08b25880b138f91e0eb4 https://conda.anaconda.org/conda-forge/linux-64/cytoolz-0.12.2-py311h459d7ec_1.conda#afe341dbe834ae76d2c23157ff00e633 https://conda.anaconda.org/conda-forge/noarch/docformatter-1.7.5-pyhd8ed1ab_0.conda#3a941b6083e945aa87e739a9b85c82e9 https://conda.anaconda.org/conda-forge/noarch/docrep-0.3.2-pyh44b312d_0.tar.bz2#235523955bc1bfb019d7ec8a2bb58f9a https://conda.anaconda.org/conda-forge/noarch/fire-0.5.0-pyhd8ed1ab_0.conda#9fd22aae8d2f319e80f68b295ab91d64 -https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.46.0-py311h459d7ec_0.conda#a14114f70e23f7fd5ab9941fec45b095 +https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.47.0-py311h459d7ec_0.conda#f7ec87c448f714f53519fe9c87ba1747 https://conda.anaconda.org/conda-forge/noarch/geopy-2.4.1-pyhd8ed1ab_0.conda#c75621ce68f6570fff9a6734cf21c9a7 https://conda.anaconda.org/conda-forge/noarch/gitdb-4.0.11-pyhd8ed1ab_0.conda#623b19f616f2ca0c261441067e18ae40 https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.0-nompi_hb72d44e_103.conda#975973a4350ab45ff1981fe535a12af5 https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.0-pyha770c72_0.conda#a941237cd06538837b25cd245fcd25d8 https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.1.1-pyhd8ed1ab_0.conda#3d5fa25cf42f3f32a12b2d874ace8574 https://conda.anaconda.org/conda-forge/noarch/isodate-0.6.1-pyhd8ed1ab_0.tar.bz2#4a62c93c1b5c0b920508ae3fd285eaf5 -https://conda.anaconda.org/conda-forge/noarch/isort-5.12.0-pyhd8ed1ab_1.conda#07ed3421bad60867234c7a9282ea39d4 +https://conda.anaconda.org/conda-forge/noarch/isort-5.13.2-pyhd8ed1ab_0.conda#1d25ed2b95b92b026aaa795eabec8d91 https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.2-pyhd8ed1ab_1.tar.bz2#c8490ed5c70966d232fdd389d0dbed37 https://conda.anaconda.org/conda-forge/noarch/joblib-1.3.2-pyhd8ed1ab_0.conda#4da50d410f553db77e62ab62ffaa1abc -https://conda.anaconda.org/conda-forge/linux-64/jupyter_core-5.5.0-py311h38be061_0.conda#cee83be29258275f75029125e186ab6d +https://conda.anaconda.org/conda-forge/linux-64/jupyter_core-5.5.1-py311h38be061_0.conda#1c704ad46ebe0a4cc29445b565bd954d https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_0.conda#3f0915b1fb2252ab73686a533c5f9d3f https://conda.anaconda.org/conda-forge/noarch/latexcodec-2.0.1-pyh9f0ad1d_0.tar.bz2#8d67904973263afd2985ba56aa2d6bb4 https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-20_linux64_openblas.conda#36d486d72ab64ffea932329a1d3729a3 @@ -349,7 +349,7 @@ https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.8.0-pyhd8ed1ab_0.conda#2 https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.2-py311h459d7ec_1.conda#5c809fb753f06a04c2f114394404769e https://conda.anaconda.org/conda-forge/noarch/partd-1.4.1-pyhd8ed1ab_0.conda#acf4b7c0bcd5fa3b0e05801c4d2accd6 https://conda.anaconda.org/conda-forge/linux-64/pillow-10.0.0-py311h0b84326_0.conda#4b24acdc1fbbae9da03147e7d2cf8c8a -https://conda.anaconda.org/conda-forge/noarch/pip-23.3.1-pyhd8ed1ab_0.conda#2400c0b86889f43aa52067161e1fb108 +https://conda.anaconda.org/conda-forge/noarch/pip-23.3.2-pyhd8ed1ab_0.conda#8591c748f98dcc02253003533bc2e4b1 https://conda.anaconda.org/conda-forge/noarch/plotly-5.18.0-pyhd8ed1ab_0.conda#9f6a8664f1fe752f79473eeb9bf33a60 https://conda.anaconda.org/conda-forge/linux-64/postgresql-15.3-hd458b1d_1.conda#4a4b5dede4d2e075e9aa5a44a9fd9f20 https://conda.anaconda.org/conda-forge/linux-64/proj-9.2.1-ha643af7_0.conda#e992387307f4403ba0ec07d009032550 @@ -396,7 +396,7 @@ https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.9.2-nompi_h0f3d0bb_1 https://conda.anaconda.org/conda-forge/linux-64/libspatialite-5.0.1-hca56755_27.conda#918a735059cab21b96fc13a8d04fbcd8 https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.2-py311h64a7726_0.conda#fd2f142dcd680413b5ede5d0fb799205 https://conda.anaconda.org/conda-forge/linux-64/poppler-23.05.0-hd18248d_1.conda#09e0de1aa7330fe697eed76eaeef666d -https://conda.anaconda.org/conda-forge/noarch/progressbar2-4.2.0-pyhd8ed1ab_0.tar.bz2#d883564cf1e9ba190f6b285036c5f949 +https://conda.anaconda.org/conda-forge/noarch/progressbar2-4.3.0-pyhd8ed1ab_0.conda#159684d27a0d1b5ff03d7c4b052278ee https://conda.anaconda.org/conda-forge/noarch/pybtex-0.24.0-pyhd8ed1ab_2.tar.bz2#2099b86a7399c44c0c61cdb6de6915ba https://conda.anaconda.org/conda-forge/noarch/pylint-2.17.7-pyhd8ed1ab_0.conda#3cab6aee60038b3f621bce3e50f52bed https://conda.anaconda.org/conda-forge/linux-64/pyproj-3.6.1-py311ha169711_0.conda#ad4b6e9be79a89959bb6d7d308027ff2 @@ -420,12 +420,12 @@ https://conda.anaconda.org/conda-forge/linux-64/cftime-1.6.3-py311h1f0f07a_0.con https://conda.anaconda.org/conda-forge/noarch/chart-studio-1.1.0-pyh9f0ad1d_0.tar.bz2#acd9a12a35e5a0221bdf39eb6e4811dc https://conda.anaconda.org/conda-forge/noarch/colorspacious-1.1.2-pyh24bf2e0_0.tar.bz2#b73afa0d009a51cabd3ec99c4d2ef4f3 https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.2.0-py311h9547e67_0.conda#40828c5b36ef52433e21f89943e09f33 -https://conda.anaconda.org/conda-forge/noarch/dask-core-2023.12.0-pyhd8ed1ab_0.conda#95eae0785aed72998493140dc0115382 +https://conda.anaconda.org/conda-forge/noarch/dask-core-2023.12.1-pyhd8ed1ab_0.conda#bf6ad72d882bc3f04e6a0fb50fd2cce8 https://conda.anaconda.org/conda-forge/noarch/eofs-1.4.0-py_0.tar.bz2#6e166cd37cfeadefcfca1ffe00f222bb https://conda.anaconda.org/conda-forge/noarch/flake8-polyfill-1.0.2-py_0.tar.bz2#a53db35e3d07f0af2eccd59c2a00bffe https://conda.anaconda.org/conda-forge/noarch/identify-2.5.33-pyhd8ed1ab_0.conda#93c8f8ceb83827d88deeba796f07fba7 https://conda.anaconda.org/conda-forge/linux-64/imagecodecs-2023.8.12-py311h67b54e4_0.conda#363e5c2f2c67ff69d717aba54422b03d -https://conda.anaconda.org/conda-forge/noarch/imageio-2.31.5-pyh8c1a49c_0.conda#6820ccf6a3a27df348f18c85dd89014a +https://conda.anaconda.org/conda-forge/noarch/imageio-2.33.1-pyh8c1a49c_0.conda#1c34d58ac469a34e7e96832861368bce https://conda.anaconda.org/conda-forge/linux-64/jasper-4.0.0-h32699f2_1.conda#fdde5424ecef5f7ad310b4242229291c https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.20.0-pyhd8ed1ab_0.conda#1116d79def5268414fb0917520b2bbf1 https://conda.anaconda.org/conda-forge/linux-64/julia-1.8.5-h783901f_0.conda#98c05ba7ca9c15d22216f730499e167a @@ -453,7 +453,7 @@ https://conda.anaconda.org/conda-forge/linux-64/tempest-remap-2.2.0-h43474b4_0.c https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.10.57-hbc2ea52_17.conda#452c7b08c21eea2ef01f4fd364d6affc https://conda.anaconda.org/conda-forge/noarch/bokeh-3.3.2-pyhd8ed1ab_0.conda#c02a7e79365121bd3bcc25f1b65f48a9 https://conda.anaconda.org/conda-forge/linux-64/cf-units-3.2.0-py311h1f0f07a_4.conda#1e105c1a8ea2163507726144b401eb1b -https://conda.anaconda.org/conda-forge/noarch/distributed-2023.12.0-pyhd8ed1ab_0.conda#22d620e1079e99c34578cb0c615d2789 +https://conda.anaconda.org/conda-forge/noarch/distributed-2023.12.1-pyhd8ed1ab_0.conda#6b31b9b627f238a0068926d5650ae128 https://conda.anaconda.org/conda-forge/linux-64/eccodes-2.30.2-h1f30a5c_0.conda#21ee8444a7f629924ea8cfe52a622cbd https://conda.anaconda.org/conda-forge/linux-64/esmf-8.4.2-nompi_h20110ff_0.conda#11f5169aeff54ad7277476be8ba19ff7 https://conda.anaconda.org/conda-forge/linux-64/gdal-3.7.0-py311h281082f_2.conda#fde4fad3c517cc80f32995696f45198d @@ -473,12 +473,12 @@ https://conda.anaconda.org/conda-forge/linux-64/r-base-4.1.3-hfabd6f2_9.conda#0a https://conda.anaconda.org/conda-forge/linux-64/rasterio-1.3.8-py311h41e4db2_0.conda#b35deb26af1d7e0d98438c8ac5c6b7b2 https://conda.anaconda.org/conda-forge/linux-64/scikit-learn-1.3.2-py311hc009520_2.conda#9821f8e497a791858226f535e5e0be62 https://conda.anaconda.org/conda-forge/noarch/sparse-0.14.0-pyhd8ed1ab_0.conda#ee01b310177a0612554b9d20e537fdbe -https://conda.anaconda.org/conda-forge/linux-64/statsmodels-0.14.0-py311h1f0f07a_2.conda#8f1e772e5430ce48229740ec00a90b61 +https://conda.anaconda.org/conda-forge/linux-64/statsmodels-0.14.1-py311h1f0f07a_0.conda#11ea602c16ad004033edf648ce054f9e https://conda.anaconda.org/conda-forge/noarch/tifffile-2023.12.9-pyhd8ed1ab_0.conda#454bc0aff84f35fa53ba9e0369737a9b https://conda.anaconda.org/conda-forge/noarch/xarray-2023.12.0-pyhd8ed1ab_0.conda#e9b31d3ab1b0dd5fd8c24419f6560b90 https://conda.anaconda.org/conda-forge/noarch/zarr-2.16.1-pyhd8ed1ab_0.conda#59ec835edbee50266b7bdbadab7ba335 https://conda.anaconda.org/conda-forge/linux-64/cartopy-0.22.0-py311h320fe9a_1.conda#10d1806e20da040c58c36deddf51c70c -https://conda.anaconda.org/conda-forge/noarch/cf_xarray-0.8.6-pyhd8ed1ab_0.conda#2e33e3bdf2b1a79989ad792ac22104d3 +https://conda.anaconda.org/conda-forge/noarch/cf_xarray-0.8.7-pyhd8ed1ab_0.conda#d475dc2fac9652bcd55cec9c387fc139 https://conda.anaconda.org/conda-forge/noarch/cmocean-3.0.3-pyhd8ed1ab_0.conda#eec7df83d725696d32c7bf99aff21d82 https://conda.anaconda.org/conda-forge/noarch/dask-jobqueue-0.8.2-pyhd8ed1ab_0.conda#cc344a296a41369bcb05f7216661cec8 https://conda.anaconda.org/conda-forge/noarch/esgf-pyclient-0.3.1-pyhca7485f_3.conda#1d43833138d38ad8324700ce45a7099a @@ -493,7 +493,7 @@ https://conda.anaconda.org/conda-forge/linux-64/ncl-6.6.2-hf70af60_47.conda#ee27 https://conda.anaconda.org/conda-forge/linux-64/nco-5.1.6-hd62b316_0.conda#af7780f76ee37325d264327e21a478f5 https://conda.anaconda.org/conda-forge/noarch/prospector-1.10.3-pyhd8ed1ab_0.conda#f551d4d859a1d70c6abff8310a655481 https://conda.anaconda.org/conda-forge/linux-64/psyplot-1.4.3-py311h38be061_1.tar.bz2#f0c9a1067c03e8f05e53ef0c5ad5fab3 -https://conda.anaconda.org/conda-forge/linux-64/py-xgboost-1.7.6-cuda118_py311h0be3a32_6.conda#e9989e03af742084940a11c7c3c395a5 +https://conda.anaconda.org/conda-forge/linux-64/py-xgboost-2.0.3-cuda118_py311h0be3a32_0.conda#7a06b457cb9be1e68faca26333625d34 https://conda.anaconda.org/conda-forge/noarch/r-abind-1.4_5-r41hc72bb7e_1004.tar.bz2#831186670e5786df30f8ddeb5a623c5a https://conda.anaconda.org/conda-forge/linux-64/r-backports-1.4.1-r41h06615bd_1.tar.bz2#9a00c3283f8fb4bce68deffe08fbe09d https://conda.anaconda.org/conda-forge/noarch/r-bigmemory.sri-0.1.6-r41hc72bb7e_0.tar.bz2#926471a5be30d287a25f2d10446d6066 @@ -502,7 +502,7 @@ https://conda.anaconda.org/conda-forge/linux-64/r-cli-3.6.1-r41h38f115c_0.conda# https://conda.anaconda.org/conda-forge/noarch/r-codetools-0.2_19-r41hc72bb7e_0.conda#401ac0ee6310d69deac481b2d2148458 https://conda.anaconda.org/conda-forge/linux-64/r-colorspace-2.1_0-r41h133d619_0.conda#b6f5d77e5e0334a8adda752364bc760e https://conda.anaconda.org/conda-forge/linux-64/r-contfrac-1.1_12-r41h06615bd_1003.tar.bz2#c9cbc66278bea99ce3ce9f8be9e8c0ad -https://conda.anaconda.org/conda-forge/noarch/r-cpp11-0.4.3-r41hc72bb7e_0.tar.bz2#2362e0b8e003b884686fe27cf18c9a81 +https://conda.anaconda.org/conda-forge/noarch/r-cpp11-0.4.7-r41hc72bb7e_0.conda#a81541ceb9c2c3d40695e746b2777961 https://conda.anaconda.org/conda-forge/noarch/r-crayon-1.5.2-r41hc72bb7e_1.tar.bz2#8cf94f6451aaadf3aa1119b29115b0c7 https://conda.anaconda.org/conda-forge/linux-64/r-curl-4.3.3-r41hf9611b0_2.conda#c4047e3aa1b795a4cb5adbb5c59b3972 https://conda.anaconda.org/conda-forge/linux-64/r-desolve-1.35-r41hb20cf53_0.conda#e475d0dbe391fa76fbf742ebee6ad449 @@ -564,7 +564,7 @@ https://conda.anaconda.org/conda-forge/linux-64/imagemagick-7.1.1_15-pl5321hf48e https://conda.anaconda.org/conda-forge/noarch/iris-3.7.0-pyha770c72_0.conda#dccc1f660bf455c239adaabf56b91dc9 https://conda.anaconda.org/conda-forge/noarch/lime-0.2.0.1-pyhd8ed1ab_1.tar.bz2#789ce01416721a5533fb74aa4361fd13 https://conda.anaconda.org/conda-forge/noarch/mapgenerator-1.0.7-pyhd8ed1ab_0.conda#d18db96ef2a920b0ecefe30282b0aecf -https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.12.0-pyhd8ed1ab_0.conda#4d67c68fd0d130091ada039bc2d81b33 +https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.13.0-pyhd8ed1ab_0.conda#786c2ed88ac4483944ed9013dcba399c https://conda.anaconda.org/conda-forge/linux-64/psy-simple-1.4.1-py311h38be061_2.tar.bz2#4c9101d329f6bc09c2617a80e3eb9c89 https://conda.anaconda.org/conda-forge/noarch/py-cordex-0.6.6-pyhd8ed1ab_0.conda#255f9eac03143526c8aed41d1d091c63 https://conda.anaconda.org/conda-forge/linux-64/pyarrow-12.0.1-py311h39c9aba_7_cpu.conda#d513ab8d10ec5f3ee45b419c836195ec @@ -597,8 +597,8 @@ https://conda.anaconda.org/conda-forge/linux-64/r-xml2-1.3.4-r41h1ad5fc0_1.conda https://conda.anaconda.org/conda-forge/linux-64/r-zoo-1.8_12-r41h133d619_0.conda#1d432d2eba171727afd03507faa5e2f6 https://conda.anaconda.org/conda-forge/noarch/seaborn-0.13.0-hd8ed1ab_0.conda#ebd31a95a7008b7e164dad9dbbb5bb5a https://conda.anaconda.org/conda-forge/noarch/xesmf-0.8.2-pyhd8ed1ab_0.conda#8e765a0eca0ce1cfa889cd9af82a23a8 -https://conda.anaconda.org/conda-forge/linux-64/xgboost-1.7.6-cuda118_py311h0be3a32_6.conda#f061993f8ed8ca90d2bb6a547a47109f -https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.12.0-pyhd8ed1ab_0.conda#460d7cac50322a39b61a833885a6a8d5 +https://conda.anaconda.org/conda-forge/linux-64/xgboost-2.0.3-cuda118_py311h0be3a32_0.conda#f3ef3a16aa577a4daf0f8aec6306d1ab +https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.13.0-pyhd8ed1ab_0.conda#13647ddfc84fd614fa12119a317de280 https://conda.anaconda.org/conda-forge/noarch/prov-2.0.0-pyhd3deb0d_0.tar.bz2#aa9b3ad140f6c0668c646f32e20ccf82 https://conda.anaconda.org/conda-forge/noarch/psy-maps-1.4.2-pyhd8ed1ab_0.tar.bz2#3ed13103dfd46f71dc870d188bd0b276 https://conda.anaconda.org/conda-forge/linux-64/psy-reg-1.4.0-py311h38be061_3.conda#6f7871722c07922028043144e8873b37 @@ -621,8 +621,8 @@ https://conda.anaconda.org/conda-forge/noarch/r-scales-1.2.1-r41hc72bb7e_1.tar.b https://conda.anaconda.org/conda-forge/linux-64/r-specsverification-0.5_3-r41ha503ecb_3.conda#2bc51f0d44b98092ba57cf2f8671b490 https://conda.anaconda.org/conda-forge/linux-64/r-splancs-2.01_43-r41h8da6f51_1.tar.bz2#3a6aad0706541141d10e3b514467a080 https://conda.anaconda.org/conda-forge/linux-64/r-vctrs-0.6.2-r41ha503ecb_0.conda#1f7610a1863648cab254a9f85bd29dcd -https://conda.anaconda.org/conda-forge/noarch/dask-2023.12.0-pyhd8ed1ab_0.conda#5cfc00e93b71fba459bede86419d0f01 -https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.12.0-pyhd8ed1ab_0.conda#364e28ab12477494e72839aaa588073d +https://conda.anaconda.org/conda-forge/noarch/dask-2023.12.1-pyhd8ed1ab_0.conda#9a6e8eb1d188bc246883ea11f4fe6a4d +https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.13.0-pyhd8ed1ab_0.conda#e52eed0a3dac67432a02b8b5b23c8d76 https://conda.anaconda.org/conda-forge/noarch/r-cyclocomp-1.1.0-r41hc72bb7e_1005.tar.bz2#800e1da5bf774be48934b8865dd78d33 https://conda.anaconda.org/conda-forge/noarch/r-gridextra-2.3-r41hc72bb7e_1004.tar.bz2#71ebed7e976df735ff3443bb88bd154f https://conda.anaconda.org/conda-forge/noarch/r-httr-1.4.6-r41hc72bb7e_0.conda#53dbb769c96782db54bf2d414fc9b239 @@ -635,7 +635,7 @@ https://conda.anaconda.org/conda-forge/noarch/r-r.cache-0.16.0-r41hc72bb7e_1.tar https://conda.anaconda.org/conda-forge/noarch/iris-esmf-regrid-0.9.0-pyhd8ed1ab_0.conda#570f2c6e387fd6dac5356a5152f91b3f https://conda.anaconda.org/conda-forge/noarch/r-climprojdiags-0.3.2-r41hc72bb7e_0.conda#9922b863cd10035cbb75e3c2edae64a7 https://conda.anaconda.org/conda-forge/linux-64/r-tibble-3.2.1-r41h133d619_1.conda#3ae9b78fb1d8a44deed24a27cce33ebf -https://conda.anaconda.org/conda-forge/label/esmvalcore_rc/noarch/esmvalcore-2.10.0rc1-pyh39db41b_0.conda#b973ee8c35712a7d21830ed06bdbc42d +https://conda.anaconda.org/conda-forge/noarch/esmvalcore-2.10.0-pyhd8ed1ab_0.conda#18bc5ed0e0583cb0b212927795debea7 https://conda.anaconda.org/conda-forge/noarch/r-ggplot2-3.4.2-r41hc72bb7e_0.conda#c2b04f4ff351d84bf51fd5a77b5c9b6c https://conda.anaconda.org/conda-forge/noarch/r-rematch2-2.1.2-r41hc72bb7e_2.tar.bz2#f67eae0562ffc808b82f1590776c25f5 https://conda.anaconda.org/conda-forge/noarch/r-styler-1.10.1-r41hc72bb7e_0.conda#c12b81cff8bb8745ffbe7aeb9dfd795f