pycmor
A Python package that simplifies the conversion of climate model output into CMOR-compliant formats, supporting CMIP6 and CMIP7 standards. Provides a modular, plugin-based pipeline for processing NetCDF data from diverse Earth system models.
Cite this software
Description
- Simplifies CMIP6/7 compliance — converts Earth system model output into
CMOR-standard NetCDF without requiring direct use of the low-level CMOR library. - Model-agnostic pipeline — plugin-based architecture works with any ESM;
ships with support for FESOM2, OpenIFS, and PISM out of the box. - HPC-native — scales across SLURM clusters via dask.distributed, handling
large multi-variable, multi-frequency datasets in parallel. - CF-conventions and WCRP Controlled Vocabularies built in — automatically
applies correct metadata, coordinates, bounds, and calendar handling. - CMIP7-ready — active development targets full CMIP7 data request and CV
compliance, tracking the emerging WCRP standard. - Extensible by design — researchers and modelling groups can add their own
pipeline steps, variable mappings, and model plugins without modifying core code.
What is pycmor?
pycmor (installed as py-cmor) is a Python package developed at the
Alfred Wegener Institute (AWI) Helmholtz Centre for Polar and Marine Research.
It provides a declarative, rule-based pipeline for reformatting climate model
output into CMOR-compliant NetCDF files required for
submission to CMIP6 and CMIP7.
The package is structured around a YAML-driven configuration system: users
describe which model variables map to which CMIP variables, and pycmor handles
coordinate generation, time bounds, calendar conversion, chunking, and metadata
injection automatically.
Getting started
Install from PyPI:
pip install py-cmor
Then run the CMORisation pipeline with a config file:
pymor process config.yaml
Full documentation is available at pymor.readthedocs.io.
Source code and issue tracker: github.com/esm-tools/pycmor.