-
Notifications
You must be signed in to change notification settings - Fork 44
Open
Labels
bugSomething isn't workingSomething isn't workingcmorRelated to the CMOR standardRelated to the CMOR standardfix for datasetRelated to dataset-specific fix filesRelated to dataset-specific fix filesobservations
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!
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't workingcmorRelated to the CMOR standardRelated to the CMOR standardfix for datasetRelated to dataset-specific fix filesRelated to dataset-specific fix filesobservations