6. ENSO
This notebook provides an overview of running the ENSO Metrics package through the PMP.
Reference
Planton, Y., E. Guilyardi, A. T. Wittenberg, J. Lee, P. J. Gleckler, T. Bayr, S. McGregor, M. J. McPhaden, S. Power, R. Roehrig, A. Voldoire, 2020: Evaluating El Niño in climate models with the CLIVAR 2020 ENSO metrics package. Bulletin of the American Meteorological Society. doi: 10.1175/BAMS-D-19-0337.1
Lee, J., P. J. Gleckler, M.-S. Ahn, A. Ordonez, P. Ullrich, K. R. Sperber, K. E. Taylor, Y. Y. Planton, E. Guilyardi, P. Durack, C. Bonfils, M. D. Zelinka, L.-W. Chao, B. Dong, C. Doutriaux, C. Zhang, T. Vo, J. Boutte, M. F. Wehner, A. G. Pendergrass, D. Kim, Z. Xue, A. T. Wittenberg, and J. Krasting, 2024: Systematic and Objective Evaluation of Earth System Models: PCMDI Metrics Package (PMP) version 3. Geoscientific Model Development, 17, 3919–3948, doi: 10.5194/gmd-17-3919-2024
Description for individual metrics can be found at https://github.com/CLIVAR-PRP/ENSO_metrics/wiki.
If enso_package is not installed in your environment, you will need to install it.
To check whether the ENSO metrics package is installed in the current virtual conda environment:
conda list enso_metrics
To install the ENSO metrics package in the current virtual conda environment:
conda install -c conda-forge enso_metrics
Unquote the commend in the following box to install the ENSO package. Further installation instruction is available here: https://github.com/CLIVAR-PRP/ENSO_metrics/wiki/install
Please note, ENSO package requires Python 3.10.x.
[1]:
"""
!conda install -c conda-forge enso_metrics
"""
[1]:
'\n!conda install -c conda-forge enso_metrics\n'
Download demo data
The ENSO metrics demo requires downloading a large sample data set (size 10.8 GB). The ENSO metric requires a different set of sample data than the rest of the PMP metrics. This section of the notebook will download that data to your chosen location and generate a basic parameter file.
[2]:
# Lets get the file containing the data needed for this demo
import requests
r = requests.get("https://pcmdiweb.llnl.gov/pss/pmpdata/pmp_enso_tutorial_files.v20210823.txt")
with open("enso_data_files.txt","wb") as f:
f.write(r.content)
If you want to change the location where the demo data and output are stored, you can do so here:
[3]:
# This is where you will be downloading the sample_data
demo_data_directory = "demo_data"
# this line is where your output will be stored
demo_output_directory = "demo_output"
Then download the data. The total sample data size is 10.8 GB. This will take several minutes.
[4]:
# Let's download the files
from pcmdi_metrics.io.base import download_sample_data_files
try:
download_sample_data_files("enso_data_files.txt", demo_data_directory)
print("All files downloaded")
except:
print("Download failed")
All files downloaded
After downloading the data, we generate the parameter file for this demo.
[5]:
from download_sample_data import generate_parameter_files
filenames=["basic_enso_param.py.in"]
generate_parameter_files(demo_data_directory, demo_output_directory, filenames=filenames)
Preparing parameter file: basic_enso_param.py
Saving User Choices
[6]:
# To open and display one of the graphics
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
from matplotlib import rcParams
import os
%matplotlib inline
Usage
The ENSO driver can be run from the command line as enso_driver.py. In this notebook, we will use bash cell magic (cells beginning with %%bash) to run the ENSO driver as a subprocess.
For help, type:
enso_driver.py --help
[7]:
%%bash
enso_driver.py --help
usage: enso_driver.py [-h] [--parameters PARAMETERS]
[--diags OTHER_PARAMETERS [OTHER_PARAMETERS ...]]
[--mip MIP] [--exp EXP] [--modpath MODPATH]
[--modpath_lf MODPATH_LF]
[--modnames MODNAMES [MODNAMES ...]] [-r REALIZATION]
[--reference_data_path REFERENCE_DATA_PATH]
[--reference_data_lf_path REFERENCE_DATA_LF_PATH]
[--metricsCollection METRICSCOLLECTION]
[--json_name JSON_NAME] [--netcdf_name NETCDF_NAME]
[--results_dir RESULTS_DIR] [--case_id CASE_ID]
[--obs_catalogue OBS_CATALOGUE]
[--obs_cmor_path OBS_CMOR_PATH] [-d [DEBUG]]
[--obs_cmor [OBS_CMOR]] [--nc_out [NC_OUT]]
options:
-h, --help show this help message and exit
--parameters, -p PARAMETERS
--diags OTHER_PARAMETERS [OTHER_PARAMETERS ...]
Path to other user-defined parameter file. (default:
None)
--mip MIP A WCRP MIP project such as CMIP3 and CMIP5 (default:
cmip5)
--exp EXP An experiment such as AMIP, historical or pi-contorl
(default: historical)
--modpath, --mp MODPATH
Explicit path to model data (default: None)
--modpath_lf MODPATH_LF
Directory path to model land fraction field (default:
None)
--modnames MODNAMES [MODNAMES ...]
List of models (default: None)
-r, --realization REALIZATION
Consider all accessible realizations as idividual -
r1i1p1: default, consider only 'r1i1p1' member Or,
specify realization, e.g, r3i1p1' - *: consider all
available realizations (default: r1i1p1)
--reference_data_path, --rdp REFERENCE_DATA_PATH
The path/filename of reference (obs) data. (default:
None)
--reference_data_lf_path REFERENCE_DATA_LF_PATH
Data path to land fraction of reference dataset
(default: None)
--metricsCollection METRICSCOLLECTION
Metrics Collection e.g. ENSO_perf, ENSO_tel, or
ENSO_proc (default: ENSO_perf)
--json_name JSON_NAME
File name for output JSON (default: None)
--netcdf_name NETCDF_NAME
File name for output NetCDF (default: None)
--results_dir, --rd RESULTS_DIR
The name of the folder where all runs will be stored.
(default: None)
--case_id CASE_ID version as date, e.g., v20191116 (yyyy-mm-dd)
(default: v20260528)
--obs_catalogue OBS_CATALOGUE
obs_catalogue JSON file for CMORized observation,
default is None (default: None)
--obs_cmor_path OBS_CMOR_PATH
Directory path for CMORized observation dataset,
default is None (default: None)
-d, --debug [DEBUG] Option for debug: True / False (defualt) (default:
False)
--obs_cmor [OBS_CMOR]
Use CMORized reference database?: True / False
(defualt) (default: False)
--nc_out [NC_OUT] Option for generate netCDF file output: True (default)
/ False (default: True)
Basic example
Parameters for the ENSO Metrics can be set on the command line or using a parameter file. This first example will use a parameter file, which is shown below.
[8]:
with open("basic_enso_param.py") as f:
print(f.read())
import os
#
# OPTIONS ARE SET BY USER IN THIS FILE AS INDICATED BELOW BY:
#
#
# MODELS
modnames = ['ACCESS1-0']
mip = 'cmip5' # cmip5, cmip6
exp = 'historical' # historical, piControl
realization = 'r1i1p1'
modpath = 'demo_data/CMIP5_demo_data/%(variable)_Amon_%(model)_historical_%(realization)_185001-200512.nc'
modpath_lf = 'demo_data/CMIP5_demo_data/sftlf_fx_%(model)_amip_r0i0p0.nc'
# OBSERVATIONS
obs_cmor = True
obs_cmor_path = "demo_data/obs4MIPs_PCMDI_monthly"
obs_catalogue = "demo_data/obs4MIPs_PCMDI-CEM2021_monthly_bySource_catalogue_v20260522_demo.json"
# METRICS COLLECTION
metricsCollection = 'ENSO_perf' # ENSO_perf, ENSO_tel, ENSO_proc
# OUTPUT
case_id = 'basicTestEnso'
results_dir = os.path.join('demo_output',case_id, metricsCollection)
json_name = '%(mip)_%(exp)_%(metricsCollection)_%(case_id)_%(model)_%(realization)'
netcdf_name = json_name
nc_out = True
The next cell runs the ENSO driver using the basic parameter file. This may take several minutes.
[9]:
%%bash
enso_driver.py -p basic_enso_param.py
mip: cmip5
exp: historical
models: ['ACCESS1-0']
realization: r1i1p1
mc_name: ENSO_perf
outdir: demo_output/basicTestEnso/ENSO_perf
netcdf_path: demo_output/basicTestEnso/ENSO_perf
debug: False
obs_cmor: True
obs_cmor_path: demo_data/obs4MIPs_PCMDI_monthly
egg_pth: /global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/share/pmp
output directory for graphics:demo_output/basicTestEnso/ENSO_perf
output directory for diagnostic_results:demo_output/basicTestEnso/ENSO_perf
output directory for metrics_results:demo_output/basicTestEnso/ENSO_perf
list_variables: ['pr', 'sst', 'taux']
list_obs: ['AVISO-1-0', 'ERA-INT', 'GPCP-2-3', 'HadISST-1-1']
PMPdriver: dict_obs readin end
Process start:Thu May 28 10:51:56 2026
models: ['ACCESS1-0']
----- model: ACCESS1-0 ---------------------
PMPdriver: var loop start for model ACCESS1-0
realization: r1i1p1
run_in_modpath: 4
--- run: r1i1p1 ---
--- var: pr ---
var_in_file: pr
var, areacell_in_file, realm: pr areacella atmos
path: demo_data/CMIP5_demo_data/pr_Amon_ACCESS1-0_historical_r1i1p1_185001-200512.nc
file_list: ['demo_data/CMIP5_demo_data/pr_Amon_ACCESS1-0_historical_r1i1p1_185001-200512.nc']
path: demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc
file_list: ['demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc']
path: demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc
file_list: ['demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc']
PMPdriver: var loop end
--- var: sst ---
var_in_file: ts
var, areacell_in_file, realm: sst areacella atmos
path: demo_data/CMIP5_demo_data/ts_Amon_ACCESS1-0_historical_r1i1p1_185001-200512.nc
file_list: ['demo_data/CMIP5_demo_data/ts_Amon_ACCESS1-0_historical_r1i1p1_185001-200512.nc']
path: demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc
file_list: ['demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc']
path: demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc
file_list: ['demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc']
PMPdriver: var loop end
--- var: taux ---
var_in_file: tauu
var, areacell_in_file, realm: taux areacella atmos
path: demo_data/CMIP5_demo_data/tauu_Amon_ACCESS1-0_historical_r1i1p1_185001-200512.nc
file_list: ['demo_data/CMIP5_demo_data/tauu_Amon_ACCESS1-0_historical_r1i1p1_185001-200512.nc']
path: demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc
file_list: ['demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc']
path: demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc
file_list: ['demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc']
PMPdriver: var loop end
dictDatasets:
{
"model": {
"ACCESS1-0_r1i1p1": {
"pr": {
"areaname": "areacella",
"landmaskname": "sftlf",
"path + filename": "demo_data/CMIP5_demo_data/pr_Amon_ACCESS1-0_historical_r1i1p1_185001-200512.nc",
"path + filename_area": "demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc",
"path + filename_landmask": "demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc",
"varname": "pr"
},
"sst": {
"areaname": "areacella",
"landmaskname": "sftlf",
"path + filename": "demo_data/CMIP5_demo_data/ts_Amon_ACCESS1-0_historical_r1i1p1_185001-200512.nc",
"path + filename_area": "demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc",
"path + filename_landmask": "demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc",
"varname": "ts"
},
"taux": {
"areaname": "areacella",
"landmaskname": "sftlf",
"path + filename": "demo_data/CMIP5_demo_data/tauu_Amon_ACCESS1-0_historical_r1i1p1_185001-200512.nc",
"path + filename_area": "demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc",
"path + filename_landmask": "demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc",
"varname": "tauu"
}
}
},
"observations": {
"ERA-Interim": {
"pr": {
"areaname": "areacella",
"landmaskname": "sftlf",
"path + filename": "demo_data/obs4MIPs_PCMDI_monthly/ECMWF/ERA-INT/mon/pr/gn/v20210727/pr_mon_ERA-INT_PCMDI_gn_197901-201903.nc",
"path + filename_area": null,
"path + filename_landmask": null,
"varname": "pr"
},
"sst": {
"areaname": "areacella",
"landmaskname": "sftlf",
"path + filename": "demo_data/obs4MIPs_PCMDI_monthly/ECMWF/ERA-INT/mon/ts/gn/v20210727/ts_mon_ERA-INT_PCMDI_gn_197901-201903.nc",
"path + filename_area": null,
"path + filename_landmask": null,
"varname": "ts"
},
"taux": {
"areaname": "areacella",
"landmaskname": "sftlf",
"path + filename": "demo_data/obs4MIPs_PCMDI_monthly/ECMWF/ERA-INT/mon/tauu/gn/v20210727/tauu_mon_ERA-INT_PCMDI_gn_197901-201903.nc",
"path + filename_area": null,
"path + filename_landmask": null,
"varname": "tauu"
}
},
"GPCPv2.3": {
"pr": {
"areaname": "areacella",
"landmaskname": "sftlf",
"path + filename": "demo_data/obs4MIPs_PCMDI_monthly/NOAA-NCEI/GPCP-2-3/mon/pr/gn/v20210727/pr_mon_GPCP-2-3_PCMDI_gn_197901-201907.nc",
"path + filename_area": null,
"path + filename_landmask": null,
"varname": "pr"
}
},
"HadISST": {
"sst": {
"areaname": "areacella",
"landmaskname": "sftlf",
"path + filename": "demo_data/obs4MIPs_PCMDI_monthly/MOHC/HadISST-1-1/mon/ts/gn/v20260416/ts_mon_HadISST-1-1_PCMDI_gn_187001-202501.nc",
"path + filename_area": null,
"path + filename_landmask": null,
"varname": "ts"
}
}
}
}
### Compute the metric collection ###
ComputeCollection: metric = BiasPrLatRmse
ComputeMetric: oneVarRMSmetric, BiasPrLatRmse = ACCESS1-0_r1i1p1 and ERA-Interim
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:1213: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
pr_mod, keyerror_mod = AverageZonal(pr_mod)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:1214: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
pr_obs, keyerror_obs = AverageZonal(pr_obs)
NOTE: Estimated landmask applied
ComputeMetric: oneVarRMSmetric, BiasPrLatRmse = ACCESS1-0_r1i1p1 and GPCPv2.3
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:1213: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
pr_mod, keyerror_mod = AverageZonal(pr_mod)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:1214: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
pr_obs, keyerror_obs = AverageZonal(pr_obs)
NOTE: Estimated landmask applied
ComputeCollection: metric = BiasPrLonRmse
ComputeMetric: oneVarRMSmetric, BiasPrLonRmse = ACCESS1-0_r1i1p1 and ERA-Interim
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:1494: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
pr_mod, keyerror_mod = AverageMeridional(pr_mod)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:1495: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
pr_obs, keyerror_obs = AverageMeridional(pr_obs)
NOTE: Estimated landmask applied
ComputeMetric: oneVarRMSmetric, BiasPrLonRmse = ACCESS1-0_r1i1p1 and GPCPv2.3
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:1494: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
pr_mod, keyerror_mod = AverageMeridional(pr_mod)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:1495: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
pr_obs, keyerror_obs = AverageMeridional(pr_obs)
NOTE: Estimated landmask applied
ComputeCollection: metric = BiasSstLonRmse
ComputeMetric: oneVarRMSmetric, BiasSstLonRmse = ACCESS1-0_r1i1p1 and ERA-Interim
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:3065: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst_mod, keyerror_mod = AverageMeridional(sst_mod)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:3066: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst_obs, keyerror_obs = AverageMeridional(sst_obs)
NOTE: Estimated landmask applied
ComputeMetric: oneVarRMSmetric, BiasSstLonRmse = ACCESS1-0_r1i1p1 and HadISST
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:3065: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst_mod, keyerror_mod = AverageMeridional(sst_mod)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:3066: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst_obs, keyerror_obs = AverageMeridional(sst_obs)
NOTE: Estimated landmask applied
ComputeCollection: metric = BiasTauxLonRmse
ComputeMetric: oneVarRMSmetric, BiasTauxLonRmse = ACCESS1-0_r1i1p1 and ERA-Interim
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5534: UserWarning: areacell is None for variable 'tauu'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
taux, keyerror = AverageHorizontal(taux, region="nino4")
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5534: UserWarning: areacell is None for variable 'tauu'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
taux, keyerror = AverageHorizontal(taux, region="nino4")
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:4158: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
taux_mod, keyerror_mod = AverageMeridional(taux_mod)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:4159: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
taux_obs, keyerror_obs = AverageMeridional(taux_obs)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5534: UserWarning: areacell is None for variable 'tauu'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
taux, keyerror = AverageHorizontal(taux, region="nino4")
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5534: UserWarning: areacell is None for variable 'tauu'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
taux, keyerror = AverageHorizontal(taux, region="nino4")
NOTE: Estimated landmask applied
ComputeCollection: metric = EnsoAmpl
ComputeMetric: oneVarmetric = ACCESS1-0_r1i1p1
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:6950: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst2, keyerror = AverageMeridional(sst2)
ComputeMetric: oneVarmetric = ERA-Interim
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
NOTE: Estimated landmask applied
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:6950: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst2, keyerror = AverageMeridional(sst2)
ComputeMetric: oneVarmetric = HadISST
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
NOTE: Estimated landmask applied
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:6950: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst2, keyerror = AverageMeridional(sst2)
ComputeCollection: metric = EnsoDuration
ComputeMetric: oneVarmetric = ACCESS1-0_r1i1p1
ComputeMetric: oneVarmetric = ERA-Interim
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
ComputeMetric: oneVarmetric = HadISST
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
ComputeCollection: metric = EnsoSeasonality
ComputeMetric: oneVarmetric = ACCESS1-0_r1i1p1
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:11532: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst2, keyerror1 = AverageMeridional(sst2)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:11533: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst3_NDJ, keyerror2 = AverageMeridional(sst3_NDJ)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:11534: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst3_MAM, keyerror3 = AverageMeridional(sst3_MAM)
ComputeMetric: oneVarmetric = ERA-Interim
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
NOTE: Estimated landmask applied
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:11532: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst2, keyerror1 = AverageMeridional(sst2)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:11533: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst3_NDJ, keyerror2 = AverageMeridional(sst3_NDJ)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:11534: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst3_MAM, keyerror3 = AverageMeridional(sst3_MAM)
ComputeMetric: oneVarmetric = HadISST
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
NOTE: Estimated landmask applied
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:11532: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst2, keyerror1 = AverageMeridional(sst2)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:11533: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst3_NDJ, keyerror2 = AverageMeridional(sst3_NDJ)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:11534: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst3_MAM, keyerror3 = AverageMeridional(sst3_MAM)
ComputeCollection: metric = EnsoSstDiversity_2
ComputeMetric: oneVarmetric = ACCESS1-0_r1i1p1
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:11783: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sstlon, keyerror = AverageMeridional(sstmap)
ComputeMetric: oneVarmetric = ERA-Interim
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:11783: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sstlon, keyerror = AverageMeridional(sstmap)
ComputeMetric: oneVarmetric = HadISST
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:11783: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sstlon, keyerror = AverageMeridional(sstmap)
ComputeCollection: metric = EnsoSstLonRmse
ComputeMetric: oneVarRMSmetric, EnsoSstLonRmse = ACCESS1-0_r1i1p1 and ERA-Interim
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:14907: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sstlon_mod, keyerror_mod = AverageMeridional(sstmap_mod)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:14908: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sstlon_obs, keyerror_obs = AverageMeridional(sstmap_obs)
NOTE: Estimated landmask applied
ComputeMetric: oneVarRMSmetric, EnsoSstLonRmse = ACCESS1-0_r1i1p1 and HadISST
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:14907: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sstlon_mod, keyerror_mod = AverageMeridional(sstmap_mod)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:14908: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sstlon_obs, keyerror_obs = AverageMeridional(sstmap_obs)
NOTE: Estimated landmask applied
ComputeCollection: metric = EnsoSstSkew
ComputeMetric: oneVarmetric = ACCESS1-0_r1i1p1
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:12116: UserWarning: areacell is None for variable 'skewness'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst2, keyerror = AverageMeridional(sst2)
ComputeMetric: oneVarmetric = ERA-Interim
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
NOTE: Estimated landmask applied
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:12116: UserWarning: areacell is None for variable 'skewness'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst2, keyerror = AverageMeridional(sst2)
ComputeMetric: oneVarmetric = HadISST
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
NOTE: Estimated landmask applied
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:12116: UserWarning: areacell is None for variable 'skewness'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst2, keyerror = AverageMeridional(sst2)
ComputeCollection: metric = EnsoSstTsRmse
ComputeMetric: oneVarRMSmetric, EnsoSstTsRmse = ACCESS1-0_r1i1p1 and ERA-Interim
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:17288: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
ssthov_mod, keyerror_mod = AverageMeridional(sstmap_mod)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:17289: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
ssthov_obs, keyerror_obs = AverageMeridional(sstmap_obs)
ComputeMetric: oneVarRMSmetric, EnsoSstTsRmse = ACCESS1-0_r1i1p1 and HadISST
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:17288: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
ssthov_mod, keyerror_mod = AverageMeridional(sstmap_mod)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:17289: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
ssthov_obs, keyerror_obs = AverageMeridional(sstmap_obs)
ComputeCollection: metric = SeasonalPrLatRmse
ComputeMetric: oneVarRMSmetric, SeasonalPrLatRmse = ACCESS1-0_r1i1p1 and ERA-Interim
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:24819: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
prStdLat_mod, keyerror_mod = AverageZonal(prStd_mod)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:24820: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
prStdLat_obs, keyerror_obs = AverageZonal(prStd_obs)
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:24901: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
pr_mod, keyerror_mod = AverageZonal(pr_mod)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:24902: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
pr_obs, keyerror_obs = AverageZonal(pr_obs)
ComputeMetric: oneVarRMSmetric, SeasonalPrLatRmse = ACCESS1-0_r1i1p1 and GPCPv2.3
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:24819: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
prStdLat_mod, keyerror_mod = AverageZonal(prStd_mod)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:24820: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
prStdLat_obs, keyerror_obs = AverageZonal(prStd_obs)
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:24901: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
pr_mod, keyerror_mod = AverageZonal(pr_mod)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:24902: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
pr_obs, keyerror_obs = AverageZonal(pr_obs)
ComputeCollection: metric = SeasonalPrLonRmse
ComputeMetric: oneVarRMSmetric, SeasonalPrLonRmse = ACCESS1-0_r1i1p1 and ERA-Interim
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:25151: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
prStdLon_mod, keyerror_mod = AverageMeridional(prStd_mod)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:25152: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
prStdLon_obs, keyerror_obs = AverageMeridional(prStd_obs)
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:25232: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
pr_mod, keyerror_mod = AverageMeridional(pr_mod)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:25233: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
pr_obs, keyerror_obs = AverageMeridional(pr_obs)
ComputeMetric: oneVarRMSmetric, SeasonalPrLonRmse = ACCESS1-0_r1i1p1 and GPCPv2.3
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:25151: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
prStdLon_mod, keyerror_mod = AverageMeridional(prStd_mod)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:25152: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
prStdLon_obs, keyerror_obs = AverageMeridional(prStd_obs)
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:25232: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
pr_mod, keyerror_mod = AverageMeridional(pr_mod)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:25233: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
pr_obs, keyerror_obs = AverageMeridional(pr_obs)
ComputeCollection: metric = SeasonalSstLonRmse
ComputeMetric: oneVarRMSmetric, SeasonalSstLonRmse = ACCESS1-0_r1i1p1 and ERA-Interim
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:26493: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sstStdLon_mod, keyerror_mod = AverageMeridional(sstStd_mod)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:26494: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sstStdLon_obs, keyerror_obs = AverageMeridional(sstStd_obs)
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:26574: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst_mod, keyerror_mod = AverageMeridional(sst_mod)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:26575: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst_obs, keyerror_obs = AverageMeridional(sst_obs)
ComputeMetric: oneVarRMSmetric, SeasonalSstLonRmse = ACCESS1-0_r1i1p1 and HadISST
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:26493: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sstStdLon_mod, keyerror_mod = AverageMeridional(sstStd_mod)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:26494: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sstStdLon_obs, keyerror_obs = AverageMeridional(sstStd_obs)
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:26574: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst_mod, keyerror_mod = AverageMeridional(sst_mod)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:26575: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst_obs, keyerror_obs = AverageMeridional(sst_obs)
ComputeCollection: metric = SeasonalTauxLonRmse
ComputeMetric: oneVarRMSmetric, SeasonalTauxLonRmse = ACCESS1-0_r1i1p1 and ERA-Interim
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5534: UserWarning: areacell is None for variable 'tauu'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
taux, keyerror = AverageHorizontal(taux, region="nino4")
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5534: UserWarning: areacell is None for variable 'tauu'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
taux, keyerror = AverageHorizontal(taux, region="nino4")
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:27166: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
tauxStdLon_mod, keyerror_mod = AverageMeridional(tauxStd_mod)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:27167: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
tauxStdLon_obs, keyerror_obs = AverageMeridional(tauxStd_obs)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5534: UserWarning: areacell is None for variable 'tauu'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
taux, keyerror = AverageHorizontal(taux, region="nino4")
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5534: UserWarning: areacell is None for variable 'tauu'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
taux, keyerror = AverageHorizontal(taux, region="nino4")
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:27254: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
taux_mod, keyerror_mod = AverageMeridional(taux_mod)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:27255: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
taux_obs, keyerror_obs = AverageMeridional(taux_obs)
INFO::2026-05-28 10:57::pcmdi_metrics:: Results saved to a json file: /pscratch/sd/l/lee1043/git/pcmdi_metrics/doc/jupyter/Demo/demo_output/basicTestEnso/ENSO_perf/cmip5_historical_ENSO_perf_basicTestEnso_ACCESS1-0_r1i1p1.json
INFO::2026-05-28 10:57::pcmdi_metrics:: Results saved to a json file: /pscratch/sd/l/lee1043/git/pcmdi_metrics/doc/jupyter/Demo/demo_output/basicTestEnso/ENSO_perf/cmip5_historical_ENSO_perf_basicTestEnso_ACCESS1-0_r1i1p1_diveDown.json
figure plotting start
metrics: ['BiasPrLatRmse', 'BiasPrLonRmse', 'BiasSstLonRmse', 'BiasTauxLonRmse', 'EnsoAmpl', 'EnsoDuration', 'EnsoSeasonality', 'EnsoSstDiversity_2', 'EnsoSstLonRmse', 'EnsoSstSkew', 'EnsoSstTsRmse', 'SeasonalPrLatRmse', 'SeasonalPrLonRmse', 'SeasonalSstLonRmse', 'SeasonalTauxLonRmse']
filename_js: demo_output/basicTestEnso/ENSO_perf/cmip5_historical_ENSO_perf_basicTestEnso_ACCESS1-0_r1i1p1.json
met: BiasPrLatRmse
filename_nc: demo_output/basicTestEnso/ENSO_perf/cmip5_historical_ENSO_perf_basicTestEnso_ACCESS1-0_r1i1p1_BiasPrLatRmse.nc
figure_name: cmip5_historical_ENSO_perf_ACCESS1-0_r1i1p1_BiasPrLatRmse
curve 10:57
took 0 minute(s)
map 10:57
took 0 minute(s)
figure plotting done
met: BiasPrLonRmse
filename_nc: demo_output/basicTestEnso/ENSO_perf/cmip5_historical_ENSO_perf_basicTestEnso_ACCESS1-0_r1i1p1_BiasPrLonRmse.nc
figure_name: cmip5_historical_ENSO_perf_ACCESS1-0_r1i1p1_BiasPrLonRmse
curve 10:57
took 0 minute(s)
map 10:57
took 0 minute(s)
figure plotting done
met: BiasSstLonRmse
filename_nc: demo_output/basicTestEnso/ENSO_perf/cmip5_historical_ENSO_perf_basicTestEnso_ACCESS1-0_r1i1p1_BiasSstLonRmse.nc
figure_name: cmip5_historical_ENSO_perf_ACCESS1-0_r1i1p1_BiasSstLonRmse
curve 10:57
took 0 minute(s)
map 10:58
took 0 minute(s)
figure plotting done
met: BiasTauxLonRmse
filename_nc: demo_output/basicTestEnso/ENSO_perf/cmip5_historical_ENSO_perf_basicTestEnso_ACCESS1-0_r1i1p1_BiasTauxLonRmse.nc
figure_name: cmip5_historical_ENSO_perf_ACCESS1-0_r1i1p1_BiasTauxLonRmse
curve 10:58
took 0 minute(s)
map 10:58
took 0 minute(s)
figure plotting done
met: EnsoAmpl
filename_nc: demo_output/basicTestEnso/ENSO_perf/cmip5_historical_ENSO_perf_basicTestEnso_ACCESS1-0_r1i1p1_EnsoAmpl.nc
figure_name: cmip5_historical_ENSO_perf_ACCESS1-0_r1i1p1_EnsoAmpl
dot 10:58
took 0 minute(s)
curve 10:58
took 0 minute(s)
map 10:58
took 0 minute(s)
figure plotting done
met: EnsoDuration
filename_nc: demo_output/basicTestEnso/ENSO_perf/cmip5_historical_ENSO_perf_basicTestEnso_ACCESS1-0_r1i1p1_EnsoDuration.nc
figure_name: cmip5_historical_ENSO_perf_ACCESS1-0_r1i1p1_EnsoDuration
dot 10:58
took 0 minute(s)
curve 10:58
took 0 minute(s)
boxplot 10:58
took 0 minute(s)
figure plotting done
met: EnsoSeasonality
filename_nc: demo_output/basicTestEnso/ENSO_perf/cmip5_historical_ENSO_perf_basicTestEnso_ACCESS1-0_r1i1p1_EnsoSeasonality.nc
figure_name: cmip5_historical_ENSO_perf_ACCESS1-0_r1i1p1_EnsoSeasonality
dot 10:58
took 0 minute(s)
curve 10:58
took 0 minute(s)
hovmoeller 10:58
took 0 minute(s)
curve 10:58
took 0 minute(s)
map 10:58
took 0 minute(s)
figure plotting done
met: EnsoSstDiversity_2
filename_nc: demo_output/basicTestEnso/ENSO_perf/cmip5_historical_ENSO_perf_basicTestEnso_ACCESS1-0_r1i1p1_EnsoSstDiversity_2.nc
figure_name: cmip5_historical_ENSO_perf_ACCESS1-0_r1i1p1_EnsoSstDiversity_2
dot 10:58
took 0 minute(s)
boxplot 10:58
took 0 minute(s)
figure plotting done
met: EnsoSstLonRmse
filename_nc: demo_output/basicTestEnso/ENSO_perf/cmip5_historical_ENSO_perf_basicTestEnso_ACCESS1-0_r1i1p1_EnsoSstLonRmse.nc
figure_name: cmip5_historical_ENSO_perf_ACCESS1-0_r1i1p1_EnsoSstLonRmse
curve 10:58
took 0 minute(s)
map 10:58
took 0 minute(s)
curve 10:58
took 0 minute(s)
map 10:58
took 0 minute(s)
figure plotting done
met: EnsoSstSkew
filename_nc: demo_output/basicTestEnso/ENSO_perf/cmip5_historical_ENSO_perf_basicTestEnso_ACCESS1-0_r1i1p1_EnsoSstSkew.nc
figure_name: cmip5_historical_ENSO_perf_ACCESS1-0_r1i1p1_EnsoSstSkew
dot 10:58
took 0 minute(s)
curve 10:58
took 0 minute(s)
map 10:58
took 0 minute(s)
figure plotting done
met: EnsoSstTsRmse
filename_nc: demo_output/basicTestEnso/ENSO_perf/cmip5_historical_ENSO_perf_basicTestEnso_ACCESS1-0_r1i1p1_EnsoSstTsRmse.nc
figure_name: cmip5_historical_ENSO_perf_ACCESS1-0_r1i1p1_EnsoSstTsRmse
curve 10:58
took 0 minute(s)
hovmoeller 10:58
took 0 minute(s)
curve 10:58
took 0 minute(s)
hovmoeller 10:58
took 0 minute(s)
figure plotting done
met: SeasonalPrLatRmse
filename_nc: demo_output/basicTestEnso/ENSO_perf/cmip5_historical_ENSO_perf_basicTestEnso_ACCESS1-0_r1i1p1_SeasonalPrLatRmse.nc
figure_name: cmip5_historical_ENSO_perf_ACCESS1-0_r1i1p1_SeasonalPrLatRmse
curve 10:58
took 0 minute(s)
map 10:58
took 0 minute(s)
hovmoeller 10:58
took 0 minute(s)
figure plotting done
met: SeasonalPrLonRmse
filename_nc: demo_output/basicTestEnso/ENSO_perf/cmip5_historical_ENSO_perf_basicTestEnso_ACCESS1-0_r1i1p1_SeasonalPrLonRmse.nc
figure_name: cmip5_historical_ENSO_perf_ACCESS1-0_r1i1p1_SeasonalPrLonRmse
curve 10:58
took 0 minute(s)
map 10:58
took 0 minute(s)
hovmoeller 10:58
took 0 minute(s)
figure plotting done
met: SeasonalSstLonRmse
filename_nc: demo_output/basicTestEnso/ENSO_perf/cmip5_historical_ENSO_perf_basicTestEnso_ACCESS1-0_r1i1p1_SeasonalSstLonRmse.nc
figure_name: cmip5_historical_ENSO_perf_ACCESS1-0_r1i1p1_SeasonalSstLonRmse
curve 10:58
took 0 minute(s)
map 10:58
took 0 minute(s)
hovmoeller 10:58
took 0 minute(s)
figure plotting done
met: SeasonalTauxLonRmse
filename_nc: demo_output/basicTestEnso/ENSO_perf/cmip5_historical_ENSO_perf_basicTestEnso_ACCESS1-0_r1i1p1_SeasonalTauxLonRmse.nc
figure_name: cmip5_historical_ENSO_perf_ACCESS1-0_r1i1p1_SeasonalTauxLonRmse
curve 10:58
took 0 minute(s)
map 10:58
took 0 minute(s)
hovmoeller 10:58
took 0 minute(s)
figure plotting done
PMPdriver: model loop end
Process end: Thu May 28 10:58:18 2026
This run saved metrics to two files:
basicTestEnso/ENSO_perf/cmip5_historical_ENSO_perf_basicTestEnso_ACCESS1-0_r1i1p1.jsonbasicTestEnso/ENSO_perf/cmip5_historical_ENSO_perf_basicTestEnso_ACCESS1-0_r1i1p1_diveDown.json
diveDown metrics are not available in all cases.
Example dive down (i.e., diagnostics) figures:
[ ]:
# figure size in inches optional
rcParams['figure.figsize'] = 12, 10
# path to images
plot1 = os.path.join(demo_output_directory,"basicTestEnso/ENSO_perf/cmip5_historical_ENSO_perf_ACCESS1-0_r1i1p1_BiasPrLatRmse_diagnostic_divedown01.png")
plot2 = os.path.join(demo_output_directory,"basicTestEnso/ENSO_perf/cmip5_historical_ENSO_perf_ACCESS1-0_r1i1p1_BiasPrLatRmse_diagnostic_divedown02.png")
# display images
fig, ax = plt.subplots(1,2); ax[0].axis('off'); ax[1].axis('off')
ax[0].imshow(mpimg.imread(plot1))
ax[1].imshow(mpimg.imread(plot2))
<matplotlib.image.AxesImage at 0x7f076880d590>
The results section of cmip5_historical_ENSO_perf_basicTestEnso_ACCESS1-0_r1i1p1.json is shown below.
[ ]:
import json
metrics_file=demo_output_directory+"/basicTestEnso/ENSO_perf/cmip5_historical_ENSO_perf_basicTestEnso_ACCESS1-0_r1i1p1.json"
with open(metrics_file) as f:
results = json.load(f)["RESULTS"]["model"]["ACCESS1-0"]["r1i1p1"]["value"]
print(json.dumps(results, indent = 2))
{
"BiasPrLatRmse": {
"diagnostic": {
"ACCESS1-0_r1i1p1": {
"value": null,
"value_error": null
},
"ERA-Interim": {
"value": null,
"value_error": null
},
"GPCPv2.3": {
"value": null,
"value_error": null
}
},
"metric": {
"ERA-Interim": {
"value": 1.0865432651564593,
"value_error": null
},
"GPCPv2.3": {
"value": 1.8799937669351745,
"value_error": null
}
}
},
"BiasPrLonRmse": {
"diagnostic": {
"ACCESS1-0_r1i1p1": {
"value": null,
"value_error": null
},
"ERA-Interim": {
"value": null,
"value_error": null
},
"GPCPv2.3": {
"value": null,
"value_error": null
}
},
"metric": {
"ERA-Interim": {
"value": 0.568085855536746,
"value_error": null
},
"GPCPv2.3": {
"value": 1.6074270393816383,
"value_error": null
}
}
},
"BiasSstLonRmse": {
"diagnostic": {
"ACCESS1-0_r1i1p1": {
"value": null,
"value_error": null
},
"ERA-Interim": {
"value": null,
"value_error": null
},
"HadISST": {
"value": null,
"value_error": null
}
},
"metric": {
"ERA-Interim": {
"value": 0.625782965480205,
"value_error": null
},
"HadISST": {
"value": 0.482453339105798,
"value_error": null
}
}
},
"BiasTauxLonRmse": {
"diagnostic": {
"ACCESS1-0_r1i1p1": {
"value": null,
"value_error": null
},
"ERA-Interim": {
"value": null,
"value_error": null
}
},
"metric": {
"ERA-Interim": {
"value": 5.992234121008959,
"value_error": null
}
}
},
"EnsoAmpl": {
"diagnostic": {
"ACCESS1-0_r1i1p1": {
"value": 0.6630260736952586,
"value_error": 0.0530845705527287
},
"ERA-Interim": {
"value": 0.9001341048707652,
"value_error": 0.1423236985494241
},
"HadISST": {
"value": 0.7688706055408969,
"value_error": 0.06298833428079066
}
},
"metric": {
"ERA-Interim": {
"value": 26.341411784363938,
"value_error": 17.543852271121864
},
"HadISST": {
"value": 13.766234667168376,
"value_error": 13.968772137924121
}
}
},
"EnsoDuration": {
"diagnostic": {
"ACCESS1-0_r1i1p1": {
"value": 12.0,
"value_error": null
},
"ERA-Interim": {
"value": 11.0,
"value_error": null
},
"HadISST": {
"value": 13.0,
"value_error": null
}
},
"metric": {
"ERA-Interim": {
"value": 9.090909090909092,
"value_error": null
},
"HadISST": {
"value": 7.6923076923076925,
"value_error": null
}
}
},
"EnsoSeasonality": {
"diagnostic": {
"ACCESS1-0_r1i1p1": {
"value": 1.1798342563448676,
"value_error": 0.18922890859200112
},
"ERA-Interim": {
"value": 1.4547701017161387,
"value_error": 0.4629690002655354
},
"HadISST": {
"value": 1.223684198498758,
"value_error": 0.20083433711187593
}
},
"metric": {
"ERA-Interim": {
"value": 18.898920526819975,
"value_error": 38.81725124591041
},
"HadISST": {
"value": 3.5834361682275975,
"value_error": 31.28801335338797
}
}
},
"EnsoSstDiversity_2": {
"diagnostic": {
"ACCESS1-0_r1i1p1": {
"value": 10.0,
"value_error": null
},
"ERA-Interim": {
"value": 32.0,
"value_error": null
},
"HadISST": {
"value": 49.0,
"value_error": null
}
},
"metric": {
"ERA-Interim": {
"value": 68.75,
"value_error": null
},
"HadISST": {
"value": 79.59183673469387,
"value_error": null
}
}
},
"EnsoSstLonRmse": {
"diagnostic": {
"ACCESS1-0_r1i1p1": {
"value": null,
"value_error": null
},
"ERA-Interim": {
"value": null,
"value_error": null
},
"HadISST": {
"value": null,
"value_error": null
}
},
"metric": {
"ERA-Interim": {
"value": 0.16378772100156302,
"value_error": null
},
"HadISST": {
"value": 0.14599676988358967,
"value_error": null
}
}
},
"EnsoSstSkew": {
"diagnostic": {
"ACCESS1-0_r1i1p1": {
"value": -0.3339196537261565,
"value_error": -0.02673496883520171
},
"ERA-Interim": {
"value": 0.4050153562604934,
"value_error": 0.06403855065638478
},
"HadISST": {
"value": 0.4032072801499268,
"value_error": 0.03303202744844833
}
},
"metric": {
"ERA-Interim": {
"value": 182.44617113021008,
"value_error": -19.636860842263534
},
"HadISST": {
"value": 182.81587911855,
"value_error": -13.415118084475575
}
}
},
"EnsoSstTsRmse": {
"diagnostic": {
"ACCESS1-0_r1i1p1": {
"value": null,
"value_error": null
},
"ERA-Interim": {
"value": null,
"value_error": null
},
"HadISST": {
"value": null,
"value_error": null
}
},
"metric": {
"ERA-Interim": {
"value": 0.09946192140712347,
"value_error": null
},
"HadISST": {
"value": 0.07289513613537553,
"value_error": null
}
}
},
"SeasonalPrLatRmse": {
"diagnostic": {
"ACCESS1-0_r1i1p1": {
"value": null,
"value_error": null
},
"ERA-Interim": {
"value": null,
"value_error": null
},
"GPCPv2.3": {
"value": null,
"value_error": null
}
},
"metric": {
"ERA-Interim": {
"value": 1.1595800016277198,
"value_error": null
},
"GPCPv2.3": {
"value": 1.5277759179048984,
"value_error": null
}
}
},
"SeasonalPrLonRmse": {
"diagnostic": {
"ACCESS1-0_r1i1p1": {
"value": null,
"value_error": null
},
"ERA-Interim": {
"value": null,
"value_error": null
},
"GPCPv2.3": {
"value": null,
"value_error": null
}
},
"metric": {
"ERA-Interim": {
"value": 1.183968647553551,
"value_error": null
},
"GPCPv2.3": {
"value": 1.4562160603155088,
"value_error": null
}
}
},
"SeasonalSstLonRmse": {
"diagnostic": {
"ACCESS1-0_r1i1p1": {
"value": null,
"value_error": null
},
"ERA-Interim": {
"value": null,
"value_error": null
},
"HadISST": {
"value": null,
"value_error": null
}
},
"metric": {
"ERA-Interim": {
"value": 0.2846354718626762,
"value_error": null
},
"HadISST": {
"value": 0.3043109894071552,
"value_error": null
}
}
},
"SeasonalTauxLonRmse": {
"diagnostic": {
"ACCESS1-0_r1i1p1": {
"value": null,
"value_error": null
},
"ERA-Interim": {
"value": null,
"value_error": null
}
},
"metric": {
"ERA-Interim": {
"value": 4.25475826495948,
"value_error": null
}
}
}
}
ENSO Metrics Collections
They can be selected using the --metricsCollection flag. The first example used the “ENSO_perf” collection.
The next example runs the teleconnection collection. To save individual metrics in netCDF format, it uses the --nc_out flag.
[12]:
%%bash -s "$demo_output_directory"
enso_driver.py -p basic_enso_param.py \
--metricsCollection ENSO_tel \
--results_dir $1/basicTestEnso/ENSO_tel \
--nc_out True
mip: cmip5
exp: historical
models: ['ACCESS1-0']
realization: r1i1p1
mc_name: ENSO_tel
outdir: demo_output/basicTestEnso/ENSO_tel
netcdf_path: demo_output/basicTestEnso/ENSO_tel
debug: False
obs_cmor: True
obs_cmor_path: demo_data/obs4MIPs_PCMDI_monthly
egg_pth: /global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/share/pmp
output directory for graphics:demo_output/basicTestEnso/ENSO_tel
output directory for diagnostic_results:demo_output/basicTestEnso/ENSO_tel
output directory for metrics_results:demo_output/basicTestEnso/ENSO_tel
list_variables: ['pr', 'sst']
list_obs: ['AVISO-1-0', 'ERA-INT', 'GPCP-2-3', 'HadISST-1-1']
PMPdriver: dict_obs readin end
Process start:Thu May 28 10:58:27 2026
models: ['ACCESS1-0']
----- model: ACCESS1-0 ---------------------
PMPdriver: var loop start for model ACCESS1-0
realization: r1i1p1
run_in_modpath: 4
--- run: r1i1p1 ---
--- var: pr ---
var_in_file: pr
var, areacell_in_file, realm: pr areacella atmos
path: demo_data/CMIP5_demo_data/pr_Amon_ACCESS1-0_historical_r1i1p1_185001-200512.nc
file_list: ['demo_data/CMIP5_demo_data/pr_Amon_ACCESS1-0_historical_r1i1p1_185001-200512.nc']
path: demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc
file_list: ['demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc']
path: demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc
file_list: ['demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc']
PMPdriver: var loop end
--- var: sst ---
var_in_file: ts
var, areacell_in_file, realm: sst areacella atmos
path: demo_data/CMIP5_demo_data/ts_Amon_ACCESS1-0_historical_r1i1p1_185001-200512.nc
file_list: ['demo_data/CMIP5_demo_data/ts_Amon_ACCESS1-0_historical_r1i1p1_185001-200512.nc']
path: demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc
file_list: ['demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc']
path: demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc
file_list: ['demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc']
PMPdriver: var loop end
dictDatasets:
{
"model": {
"ACCESS1-0_r1i1p1": {
"pr": {
"areaname": "areacella",
"landmaskname": "sftlf",
"path + filename": "demo_data/CMIP5_demo_data/pr_Amon_ACCESS1-0_historical_r1i1p1_185001-200512.nc",
"path + filename_area": "demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc",
"path + filename_landmask": "demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc",
"varname": "pr"
},
"sst": {
"areaname": "areacella",
"landmaskname": "sftlf",
"path + filename": "demo_data/CMIP5_demo_data/ts_Amon_ACCESS1-0_historical_r1i1p1_185001-200512.nc",
"path + filename_area": "demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc",
"path + filename_landmask": "demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc",
"varname": "ts"
}
}
},
"observations": {
"ERA-Interim": {
"pr": {
"areaname": "areacella",
"landmaskname": "sftlf",
"path + filename": "demo_data/obs4MIPs_PCMDI_monthly/ECMWF/ERA-INT/mon/pr/gn/v20210727/pr_mon_ERA-INT_PCMDI_gn_197901-201903.nc",
"path + filename_area": null,
"path + filename_landmask": null,
"varname": "pr"
},
"sst": {
"areaname": "areacella",
"landmaskname": "sftlf",
"path + filename": "demo_data/obs4MIPs_PCMDI_monthly/ECMWF/ERA-INT/mon/ts/gn/v20210727/ts_mon_ERA-INT_PCMDI_gn_197901-201903.nc",
"path + filename_area": null,
"path + filename_landmask": null,
"varname": "ts"
}
},
"GPCPv2.3": {
"pr": {
"areaname": "areacella",
"landmaskname": "sftlf",
"path + filename": "demo_data/obs4MIPs_PCMDI_monthly/NOAA-NCEI/GPCP-2-3/mon/pr/gn/v20210727/pr_mon_GPCP-2-3_PCMDI_gn_197901-201907.nc",
"path + filename_area": null,
"path + filename_landmask": null,
"varname": "pr"
}
},
"HadISST": {
"sst": {
"areaname": "areacella",
"landmaskname": "sftlf",
"path + filename": "demo_data/obs4MIPs_PCMDI_monthly/MOHC/HadISST-1-1/mon/ts/gn/v20260416/ts_mon_HadISST-1-1_PCMDI_gn_187001-202501.nc",
"path + filename_area": null,
"path + filename_landmask": null,
"varname": "ts"
}
}
}
}
### Compute the metric collection ###
ComputeCollection: metric = EnsoAmpl
ComputeMetric: oneVarmetric = ACCESS1-0_r1i1p1
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:6950: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst2, keyerror = AverageMeridional(sst2)
ComputeMetric: oneVarmetric = ERA-Interim
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
NOTE: Estimated landmask applied
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:6950: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst2, keyerror = AverageMeridional(sst2)
ComputeMetric: oneVarmetric = HadISST
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
NOTE: Estimated landmask applied
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:6950: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst2, keyerror = AverageMeridional(sst2)
ComputeCollection: metric = EnsoPrMapDjf
ComputeMetric: twoVarRMSmetric, EnsoPrMapDjf = ACCESS1-0_r1i1p1 and ERA-Interim_ERA-Interim
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
NOTE: Estimated landmask applied
NOTE: Estimated landmask applied
ComputeMetric: twoVarRMSmetric, EnsoPrMapDjf = ACCESS1-0_r1i1p1 and ERA-Interim_GPCPv2.3
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
NOTE: Estimated landmask applied
NOTE: Estimated landmask applied
ComputeMetric: twoVarRMSmetric, EnsoPrMapDjf = ACCESS1-0_r1i1p1 and HadISST_ERA-Interim
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
NOTE: Estimated landmask applied
NOTE: Estimated landmask applied
ComputeMetric: twoVarRMSmetric, EnsoPrMapDjf = ACCESS1-0_r1i1p1 and HadISST_GPCPv2.3
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
NOTE: Estimated landmask applied
NOTE: Estimated landmask applied
ComputeCollection: metric = EnsoPrMapJja
ComputeMetric: twoVarRMSmetric, EnsoPrMapJja = ACCESS1-0_r1i1p1 and ERA-Interim_ERA-Interim
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
NOTE: Estimated landmask applied
NOTE: Estimated landmask applied
ComputeMetric: twoVarRMSmetric, EnsoPrMapJja = ACCESS1-0_r1i1p1 and ERA-Interim_GPCPv2.3
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
NOTE: Estimated landmask applied
NOTE: Estimated landmask applied
ComputeMetric: twoVarRMSmetric, EnsoPrMapJja = ACCESS1-0_r1i1p1 and HadISST_ERA-Interim
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
NOTE: Estimated landmask applied
NOTE: Estimated landmask applied
ComputeMetric: twoVarRMSmetric, EnsoPrMapJja = ACCESS1-0_r1i1p1 and HadISST_GPCPv2.3
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
NOTE: Estimated landmask applied
NOTE: Estimated landmask applied
ComputeCollection: metric = EnsoSeasonality
ComputeMetric: oneVarmetric = ACCESS1-0_r1i1p1
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:11532: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst2, keyerror1 = AverageMeridional(sst2)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:11533: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst3_NDJ, keyerror2 = AverageMeridional(sst3_NDJ)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:11534: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst3_MAM, keyerror3 = AverageMeridional(sst3_MAM)
ComputeMetric: oneVarmetric = ERA-Interim
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
NOTE: Estimated landmask applied
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:11532: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst2, keyerror1 = AverageMeridional(sst2)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:11533: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst3_NDJ, keyerror2 = AverageMeridional(sst3_NDJ)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:11534: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst3_MAM, keyerror3 = AverageMeridional(sst3_MAM)
ComputeMetric: oneVarmetric = HadISST
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
NOTE: Estimated landmask applied
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:11532: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst2, keyerror1 = AverageMeridional(sst2)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:11533: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst3_NDJ, keyerror2 = AverageMeridional(sst3_NDJ)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:11534: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst3_MAM, keyerror3 = AverageMeridional(sst3_MAM)
ComputeCollection: metric = EnsoSstLonRmse
ComputeMetric: oneVarRMSmetric, EnsoSstLonRmse = ACCESS1-0_r1i1p1 and ERA-Interim
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:14907: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sstlon_mod, keyerror_mod = AverageMeridional(sstmap_mod)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:14908: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sstlon_obs, keyerror_obs = AverageMeridional(sstmap_obs)
NOTE: Estimated landmask applied
ComputeMetric: oneVarRMSmetric, EnsoSstLonRmse = ACCESS1-0_r1i1p1 and HadISST
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:14907: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sstlon_mod, keyerror_mod = AverageMeridional(sstmap_mod)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:14908: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sstlon_obs, keyerror_obs = AverageMeridional(sstmap_obs)
NOTE: Estimated landmask applied
ComputeCollection: metric = EnsoSstMapDjf
ComputeMetric: oneVarRMSmetric, EnsoSstMapDjf = ACCESS1-0_r1i1p1 and ERA-Interim
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
NOTE: Estimated landmask applied
NOTE: Estimated landmask applied
ComputeCollection: metric = EnsoSstMapJja
ComputeMetric: oneVarRMSmetric, EnsoSstMapJja = ACCESS1-0_r1i1p1 and ERA-Interim
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
NOTE: Estimated landmask applied
NOTE: Estimated landmask applied
INFO::2026-05-28 11:14::pcmdi_metrics:: Results saved to a json file: /pscratch/sd/l/lee1043/git/pcmdi_metrics/doc/jupyter/Demo/demo_output/basicTestEnso/ENSO_tel/cmip5_historical_ENSO_tel_basicTestEnso_ACCESS1-0_r1i1p1.json
INFO::2026-05-28 11:14::pcmdi_metrics:: Results saved to a json file: /pscratch/sd/l/lee1043/git/pcmdi_metrics/doc/jupyter/Demo/demo_output/basicTestEnso/ENSO_tel/cmip5_historical_ENSO_tel_basicTestEnso_ACCESS1-0_r1i1p1_diveDown.json
figure plotting start
metrics: ['EnsoAmpl', 'EnsoPrMapDjf', 'EnsoPrMapJja', 'EnsoSeasonality', 'EnsoSstLonRmse', 'EnsoSstMapDjf', 'EnsoSstMapJja']
filename_js: demo_output/basicTestEnso/ENSO_tel/cmip5_historical_ENSO_tel_basicTestEnso_ACCESS1-0_r1i1p1.json
met: EnsoAmpl
filename_nc: demo_output/basicTestEnso/ENSO_tel/cmip5_historical_ENSO_tel_basicTestEnso_ACCESS1-0_r1i1p1_EnsoAmpl.nc
figure_name: cmip5_historical_ENSO_tel_ACCESS1-0_r1i1p1_EnsoAmpl
dot 11:14
took 0 minute(s)
curve 11:14
took 0 minute(s)
map 11:14
took 0 minute(s)
figure plotting done
met: EnsoPrMapDjf
filename_nc: demo_output/basicTestEnso/ENSO_tel/cmip5_historical_ENSO_tel_basicTestEnso_ACCESS1-0_r1i1p1_EnsoPrMapDjf.nc
figure_name: cmip5_historical_ENSO_tel_ACCESS1-0_r1i1p1_EnsoPrMapDjf
map 11:14
took 0 minute(s)
map 11:14
took 0 minute(s)
map 11:14
took 0 minute(s)
map 11:14
took 0 minute(s)
map 11:14
took 0 minute(s)
map 11:14
took 0 minute(s)
map 11:14
took 0 minute(s)
map 11:14
took 0 minute(s)
map 11:14
took 0 minute(s)
map 11:14
took 0 minute(s)
map 11:14
took 0 minute(s)
map 11:14
took 0 minute(s)
figure plotting done
met: EnsoPrMapJja
filename_nc: demo_output/basicTestEnso/ENSO_tel/cmip5_historical_ENSO_tel_basicTestEnso_ACCESS1-0_r1i1p1_EnsoPrMapJja.nc
figure_name: cmip5_historical_ENSO_tel_ACCESS1-0_r1i1p1_EnsoPrMapJja
map 11:14
took 0 minute(s)
map 11:14
took 0 minute(s)
map 11:15
took 0 minute(s)
map 11:15
took 0 minute(s)
map 11:15
took 0 minute(s)
map 11:15
took 0 minute(s)
map 11:15
took 0 minute(s)
map 11:15
took 0 minute(s)
map 11:15
took 0 minute(s)
map 11:15
took 0 minute(s)
map 11:15
took 0 minute(s)
map 11:15
took 0 minute(s)
figure plotting done
met: EnsoSeasonality
filename_nc: demo_output/basicTestEnso/ENSO_tel/cmip5_historical_ENSO_tel_basicTestEnso_ACCESS1-0_r1i1p1_EnsoSeasonality.nc
figure_name: cmip5_historical_ENSO_tel_ACCESS1-0_r1i1p1_EnsoSeasonality
dot 11:15
took 0 minute(s)
curve 11:15
took 0 minute(s)
hovmoeller 11:15
took 0 minute(s)
curve 11:15
took 0 minute(s)
map 11:15
took 0 minute(s)
figure plotting done
met: EnsoSstLonRmse
filename_nc: demo_output/basicTestEnso/ENSO_tel/cmip5_historical_ENSO_tel_basicTestEnso_ACCESS1-0_r1i1p1_EnsoSstLonRmse.nc
figure_name: cmip5_historical_ENSO_tel_ACCESS1-0_r1i1p1_EnsoSstLonRmse
curve 11:15
took 0 minute(s)
map 11:15
took 0 minute(s)
curve 11:15
took 0 minute(s)
map 11:15
took 0 minute(s)
figure plotting done
met: EnsoSstMapDjf
filename_nc: demo_output/basicTestEnso/ENSO_tel/cmip5_historical_ENSO_tel_basicTestEnso_ACCESS1-0_r1i1p1_EnsoSstMapDjf.nc
figure_name: cmip5_historical_ENSO_tel_ACCESS1-0_r1i1p1_EnsoSstMapDjf
map 11:15
took 0 minute(s)
map 11:15
took 0 minute(s)
map 11:15
took 0 minute(s)
map 11:15
took 0 minute(s)
map 11:15
took 0 minute(s)
map 11:15
took 0 minute(s)
map 11:15
took 0 minute(s)
map 11:15
took 0 minute(s)
map 11:15
took 0 minute(s)
map 11:15
took 0 minute(s)
map 11:15
took 0 minute(s)
map 11:15
took 0 minute(s)
figure plotting done
met: EnsoSstMapJja
filename_nc: demo_output/basicTestEnso/ENSO_tel/cmip5_historical_ENSO_tel_basicTestEnso_ACCESS1-0_r1i1p1_EnsoSstMapJja.nc
figure_name: cmip5_historical_ENSO_tel_ACCESS1-0_r1i1p1_EnsoSstMapJja
map 11:15
took 0 minute(s)
map 11:15
took 0 minute(s)
map 11:15
took 0 minute(s)
map 11:15
took 0 minute(s)
map 11:15
took 0 minute(s)
map 11:15
took 0 minute(s)
map 11:15
took 0 minute(s)
map 11:15
took 0 minute(s)
map 11:15
took 0 minute(s)
map 11:15
took 0 minute(s)
map 11:15
took 0 minute(s)
map 11:15
took 0 minute(s)
figure plotting done
PMPdriver: model loop end
Process end: Thu May 28 11:15:47 2026
All of the results (netCDF and JSON) are located in the output directory, which uses the metrics collection name.
[ ]:
!ls {demo_output_directory + "/basicTestEnso/ENSO_tel/*.nc"}
demo_output/basicTestEnso_xcdat/ENSO_tel/cmip5_historical_ENSO_tel_basicTestEnso_ACCESS1-0_r1i1p1_EnsoAmpl.nc
demo_output/basicTestEnso_xcdat/ENSO_tel/cmip5_historical_ENSO_tel_basicTestEnso_ACCESS1-0_r1i1p1_EnsoPrMapJja.nc
demo_output/basicTestEnso_xcdat/ENSO_tel/cmip5_historical_ENSO_tel_basicTestEnso_ACCESS1-0_r1i1p1_EnsoSeasonality.nc
demo_output/basicTestEnso_xcdat/ENSO_tel/cmip5_historical_ENSO_tel_basicTestEnso_ACCESS1-0_r1i1p1_EnsoSstLonRmse.nc
demo_output/basicTestEnso_xcdat/ENSO_tel/cmip5_historical_ENSO_tel_basicTestEnso_ACCESS1-0_r1i1p1_EnsoSstMapJja.nc
[ ]:
# figure size in inches optional
rcParams['figure.figsize'] = 16, 10
# path to images
plot1 = os.path.join(demo_output_directory,"basicTestEnso/ENSO_tel/cmip5_historical_ENSO_tel_ACCESS1-0_r1i1p1_EnsoAmpl_diagnostic_divedown01.png")
plot2 = os.path.join(demo_output_directory,"basicTestEnso/ENSO_tel/cmip5_historical_ENSO_tel_ACCESS1-0_r1i1p1_EnsoAmpl_diagnostic_divedown02.png")
plot3 = os.path.join(demo_output_directory,"basicTestEnso/ENSO_tel/cmip5_historical_ENSO_tel_ACCESS1-0_r1i1p1_EnsoAmpl_diagnostic_divedown03.png")
# display images
fig, ax = plt.subplots(1,3); ax[0].axis('off'); ax[1].axis('off'); ax[2].axis('off')
ax[0].imshow(mpimg.imread(plot1))
ax[1].imshow(mpimg.imread(plot2))
ax[2].imshow(mpimg.imread(plot3))
<matplotlib.image.AxesImage at 0x7f07676c5bd0>
Finally, this example runs the remaining metrics collection ENSO_proc:
[15]:
%%bash -s "$demo_output_directory"
enso_driver.py -p basic_enso_param.py \
--metricsCollection ENSO_proc \
--results_dir $1/basicTestEnso/ENSO_proc
mip: cmip5
exp: historical
models: ['ACCESS1-0']
realization: r1i1p1
mc_name: ENSO_proc
outdir: demo_output/basicTestEnso/ENSO_proc
netcdf_path: demo_output/basicTestEnso/ENSO_proc
debug: False
obs_cmor: True
obs_cmor_path: demo_data/obs4MIPs_PCMDI_monthly
egg_pth: /global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/share/pmp
output directory for graphics:demo_output/basicTestEnso/ENSO_proc
output directory for diagnostic_results:demo_output/basicTestEnso/ENSO_proc
output directory for metrics_results:demo_output/basicTestEnso/ENSO_proc
list_variables: ['ssh', 'sst', 'taux', 'thf']
list_obs: ['AVISO-1-0', 'ERA-INT', 'GPCP-2-3', 'HadISST-1-1']
Observation dataset AVISO-1-0 is not given for variable thf
Observation dataset GPCP-2-3 is not given for variable thf
Observation dataset HadISST-1-1 is not given for variable thf
PMPdriver: dict_obs readin end
Process start:Thu May 28 11:16:01 2026
models: ['ACCESS1-0']
----- model: ACCESS1-0 ---------------------
PMPdriver: var loop start for model ACCESS1-0
realization: r1i1p1
run_in_modpath: 4
--- run: r1i1p1 ---
--- var: ssh ---
var_in_file: zos
var, areacell_in_file, realm: ssh areacello ocean
path: demo_data/CMIP5_demo_data/zos_Amon_ACCESS1-0_historical_r1i1p1_185001-200512.nc
file_list: []
path: demo_data/CMIP5_demo_data/zos_Omon_ACCESS1-0_historical_r1i1p1_185001-200512.nc
file_list: ['demo_data/CMIP5_demo_data/zos_Omon_ACCESS1-0_historical_r1i1p1_185001-200512.nc']
PMPdriver: resolved ocean variable ssh using alternate path demo_data/CMIP5_demo_data/zos_Omon_ACCESS1-0_historical_r1i1p1_185001-200512.nc
path: demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc
file_list: ['demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc']
path: demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc
file_list: ['demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc']
PMPdriver: var loop end
--- var: sst ---
var_in_file: ts
var, areacell_in_file, realm: sst areacella atmos
path: demo_data/CMIP5_demo_data/ts_Amon_ACCESS1-0_historical_r1i1p1_185001-200512.nc
file_list: ['demo_data/CMIP5_demo_data/ts_Amon_ACCESS1-0_historical_r1i1p1_185001-200512.nc']
path: demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc
file_list: ['demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc']
path: demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc
file_list: ['demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc']
PMPdriver: var loop end
--- var: taux ---
var_in_file: tauu
var, areacell_in_file, realm: taux areacella atmos
path: demo_data/CMIP5_demo_data/tauu_Amon_ACCESS1-0_historical_r1i1p1_185001-200512.nc
file_list: ['demo_data/CMIP5_demo_data/tauu_Amon_ACCESS1-0_historical_r1i1p1_185001-200512.nc']
path: demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc
file_list: ['demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc']
path: demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc
file_list: ['demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc']
PMPdriver: var loop end
--- var: thf ---
var_in_file: ['hfls', 'hfss', 'rlds', 'rlus', 'rsds', 'rsus']
var, areacell_in_file, realm: thf areacella atmos
path: demo_data/CMIP5_demo_data/hfls_Amon_ACCESS1-0_historical_r1i1p1_185001-200512.nc
file_list: ['demo_data/CMIP5_demo_data/hfls_Amon_ACCESS1-0_historical_r1i1p1_185001-200512.nc']
path: demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc
file_list: ['demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc']
path: demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc
file_list: ['demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc']
path: demo_data/CMIP5_demo_data/hfls_Amon_ACCESS1-0_historical_r1i1p1_185001-200512.nc
file_list: ['demo_data/CMIP5_demo_data/hfls_Amon_ACCESS1-0_historical_r1i1p1_185001-200512.nc']
path: demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc
file_list: ['demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc']
file_areacell_tmp: demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc
path: demo_data/CMIP5_demo_data/hfss_Amon_ACCESS1-0_historical_r1i1p1_185001-200512.nc
file_list: ['demo_data/CMIP5_demo_data/hfss_Amon_ACCESS1-0_historical_r1i1p1_185001-200512.nc']
path: demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc
file_list: ['demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc']
file_areacell_tmp: demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc
path: demo_data/CMIP5_demo_data/rlds_Amon_ACCESS1-0_historical_r1i1p1_185001-200512.nc
file_list: ['demo_data/CMIP5_demo_data/rlds_Amon_ACCESS1-0_historical_r1i1p1_185001-200512.nc']
path: demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc
file_list: ['demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc']
file_areacell_tmp: demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc
path: demo_data/CMIP5_demo_data/rlus_Amon_ACCESS1-0_historical_r1i1p1_185001-200512.nc
file_list: ['demo_data/CMIP5_demo_data/rlus_Amon_ACCESS1-0_historical_r1i1p1_185001-200512.nc']
path: demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc
file_list: ['demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc']
file_areacell_tmp: demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc
path: demo_data/CMIP5_demo_data/rsds_Amon_ACCESS1-0_historical_r1i1p1_185001-200512.nc
file_list: ['demo_data/CMIP5_demo_data/rsds_Amon_ACCESS1-0_historical_r1i1p1_185001-200512.nc']
path: demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc
file_list: ['demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc']
file_areacell_tmp: demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc
path: demo_data/CMIP5_demo_data/rsus_Amon_ACCESS1-0_historical_r1i1p1_185001-200512.nc
file_list: ['demo_data/CMIP5_demo_data/rsus_Amon_ACCESS1-0_historical_r1i1p1_185001-200512.nc']
path: demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc
file_list: ['demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc']
file_areacell_tmp: demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc
PMPdriver: var loop end
dictDatasets:
{
"model": {
"ACCESS1-0_r1i1p1": {
"ssh": {
"areaname": "areacello",
"landmaskname": "sftlf",
"path + filename": "demo_data/CMIP5_demo_data/zos_Omon_ACCESS1-0_historical_r1i1p1_185001-200512.nc",
"path + filename_area": "demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc",
"path + filename_landmask": null,
"varname": "zos"
},
"sst": {
"areaname": "areacella",
"landmaskname": "sftlf",
"path + filename": "demo_data/CMIP5_demo_data/ts_Amon_ACCESS1-0_historical_r1i1p1_185001-200512.nc",
"path + filename_area": "demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc",
"path + filename_landmask": "demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc",
"varname": "ts"
},
"taux": {
"areaname": "areacella",
"landmaskname": "sftlf",
"path + filename": "demo_data/CMIP5_demo_data/tauu_Amon_ACCESS1-0_historical_r1i1p1_185001-200512.nc",
"path + filename_area": "demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc",
"path + filename_landmask": "demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc",
"varname": "tauu"
},
"thf": {
"areaname": [
"areacella",
"areacella",
"areacella",
"areacella",
"areacella",
"areacella"
],
"landmaskname": [
"sftlf",
"sftlf",
"sftlf",
"sftlf",
"sftlf",
"sftlf"
],
"path + filename": [
"demo_data/CMIP5_demo_data/hfls_Amon_ACCESS1-0_historical_r1i1p1_185001-200512.nc",
"demo_data/CMIP5_demo_data/hfss_Amon_ACCESS1-0_historical_r1i1p1_185001-200512.nc",
"demo_data/CMIP5_demo_data/rlds_Amon_ACCESS1-0_historical_r1i1p1_185001-200512.nc",
"demo_data/CMIP5_demo_data/rlus_Amon_ACCESS1-0_historical_r1i1p1_185001-200512.nc",
"demo_data/CMIP5_demo_data/rsds_Amon_ACCESS1-0_historical_r1i1p1_185001-200512.nc",
"demo_data/CMIP5_demo_data/rsus_Amon_ACCESS1-0_historical_r1i1p1_185001-200512.nc"
],
"path + filename_area": [
"demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc",
"demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc",
"demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc",
"demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc",
"demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc",
"demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc"
],
"path + filename_landmask": [
"demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc",
"demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc",
"demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc",
"demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc",
"demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc",
"demo_data/CMIP5_demo_data/sftlf_fx_ACCESS1-0_amip_r0i0p0.nc"
],
"varname": [
"hfls",
"hfss",
"rlds",
"rlus",
"rsds",
"rsus"
]
}
}
},
"observations": {
"AVISO": {
"ssh": {
"areaname": "areacella",
"landmaskname": "sftlf",
"path + filename": "demo_data/obs4MIPs_PCMDI_monthly/CNES/AVISO-1-0/mon/zos/gn/v20210727/zos_mon_AVISO-1-0_PCMDI_gn_199301-201912.nc",
"path + filename_area": null,
"path + filename_landmask": null,
"varname": "zos"
}
},
"ERA-Interim": {
"sst": {
"areaname": "areacella",
"landmaskname": "sftlf",
"path + filename": "demo_data/obs4MIPs_PCMDI_monthly/ECMWF/ERA-INT/mon/ts/gn/v20210727/ts_mon_ERA-INT_PCMDI_gn_197901-201903.nc",
"path + filename_area": null,
"path + filename_landmask": null,
"varname": "ts"
},
"taux": {
"areaname": "areacella",
"landmaskname": "sftlf",
"path + filename": "demo_data/obs4MIPs_PCMDI_monthly/ECMWF/ERA-INT/mon/tauu/gn/v20210727/tauu_mon_ERA-INT_PCMDI_gn_197901-201903.nc",
"path + filename_area": null,
"path + filename_landmask": null,
"varname": "tauu"
},
"thf": {
"areaname": [
"areacella",
"areacella",
"areacella",
"areacella",
"areacella",
"areacella"
],
"landmaskname": [
"sftlf",
"sftlf",
"sftlf",
"sftlf",
"sftlf",
"sftlf"
],
"path + filename": [
"demo_data/obs4MIPs_PCMDI_monthly/ECMWF/ERA-INT/mon/hfls/gn/v20210727/hfls_mon_ERA-INT_PCMDI_gn_197901-201903.nc",
"demo_data/obs4MIPs_PCMDI_monthly/ECMWF/ERA-INT/mon/hfss/gn/v20210727/hfss_mon_ERA-INT_PCMDI_gn_197901-201903.nc",
"demo_data/obs4MIPs_PCMDI_monthly/ECMWF/ERA-INT/mon/rlds/gn/v20210727/rlds_mon_ERA-INT_PCMDI_gn_197901-201903.nc",
"demo_data/obs4MIPs_PCMDI_monthly/ECMWF/ERA-INT/mon/rlus/gn/v20210727/rlus_mon_ERA-INT_PCMDI_gn_197901-201903.nc",
"demo_data/obs4MIPs_PCMDI_monthly/ECMWF/ERA-INT/mon/rsds/gn/v20210727/rsds_mon_ERA-INT_PCMDI_gn_197901-201903.nc",
"demo_data/obs4MIPs_PCMDI_monthly/ECMWF/ERA-INT/mon/rsus/gn/v20210727/rsus_mon_ERA-INT_PCMDI_gn_197901-201903.nc"
],
"path + filename_area": [
null,
null,
null,
null,
null,
null
],
"path + filename_landmask": null,
"varname": [
"hfls",
"hfss",
"rlds",
"rlus",
"rsds",
"rsus"
]
}
},
"HadISST": {
"sst": {
"areaname": "areacella",
"landmaskname": "sftlf",
"path + filename": "demo_data/obs4MIPs_PCMDI_monthly/MOHC/HadISST-1-1/mon/ts/gn/v20260416/ts_mon_HadISST-1-1_PCMDI_gn_187001-202501.nc",
"path + filename_area": null,
"path + filename_landmask": null,
"varname": "ts"
}
}
}
}
### Compute the metric collection ###
ComputeCollection: metric = BiasSstLonRmse
ComputeMetric: oneVarRMSmetric, BiasSstLonRmse = ACCESS1-0_r1i1p1 and ERA-Interim
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:3065: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst_mod, keyerror_mod = AverageMeridional(sst_mod)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:3066: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst_obs, keyerror_obs = AverageMeridional(sst_obs)
NOTE: Estimated landmask applied
ComputeMetric: oneVarRMSmetric, BiasSstLonRmse = ACCESS1-0_r1i1p1 and HadISST
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:3065: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst_mod, keyerror_mod = AverageMeridional(sst_mod)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:3066: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst_obs, keyerror_obs = AverageMeridional(sst_obs)
NOTE: Estimated landmask applied
ComputeCollection: metric = BiasTauxLonRmse
ComputeMetric: oneVarRMSmetric, BiasTauxLonRmse = ACCESS1-0_r1i1p1 and ERA-Interim
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5534: UserWarning: areacell is None for variable 'tauu'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
taux, keyerror = AverageHorizontal(taux, region="nino4")
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5534: UserWarning: areacell is None for variable 'tauu'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
taux, keyerror = AverageHorizontal(taux, region="nino4")
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:4158: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
taux_mod, keyerror_mod = AverageMeridional(taux_mod)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:4159: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
taux_obs, keyerror_obs = AverageMeridional(taux_obs)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5534: UserWarning: areacell is None for variable 'tauu'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
taux, keyerror = AverageHorizontal(taux, region="nino4")
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5534: UserWarning: areacell is None for variable 'tauu'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
taux, keyerror = AverageHorizontal(taux, region="nino4")
NOTE: Estimated landmask applied
ComputeCollection: metric = EnsoAmpl
ComputeMetric: oneVarmetric = ACCESS1-0_r1i1p1
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:6950: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst2, keyerror = AverageMeridional(sst2)
ComputeMetric: oneVarmetric = ERA-Interim
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
NOTE: Estimated landmask applied
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:6950: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst2, keyerror = AverageMeridional(sst2)
ComputeMetric: oneVarmetric = HadISST
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
NOTE: Estimated landmask applied
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:6950: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst2, keyerror = AverageMeridional(sst2)
ComputeCollection: metric = EnsodSstOce_2
ComputeMetric: twoVarmetric = ACCESS1-0_r1i1p1
EnsoUvcdatToolsLib ReadAndSelectRegion
hfls sign reversed
range old = +1.99 to +243.32
range new = -243.32 to -1.99
EnsoUvcdatToolsLib ReadAndSelectRegion
hfss sign reversed
range old = -3.28 to +31.07
range new = -31.07 to +3.28
EnsoUvcdatToolsLib ReadAndSelectRegion
hfls sign reversed
range old = +1.99 to +290.82
range new = -290.82 to -1.99
EnsoUvcdatToolsLib ReadAndSelectRegion
hfss sign reversed
range old = -3.28 to +62.31
range new = -62.31 to +3.28
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:7820: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst_map, keyerror1 = AverageMeridional(sst_map)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:7821: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
thf_map, keyerror2 = AverageMeridional(thf_map)
ComputeMetric: twoVarmetric = ERA-Interim_ERA-Interim
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
EnsoUvcdatToolsLib ReadAndSelectRegion
hfls sign reversed
range old = +3.32 to +219.02
range new = -219.02 to -3.32
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
EnsoUvcdatToolsLib ReadAndSelectRegion
hfss sign reversed
range old = -4.19 to +33.07
range new = -33.07 to +4.19
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
NOTE: Estimated landmask applied
EnsoUvcdatToolsLib ReadAndSelectRegion
hfls sign reversed
range old = +3.32 to +243.35
range new = -243.35 to -3.32
NOTE: Estimated landmask applied
EnsoUvcdatToolsLib ReadAndSelectRegion
hfss sign reversed
range old = -9.37 to +72.85
range new = -72.85 to +9.37
NOTE: Estimated landmask applied
NOTE: Estimated landmask applied
NOTE: Estimated landmask applied
NOTE: Estimated landmask applied
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:7820: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst_map, keyerror1 = AverageMeridional(sst_map)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:7821: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
thf_map, keyerror2 = AverageMeridional(thf_map)
ComputeMetric: twoVarmetric = HadISST_ERA-Interim
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
EnsoUvcdatToolsLib ReadAndSelectRegion
hfls sign reversed
range old = +3.32 to +219.02
range new = -219.02 to -3.32
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
EnsoUvcdatToolsLib ReadAndSelectRegion
hfss sign reversed
range old = -4.19 to +33.07
range new = -33.07 to +4.19
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
EnsoUvcdatToolsLib ReadAndSelectRegion
hfls sign reversed
range old = +3.32 to +243.35
range new = -243.35 to -3.32
NOTE: Estimated landmask applied
EnsoUvcdatToolsLib ReadAndSelectRegion
hfss sign reversed
range old = -9.37 to +72.85
range new = -72.85 to +9.37
NOTE: Estimated landmask applied
NOTE: Estimated landmask applied
NOTE: Estimated landmask applied
NOTE: Estimated landmask applied
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:7820: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst_map, keyerror1 = AverageMeridional(sst_map)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:7821: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
thf_map, keyerror2 = AverageMeridional(thf_map)
ComputeCollection: metric = EnsoFbSshSst
ComputeMetric: twoVarmetric = ACCESS1-0_r1i1p1
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:7389: UserWarning: areacell is None for variable 'zos'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
variable, areacell, keyerror3 = Read_mask_area(
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:7286: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
tab, keyerror = dict_average[average](tab, areacell, region=region, **kwargs)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:7389: UserWarning: areacell is None for variable 'zos'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
variable, areacell, keyerror3 = Read_mask_area(
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:8494: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst_map, keyerror1 = AverageMeridional(sst_map)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:8495: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
ssh_map, keyerror2 = AverageMeridional(ssh_map)
ComputeMetric: twoVarmetric = ERA-Interim_AVISO
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:7389: UserWarning: areacell is None for variable 'zos'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
variable, areacell, keyerror3 = Read_mask_area(
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:7286: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
tab, keyerror = dict_average[average](tab, areacell, region=region, **kwargs)
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:7389: UserWarning: areacell is None for variable 'zos'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
variable, areacell, keyerror3 = Read_mask_area(
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:8494: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst_map, keyerror1 = AverageMeridional(sst_map)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:8495: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
ssh_map, keyerror2 = AverageMeridional(ssh_map)
ComputeMetric: twoVarmetric = HadISST_AVISO
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:7389: UserWarning: areacell is None for variable 'zos'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
variable, areacell, keyerror3 = Read_mask_area(
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:7286: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
tab, keyerror = dict_average[average](tab, areacell, region=region, **kwargs)
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:7389: UserWarning: areacell is None for variable 'zos'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
variable, areacell, keyerror3 = Read_mask_area(
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:8494: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst_map, keyerror1 = AverageMeridional(sst_map)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:8495: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
ssh_map, keyerror2 = AverageMeridional(ssh_map)
ComputeCollection: metric = EnsoFbSstTaux
ComputeMetric: twoVarmetric = ACCESS1-0_r1i1p1
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5534: UserWarning: areacell is None for variable 'tauu'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
taux, keyerror = AverageHorizontal(taux, region="nino4")
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5534: UserWarning: areacell is None for variable 'tauu'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
taux, keyerror = AverageHorizontal(taux, region="nino4")
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:8129: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
taux_map, keyerror = AverageMeridional(taux_map)
ComputeMetric: twoVarmetric = ERA-Interim_ERA-Interim
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5534: UserWarning: areacell is None for variable 'tauu'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
taux, keyerror = AverageHorizontal(taux, region="nino4")
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5534: UserWarning: areacell is None for variable 'tauu'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
taux, keyerror = AverageHorizontal(taux, region="nino4")
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:8129: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
taux_map, keyerror = AverageMeridional(taux_map)
ComputeMetric: twoVarmetric = HadISST_ERA-Interim
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5534: UserWarning: areacell is None for variable 'tauu'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
taux, keyerror = AverageHorizontal(taux, region="nino4")
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5534: UserWarning: areacell is None for variable 'tauu'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
taux, keyerror = AverageHorizontal(taux, region="nino4")
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:8129: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
taux_map, keyerror = AverageMeridional(taux_map)
ComputeCollection: metric = EnsoFbSstThf
ComputeMetric: twoVarmetric = ACCESS1-0_r1i1p1
EnsoUvcdatToolsLib ReadAndSelectRegion
hfls sign reversed
range old = +1.99 to +243.32
range new = -243.32 to -1.99
EnsoUvcdatToolsLib ReadAndSelectRegion
hfss sign reversed
range old = -3.28 to +31.07
range new = -31.07 to +3.28
EnsoUvcdatToolsLib ReadAndSelectRegion
hfls sign reversed
range old = +1.99 to +290.82
range new = -290.82 to -1.99
EnsoUvcdatToolsLib ReadAndSelectRegion
hfss sign reversed
range old = -3.28 to +62.31
range new = -62.31 to +3.28
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:6629: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst_map, keyerror1 = AverageMeridional(sst_map)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:6630: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
thf_map, keyerror2 = AverageMeridional(thf_map)
ComputeMetric: twoVarmetric = ERA-Interim_ERA-Interim
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
EnsoUvcdatToolsLib ReadAndSelectRegion
hfls sign reversed
range old = +3.32 to +219.02
range new = -219.02 to -3.32
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
EnsoUvcdatToolsLib ReadAndSelectRegion
hfss sign reversed
range old = -4.19 to +33.07
range new = -33.07 to +4.19
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
NOTE: Estimated landmask applied
EnsoUvcdatToolsLib ReadAndSelectRegion
hfls sign reversed
range old = +3.32 to +243.35
range new = -243.35 to -3.32
NOTE: Estimated landmask applied
EnsoUvcdatToolsLib ReadAndSelectRegion
hfss sign reversed
range old = -9.37 to +72.85
range new = -72.85 to +9.37
NOTE: Estimated landmask applied
NOTE: Estimated landmask applied
NOTE: Estimated landmask applied
NOTE: Estimated landmask applied
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:6629: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst_map, keyerror1 = AverageMeridional(sst_map)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:6630: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
thf_map, keyerror2 = AverageMeridional(thf_map)
ComputeMetric: twoVarmetric = HadISST_ERA-Interim
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
EnsoUvcdatToolsLib ReadAndSelectRegion
hfls sign reversed
range old = +3.32 to +219.02
range new = -219.02 to -3.32
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
EnsoUvcdatToolsLib ReadAndSelectRegion
hfss sign reversed
range old = -4.19 to +33.07
range new = -33.07 to +4.19
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
EnsoUvcdatToolsLib ReadAndSelectRegion
hfls sign reversed
range old = +3.32 to +243.35
range new = -243.35 to -3.32
NOTE: Estimated landmask applied
EnsoUvcdatToolsLib ReadAndSelectRegion
hfss sign reversed
range old = -9.37 to +72.85
range new = -72.85 to +9.37
NOTE: Estimated landmask applied
NOTE: Estimated landmask applied
NOTE: Estimated landmask applied
NOTE: Estimated landmask applied
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:6629: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst_map, keyerror1 = AverageMeridional(sst_map)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:6630: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
thf_map, keyerror2 = AverageMeridional(thf_map)
ComputeCollection: metric = EnsoFbTauxSsh
ComputeMetric: twoVarmetric = ACCESS1-0_r1i1p1
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:7389: UserWarning: areacell is None for variable 'zos'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
variable, areacell, keyerror3 = Read_mask_area(
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5534: UserWarning: areacell is None for variable 'tauu'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
taux, keyerror = AverageHorizontal(taux, region="nino4")
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:7286: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
tab, keyerror = dict_average[average](tab, areacell, region=region, **kwargs)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:7389: UserWarning: areacell is None for variable 'zos'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
variable, areacell, keyerror3 = Read_mask_area(
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:8835: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
ssh_map, keyerror = AverageMeridional(ssh_map)
ComputeMetric: twoVarmetric = ERA-Interim_AVISO
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:7389: UserWarning: areacell is None for variable 'zos'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
variable, areacell, keyerror3 = Read_mask_area(
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5534: UserWarning: areacell is None for variable 'tauu'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
taux, keyerror = AverageHorizontal(taux, region="nino4")
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:7286: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
tab, keyerror = dict_average[average](tab, areacell, region=region, **kwargs)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:7389: UserWarning: areacell is None for variable 'zos'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
variable, areacell, keyerror3 = Read_mask_area(
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:8835: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
ssh_map, keyerror = AverageMeridional(ssh_map)
ComputeCollection: metric = EnsoSeasonality
ComputeMetric: oneVarmetric = ACCESS1-0_r1i1p1
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:11532: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst2, keyerror1 = AverageMeridional(sst2)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:11533: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst3_NDJ, keyerror2 = AverageMeridional(sst3_NDJ)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:11534: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst3_MAM, keyerror3 = AverageMeridional(sst3_MAM)
ComputeMetric: oneVarmetric = ERA-Interim
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
NOTE: Estimated landmask applied
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:11532: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst2, keyerror1 = AverageMeridional(sst2)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:11533: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst3_NDJ, keyerror2 = AverageMeridional(sst3_NDJ)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:11534: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst3_MAM, keyerror3 = AverageMeridional(sst3_MAM)
ComputeMetric: oneVarmetric = HadISST
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
NOTE: Estimated landmask applied
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:11532: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst2, keyerror1 = AverageMeridional(sst2)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:11533: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst3_NDJ, keyerror2 = AverageMeridional(sst3_NDJ)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:11534: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst3_MAM, keyerror3 = AverageMeridional(sst3_MAM)
ComputeCollection: metric = EnsoSstLonRmse
ComputeMetric: oneVarRMSmetric, EnsoSstLonRmse = ACCESS1-0_r1i1p1 and ERA-Interim
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:14907: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sstlon_mod, keyerror_mod = AverageMeridional(sstmap_mod)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:14908: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sstlon_obs, keyerror_obs = AverageMeridional(sstmap_obs)
NOTE: Estimated landmask applied
ComputeMetric: oneVarRMSmetric, EnsoSstLonRmse = ACCESS1-0_r1i1p1 and HadISST
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:14907: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sstlon_mod, keyerror_mod = AverageMeridional(sstmap_mod)
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:14908: UserWarning: areacell is None for variable 'unknown'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sstlon_obs, keyerror_obs = AverageMeridional(sstmap_obs)
NOTE: Estimated landmask applied
ComputeCollection: metric = EnsoSstSkew
ComputeMetric: oneVarmetric = ACCESS1-0_r1i1p1
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:12116: UserWarning: areacell is None for variable 'skewness'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst2, keyerror = AverageMeridional(sst2)
ComputeMetric: oneVarmetric = ERA-Interim
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
NOTE: Estimated landmask applied
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:12116: UserWarning: areacell is None for variable 'skewness'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst2, keyerror = AverageMeridional(sst2)
ComputeMetric: oneVarmetric = HadISST
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
NOTE: Estimated landmask applied
NOTE: Estimated landmask applied
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoUvcdatToolsLib.py:5753: UserWarning: Generated land mask is entirely ocean for this region. This may be expected if the region is all ocean.
sft = cdutil.generateLandSeaMask(d(*(slice(0, 1),) * n),debug=False) * 100.0
/global/homes/l/lee1043/.conda/envs/pmp_devel_20250908/lib/python3.13/site-packages/EnsoMetrics/EnsoMetricsLib.py:12116: UserWarning: areacell is None for variable 'skewness'; synthesising cosine-latitude weights. Provide areacella/sftlf for accurate spatial averages.
sst2, keyerror = AverageMeridional(sst2)
INFO::2026-05-28 11:29::pcmdi_metrics:: Results saved to a json file: /pscratch/sd/l/lee1043/git/pcmdi_metrics/doc/jupyter/Demo/demo_output/basicTestEnso/ENSO_proc/cmip5_historical_ENSO_proc_basicTestEnso_ACCESS1-0_r1i1p1.json
INFO::2026-05-28 11:29::pcmdi_metrics:: Results saved to a json file: /pscratch/sd/l/lee1043/git/pcmdi_metrics/doc/jupyter/Demo/demo_output/basicTestEnso/ENSO_proc/cmip5_historical_ENSO_proc_basicTestEnso_ACCESS1-0_r1i1p1_diveDown.json
figure plotting start
metrics: ['BiasSstLonRmse', 'BiasTauxLonRmse', 'EnsoAmpl', 'EnsodSstOce_2', 'EnsoFbSshSst', 'EnsoFbSstTaux', 'EnsoFbSstThf', 'EnsoFbTauxSsh', 'EnsoSeasonality', 'EnsoSstLonRmse', 'EnsoSstSkew']
filename_js: demo_output/basicTestEnso/ENSO_proc/cmip5_historical_ENSO_proc_basicTestEnso_ACCESS1-0_r1i1p1.json
met: BiasSstLonRmse
filename_nc: demo_output/basicTestEnso/ENSO_proc/cmip5_historical_ENSO_proc_basicTestEnso_ACCESS1-0_r1i1p1_BiasSstLonRmse.nc
figure_name: cmip5_historical_ENSO_proc_ACCESS1-0_r1i1p1_BiasSstLonRmse
curve 11:29
took 0 minute(s)
map 11:29
took 0 minute(s)
figure plotting done
met: BiasTauxLonRmse
filename_nc: demo_output/basicTestEnso/ENSO_proc/cmip5_historical_ENSO_proc_basicTestEnso_ACCESS1-0_r1i1p1_BiasTauxLonRmse.nc
figure_name: cmip5_historical_ENSO_proc_ACCESS1-0_r1i1p1_BiasTauxLonRmse
curve 11:29
took 0 minute(s)
map 11:29
took 0 minute(s)
figure plotting done
met: EnsoAmpl
filename_nc: demo_output/basicTestEnso/ENSO_proc/cmip5_historical_ENSO_proc_basicTestEnso_ACCESS1-0_r1i1p1_EnsoAmpl.nc
figure_name: cmip5_historical_ENSO_proc_ACCESS1-0_r1i1p1_EnsoAmpl
dot 11:29
took 0 minute(s)
curve 11:29
took 0 minute(s)
map 11:29
took 0 minute(s)
figure plotting done
met: EnsodSstOce_2
filename_nc: demo_output/basicTestEnso/ENSO_proc/cmip5_historical_ENSO_proc_basicTestEnso_ACCESS1-0_r1i1p1_EnsodSstOce_2.nc
figure_name: cmip5_historical_ENSO_proc_ACCESS1-0_r1i1p1_EnsodSstOce_2
dot 11:29
took 0 minute(s)
curve 11:29
took 0 minute(s)
curve 11:29
took 0 minute(s)
hovmoeller 11:29
took 0 minute(s)
figure plotting done
met: EnsoFbSshSst
filename_nc: demo_output/basicTestEnso/ENSO_proc/cmip5_historical_ENSO_proc_basicTestEnso_ACCESS1-0_r1i1p1_EnsoFbSshSst.nc
figure_name: cmip5_historical_ENSO_proc_ACCESS1-0_r1i1p1_EnsoFbSshSst
scatterplot 11:29
took 0 minute(s)
scatterplot 11:29
took 0 minute(s)
curve 11:29
took 0 minute(s)
hovmoeller 11:29
took 0 minute(s)
figure plotting done
met: EnsoFbSstTaux
filename_nc: demo_output/basicTestEnso/ENSO_proc/cmip5_historical_ENSO_proc_basicTestEnso_ACCESS1-0_r1i1p1_EnsoFbSstTaux.nc
figure_name: cmip5_historical_ENSO_proc_ACCESS1-0_r1i1p1_EnsoFbSstTaux
scatterplot 11:29
took 0 minute(s)
scatterplot 11:29
took 0 minute(s)
curve 11:29
took 0 minute(s)
hovmoeller 11:29
took 0 minute(s)
figure plotting done
met: EnsoFbSstThf
filename_nc: demo_output/basicTestEnso/ENSO_proc/cmip5_historical_ENSO_proc_basicTestEnso_ACCESS1-0_r1i1p1_EnsoFbSstThf.nc
figure_name: cmip5_historical_ENSO_proc_ACCESS1-0_r1i1p1_EnsoFbSstThf
scatterplot 11:29
took 0 minute(s)
scatterplot 11:29
took 0 minute(s)
curve 11:29
took 0 minute(s)
hovmoeller 11:29
took 0 minute(s)
figure plotting done
met: EnsoFbTauxSsh
filename_nc: demo_output/basicTestEnso/ENSO_proc/cmip5_historical_ENSO_proc_basicTestEnso_ACCESS1-0_r1i1p1_EnsoFbTauxSsh.nc
figure_name: cmip5_historical_ENSO_proc_ACCESS1-0_r1i1p1_EnsoFbTauxSsh
scatterplot 11:29
took 0 minute(s)
scatterplot 11:29
took 0 minute(s)
curve 11:29
took 0 minute(s)
hovmoeller 11:29
took 0 minute(s)
figure plotting done
met: EnsoSeasonality
filename_nc: demo_output/basicTestEnso/ENSO_proc/cmip5_historical_ENSO_proc_basicTestEnso_ACCESS1-0_r1i1p1_EnsoSeasonality.nc
figure_name: cmip5_historical_ENSO_proc_ACCESS1-0_r1i1p1_EnsoSeasonality
dot 11:29
took 0 minute(s)
curve 11:29
took 0 minute(s)
hovmoeller 11:29
took 0 minute(s)
curve 11:29
took 0 minute(s)
map 11:29
took 0 minute(s)
figure plotting done
met: EnsoSstLonRmse
filename_nc: demo_output/basicTestEnso/ENSO_proc/cmip5_historical_ENSO_proc_basicTestEnso_ACCESS1-0_r1i1p1_EnsoSstLonRmse.nc
figure_name: cmip5_historical_ENSO_proc_ACCESS1-0_r1i1p1_EnsoSstLonRmse
curve 11:30
took 0 minute(s)
map 11:30
took 0 minute(s)
curve 11:30
took 0 minute(s)
map 11:30
took 0 minute(s)
figure plotting done
met: EnsoSstSkew
filename_nc: demo_output/basicTestEnso/ENSO_proc/cmip5_historical_ENSO_proc_basicTestEnso_ACCESS1-0_r1i1p1_EnsoSstSkew.nc
figure_name: cmip5_historical_ENSO_proc_ACCESS1-0_r1i1p1_EnsoSstSkew
dot 11:30
took 0 minute(s)
curve 11:30
took 0 minute(s)
map 11:30
took 0 minute(s)
figure plotting done
PMPdriver: model loop end
Process end: Thu May 28 11:30:05 2026
[ ]:
# figure size in inches optional
rcParams['figure.figsize'] = 16, 10
# path to images
plot1 = os.path.join(demo_output_directory,"basicTestEnso/ENSO_proc/cmip5_historical_ENSO_proc_ACCESS1-0_r1i1p1_EnsoSstSkew_diagnostic_divedown01.png")
plot2 = os.path.join(demo_output_directory,"basicTestEnso/ENSO_proc/cmip5_historical_ENSO_proc_ACCESS1-0_r1i1p1_EnsoSstSkew_diagnostic_divedown02.png")
plot3 = os.path.join(demo_output_directory,"basicTestEnso/ENSO_proc/cmip5_historical_ENSO_proc_ACCESS1-0_r1i1p1_EnsoSstSkew_diagnostic_divedown03.png")
# display images
fig, ax = plt.subplots(1,3); ax[0].axis('off'); ax[1].axis('off'); ax[2].axis('off')
ax[0].imshow(mpimg.imread(plot1))
ax[1].imshow(mpimg.imread(plot2))
ax[2].imshow(mpimg.imread(plot3))
<matplotlib.image.AxesImage at 0x7f0bd16039d0>
[ ]: