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.json

  • basicTestEnso/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>
../_images/examples_Demo_6_ENSO_24_1.png

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

There are 3 metrics collections available:
ENSO_perf
ENSO_tel
ENSO_proc

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>
../_images/examples_Demo_6_ENSO_31_1.png

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>
../_images/examples_Demo_6_ENSO_34_1.png
[ ]: