Skip to content

CMIP6Plus support for ESGF download - #3160

Open
ghossh wants to merge 9 commits into
mainfrom
config_CMIP6Plus
Open

CMIP6Plus support for ESGF download#3160
ghossh wants to merge 9 commits into
mainfrom
config_CMIP6Plus

Conversation

@ghossh

@ghossh ghossh commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

Description

This pull request adds initial support for the CMIP6Plus project in ESMValCore. CMIP6Plus is the WCRP project used for climate model data published on ESGF after the formal closure of CMIP6. This PR enables ESMValCore to recognise CMIP6Plus as a project and to search/download data from ESGF where supported.

Changes in this pull request:

  • Add CMIP6Plus to the ESGF facet configuration
  • Add CMIP6Plus to the example ESGF data source configuration

Further CMIP6Plus-related improvements may be added in follow-up commits on
this branch.

Documentation Link:
https://esmvaltool--3160.org.readthedocs.build/projects/ESMValCore/en/3160/reference/facets.html#cmip6plus

- Introduced CMIP6Plus project configuration in data-esmvalcore-esgf.yml.
- Added CMIP6Plus facets mapping in facets.py.
- Updated dataset map to include CMIP6Plus with appropriate priority and mappings.
@ghossh ghossh self-assigned this Jul 10, 2026
@codecov

codecov Bot commented Jul 10, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 96.42%. Comparing base (af639cb) to head (c8cb606).

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #3160      +/-   ##
==========================================
+ Coverage   96.41%   96.42%   +0.01%     
==========================================
  Files         280      280              
  Lines       16268    16271       +3     
==========================================
+ Hits        15684    15690       +6     
+ Misses        584      581       -3     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@bouweandela bouweandela left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Great addition @ghossh! It would be nice to add a bit more before merging:

  • Add a documentation page, probably a copy of or addition to https://docs.esmvaltool.org/projects/ESMValCore/en/latest/reference/facets.html#cmip6
  • Enable CMOR checks, here is the example for CMIP6:
    CMIP6:
    cmor_table:
    type: esmvalcore.cmor.table.CMIP6Info
    paths:
    - cmip6/Tables
    - cmip6-custom
    . Are there special tables for CMIP6Plus or do they just use the CMIP6 CMOR tables?
  • Add an entry to the configuration file for intake-esgf, as we recommend that people switch over to that because it supports the new ESGF search interface. It can be a copy of
    CMIP6:
    data:
    intake-esgf:
    type: esmvalcore.io.intake_esgf.IntakeESGFDataSource
    facets:
    activity: "activity_drs"
    dataset: "source_id"
    ensemble: "member_id"
    exp: "experiment_id"
    institute: "institution_id"
    grid: "grid_label"
    mip: "table_id"
    project: "project"
    short_name: "variable_id"
  • Add an entry to the local data source so people have a good example of how to organize the directory structure according to the official DRS, can be a copy of
    CMIP6:
    data:
    local:
    type: esmvalcore.io.local.LocalDataSource
    rootpath: ~/climate_data
    dirname_template: "{project}/{activity}/{institute}/{dataset}/{exp}/{ensemble}/{mip}/{short_name}/{grid}/{version}"
    filename_template: "{short_name}_{mip}_{dataset}_{exp}_{ensemble}_{grid}*.nc"

It is also good to be aware that derived variables may need additional work in some cases, just like for CMIP7: #2984

@bouweandela

Copy link
Copy Markdown
Member

Based on the information at https://wcrp-cmip.org/cmip-phases/cmip6plus/, it looks like the CMIP6Plus CMOR tables live at https://github.com/PCMDI/mip-cmor-tables/tree/main/Tables and the CV file would need to be copied from https://github.com/WCRP-CMIP/CMIP6Plus_CVs/blob/main/CVs/CMIP6Plus_CV.json

ghossh and others added 8 commits July 31, 2026 12:25
…rces

- Introduced CMIP6Plus project configuration in data-intake-esgf.yml and data-local.yml.
- Updated cmor_tables.yml to include CMIP6Plus paths.
- Added facet mappings for CMIP6Plus in facets.rst.
- Introduced multiple new JSON tables for CMIP6Plus, including configurations for variables such as Lightning Flash Rate, Total Odd Oxygen Loss and Production Rates, and various aerosol metrics.
- Added tables for different temporal resolutions (monthly, daily, hourly) and specific atmospheric layers.
- Updated metadata to align with CF conventions and CMOR specifications for improved data handling and accessibility.
…nd VariableInfo classes

- Updated the parsing of `generic_levels` to handle string input more robustly.
- Enhanced the dimension assignment logic to check for generic levels more effectively.
- Changed the `modeling_realm` variable to use a dedicated method for reading JSON lists, improving consistency in data handling.
…config

- Updated the test configuration to include "CMIP6Plus" as a valid model option, enhancing the coverage for testing configurations related to the CMIP6Plus project.
- Removed unnecessary whitespace in the parsing of `generic_levels` in the CMIP6Info class.
- Standardized the path formatting in cmor_tables.yml for the CMIP6Plus project.
@ghossh
ghossh requested a review from bouweandela July 31, 2026 15:59
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