Skip to content

Comments

Fix fire diagnostic CMIP7 data selection and recipe writing#540

Merged
lewisjared merged 1 commit intoClimate-REF:mainfrom
bouweandela:fix-fire-diagnostic
Feb 25, 2026
Merged

Fix fire diagnostic CMIP7 data selection and recipe writing#540
lewisjared merged 1 commit intoClimate-REF:mainfrom
bouweandela:fix-fire-diagnostic

Conversation

@bouweandela
Copy link
Contributor

@bouweandela bouweandela commented Feb 16, 2026

Description

Fix fire diagnostic CMIP7 data selection and recipe writing. Unfortunately, the CMIP7 test case is now failing on ESMValGroup/ESMValCore#2981 and ESMValGroup/ESMValTool#4343.

Checklist

Please confirm that this pull request has done the following:

  • Tests added
  • Documentation added (where applicable)
  • Changelog item added to changelog/

@codecov
Copy link

codecov bot commented Feb 16, 2026

Codecov Report

❌ Patch coverage is 66.66667% with 6 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
...esmvaltool/diagnostics/climate_drivers_for_fire.py 66.66% 4 Missing and 2 partials ⚠️
Flag Coverage Δ
core 92.46% <ø> (ø)
providers 90.02% <66.66%> (+0.36%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
...esmvaltool/diagnostics/climate_drivers_for_fire.py 85.36% <66.66%> (+16.31%) ⬆️
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@bouweandela
Copy link
Contributor Author

To test this, run

ref test-cases run --fetch --force-regen --clean --provider esmvaltool --diagnostic climate-drivers-for-fire

@bouweandela bouweandela marked this pull request as ready for review February 18, 2026 15:10
@lewisjared
Copy link
Contributor

The CMIP6 test case works, but for me I'm getting the following error with CMIP7.

2026-02-20 12:28:40,822 UTC [36627] INFO    Package versions
2026-02-20 12:28:40,822 UTC [36627] INFO    ----------------
2026-02-20 12:28:40,822 UTC [36627] INFO    ESMValCore: 2.14.0rc1
2026-02-20 12:28:40,822 UTC [36627] INFO    ESMValTool: 2.14.0.dev65+gf5214c924
2026-02-20 12:28:40,822 UTC [36627] INFO    ----------------
2026-02-20 12:28:40,822 UTC [36627] INFO    Reading configuration files from:
/Users/jared/code/climate-ref/software/conda/esmvaltool-efbbc9d45c9eb22679208cc3eac458e67ddb7308/lib/python3.13/site-packages/esmvalcore/config/configurations/defaults (defaults)
/Users/jared/.config/esmvaltool (default user configuration directory)
/Users/jared/code/climate-ref/climate-ref/.ref/results/test-cases/esmvaltool/climate-drivers-for-fire/cmip7/config (command line argument)
2026-02-20 12:28:40,822 UTC [36627] INFO    Writing program log files to:
/Users/jared/code/climate-ref/climate-ref/.ref/results/test-cases/esmvaltool/climate-drivers-for-fire/cmip7/executions/recipe_20260220_122840/run/main_log.txt
/Users/jared/code/climate-ref/climate-ref/.ref/results/test-cases/esmvaltool/climate-drivers-for-fire/cmip7/executions/recipe_20260220_122840/run/main_log_debug.txt
/Users/jared/code/climate-ref/climate-ref/.ref/results/test-cases/esmvaltool/climate-drivers-for-fire/cmip7/executions/recipe_20260220_122840/run/cmor_log.txt
2026-02-20 12:28:41,161 UTC [36627] INFO    Starting the Earth System Model Evaluation Tool at time: 2026-02-20 12:28:41 UTC
2026-02-20 12:28:41,161 UTC [36627] INFO    ----------------------------------------------------------------------
2026-02-20 12:28:41,161 UTC [36627] INFO    RECIPE   = /Users/jared/code/climate-ref/climate-ref/.ref/results/test-cases/esmvaltool/climate-drivers-for-fire/cmip7/recipe.yml
2026-02-20 12:28:41,161 UTC [36627] INFO    RUNDIR     = /Users/jared/code/climate-ref/climate-ref/.ref/results/test-cases/esmvaltool/climate-drivers-for-fire/cmip7/executions/recipe_20260220_122840/run
2026-02-20 12:28:41,161 UTC [36627] INFO    WORKDIR    = /Users/jared/code/climate-ref/climate-ref/.ref/results/test-cases/esmvaltool/climate-drivers-for-fire/cmip7/executions/recipe_20260220_122840/work
2026-02-20 12:28:41,161 UTC [36627] INFO    PREPROCDIR = /Users/jared/code/climate-ref/climate-ref/.ref/results/test-cases/esmvaltool/climate-drivers-for-fire/cmip7/executions/recipe_20260220_122840/preproc
2026-02-20 12:28:41,161 UTC [36627] INFO    PLOTDIR    = /Users/jared/code/climate-ref/climate-ref/.ref/results/test-cases/esmvaltool/climate-drivers-for-fire/cmip7/executions/recipe_20260220_122840/plots
2026-02-20 12:28:41,161 UTC [36627] INFO    ----------------------------------------------------------------------
2026-02-20 12:28:41,190 UTC [36627] INFO    Running tasks using at most 2 processes
2026-02-20 12:28:41,191 UTC [36627] INFO    If your system hangs during execution, it may not have enough memory for keeping this number of tasks in memory.
2026-02-20 12:28:41,191 UTC [36627] INFO    If you experience memory problems, try reducing 'max_parallel_tasks' in your configuration.
2026-02-20 12:28:41,217 UTC [36627] INFO    Creating tasks from recipe
2026-02-20 12:28:41,217 UTC [36627] INFO    Creating tasks for diagnostic fire_evaluation
2026-02-20 12:28:41,217 UTC [36627] INFO    Creating diagnostic task fire_evaluation/fire_evaluation
2026-02-20 12:28:41,217 UTC [36627] INFO    Creating preprocessor task fire_evaluation/pr
2026-02-20 12:28:41,217 UTC [36627] INFO    Creating preprocessor 'preproc' task for variable 'pr'
2026-02-20 12:28:41,218 UTC [36627] INFO    Found input files for Dataset: pr, atmos, CMIP7, CanESM5, historical, r1i1p1f1, tavg-u-hxy-u, mon, glb, gn, 20190429, supplementaries: sftlf, ti-u-hxy-u, fx
2026-02-20 12:28:41,219 UTC [36627] INFO    PreprocessingTask fire_evaluation/pr created.
2026-02-20 12:28:41,219 UTC [36627] INFO    Creating preprocessor task fire_evaluation/tasmax
2026-02-20 12:28:41,219 UTC [36627] INFO    Creating preprocessor 'preproc' task for variable 'tasmax'
2026-02-20 12:28:41,219 UTC [36627] INFO    Found input files for Dataset: tas, atmos, CMIP7, CanESM5, historical, r1i1p1f1, tmaxavg-h2m-hxy-u, mon, glb, gn, 20190429, supplementaries: sftlf, ti-u-hxy-u, fx
2026-02-20 12:28:41,220 UTC [36627] INFO    PreprocessingTask fire_evaluation/tasmax created.
2026-02-20 12:28:41,220 UTC [36627] INFO    Creating preprocessor task fire_evaluation/treeFrac
2026-02-20 12:28:41,220 UTC [36627] INFO    Creating preprocessor 'preproc_fraction' task for variable 'treeFrac'
2026-02-20 12:28:41,221 UTC [36627] INFO    Found input files for Dataset: treeFrac, land, CMIP7, CanESM5, historical, r1i1p1f1, tavg-u-hxy-u, mon, glb, gn, 20190429, supplementaries: sftlf, atmos, ti-u-hxy-u, fx
2026-02-20 12:28:41,221 UTC [36627] INFO    PreprocessingTask fire_evaluation/treeFrac created.
2026-02-20 12:28:41,221 UTC [36627] INFO    Creating preprocessor task fire_evaluation/vegFrac
2026-02-20 12:28:41,221 UTC [36627] INFO    Creating preprocessor 'preproc_fraction' task for variable 'vegFrac'
2026-02-20 12:28:41,222 UTC [36627] INFO    Found input files for Dataset: vegFrac, land, CMIP7, CanESM5, historical, r1i1p1f1, tavg-u-hxy-u, mon, glb, gn, 20190429, supplementaries: sftlf, atmos, ti-u-hxy-u, fx
2026-02-20 12:28:41,222 UTC [36627] INFO    PreprocessingTask fire_evaluation/vegFrac created.
2026-02-20 12:28:41,222 UTC [36627] INFO    Creating preprocessor task fire_evaluation/cVeg
2026-02-20 12:28:41,222 UTC [36627] INFO    Creating preprocessor 'preproc' task for variable 'cVeg'
2026-02-20 12:28:41,223 UTC [36627] INFO    Found input files for Dataset: cVeg, land, CMIP7, CanESM5, historical, r1i1p1f1, tavg-u-hxy-lnd, mon, glb, gn, 20190429, supplementaries: sftlf, atmos, ti-u-hxy-u, fx
2026-02-20 12:28:41,223 UTC [36627] INFO    PreprocessingTask fire_evaluation/cVeg created.
2026-02-20 12:28:41,223 UTC [36627] INFO    Creating preprocessor task fire_evaluation/tas
2026-02-20 12:28:41,223 UTC [36627] INFO    Creating preprocessor 'preproc' task for variable 'tas'
2026-02-20 12:28:41,224 UTC [36627] INFO    Found input files for Dataset: tas, atmos, CMIP7, CanESM5, historical, r1i1p1f1, tavg-h2m-hxy-u, mon, glb, gn, 20190429, supplementaries: sftlf, ti-u-hxy-u, fx
2026-02-20 12:28:41,224 UTC [36627] INFO    PreprocessingTask fire_evaluation/tas created.
2026-02-20 12:28:41,224 UTC [36627] INFO    Creating preprocessor task fire_evaluation/hurs
2026-02-20 12:28:41,224 UTC [36627] INFO    Creating preprocessor 'preproc' task for variable 'hurs'
2026-02-20 12:28:41,225 UTC [36627] INFO    Found input files for Dataset: hurs, atmos, CMIP7, CanESM5, historical, r1i1p1f1, tavg-h2m-hxy-u, mon, glb, gn, 20190429, supplementaries: sftlf, ti-u-hxy-u, fx
2026-02-20 12:28:41,225 UTC [36627] INFO    PreprocessingTask fire_evaluation/hurs created.
2026-02-20 12:28:41,225 UTC [36627] INFO    These tasks will be executed: fire_evaluation/cVeg, fire_evaluation/treeFrac, fire_evaluation/fire_evaluation, fire_evaluation/tasmax, fire_evaluation/vegFrac, fire_evaluation/pr, fire_evaluation/tas, fire_evaluation/hurs
2026-02-20 12:28:41,230 UTC [36627] INFO    Wrote recipe with version numbers and wildcards to:
file:///Users/jared/code/climate-ref/climate-ref/.ref/results/test-cases/esmvaltool/climate-drivers-for-fire/cmip7/executions/recipe_20260220_122840/run/recipe_filled.yml
2026-02-20 12:28:43,550 UTC [36627] INFO    Using Dask distributed scheduler (address: tcp://127.0.0.1:50281, dashboard link: http://127.0.0.1:8787/status)
2026-02-20 12:28:43,550 UTC [36627] INFO    Running 8 tasks using 2 processes
2026-02-20 12:28:45,525 UTC [36627] INFO    Progress: 2 tasks running, 6 tasks waiting for ancestors, 0/8 done
ERROR:esmvalcore.preprocessor:Failed to run preprocessor function 'cmor_check_metadata' on the data
[<iris 'Cube' of air_temperature / (K) (time: 1980; latitude: 64; longitude: 128)>]
loaded from original input file(s)
[LocalFile('/Users/jared/code/climate-ref/climate-ref/.ref/results/test-cases/esmvaltool/climate-drivers-for-fire/cmip7/climate_data/CMIP7/CMIP/CCCma/CanESM5/historical/r1i1p1f1/glb/mon/tas/tmaxavg-h2m-hxy-u/gn/20190429/tas_tmaxavg-h2m-hxy-u_mon_glb_gn_CanESM5_historical_r1i1p1f1_185001-201412.nc')]
with function argument(s)
check_level = <CheckLevels.DEFAULT: 3>,
cmor_table = 'CMIP7',
mip = 'atmos',
frequency = 'mon',
short_name = 'tas',
branding_suffix = 'tmaxavg-h2m-hxy-u'
WARNING:esmvalcore.cmor._fixes.fix.genericfix:Long name changed from 'Percentage of the grid  cell occupied by land (including lakes)' to 'Percentage of the Grid Cell Occupied by Land (Including Lakes)'
(for file /Users/jared/code/climate-ref/climate-ref/.ref/results/test-cases/esmvaltool/climate-drivers-for-fire/cmip7/climate_data/CMIP7/CMIP/CCCma/CanESM5/historical/r1i1p1f1/glb/fx/sftlf/ti-u-hxy-u/gn/20190429/sftlf_ti-u-hxy-u_fx_glb_gn_CanESM5_historical_r1i1p1f1.nc)
2026-02-20 12:28:48,939 UTC [36627] INFO    Maximum memory used (estimate): 2.8 GB
2026-02-20 12:28:48,940 UTC [36627] INFO    Sampled every second. It may be inaccurate if short but high spikes in memory consumption occur.
2026-02-20 12:28:48,940 UTC [36627] ERROR   Program terminated abnormally, see stack trace below for more information:
multiprocessing.pool.RemoteTraceback: 
"""
Traceback (most recent call last):
  File "/Users/jared/code/climate-ref/software/conda/esmvaltool-efbbc9d45c9eb22679208cc3eac458e67ddb7308/lib/python3.13/multiprocessing/pool.py", line 125, in worker
    result = (True, func(*args, **kwds))
                    ~~~~^^^^^^^^^^^^^^^
  File "/Users/jared/code/climate-ref/software/conda/esmvaltool-efbbc9d45c9eb22679208cc3eac458e67ddb7308/lib/python3.13/site-packages/esmvalcore/_task.py", line 1005, in _run_task
    output_files = task.run()
  File "/Users/jared/code/climate-ref/software/conda/esmvaltool-efbbc9d45c9eb22679208cc3eac458e67ddb7308/lib/python3.13/site-packages/esmvalcore/_task.py", line 301, in run
    self.output_files = self._run(input_files)
                        ~~~~~~~~~^^^^^^^^^^^^^
  File "/Users/jared/code/climate-ref/software/conda/esmvaltool-efbbc9d45c9eb22679208cc3eac458e67ddb7308/lib/python3.13/site-packages/esmvalcore/preprocessor/__init__.py", line 859, in _run
    product.apply(step, self.debug)
    ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
  File "/Users/jared/code/climate-ref/software/conda/esmvaltool-efbbc9d45c9eb22679208cc3eac458e67ddb7308/lib/python3.13/site-packages/esmvalcore/preprocessor/__init__.py", line 675, in apply
    self.cubes,
    ^^^^^^^^^^
  File "/Users/jared/code/climate-ref/software/conda/esmvaltool-efbbc9d45c9eb22679208cc3eac458e67ddb7308/lib/python3.13/site-packages/esmvalcore/preprocessor/__init__.py", line 687, in cubes
    self._cubes = [ds.load() for ds in self.datasets]  # type: ignore
                   ~~~~~~~^^
  File "/Users/jared/code/climate-ref/software/conda/esmvaltool-efbbc9d45c9eb22679208cc3eac458e67ddb7308/lib/python3.13/site-packages/esmvalcore/dataset.py", line 805, in load
    cube = self._load()
  File "/Users/jared/code/climate-ref/software/conda/esmvaltool-efbbc9d45c9eb22679208cc3eac458e67ddb7308/lib/python3.13/site-packages/esmvalcore/dataset.py", line 887, in _load
    result = preprocess(
        result,
    ...<4 lines>...
        **kwargs,
    )
  File "/Users/jared/code/climate-ref/software/conda/esmvaltool-efbbc9d45c9eb22679208cc3eac458e67ddb7308/lib/python3.13/site-packages/esmvalcore/preprocessor/__init__.py", line 570, in preprocess
    _run_preproc_function(
    ~~~~~~~~~~~~~~~~~~~~~^
        function,
        ^^^^^^^^^
    ...<2 lines>...
        input_files=input_files,
        ^^^^^^^^^^^^^^^^^^^^^^^^
    ),
    ^
  File "/Users/jared/code/climate-ref/software/conda/esmvaltool-efbbc9d45c9eb22679208cc3eac458e67ddb7308/lib/python3.13/site-packages/esmvalcore/preprocessor/__init__.py", line 500, in _run_preproc_function
    return function(items, **kwargs)
  File "/Users/jared/code/climate-ref/software/conda/esmvaltool-efbbc9d45c9eb22679208cc3eac458e67ddb7308/lib/python3.13/site-packages/esmvalcore/cmor/check.py", line 1017, in cmor_check_metadata
    return checker(cube).check_metadata()
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/Users/jared/code/climate-ref/software/conda/esmvaltool-efbbc9d45c9eb22679208cc3eac458e67ddb7308/lib/python3.13/site-packages/esmvalcore/cmor/check.py", line 155, in check_metadata
    self._check_time_coord()
    ~~~~~~~~~~~~~~~~~~~~~~^^
  File "/Users/jared/code/climate-ref/software/conda/esmvaltool-efbbc9d45c9eb22679208cc3eac458e67ddb7308/lib/python3.13/site-packages/esmvalcore/cmor/check.py", line 820, in _check_time_coord
    self._check_time_bounds(coord)
    ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
  File "/Users/jared/code/climate-ref/software/conda/esmvaltool-efbbc9d45c9eb22679208cc3eac458e67ddb7308/lib/python3.13/site-packages/esmvalcore/cmor/check.py", line 638, in _check_time_bounds
    cmor = self._cmor_var.coordinates[" ".join(key)]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^
KeyError: ''
"""

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/Users/jared/code/climate-ref/software/conda/esmvaltool-efbbc9d45c9eb22679208cc3eac458e67ddb7308/lib/python3.13/site-packages/esmvalcore/_main.py", line 786, in run
    fire.Fire(ESMValTool())
    ~~~~~~~~~^^^^^^^^^^^^^^
  File "/Users/jared/code/climate-ref/software/conda/esmvaltool-efbbc9d45c9eb22679208cc3eac458e67ddb7308/lib/python3.13/site-packages/fire/core.py", line 135, in Fire
    component_trace = _Fire(component, args, parsed_flag_args, context, name)
  File "/Users/jared/code/climate-ref/software/conda/esmvaltool-efbbc9d45c9eb22679208cc3eac458e67ddb7308/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 "/Users/jared/code/climate-ref/software/conda/esmvaltool-efbbc9d45c9eb22679208cc3eac458e67ddb7308/lib/python3.13/site-packages/fire/core.py", line 684, in _CallAndUpdateTrace
    component = fn(*varargs, **kwargs)
  File "/Users/jared/code/climate-ref/software/conda/esmvaltool-efbbc9d45c9eb22679208cc3eac458e67ddb7308/lib/python3.13/site-packages/esmvalcore/_main.py", line 620, in run
    self._run(recipe, session, cli_config_dir)
    ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/jared/code/climate-ref/software/conda/esmvaltool-efbbc9d45c9eb22679208cc3eac458e67ddb7308/lib/python3.13/site-packages/esmvalcore/_main.py", line 675, in _run
    process_recipe(recipe_file=recipe, session=session)
    ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/jared/code/climate-ref/software/conda/esmvaltool-efbbc9d45c9eb22679208cc3eac458e67ddb7308/lib/python3.13/site-packages/esmvalcore/_main.py", line 156, in process_recipe
    recipe.run()
    ~~~~~~~~~~^^
  File "/Users/jared/code/climate-ref/software/conda/esmvaltool-efbbc9d45c9eb22679208cc3eac458e67ddb7308/lib/python3.13/site-packages/esmvalcore/_recipe/recipe.py", line 1331, in run
    self.tasks.run(max_parallel_tasks=self.session["max_parallel_tasks"])
    ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/jared/code/climate-ref/software/conda/esmvaltool-efbbc9d45c9eb22679208cc3eac458e67ddb7308/lib/python3.13/site-packages/esmvalcore/_task.py", line 853, in run
    self._run_parallel(address, max_parallel_tasks)
    ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/jared/code/climate-ref/software/conda/esmvaltool-efbbc9d45c9eb22679208cc3eac458e67ddb7308/lib/python3.13/site-packages/esmvalcore/_task.py", line 963, in _run_parallel
    _copy_results(task, running[task])
    ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "/Users/jared/code/climate-ref/software/conda/esmvaltool-efbbc9d45c9eb22679208cc3eac458e67ddb7308/lib/python3.13/site-packages/esmvalcore/_task.py", line 993, in _copy_results
    task.output_files, task.products = future.get()
                                       ~~~~~~~~~~^^
  File "/Users/jared/code/climate-ref/software/conda/esmvaltool-efbbc9d45c9eb22679208cc3eac458e67ddb7308/lib/python3.13/multiprocessing/pool.py", line 774, in get
    raise self._value
  File "/Users/jared/code/climate-ref/software/conda/esmvaltool-efbbc9d45c9eb22679208cc3eac458e67ddb7308/lib/python3.13/multiprocessing/pool.py", line 125, in worker
    result = (True, func(*args, **kwds))
    ^^^^^^^^^^^
  File "/Users/jared/code/climate-ref/software/conda/esmvaltool-efbbc9d45c9eb22679208cc3eac458e67ddb7308/lib/python3.13/site-packages/esmvalcore/_task.py", line 1005, in _run_task
    output_files = task.run()
    ^^^^^^^^^^^^^^^
  File "/Users/jared/code/climate-ref/software/conda/esmvaltool-efbbc9d45c9eb22679208cc3eac458e67ddb7308/lib/python3.13/site-packages/esmvalcore/_task.py", line 301, in run
    self.output_files = self._run(input_files)
    ^^^^^^^^^^^
  File "/Users/jared/code/climate-ref/software/conda/esmvaltool-efbbc9d45c9eb22679208cc3eac458e67ddb7308/lib/python3.13/site-packages/esmvalcore/preprocessor/__init__.py", line 859, in _run
    product.apply(step, self.debug)
    
  File "/Users/jared/code/climate-ref/software/conda/esmvaltool-efbbc9d45c9eb22679208cc3eac458e67ddb7308/lib/python3.13/site-packages/esmvalcore/preprocessor/__init__.py", line 675, in apply
    self.cubes,
  File "/Users/jared/code/climate-ref/software/conda/esmvaltool-efbbc9d45c9eb22679208cc3eac458e67ddb7308/lib/python3.13/site-packages/esmvalcore/preprocessor/__init__.py", line 687, in cubes
    self._cubes = [ds.load() for ds in self.datasets]  # type: ignore
    ^^^^^^^^^^^
  File "/Users/jared/code/climate-ref/software/conda/esmvaltool-efbbc9d45c9eb22679208cc3eac458e67ddb7308/lib/python3.13/site-packages/esmvalcore/dataset.py", line 805, in load
    cube = self._load()
    ^^^^^^^^^^^^^^^
  File "/Users/jared/code/climate-ref/software/conda/esmvaltool-efbbc9d45c9eb22679208cc3eac458e67ddb7308/lib/python3.13/site-packages/esmvalcore/dataset.py", line 887, in _load
    result = preprocess(
    ^^^^^^^^^^^
  File "/Users/jared/code/climate-ref/software/conda/esmvaltool-efbbc9d45c9eb22679208cc3eac458e67ddb7308/lib/python3.13/site-packages/esmvalcore/preprocessor/__init__.py", line 570, in preprocess
    _run_preproc_function(
    ^^^^^^^
  File "/Users/jared/code/climate-ref/software/conda/esmvaltool-efbbc9d45c9eb22679208cc3eac458e67ddb7308/lib/python3.13/site-packages/esmvalcore/preprocessor/__init__.py", line 500, in _run_preproc_function
    return function(items, **kwargs)
    ^^^^^^^^^^^^^^^
  File "/Users/jared/code/climate-ref/software/conda/esmvaltool-efbbc9d45c9eb22679208cc3eac458e67ddb7308/lib/python3.13/site-packages/esmvalcore/cmor/check.py", line 1017, in cmor_check_metadata
    return checker(cube).check_metadata()
      ^^^^^^^^^^^^^^^^^
  File "/Users/jared/code/climate-ref/software/conda/esmvaltool-efbbc9d45c9eb22679208cc3eac458e67ddb7308/lib/python3.13/site-packages/esmvalcore/cmor/check.py", line 155, in check_metadata
    self._check_time_coord()
    ^^^^^^^^^^^
  File "/Users/jared/code/climate-ref/software/conda/esmvaltool-efbbc9d45c9eb22679208cc3eac458e67ddb7308/lib/python3.13/site-packages/esmvalcore/cmor/check.py", line 820, in _check_time_coord
    self._check_time_bounds(coord)
    ^^^^^^^^^^^^^^^
  File "/Users/jared/code/climate-ref/software/conda/esmvaltool-efbbc9d45c9eb22679208cc3eac458e67ddb7308/lib/python3.13/site-packages/esmvalcore/cmor/check.py", line 638, in _check_time_bounds
    cmor = self._cmor_var.coordinates[" ".join(key)]
    ^^^^^^^^^^^^^^^
KeyError: ''
2026-02-20 12:28:48,944 UTC [36627] INFO    
If you have a question or need help, please start a new discussion on https://github.com/ESMValGroup/ESMValTool/discussions
If you suspect this is a bug, please open an issue on https://github.com/ESMValGroup/ESMValTool/issues
To make it easier to find out what the problem is, please consider attaching the files run/recipe_*.yml and run/main_log_debug.txt from the output directory.

2026-02-20 23:28:49.306 +11:00 | ERROR    | climate_ref.cli.test_cases - Diagnostic execution failed for esmvaltool/climate-drivers-for-fire/cmip7: Command '['/Users/jared/code/climate-ref/software/conda/micromamba', 'run', '--prefix', '/Users/jared/code/climate-ref/software/conda/esmvaltool-efbbc9d45c9eb22679208cc3eac458e67ddb7308', 'esmvaltool', 'run', '--config-dir=/Users/jared/code/climate-ref/climate-ref/.ref/results/test-cases/esmvaltool/climate-drivers-for-fire/cmip7/config', '/Users/jared/code/climate-ref/climate-ref/.ref/results/test-cases/esmvaltool/climate-drivers-for-fire/cmip7/recipe.yml']' returned non-zero exit status 1.

Results: 0 passed, 1 failed
Failed test cases:
  - esmvaltool/climate-drivers-for-fire/cmip7

I deleted any existing converted CMIP7 datasets and tried with #547 getting the same error. Was there a newer commit of ESMValCore that was meant to be used?

@bouweandela
Copy link
Contributor Author

Yes, the ESMValCore pull request in the top post. And there is also the open issue on ESMValTool.

Copy link
Contributor

@lewisjared lewisjared left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ahh I see after rereading the description, the CMIP7 case is expected to fail still. The selected files are an improvement though.

I updated the pinned CMP7 readiness issue to link to ESMValGroup/ESMValTool#4343 for this diagnostic

@lewisjared lewisjared merged commit f1a0c75 into Climate-REF:main Feb 25, 2026
14 of 15 checks passed
@bouweandela bouweandela deleted the fix-fire-diagnostic branch February 25, 2026 10:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants