-
Notifications
You must be signed in to change notification settings - Fork 44
Open
Labels
Description
I was running ERA5 tasmax and tasmin CMORization using the daily cmorization recipe with the recently downloaded grib data and it's been failing for both variables. I tried it with both 2.12 and 2.13 core and it fails at the same stage, yet I successfully CMOrized sfcWind with 2.12 core the other day, so it seems to be variable dependent.
2025-11-18 22:35:57,634 UTC [276027] ERROR Program terminated abnormally, see stack trace below for more information:
Traceback (most recent call last):
File "/fs/site5/eccc/crd/ccrn/users/emr001/miniconda3/envs/etool_213_not_source/lib/python3.13/site-packages/esmvalcore/_main.py", line 635, in run
fire.Fire(ESMValTool())
~~~~~~~~~^^^^^^^^^^^^^^
File "/fs/site5/eccc/crd/ccrn/users/emr001/miniconda3/envs/etool_213_not_source/lib/python3.13/site-packages/fire/core.py", line 135, in Fire
component_trace = _Fire(component, args, parsed_flag_args, context, name)
File "/fs/site5/eccc/crd/ccrn/users/emr001/miniconda3/envs/etool_213_not_source/lib/python3.13/site-packages/fire/core.py", line 468, in _Fire
component, remaining_args = _CallAndUpdateTrace(
~~~~~~~~~~~~~~~~~~~^
component,
^^^^^^^^^^
...<2 lines>...
treatment='class' if is_class else 'routine',
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
target=component.__name__)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/fs/site5/eccc/crd/ccrn/users/emr001/miniconda3/envs/etool_213_not_source/lib/python3.13/site-packages/fire/core.py", line 684, in _CallAndUpdateTrace
component = fn(*varargs, **kwargs)
File "/fs/site5/eccc/crd/ccrn/users/emr001/miniconda3/envs/etool_213_not_source/lib/python3.13/site-packages/esmvalcore/_main.py", line 463, in run
self._run(recipe, session, cli_config_dir)
~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/fs/site5/eccc/crd/ccrn/users/emr001/miniconda3/envs/etool_213_not_source/lib/python3.13/site-packages/esmvalcore/_main.py", line 519, in _run
process_recipe(recipe_file=recipe, session=session)
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/fs/site5/eccc/crd/ccrn/users/emr001/miniconda3/envs/etool_213_not_source/lib/python3.13/site-packages/esmvalcore/_main.py", line 145, in process_recipe
recipe.run()
~~~~~~~~~~^^
File "/fs/site5/eccc/crd/ccrn/users/emr001/miniconda3/envs/etool_213_not_source/lib/python3.13/site-packages/esmvalcore/_recipe/recipe.py", line 1348, in run
self.tasks.run(max_parallel_tasks=self.session["max_parallel_tasks"])
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/fs/site5/eccc/crd/ccrn/users/emr001/miniconda3/envs/etool_213_not_source/lib/python3.13/site-packages/esmvalcore/_task.py", line 849, in run
self._run_sequential()
~~~~~~~~~~~~~~~~~~~~^^
File "/fs/site5/eccc/crd/ccrn/users/emr001/miniconda3/envs/etool_213_not_source/lib/python3.13/site-packages/esmvalcore/_task.py", line 860, in _run_sequential
task.run()
~~~~~~~~^^
File "/fs/site5/eccc/crd/ccrn/users/emr001/miniconda3/envs/etool_213_not_source/lib/python3.13/site-packages/esmvalcore/_task.py", line 292, in run
input_files.extend(task.run())
~~~~~~~~^^
File "/fs/site5/eccc/crd/ccrn/users/emr001/miniconda3/envs/etool_213_not_source/lib/python3.13/site-packages/esmvalcore/_task.py", line 299, in run
self.output_files = self._run(input_files)
~~~~~~~~~^^^^^^^^^^^^^
File "/fs/site5/eccc/crd/ccrn/users/emr001/miniconda3/envs/etool_213_not_source/lib/python3.13/site-packages/esmvalcore/preprocessor/__init__.py", line 783, in _run
product.apply(step, self.debug)
~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
File "/fs/site5/eccc/crd/ccrn/users/emr001/miniconda3/envs/etool_213_not_source/lib/python3.13/site-packages/esmvalcore/preprocessor/__init__.py", line 569, in apply
self.cubes,
^^^^^^^^^^
File "/fs/site5/eccc/crd/ccrn/users/emr001/miniconda3/envs/etool_213_not_source/lib/python3.13/site-packages/esmvalcore/preprocessor/__init__.py", line 581, in cubes
self._cubes = [ds.load() for ds in self.datasets] # type: ignore
~~~~~~~^^
File "/fs/site5/eccc/crd/ccrn/users/emr001/miniconda3/envs/etool_213_not_source/lib/python3.13/site-packages/esmvalcore/dataset.py", line 822, in load
cube = self._load()
File "/fs/site5/eccc/crd/ccrn/users/emr001/miniconda3/envs/etool_213_not_source/lib/python3.13/site-packages/esmvalcore/dataset.py", line 907, in _load
result = preprocess(
result,
...<4 lines>...
**kwargs,
)
File "/fs/site5/eccc/crd/ccrn/users/emr001/miniconda3/envs/etool_213_not_source/lib/python3.13/site-packages/esmvalcore/preprocessor/__init__.py", line 457, in preprocess
_run_preproc_function(
~~~~~~~~~~~~~~~~~~~~~^
function,
^^^^^^^^^
...<2 lines>...
input_files=input_files,
^^^^^^^^^^^^^^^^^^^^^^^^
),
^
File "/fs/site5/eccc/crd/ccrn/users/emr001/miniconda3/envs/etool_213_not_source/lib/python3.13/site-packages/esmvalcore/preprocessor/__init__.py", line 397, in _run_preproc_function
return function(items, **kwargs)
File "/fs/site5/eccc/crd/ccrn/users/emr001/miniconda3/envs/etool_213_not_source/lib/python3.13/site-packages/esmvalcore/cmor/fix.py", line 187, in fix_metadata
cube_list = fix.fix_metadata(cube_list)
File "/fs/site5/eccc/crd/ccrn/users/emr001/miniconda3/envs/etool_213_not_source/lib/python3.13/site-packages/esmvalcore/cmor/_fixes/native6/era5.py", line 612, in fix_metadata
cube = safe_convert_units(cube, self.vardef.units)
File "/fs/site5/eccc/crd/ccrn/users/emr001/miniconda3/envs/etool_213_not_source/lib/python3.13/site-packages/esmvalcore/iris_helpers.py", line 514, in safe_convert_units
cube.convert_units(units)
~~~~~~~~~~~~~~~~~~^^^^^^^
File "/fs/site5/eccc/crd/ccrn/users/emr001/miniconda3/envs/etool_213_not_source/lib/python3.13/site-packages/iris/cube.py", line 1479, in convert_units
raise iris.exceptions.UnitConversionError(
...<2 lines>...
)
iris.exceptions.UnitConversionError: Cannot convert from unknown units. The "cube.units" attribute may be set directly.
Here's the recipe I used:
# ESMValTool
# recipe_daily_era5.yml
---
documentation:
description: Create daily ERA5 data
title: Daily ERA5 data CMORization and creation
authors:
- andela_bouwe
- kalverla_peter
- alidoost_sarah
maintainer:
- unmaintained
references:
- acknow_project
- hersbach20rmets
projects:
- ewatercycle
datasets:
# For the daily diagnostic, always add the next year, otherwise the last day is not cmor compatible
- {dataset: ERA5, project: native6, type: reanaly, version: v1, tier: 3, start_year: 2023, end_year: 2024}
preprocessors:
add_one_day: &add_one_day
extract_time:
start_year: 2023
start_month: 1
start_day: 1
end_year: 2024
end_month: 1
end_day: 1
daily_max:
<<: *add_one_day
daily_statistics:
operator: max
diagnostics:
daily:
description: Create daily ERA5 data
scripts:
rename:
script: cmorizers/era5.py
variables:
tasmax:
mip: E1hr
era5_name: maximum_2m_temperature_since_previous_post_processing
era5_freq: hourly
preprocessor: daily_maxmain_log_debug_era_tasmax_cmor.txt
I'll try to investigate it soon, but if someone has a chance to look at it in the next days, I'll really appreciate it!