Skip to content

tasmax/tasmin ERA5 CMORization fails #2892

@malininae

Description

@malininae

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_max

main_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

No one assigned

    Labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions