How to
Cite this tool
If you use CMPITool in your research, please cite:
Streffing, J. (2022). CMPITool: A Python framework for Climate Model Performance Indexing.
https://github.com/JanStreffing/cmpitool
https://doi.org/10.5281/zenodo.7689792
And the original methodology paper:
Reichler, T., & Kim, J. (2008). How Well Do Coupled Models Simulate Today's Climate?
Bulletin of the American Meteorological Society, 89(3), 303-312.
https://doi.org/10.1175/BAMS-89-3-303
Preprocess data for cmpitool
As a first time user, for non-CMORized model output, preparing the raw output for use in cmpitool will likely be the largest up-front time cost. Cmpitool is deliberatly kept simple with regards to its ability to load model and observational data. It does not possess a smart data loader that can deal with a large varity in input formats. Your input data thus has to adhere to a strict but easy to understand rule set:
Data is provided in one file netcdf file per variable, model, timeperiod, level/depth, and season.
The file name format is:
${variable}_${modelname}_${timeperiod}_${level}_${season}.nc. Example:pr_EC-Earth3_198912-201411_surface_DJF.ncVariable names and units have to follow the CMOR standard.
Understanding CMOR Variable Names
CMOR (Climate Model Output Rewriter) standardizes variables used in climate modeling to ensure consistency across different models and datasets. Each variable has:
Short name: A concise identifier (e.g., ‘tas’, ‘pr’)
Long name: A descriptive full name of the variable
Standard unit: The unit in which the variable should be expressed
Below is a reference table of common CMOR variables used in CMPITool:
For a complete reference of all CMOR standard variables, please refer to the official CMOR documentation.
Masked regions must use a recognized NAN value.
The format as output by cdo griddes is:
gridtype = lonlat
gridsize = 16380
xsize = 180
ysize = 91
xname = lon
xlongname = "longitude"
xunits = "degrees_east"
yname = lat
ylongname = "latitude"
yunits = "degrees_north"
xfirst = 0
xinc = 2
yfirst = -90
yinc = 2
It is up to the tool user to generate a script which turns the raw model output into the input for cmpitool. You can find a number of example script for CMORized and a handful for non-CMORized raw output in the subfolder preprocessing_examples.
Evaluate against your own experiment(s)
To evaluate your experiment(s) against your own set of eval_models, rather than the default cmpi6 set, follow these steps:
For the experiment(s) that you want to evaluate against, run the analysis the the additional argument
use_for_eval=True, e.g.cmpitool(model_path, models, use_for_eval=True)Set the
modelsfrom step 1. aseval_modelsand define a newmodelsdictionary for the experiments that you want to evaluate.Run the tool again with
cmpitool(model_path, models, eval_models).