diff --git a/Makefile b/Makefile index 9736f7704..25c37f36d 100644 --- a/Makefile +++ b/Makefile @@ -55,6 +55,14 @@ clean-test: ## remove test and coverage artifacts rm -fr .pytest_cache rm -rf .mypy_cache +clean-test-integration: ## remove integration test and artifacts + rm -rf tests/__pycache__ + rm -rf tests/integration/__pycache__ + rm -rf tests/integration/all_sets_results_test + rm -rf tests/integration/image_check_failures + rm -rf tests/integration/integration_test_data + rm -rf tests/integration/integration_test_images + clean-test-int-res: ## remove integration test results and image check failures rm -rf tests/integration/all_sets_results_test rm -rf tests/integration/image_check_failures diff --git a/auxiliary_tools/cdat_regression_testing/894-regression-test/regression_nc.ipynb b/auxiliary_tools/cdat_regression_testing/894-regression-test/regression_nc.ipynb new file mode 100644 index 000000000..b14c157c9 --- /dev/null +++ b/auxiliary_tools/cdat_regression_testing/894-regression-test/regression_nc.ipynb @@ -0,0 +1,2114 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# CDAT Migration Regression Testing Notebook (`.nc` files)\n", + "\n", + "This notebook is used to perform regression testing between the development and\n", + "production versions of a diagnostic set.\n", + "\n", + "## How it works\n", + "\n", + "It compares the relative differences (%) between ref and test variables between\n", + "the dev and `main` branches.\n", + "\n", + "## How to use\n", + "\n", + "PREREQUISITE: The diagnostic set's netCDF stored in `.json` files in two directories\n", + "(dev and `main` branches).\n", + "\n", + "1. Make a copy of this notebook under `auxiliary_tools/cdat_regression_testing/`.\n", + "2. Run `mamba create -n cdat_regression_test -y -c conda-forge \"python<3.12\" xarray netcdf4 dask pandas matplotlib-base ipykernel`\n", + "3. Run `mamba activate cdat_regression_test`\n", + "4. Update `SET_DIR` and `SET_NAME` in the copy of your notebook.\n", + "5. Run all cells IN ORDER.\n", + "6. Review results for any outstanding differences (>=1e-5 relative tolerance).\n", + " - Debug these differences (e.g., bug in metrics functions, incorrect variable references, etc.)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Setup Code\n" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "import glob\n", + "from typing import List\n", + "\n", + "import numpy as np\n", + "import xarray as xr\n", + "\n", + "from e3sm_diags.derivations.derivations import DERIVED_VARIABLES\n", + "\n", + "# The path to the development data.\n", + "DEV_DIR = \"24-12-09-main\"\n", + "DEV_PATH = f\"/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/{DEV_DIR}/\"\n", + "DEV_GLOB = sorted(glob.glob(DEV_PATH + \"**/**/*.nc\"))\n", + "DEV_NUM_FILES = len(DEV_GLOB)\n", + "\n", + "# The path to the production data to compare against.\n", + "MAIN_DIR = \"v2.12.1v2\"\n", + "MAIN_PATH = f\"/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/{MAIN_DIR}/\"\n", + "MAIN_GLOB = sorted(glob.glob(MAIN_PATH + \"**/**/*.nc\"))\n", + "MAIN_NUM_FILES = len(MAIN_GLOB)\n", + "\n", + "\n", + "def _remove_unwanted_files(file_glob: List[str]) -> List[str]:\n", + " \"\"\"Remove files that we don't want to compare.\n", + "\n", + " * area_mean_time_series -- `main` does not generate netCDF\n", + " * enso_diags -- `main` does not generate netCDF\n", + " * qbo -- variable name differs\n", + " * diurnal_cycle -- variable name differs\n", + " * diff -- comparing the difference between regridded files is not helpful\n", + " between branches because of the influence in floating point errors.\n", + " * ERA5_ext-U10-ANN-global_ref and ERA5_ext-U10-JJA-global_ref -- dev\n", + " branch does not generate these files because it is a model-only run.\n", + "\n", + " Parameters\n", + " ----------\n", + " file_glob : List[str]\n", + " _description_\n", + "\n", + " Returns\n", + " -------\n", + " List[str]\n", + " _description_\n", + " \"\"\"\n", + "\n", + " new_glob = []\n", + "\n", + " for fp in file_glob:\n", + " if (\n", + " \"area_mean_time_series\" in fp\n", + " or \"enso_diags\" in fp\n", + " or \"qbo\" in fp\n", + " or \"diurnal_cycle\" in fp\n", + " or \"diff\" in fp\n", + " or \"ERA5_ext-U10-ANN-global_ref\" in fp\n", + " or \"ERA5_ext-U10-JJA-global_ref\" in fp\n", + " or \"tropical_subseasonal\" in fp\n", + " ):\n", + " continue\n", + "\n", + " new_glob.append(fp)\n", + "\n", + " return new_glob\n", + "\n", + "\n", + "DEV_GLOB = _remove_unwanted_files(DEV_GLOB)\n", + "MAIN_GLOB = _remove_unwanted_files(MAIN_GLOB)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "def _get_relative_diffs():\n", + " # The absolute and relative tolerances for the tests.\n", + " ATOL = 0\n", + " RTOL = 1e-4\n", + "\n", + " results = {\n", + " \"missing_files\": [],\n", + " \"missing_vars\": [],\n", + " \"matching_files\": [],\n", + " \"mismatch_errors\": [],\n", + " \"not_equal_errors\": [],\n", + " \"key_errors\": [],\n", + " }\n", + "\n", + " for fp_main in MAIN_GLOB:\n", + " fp_dev = fp_main.replace(MAIN_DIR, DEV_DIR)\n", + "\n", + " if \"annual_cycle_zonal_mean\" in fp_main:\n", + " if \"test.nc\" in fp_main:\n", + " fp_dev = fp_dev.replace(\"test.nc\", \"ref.nc\")\n", + " elif \"ref.nc\" in fp_main:\n", + " fp_dev = fp_dev.replace(\"ref.nc\", \"test.nc\")\n", + "\n", + " try:\n", + " ds1 = xr.open_dataset(fp_dev)\n", + " ds2 = xr.open_dataset(fp_main)\n", + " except FileNotFoundError as e:\n", + " print(f\" {e}\")\n", + "\n", + " if isinstance(e, FileNotFoundError) or isinstance(e, OSError):\n", + " results[\"missing_files\"].append(fp_dev)\n", + "\n", + " continue\n", + "\n", + " var_key = fp_main.split(\"-\")[-3]\n", + "\n", + " # for 3d vars such as T-200\n", + " var_key.isdigit()\n", + " if var_key.isdigit():\n", + " var_key = fp_main.split(\"-\")[-4]\n", + "\n", + " dev_data = _get_var_data(ds1, var_key)\n", + " main_data = _get_var_data(ds2, var_key)\n", + "\n", + " if dev_data is None or main_data is None:\n", + " if dev_data is None:\n", + " results[\"missing_vars\"].append(fp_dev)\n", + " elif main_data is None:\n", + " results[\"missing_vars\"].append(fp_main)\n", + "\n", + " print(\" * Could not find variable key in the dataset(s)\")\n", + "\n", + " continue\n", + "\n", + " try:\n", + " np.testing.assert_allclose(\n", + " dev_data,\n", + " main_data,\n", + " atol=ATOL,\n", + " rtol=RTOL,\n", + " )\n", + " results[\"matching_files\"].append(fp_main)\n", + " except (KeyError, AssertionError) as e:\n", + " print(\"Comparing:\")\n", + " print(f\" * {fp_dev}\")\n", + " print(f\" * {fp_main}\")\n", + " print(f\" * var_key: {var_key}\")\n", + " msg = str(e)\n", + "\n", + " print(f\" {msg}\")\n", + "\n", + " if \"mismatch\" in msg:\n", + " results[\"mismatch_errors\"].append(fp_dev)\n", + " elif \"Not equal to tolerance\" in msg:\n", + " results[\"not_equal_errors\"].append(fp_dev)\n", + "\n", + " return results\n", + "\n", + "\n", + "def _get_var_data(ds: xr.Dataset, var_key: str) -> np.ndarray:\n", + " \"\"\"Get the variable data using a list of matching keys.\n", + "\n", + " The `main` branch saves the dataset using the original variable name,\n", + " while the dev branch saves the variable with the derived variable name.\n", + " The dev branch is performing the expected behavior here.\n", + "\n", + " Parameters\n", + " ----------\n", + " ds : xr.Dataset\n", + " _description_\n", + " var_key : str\n", + " _description_\n", + "\n", + " Returns\n", + " -------\n", + " np.ndarray\n", + " _description_\n", + " \"\"\"\n", + "\n", + " data = None\n", + "\n", + " try:\n", + " data = ds[var_key].values\n", + " except KeyError:\n", + " try:\n", + " var_keys = DERIVED_VARIABLES[var_key].keys()\n", + " except KeyError:\n", + " var_keys = DERIVED_VARIABLES[var_key.upper()].keys()\n", + "\n", + " var_keys = [var_key] + list(sum(var_keys, ()))\n", + "\n", + " for key in var_keys:\n", + " if key in ds.data_vars.keys():\n", + " data = ds[key].values\n", + " break\n", + "\n", + " return data" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "def _check_if_files_found():\n", + " if DEV_NUM_FILES == 0 or MAIN_NUM_FILES == 0:\n", + " raise IOError(\n", + " \"No files found at DEV_DIR and/or MAIN_DIR. \"\n", + " f\"Please check {DEV_PATH} and {MAIN_DIR}.\"\n", + " )\n", + "\n", + "\n", + "def _check_if_matching_filecount():\n", + " if DEV_NUM_FILES != MAIN_NUM_FILES:\n", + " raise IOError(\n", + " \"Number of files do not match at DEV_DIR and MAIN_DIR \"\n", + " f\"({DEV_NUM_FILES} vs. {MAIN_NUM_FILES}).\"\n", + " )\n", + "\n", + " print(f\"Matching file count ({DEV_NUM_FILES} and {MAIN_NUM_FILES}).\")\n", + "\n", + "\n", + "def _check_if_missing_files():\n", + " missing_dev_files = []\n", + " missing_main_files = []\n", + "\n", + " for fp_main in MAIN_GLOB:\n", + " fp_dev = fp_main.replace(MAIN_DIR, DEV_DIR)\n", + "\n", + " if fp_dev not in DEV_GLOB:\n", + " missing_dev_files.append(fp_dev)\n", + "\n", + " for fp_dev in DEV_GLOB:\n", + " fp_main = fp_dev.replace(DEV_DIR, MAIN_DIR)\n", + "\n", + " if fp_main not in MAIN_GLOB:\n", + " missing_main_files.append(fp_main)\n", + "\n", + " return missing_dev_files, missing_main_files" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1. Check for matching and equal number of files\n" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "_check_if_files_found()" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "DEV_GLOB = [fp for fp in DEV_GLOB if \"diff.nc\" not in fp]\n", + "MAIN_GLOB = [fp for fp in MAIN_GLOB if \"diff.nc\" not in fp]" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(590, 590)" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(DEV_GLOB), len(MAIN_GLOB)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Missing dev files: 0\n", + "Missing main files: 0\n" + ] + } + ], + "source": [ + "missing_dev_files, missing_main_files = _check_if_missing_files()\n", + "\n", + "print(f\"Missing dev files: {len(missing_dev_files)}\")\n", + "print(f\"Missing main files: {len(missing_main_files)}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Check missing main files (not concerned)\n", + "\n", + "Results:\n", + "\n", + "- The missing files are due to a recent .cfg update in [PR #830](https://github.com/E3SM-Project/e3sm_diags/pull/830)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "missing_main_files" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Check missing dev files:\n", + "\n", + "Results:\n", + "\n", + "- The missing reference files are due to not saving them out to netCDF since they are the same as the test files (skipped, model-only run)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "missing_dev_files" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2 Compare the netCDF files between branches\n", + "\n", + "- Compare \"ref\" and \"test\" files\n", + "- \"diff\" files are ignored because getting relative diffs for these does not make sense (relative diff will be above tolerance)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/COREv2_Flux/COREv2_Flux-PminusE-ANN-global_test.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/COREv2_Flux/COREv2_Flux-PminusE-ANN-global_test.nc\n", + " * var_key: PminusE\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 47 / 64800 (0.0725%)\n", + "Max absolute difference: 1.8531864e-06\n", + "Max relative difference: 0.00244282\n", + " x: array([[0.154003, 0.154003, 0.154003, ..., 0.188599, 0.188599, 0.188599],\n", + " [0.13969 , 0.139701, 0.139724, ..., 0.162309, 0.162268, 0.162247],\n", + " [0.12946 , 0.12946 , 0.12946 , ..., 0.143414, 0.143414, 0.143414],...\n", + " y: array([[0.154003, 0.154003, 0.154003, ..., 0.188599, 0.188599, 0.188599],\n", + " [0.13969 , 0.139701, 0.139724, ..., 0.162309, 0.162268, 0.162247],\n", + " [0.12946 , 0.12946 , 0.12946 , ..., 0.143414, 0.143414, 0.143414],...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/CRU_IPCC/CRU-TREFHT-ANN-land_60S90N_ref.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/CRU_IPCC/CRU-TREFHT-ANN-land_60S90N_ref.nc\n", + " * var_key: TREFHT\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 14302 / 54000 (26.5%)\n", + "Max absolute difference: 82779.8124939\n", + "Max relative difference: 36060017.51877778\n", + " x: array([[nan, nan, nan, ..., nan, nan, nan],\n", + " [nan, nan, nan, ..., nan, nan, nan],\n", + " [nan, nan, nan, ..., nan, nan, nan],...\n", + " y: array([[nan, nan, nan, ..., nan, nan, nan],\n", + " [nan, nan, nan, ..., nan, nan, nan],\n", + " [nan, nan, nan, ..., nan, nan, nan],...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/CRU_IPCC/CRU-TREFHT-ANN-land_60S90N_test.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/CRU_IPCC/CRU-TREFHT-ANN-land_60S90N_test.nc\n", + " * var_key: TREFHT\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 14502 / 54000 (26.9%)\n", + "Max absolute difference: 83124.91185913\n", + "Max relative difference: 6.4338203e+08\n", + " x: array([[nan, nan, nan, ..., nan, nan, nan],\n", + " [nan, nan, nan, ..., nan, nan, nan],\n", + " [nan, nan, nan, ..., nan, nan, nan],...\n", + " y: array([[nan, nan, nan, ..., nan, nan, nan],\n", + " [nan, nan, nan, ..., nan, nan, nan],\n", + " [nan, nan, nan, ..., nan, nan, nan],...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/Cloud MISR/MISRCOSP-CLDLOW_TAU1.3_9.4_MISR-ANN-global_ref.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/Cloud MISR/MISRCOSP-CLDLOW_TAU1.3_9.4_MISR-ANN-global_ref.nc\n", + " * var_key: CLDLOW_TAU1.3_9.4_MISR\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 39151 / 64800 (60.4%)\n", + "Max absolute difference: 22.41111565\n", + "Max relative difference: 0.6832267\n", + " x: array([[nan, nan, nan, ..., nan, nan, nan],\n", + " [nan, nan, nan, ..., nan, nan, nan],\n", + " [nan, nan, nan, ..., nan, nan, nan],...\n", + " y: array([[nan, nan, nan, ..., nan, nan, nan],\n", + " [nan, nan, nan, ..., nan, nan, nan],\n", + " [nan, nan, nan, ..., nan, nan, nan],...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/Cloud MISR/MISRCOSP-CLDLOW_TAU1.3_9.4_MISR-ANN-global_test.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/Cloud MISR/MISRCOSP-CLDLOW_TAU1.3_9.4_MISR-ANN-global_test.nc\n", + " * var_key: CLDLOW_TAU1.3_9.4_MISR\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 35 / 64800 (0.054%)\n", + "Max absolute difference: 0.11488533\n", + "Max relative difference: 0.01234799\n", + " x: array([[ 0.049145, 0.049145, 0.049145, ..., 0.401588, 0.401588,\n", + " 0.401588],\n", + " [ 0.128408, 0.128346, 0.128222, ..., 0.492608, 0.492751,...\n", + " y: array([[ 0.049145, 0.049145, 0.049145, ..., 0.401588, 0.401588,\n", + " 0.401588],\n", + " [ 0.128408, 0.128346, 0.128222, ..., 0.492608, 0.492751,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/Cloud MISR/MISRCOSP-CLDLOW_TAU1.3_MISR-ANN-global_ref.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/Cloud MISR/MISRCOSP-CLDLOW_TAU1.3_MISR-ANN-global_ref.nc\n", + " * var_key: CLDLOW_TAU1.3_MISR\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 39226 / 64800 (60.5%)\n", + "Max absolute difference: 37.67312241\n", + "Max relative difference: 0.62295458\n", + " x: array([[nan, nan, nan, ..., nan, nan, nan],\n", + " [nan, nan, nan, ..., nan, nan, nan],\n", + " [nan, nan, nan, ..., nan, nan, nan],...\n", + " y: array([[nan, nan, nan, ..., nan, nan, nan],\n", + " [nan, nan, nan, ..., nan, nan, nan],\n", + " [nan, nan, nan, ..., nan, nan, nan],...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/Cloud MISR/MISRCOSP-CLDLOW_TAU1.3_MISR-ANN-global_test.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/Cloud MISR/MISRCOSP-CLDLOW_TAU1.3_MISR-ANN-global_test.nc\n", + " * var_key: CLDLOW_TAU1.3_MISR\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 33 / 64800 (0.0509%)\n", + "Max absolute difference: 0.11487961\n", + "Max relative difference: 0.0051227\n", + " x: array([[4.914530e-02, 4.914530e-02, 4.914530e-02, ..., 4.015881e-01,\n", + " 4.015881e-01, 4.015881e-01],\n", + " [1.284084e-01, 1.283463e-01, 1.282219e-01, ..., 4.943842e-01,...\n", + " y: array([[4.914530e-02, 4.914530e-02, 4.914530e-02, ..., 4.015881e-01,\n", + " 4.015881e-01, 4.015881e-01],\n", + " [1.284084e-01, 1.283463e-01, 1.282219e-01, ..., 4.943842e-01,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/Cloud MISR/MISRCOSP-CLDLOW_TAU9.4_MISR-ANN-global_ref.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/Cloud MISR/MISRCOSP-CLDLOW_TAU9.4_MISR-ANN-global_ref.nc\n", + " * var_key: CLDLOW_TAU9.4_MISR\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 38772 / 64800 (59.8%)\n", + "Max absolute difference: 31.08518791\n", + "Max relative difference: 0.96666667\n", + " x: array([[nan, nan, nan, ..., nan, nan, nan],\n", + " [nan, nan, nan, ..., nan, nan, nan],\n", + " [nan, nan, nan, ..., nan, nan, nan],...\n", + " y: array([[nan, nan, nan, ..., nan, nan, nan],\n", + " [nan, nan, nan, ..., nan, nan, nan],\n", + " [nan, nan, nan, ..., nan, nan, nan],...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/Cloud MISR/MISRCOSP-CLDTOT_TAU1.3_9.4_MISR-ANN-global_test.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/Cloud MISR/MISRCOSP-CLDTOT_TAU1.3_9.4_MISR-ANN-global_test.nc\n", + " * var_key: CLDTOT_TAU1.3_9.4_MISR\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 33 / 64800 (0.0509%)\n", + "Max absolute difference: 0.11488724\n", + "Max relative difference: 0.00613982\n", + " x: array([[ 1.693131, 1.693131, 1.693131, ..., 3.310595, 3.310595,\n", + " 3.310595],\n", + " [ 1.94408 , 1.943883, 1.943489, ..., 3.309429, 3.309427,...\n", + " y: array([[ 1.693131, 1.693131, 1.693131, ..., 3.310595, 3.310595,\n", + " 3.310595],\n", + " [ 1.944079, 1.943883, 1.943489, ..., 3.309429, 3.309428,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/Cloud MISR/MISRCOSP-CLDTOT_TAU1.3_MISR-ANN-global_test.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/Cloud MISR/MISRCOSP-CLDTOT_TAU1.3_MISR-ANN-global_test.nc\n", + " * var_key: CLDTOT_TAU1.3_MISR\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 30 / 64800 (0.0463%)\n", + "Max absolute difference: 0.11487579\n", + "Max relative difference: 0.00290628\n", + " x: array([[ 1.696183, 1.696183, 1.696183, ..., 3.3167 , 3.3167 ,\n", + " 3.3167 ],\n", + " [ 1.945352, 1.945156, 1.944765, ..., 3.320152, 3.320158,...\n", + " y: array([[ 1.696183, 1.696183, 1.696183, ..., 3.3167 , 3.3167 ,\n", + " 3.3167 ],\n", + " [ 1.945352, 1.945157, 1.944765, ..., 3.320152, 3.320158,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5/ERA5-NET_FLUX_SRF-ANN-global_test.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/ERA5/ERA5-NET_FLUX_SRF-ANN-global_test.nc\n", + " * var_key: NET_FLUX_SRF\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 194 / 64800 (0.299%)\n", + "Max absolute difference: 3.7033797e-05\n", + "Max relative difference: 0.12149699\n", + " x: array([[-0.169821, -0.169821, -0.169821, ..., -0.364244, -0.364244,\n", + " -0.364244],\n", + " [-0.201356, -0.201327, -0.201281, ..., -0.330032, -0.329979,...\n", + " y: array([[-0.169821, -0.169821, -0.169821, ..., -0.364244, -0.364244,\n", + " -0.364244],\n", + " [-0.201356, -0.201328, -0.201281, ..., -0.330033, -0.329979,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5/ERA5-OMEGA-200-ANN-global_test.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/ERA5/ERA5-OMEGA-200-ANN-global_test.nc\n", + " * var_key: OMEGA\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 1 / 64800 (0.00154%)\n", + "Max absolute difference: 9.84166527e-06\n", + "Max relative difference: 0.00094765\n", + " x: array([[1.190626, 1.190626, 1.190626, ..., 0.516767, 0.516767, 0.516767],\n", + " [1.267546, 1.267486, 1.267367, ..., 0.859722, 0.860258, 0.860526],\n", + " [1.321632, 1.321632, 1.321632, ..., 1.10376 , 1.10376 , 1.10376 ],...\n", + " y: array([[1.190626, 1.190626, 1.190626, ..., 0.516767, 0.516767, 0.516767],\n", + " [1.267546, 1.267486, 1.267367, ..., 0.859722, 0.860258, 0.860526],\n", + " [1.321632, 1.321632, 1.321632, ..., 1.10376 , 1.10376 , 1.10376 ],...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5/ERA5-OMEGA-500-ANN-global_test.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/ERA5/ERA5-OMEGA-500-ANN-global_test.nc\n", + " * var_key: OMEGA\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 3 / 64800 (0.00463%)\n", + "Max absolute difference: 2.88457862e-05\n", + "Max relative difference: 0.00474639\n", + " x: array([[2.793445, 2.793445, 2.793445, ..., 2.021953, 2.021953, 2.021953],\n", + " [3.328145, 3.327742, 3.326934, ..., 5.38816 , 5.393232, 5.395765],\n", + " [3.688833, 3.688833, 3.688833, ..., 7.626963, 7.626963, 7.626963],...\n", + " y: array([[2.793444, 2.793444, 2.793444, ..., 2.021952, 2.021952, 2.021952],\n", + " [3.328145, 3.327742, 3.326934, ..., 5.388161, 5.393232, 5.395765],\n", + " [3.688833, 3.688833, 3.688833, ..., 7.626963, 7.626963, 7.626963],...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5/ERA5-OMEGA-850-ANN-global_test.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/ERA5/ERA5-OMEGA-850-ANN-global_test.nc\n", + " * var_key: OMEGA\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 23 / 64800 (0.0355%)\n", + "Max absolute difference: 0.00080873\n", + "Max relative difference: 0.00474267\n", + " x: array([[ nan, nan, nan, ..., nan, nan,\n", + " nan],\n", + " [ nan, nan, nan, ..., nan, nan,...\n", + " y: array([[ nan, nan, nan, ..., nan, nan,\n", + " nan],\n", + " [ nan, nan, nan, ..., nan, nan,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5/ERA5-TAUXY-ANN-ocean_ref.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/ERA5/ERA5-TAUXY-ANN-ocean_ref.nc\n", + " * var_key: TAUXY\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "x and y nan location mismatch:\n", + " x: array([[nan, nan, nan, ..., nan, nan, nan],\n", + " [nan, nan, nan, ..., nan, nan, nan],\n", + " [nan, nan, nan, ..., nan, nan, nan],...\n", + " y: array([[nan, nan, nan, ..., nan, nan, nan],\n", + " [nan, nan, nan, ..., nan, nan, nan],\n", + " [nan, nan, nan, ..., nan, nan, nan],...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5/ERA5-TREFHT-ANN-global_ref.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/ERA5/ERA5-TREFHT-ANN-global_ref.nc\n", + " * var_key: TREFHT\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 1038240 / 1038240 (100%)\n", + "Max absolute difference: 83875.08007202\n", + "Max relative difference: 1.35825067e+09\n", + " x: array([[-62245.93 , -62245.93 , -62245.93 , ..., -62245.93 , -62245.93 ,\n", + " -62245.93 ],\n", + " [-62364.133, -62364.445, -62364.746, ..., -62363.64 , -62363.8 ,...\n", + " y: array([[-45.43447 , -45.43447 , -45.43447 , ..., -45.43447 , -45.43447 ,\n", + " -45.43447 ],\n", + " [-45.000128, -44.998984, -44.997885, ..., -45.001944, -45.001349,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5/ERA5-TREFHT-ANN-global_test.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/ERA5/ERA5-TREFHT-ANN-global_test.nc\n", + " * var_key: TREFHT\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 64800 / 64800 (100%)\n", + "Max absolute difference: 83124.91185913\n", + "Max relative difference: 6.4338203e+08\n", + " x: array([[-61204.426, -61204.426, -61204.426, ..., -61941.594, -61941.594,\n", + " -61941.594],\n", + " [-61493.043, -61492.82 , -61492.367, ..., -62273.367, -62273.883,...\n", + " y: array([[-49.26142 , -49.26142 , -49.26142 , ..., -46.552725, -46.552725,\n", + " -46.552725],\n", + " [-48.200903, -48.201727, -48.203391, ..., -45.333655, -45.331747,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5/ERA5-TREFHT-ANN-land_ref.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/ERA5/ERA5-TREFHT-ANN-land_ref.nc\n", + " * var_key: TREFHT\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "x and y nan location mismatch:\n", + " x: array([[ nan, nan, nan, ..., nan, nan,\n", + " nan],\n", + " [ nan, nan, nan, ..., nan, nan,...\n", + " y: array([[-45.43447 , -45.43447 , -45.43447 , ..., -45.43447 , -45.43447 ,\n", + " -45.43447 ],\n", + " [-45.000128, -44.998984, -44.997885, ..., -45.001944, -45.001349,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5/ERA5-TREFHT-ANN-land_test.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/ERA5/ERA5-TREFHT-ANN-land_test.nc\n", + " * var_key: TREFHT\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 21003 / 64800 (32.4%)\n", + "Max absolute difference: 83124.91185913\n", + "Max relative difference: 6.4338203e+08\n", + " x: array([[-61204.426, -61204.426, -61204.426, ..., -61941.594, -61941.594,\n", + " -61941.594],\n", + " [-61493.043, -61492.82 , -61492.367, ..., -62273.367, -62273.883,...\n", + " y: array([[-49.26142 , -49.26142 , -49.26142 , ..., -46.552725, -46.552725,\n", + " -46.552725],\n", + " [-48.200903, -48.201727, -48.203391, ..., -45.333655, -45.331747,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5/ERA5-U-850-ANN-global_test.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/ERA5/ERA5-U-850-ANN-global_test.nc\n", + " * var_key: U\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 22 / 64800 (0.034%)\n", + "Max absolute difference: 2.11642471e-05\n", + "Max relative difference: 0.0052301\n", + " x: array([[ nan, nan, nan, ..., nan, nan,\n", + " nan],\n", + " [ nan, nan, nan, ..., nan, nan,...\n", + " y: array([[ nan, nan, nan, ..., nan, nan,\n", + " nan],\n", + " [ nan, nan, nan, ..., nan, nan,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/GPCP_OAFLux/GPCP_OAFLux-PminusE-ANN-global_test.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/GPCP_OAFLux/GPCP_OAFLux-PminusE-ANN-global_test.nc\n", + " * var_key: PminusE\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 47 / 64800 (0.0725%)\n", + "Max absolute difference: 1.8531864e-06\n", + "Max relative difference: 0.00244282\n", + " x: array([[0.154003, 0.154003, 0.154003, ..., 0.188599, 0.188599, 0.188599],\n", + " [0.13969 , 0.139701, 0.139724, ..., 0.162309, 0.162268, 0.162247],\n", + " [0.12946 , 0.12946 , 0.12946 , ..., 0.143414, 0.143414, 0.143414],...\n", + " y: array([[0.154003, 0.154003, 0.154003, ..., 0.188599, 0.188599, 0.188599],\n", + " [0.13969 , 0.139701, 0.139724, ..., 0.162309, 0.162268, 0.162247],\n", + " [0.12946 , 0.12946 , 0.12946 , ..., 0.143414, 0.143414, 0.143414],...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2/MERRA2-NET_FLUX_SRF-ANN-global_test.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/MERRA2/MERRA2-NET_FLUX_SRF-ANN-global_test.nc\n", + " * var_key: NET_FLUX_SRF\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 194 / 64800 (0.299%)\n", + "Max absolute difference: 3.7033797e-05\n", + "Max relative difference: 0.12149699\n", + " x: array([[-0.169821, -0.169821, -0.169821, ..., -0.364244, -0.364244,\n", + " -0.364244],\n", + " [-0.201356, -0.201327, -0.201281, ..., -0.330032, -0.329979,...\n", + " y: array([[-0.169821, -0.169821, -0.169821, ..., -0.364244, -0.364244,\n", + " -0.364244],\n", + " [-0.201356, -0.201328, -0.201281, ..., -0.330033, -0.329979,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2/MERRA2-OMEGA-200-ANN-global_test.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/MERRA2/MERRA2-OMEGA-200-ANN-global_test.nc\n", + " * var_key: OMEGA\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 1 / 64800 (0.00154%)\n", + "Max absolute difference: 9.84166527e-06\n", + "Max relative difference: 0.00094765\n", + " x: array([[1.190626, 1.190626, 1.190626, ..., 0.516767, 0.516767, 0.516767],\n", + " [1.267546, 1.267486, 1.267367, ..., 0.859722, 0.860258, 0.860526],\n", + " [1.321632, 1.321632, 1.321632, ..., 1.10376 , 1.10376 , 1.10376 ],...\n", + " y: array([[1.190626, 1.190626, 1.190626, ..., 0.516767, 0.516767, 0.516767],\n", + " [1.267546, 1.267486, 1.267367, ..., 0.859722, 0.860258, 0.860526],\n", + " [1.321632, 1.321632, 1.321632, ..., 1.10376 , 1.10376 , 1.10376 ],...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2/MERRA2-OMEGA-500-ANN-global_test.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/MERRA2/MERRA2-OMEGA-500-ANN-global_test.nc\n", + " * var_key: OMEGA\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 3 / 64800 (0.00463%)\n", + "Max absolute difference: 2.88457862e-05\n", + "Max relative difference: 0.00474639\n", + " x: array([[2.793445, 2.793445, 2.793445, ..., 2.021953, 2.021953, 2.021953],\n", + " [3.328145, 3.327742, 3.326934, ..., 5.38816 , 5.393232, 5.395765],\n", + " [3.688833, 3.688833, 3.688833, ..., 7.626963, 7.626963, 7.626963],...\n", + " y: array([[2.793444, 2.793444, 2.793444, ..., 2.021952, 2.021952, 2.021952],\n", + " [3.328145, 3.327742, 3.326934, ..., 5.388161, 5.393232, 5.395765],\n", + " [3.688833, 3.688833, 3.688833, ..., 7.626963, 7.626963, 7.626963],...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2/MERRA2-OMEGA-850-ANN-global_test.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/MERRA2/MERRA2-OMEGA-850-ANN-global_test.nc\n", + " * var_key: OMEGA\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 23 / 64800 (0.0355%)\n", + "Max absolute difference: 0.00080873\n", + "Max relative difference: 0.00474267\n", + " x: array([[ nan, nan, nan, ..., nan, nan,\n", + " nan],\n", + " [ nan, nan, nan, ..., nan, nan,...\n", + " y: array([[ nan, nan, nan, ..., nan, nan,\n", + " nan],\n", + " [ nan, nan, nan, ..., nan, nan,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2/MERRA2-TAUXY-ANN-ocean_ref.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/MERRA2/MERRA2-TAUXY-ANN-ocean_ref.nc\n", + " * var_key: TAUXY\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "x and y nan location mismatch:\n", + " x: array([[nan, nan, nan, ..., nan, nan, nan],\n", + " [nan, nan, nan, ..., nan, nan, nan],\n", + " [nan, nan, nan, ..., nan, nan, nan],...\n", + " y: array([[nan, nan, nan, ..., nan, nan, nan],\n", + " [nan, nan, nan, ..., nan, nan, nan],\n", + " [nan, nan, nan, ..., nan, nan, nan],...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2/MERRA2-TREFHT-ANN-global_ref.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/MERRA2/MERRA2-TREFHT-ANN-global_ref.nc\n", + " * var_key: TREFHT\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 207936 / 207936 (100%)\n", + "Max absolute difference: 83611.57634888\n", + "Max relative difference: 2.26375325e+08\n", + " x: array([[-61046.71 , -61046.71 , -61046.71 , ..., -61046.71 , -61046.71 ,\n", + " -61046.71 ],\n", + " [-61170.004, -61174.113, -61178.246, ..., -61157.805, -61161.85 ,...\n", + " y: array([[-49.840933, -49.840933, -49.840933, ..., -49.840933, -49.840933,\n", + " -49.840933],\n", + " [-49.3879 , -49.372794, -49.357611, ..., -49.432715, -49.417853,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2/MERRA2-TREFHT-ANN-global_test.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/MERRA2/MERRA2-TREFHT-ANN-global_test.nc\n", + " * var_key: TREFHT\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 64800 / 64800 (100%)\n", + "Max absolute difference: 83124.91185913\n", + "Max relative difference: 6.4338203e+08\n", + " x: array([[-61204.426, -61204.426, -61204.426, ..., -61941.594, -61941.594,\n", + " -61941.594],\n", + " [-61493.043, -61492.82 , -61492.367, ..., -62273.367, -62273.883,...\n", + " y: array([[-49.26142 , -49.26142 , -49.26142 , ..., -46.552725, -46.552725,\n", + " -46.552725],\n", + " [-48.200903, -48.201727, -48.203391, ..., -45.333655, -45.331747,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2/MERRA2-TREFHT-ANN-land_ref.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/MERRA2/MERRA2-TREFHT-ANN-land_ref.nc\n", + " * var_key: TREFHT\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "x and y nan location mismatch:\n", + " x: array([[ nan, nan, nan, ..., nan, nan,\n", + " nan],\n", + " [ nan, -61174.113, -61178.246, ..., -61157.805, -61161.85 ,...\n", + " y: array([[-49.840933, -49.840933, -49.840933, ..., -49.840933, -49.840933,\n", + " -49.840933],\n", + " [-49.3879 , -49.372794, -49.357611, ..., -49.432715, -49.417853,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2/MERRA2-TREFHT-ANN-land_test.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/MERRA2/MERRA2-TREFHT-ANN-land_test.nc\n", + " * var_key: TREFHT\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 21003 / 64800 (32.4%)\n", + "Max absolute difference: 83124.91185913\n", + "Max relative difference: 6.4338203e+08\n", + " x: array([[-61204.426, -61204.426, -61204.426, ..., -61941.594, -61941.594,\n", + " -61941.594],\n", + " [-61493.043, -61492.82 , -61492.367, ..., -62273.367, -62273.883,...\n", + " y: array([[-49.26142 , -49.26142 , -49.26142 , ..., -46.552725, -46.552725,\n", + " -46.552725],\n", + " [-48.200903, -48.201727, -48.203391, ..., -45.333655, -45.331747,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2/MERRA2-TREFMNAV-ANN-global_ref.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/MERRA2/MERRA2-TREFMNAV-ANN-global_ref.nc\n", + " * var_key: TREFMNAV\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 207936 / 207936 (100%)\n", + "Max absolute difference: 82394.71517334\n", + "Max relative difference: 3.94330466e+08\n", + " x: array([[-60563.527, -60563.527, -60563.527, ..., -60563.527, -60563.527,\n", + " -60563.527],\n", + " [-60693.86 , -60697.957, -60702.055, ..., -60681.656, -60685.69 ,...\n", + " y: array([[-51.616354, -51.616354, -51.616354, ..., -51.616354, -51.616354,\n", + " -51.616354],\n", + " [-51.137457, -51.122412, -51.107352, ..., -51.182303, -51.167471,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2/MERRA2-TREFMNAV-ANN-global_test.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/MERRA2/MERRA2-TREFMNAV-ANN-global_test.nc\n", + " * var_key: TREFMNAV\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 64800 / 64800 (100%)\n", + "Max absolute difference: 82280.65697632\n", + "Max relative difference: 46304262.81752843\n", + " x: array([[-60954.25 , -60954.25 , -60954.25 , ..., -61677.54 , -61677.54 ,\n", + " -61677.54 ],\n", + " [-61217.457, -61217.25 , -61216.836, ..., -61966.824, -61967.28 ,...\n", + " y: array([[-50.18067 , -50.18067 , -50.18067 , ..., -47.522986, -47.522986,\n", + " -47.522986],\n", + " [-49.213538, -49.214285, -49.215811, ..., -46.460028, -46.45835 ,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2/MERRA2-TREFMXAV-ANN-global_ref.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/MERRA2/MERRA2-TREFMXAV-ANN-global_ref.nc\n", + " * var_key: TREFMXAV\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 207936 / 207936 (100%)\n", + "Max absolute difference: 85458.25106201\n", + "Max relative difference: 3.94330466e+08\n", + " x: array([[-61563.195, -61563.195, -61563.195, ..., -61563.195, -61563.195,\n", + " -61563.195],\n", + " [-61667.758, -61671.69 , -61675.668, ..., -61656.164, -61660.004,...\n", + " y: array([[-47.943137, -47.943137, -47.943137, ..., -47.943137, -47.943137,\n", + " -47.943137],\n", + " [-47.55892 , -47.54447 , -47.529868, ..., -47.601523, -47.587424,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2/MERRA2-TREFMXAV-ANN-global_test.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/MERRA2/MERRA2-TREFMXAV-ANN-global_test.nc\n", + " * var_key: TREFMXAV\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 64800 / 64800 (100%)\n", + "Max absolute difference: 84845.40587769\n", + "Max relative difference: 1.6084517e+08\n", + " x: array([[-61434.605, -61434.605, -61434.605, ..., -62216.88 , -62216.88 ,\n", + " -62216.88 ],\n", + " [-61740.117, -61739.875, -61739.4 , ..., -62576.06 , -62576.625,...\n", + " y: array([[-48.415625, -48.415625, -48.415625, ..., -45.541205, -45.541205,\n", + " -45.541205],\n", + " [-47.293051, -47.293936, -47.295691, ..., -44.221426, -44.219351,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2/MERRA2-U-850-ANN-global_test.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/MERRA2/MERRA2-U-850-ANN-global_test.nc\n", + " * var_key: U\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 22 / 64800 (0.034%)\n", + "Max absolute difference: 2.11642471e-05\n", + "Max relative difference: 0.0052301\n", + " x: array([[ nan, nan, nan, ..., nan, nan,\n", + " nan],\n", + " [ nan, nan, nan, ..., nan, nan,...\n", + " y: array([[ nan, nan, nan, ..., nan, nan,\n", + " nan],\n", + " [ nan, nan, nan, ..., nan, nan,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/SST_CL_HadISST/HadISST_CL-SST-ANN-global_test.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/SST_CL_HadISST/HadISST_CL-SST-ANN-global_test.nc\n", + " * var_key: SST\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 30903 / 64800 (47.7%)\n", + "Max absolute difference: 82948.35140381\n", + "Max relative difference: 19434696.83454309\n", + " x: array([[nan, nan, nan, ..., nan, nan, nan],\n", + " [nan, nan, nan, ..., nan, nan, nan],\n", + " [nan, nan, nan, ..., nan, nan, nan],...\n", + " y: array([[nan, nan, nan, ..., nan, nan, nan],\n", + " [nan, nan, nan, ..., nan, nan, nan],\n", + " [nan, nan, nan, ..., nan, nan, nan],...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/SST_HadISST/HadISST-SST-ANN-global_test.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/SST_HadISST/HadISST-SST-ANN-global_test.nc\n", + " * var_key: SST\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 30903 / 64800 (47.7%)\n", + "Max absolute difference: 82948.35140381\n", + "Max relative difference: 19434696.83454309\n", + " x: array([[nan, nan, nan, ..., nan, nan, nan],\n", + " [nan, nan, nan, ..., nan, nan, nan],\n", + " [nan, nan, nan, ..., nan, nan, nan],...\n", + " y: array([[nan, nan, nan, ..., nan, nan, nan],\n", + " [nan, nan, nan, ..., nan, nan, nan],\n", + " [nan, nan, nan, ..., nan, nan, nan],...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/SST_PD_HadISST/HadISST_PD-SST-ANN-global_test.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/SST_PD_HadISST/HadISST_PD-SST-ANN-global_test.nc\n", + " * var_key: SST\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 30903 / 64800 (47.7%)\n", + "Max absolute difference: 82948.35140381\n", + "Max relative difference: 19434696.83454309\n", + " x: array([[nan, nan, nan, ..., nan, nan, nan],\n", + " [nan, nan, nan, ..., nan, nan, nan],\n", + " [nan, nan, nan, ..., nan, nan, nan],...\n", + " y: array([[nan, nan, nan, ..., nan, nan, nan],\n", + " [nan, nan, nan, ..., nan, nan, nan],\n", + " [nan, nan, nan, ..., nan, nan, nan],...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/SST_PI_HadISST/HadISST_PI-SST-ANN-global_test.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/SST_PI_HadISST/HadISST_PI-SST-ANN-global_test.nc\n", + " * var_key: SST\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 30903 / 64800 (47.7%)\n", + "Max absolute difference: 82948.35140381\n", + "Max relative difference: 19434696.83454309\n", + " x: array([[nan, nan, nan, ..., nan, nan, nan],\n", + " [nan, nan, nan, ..., nan, nan, nan],\n", + " [nan, nan, nan, ..., nan, nan, nan],...\n", + " y: array([[nan, nan, nan, ..., nan, nan, nan],\n", + " [nan, nan, nan, ..., nan, nan, nan],\n", + " [nan, nan, nan, ..., nan, nan, nan],...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/meridional_mean_2d/MERRA2/MERRA2-OMEGA-ANN-global_ref.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/meridional_mean_2d/MERRA2/MERRA2-OMEGA-ANN-global_ref.nc\n", + " * var_key: OMEGA\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 1 / 9792 (0.0102%)\n", + "Max absolute difference: 4.45382088e-07\n", + "Max relative difference: 0.00011014\n", + " x: array([[0.914233, 0.906507, 0.900358, ..., 0.954717, 0.945675, 0.928962],\n", + " [1.617818, 1.601587, 1.580476, ..., 1.631384, 1.64521 , 1.638424],\n", + " [2.321404, 2.296666, 2.260593, ..., 2.308052, 2.344744, 2.347885],...\n", + " y: array([[0.914233, 0.906507, 0.900358, ..., 0.954717, 0.945675, 0.928962],\n", + " [1.617818, 1.601587, 1.580476, ..., 1.631384, 1.64521 , 1.638424],\n", + " [2.321404, 2.296666, 2.260593, ..., 2.308052, 2.344744, 2.347885],...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/CRU_IPCC/CRU-TREFHT-ANN-polar_N_ref.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/CRU_IPCC/CRU-TREFHT-ANN-polar_N_ref.nc\n", + " * var_key: TREFHT\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 5960 / 14400 (41.4%)\n", + "Max absolute difference: 77377.12706909\n", + "Max relative difference: 36060017.51877778\n", + " x: array([[ nan, nan, -77257.016, ..., nan, nan,\n", + " nan],\n", + " [-77250.766, nan, nan, ..., -77188.98 , -77163.46 ,...\n", + " y: array([[ nan, nan, 9.722925, ..., nan, nan, nan],\n", + " [9.699976, nan, nan, ..., 9.472925, 9.379175, 9.408319],\n", + " [9.145807, 9.514581, nan, ..., 8.960443, 9.150018, 9.085413],...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/CRU_IPCC/CRU-TREFHT-ANN-polar_N_test.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/CRU_IPCC/CRU-TREFHT-ANN-polar_N_test.nc\n", + " * var_key: TREFHT\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 14400 / 14400 (100%)\n", + "Max absolute difference: 77922.19286499\n", + "Max relative difference: 6.4338203e+08\n", + " x: array([[-77869.86 , -77827.33 , -77638.81 , ..., -77882.29 , -77903.95 ,\n", + " -77910.07 ],\n", + " [-77760.21 , -77765.42 , -77806.35 , ..., -77432.18 , -77536.555,...\n", + " y: array([[ 11.974786, 11.818506, 11.125818, ..., 12.020471, 12.100061,\n", + " 12.122552],\n", + " [ 11.571893, 11.591058, 11.741449, ..., 10.366571, 10.750085,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/ERA5/ERA5-TREFHT-ANN-polar_N_ref.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/ERA5/ERA5-TREFHT-ANN-polar_N_ref.nc\n", + " * var_key: TREFHT\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 231840 / 231840 (100%)\n", + "Max absolute difference: 78029.71932373\n", + "Max relative difference: 1.11129542e+09\n", + " x: array([[-77787.836, -77750.71 , -77745.05 , ..., -77794.95 , -77794.83 ,\n", + " -77791.77 ],\n", + " [-77770.125, -77763.695, -77758.03 , ..., -77782.84 , -77777.97 ,...\n", + " y: array([[ 11.673395, 11.536981, 11.516168, ..., 11.699548, 11.699091,\n", + " 11.68786 ],\n", + " [ 11.608331, 11.584711, 11.563898, ..., 11.655054, 11.63714 ,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/ERA5/ERA5-TREFHT-ANN-polar_N_test.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/ERA5/ERA5-TREFHT-ANN-polar_N_test.nc\n", + " * var_key: TREFHT\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 14400 / 14400 (100%)\n", + "Max absolute difference: 77922.19286499\n", + "Max relative difference: 6.4338203e+08\n", + " x: array([[-77869.86 , -77827.33 , -77638.81 , ..., -77882.29 , -77903.95 ,\n", + " -77910.07 ],\n", + " [-77760.21 , -77765.42 , -77806.35 , ..., -77432.18 , -77536.555,...\n", + " y: array([[ 11.974786, 11.818506, 11.125818, ..., 12.020471, 12.100061,\n", + " 12.122552],\n", + " [ 11.571893, 11.591058, 11.741449, ..., 10.366571, 10.750085,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/ERA5/ERA5-TREFHT-ANN-polar_S_ref.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/ERA5/ERA5-TREFHT-ANN-polar_S_ref.nc\n", + " * var_key: TREFHT\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 203040 / 203040 (100%)\n", + "Max absolute difference: 76367.19533691\n", + "Max relative difference: 1.35825067e+09\n", + " x: array([[-62245.93 , -62245.93 , -62245.93 , ..., -62245.93 , -62245.93 ,\n", + " -62245.93 ],\n", + " [-62364.133, -62364.445, -62364.746, ..., -62363.64 , -62363.8 ,...\n", + " y: array([[-45.43447 , -45.43447 , -45.43447 , ..., -45.43447 , -45.43447 ,\n", + " -45.43447 ],\n", + " [-45.000128, -44.998984, -44.997885, ..., -45.001944, -45.001349,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/ERA5/ERA5-TREFHT-ANN-polar_S_test.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/ERA5/ERA5-TREFHT-ANN-polar_S_test.nc\n", + " * var_key: TREFHT\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 12600 / 12600 (100%)\n", + "Max absolute difference: 76720.69262085\n", + "Max relative difference: 53381288.68472113\n", + " x: array([[-61204.426, -61204.426, -61204.426, ..., -61941.594, -61941.594,\n", + " -61941.594],\n", + " [-61493.043, -61492.82 , -61492.367, ..., -62273.367, -62273.883,...\n", + " y: array([[-49.26142 , -49.26142 , -49.26142 , ..., -46.552725, -46.552725,\n", + " -46.552725],\n", + " [-48.200903, -48.201727, -48.203391, ..., -45.333655, -45.331747,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/ERA5/ERA5-U-850-ANN-polar_N_test.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/ERA5/ERA5-U-850-ANN-polar_N_test.nc\n", + " * var_key: U\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 4 / 14400 (0.0278%)\n", + "Max absolute difference: 1.0866463e-05\n", + "Max relative difference: 0.00062261\n", + " x: array([[ 5.20822 , 5.208802, 5.213029, ..., 5.280987, 5.219766,\n", + " 5.206481],\n", + " [ 5.193393, 5.201545, 5.26418 , ..., 5.211428, 5.168795,...\n", + " y: array([[ 5.20822 , 5.208802, 5.213029, ..., 5.280987, 5.219766,\n", + " 5.206481],\n", + " [ 5.193392, 5.201545, 5.26418 , ..., 5.211428, 5.168795,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/ERA5/ERA5-U-850-ANN-polar_S_test.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/ERA5/ERA5-U-850-ANN-polar_S_test.nc\n", + " * var_key: U\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 4 / 12600 (0.0317%)\n", + "Max absolute difference: 2.11642471e-05\n", + "Max relative difference: 0.00247758\n", + " x: array([[ nan, nan, nan, ..., nan, nan,\n", + " nan],\n", + " [ nan, nan, nan, ..., nan, nan,...\n", + " y: array([[ nan, nan, nan, ..., nan, nan,\n", + " nan],\n", + " [ nan, nan, nan, ..., nan, nan,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2/MERRA2-TREFHT-ANN-polar_N_ref.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/MERRA2/MERRA2-TREFHT-ANN-polar_N_ref.nc\n", + " * var_key: TREFHT\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 46656 / 46656 (100%)\n", + "Max absolute difference: 78134.14852295\n", + "Max relative difference: 1.12149385e+08\n", + " x: array([[-77785.266, -77655.94 , -77468.305, ..., -77852.45 , -77848.44 ,\n", + " -77837.88 ],\n", + " [-77730.47 , -77729.805, -77666.375, ..., -77775.984, -77774.41 ,...\n", + " y: array([[ 11.663965, 11.188745, 10.499292, ..., 11.910822, 11.896082,\n", + " 11.857294],\n", + " [ 11.46261 , 11.460168, 11.227106, ..., 11.629846, 11.624048,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2/MERRA2-TREFHT-ANN-polar_N_test.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/MERRA2/MERRA2-TREFHT-ANN-polar_N_test.nc\n", + " * var_key: TREFHT\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 14400 / 14400 (100%)\n", + "Max absolute difference: 77922.19286499\n", + "Max relative difference: 6.4338203e+08\n", + " x: array([[-77869.86 , -77827.33 , -77638.81 , ..., -77882.29 , -77903.95 ,\n", + " -77910.07 ],\n", + " [-77760.21 , -77765.42 , -77806.35 , ..., -77432.18 , -77536.555,...\n", + " y: array([[ 11.974786, 11.818506, 11.125818, ..., 12.020471, 12.100061,\n", + " 12.122552],\n", + " [ 11.571893, 11.591058, 11.741449, ..., 10.366571, 10.750085,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2/MERRA2-TREFHT-ANN-polar_S_ref.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/MERRA2/MERRA2-TREFHT-ANN-polar_S_ref.nc\n", + " * var_key: TREFHT\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 40896 / 40896 (100%)\n", + "Max absolute difference: 76320.7675415\n", + "Max relative difference: 2.26375325e+08\n", + " x: array([[-61046.71 , -61046.71 , -61046.71 , ..., -61046.71 , -61046.71 ,\n", + " -61046.71 ],\n", + " [-61170.004, -61174.113, -61178.246, ..., -61157.805, -61161.85 ,...\n", + " y: array([[-49.840933, -49.840933, -49.840933, ..., -49.840933, -49.840933,\n", + " -49.840933],\n", + " [-49.3879 , -49.372794, -49.357611, ..., -49.432715, -49.417853,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2/MERRA2-TREFHT-ANN-polar_S_test.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/MERRA2/MERRA2-TREFHT-ANN-polar_S_test.nc\n", + " * var_key: TREFHT\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 12600 / 12600 (100%)\n", + "Max absolute difference: 76720.69262085\n", + "Max relative difference: 53381288.68472113\n", + " x: array([[-61204.426, -61204.426, -61204.426, ..., -61941.594, -61941.594,\n", + " -61941.594],\n", + " [-61493.043, -61492.82 , -61492.367, ..., -62273.367, -62273.883,...\n", + " y: array([[-49.26142 , -49.26142 , -49.26142 , ..., -46.552725, -46.552725,\n", + " -46.552725],\n", + " [-48.200903, -48.201727, -48.203391, ..., -45.333655, -45.331747,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2/MERRA2-TREFMNAV-ANN-polar_N_ref.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/MERRA2/MERRA2-TREFMNAV-ANN-polar_N_ref.nc\n", + " * var_key: TREFMNAV\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 46656 / 46656 (100%)\n", + "Max absolute difference: 77951.02498779\n", + "Max relative difference: 93314637.17059256\n", + " x: array([[-77491.98 , -77179.875, -76711.945, ..., -77619.35 , -77615.77 ,\n", + " -77601.234],\n", + " [-77396.43 , -77421.625, -77296.664, ..., -77382.38 , -77438.15 ,...\n", + " y: array([[ 10.586298, 9.439478, 7.720117, ..., 11.054315, 11.041162,\n", + " 10.987756],\n", + " [ 10.235193, 10.327783, 9.868616, ..., 10.183588, 10.388483,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2/MERRA2-TREFMNAV-ANN-polar_N_test.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/MERRA2/MERRA2-TREFMNAV-ANN-polar_N_test.nc\n", + " * var_key: TREFMNAV\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 14400 / 14400 (100%)\n", + "Max absolute difference: 77657.08950195\n", + "Max relative difference: 25413973.22057105\n", + " x: array([[-77327.055, -77191.45 , -76589.03 , ..., -77472.19 , -77494.98 ,\n", + " -77504.18 ],\n", + " [-77125.78 , -77155.836, -77391.92 , ..., -76504.74 , -76567.37 ,...\n", + " y: array([[ 9.98028 , 9.482019, 7.268457, ..., 10.513574, 10.597314,\n", + " 10.631128],\n", + " [ 9.240717, 9.35116 , 10.218652, ..., 6.958734, 7.188867,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2/MERRA2-TREFMNAV-ANN-polar_S_ref.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/MERRA2/MERRA2-TREFMNAV-ANN-polar_S_ref.nc\n", + " * var_key: TREFMNAV\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 40896 / 40896 (100%)\n", + "Max absolute difference: 76047.21923218\n", + "Max relative difference: 3.94330466e+08\n", + " x: array([[-60563.527, -60563.527, -60563.527, ..., -60563.527, -60563.527,\n", + " -60563.527],\n", + " [-60693.86 , -60697.957, -60702.055, ..., -60681.656, -60685.69 ,...\n", + " y: array([[-51.616354, -51.616354, -51.616354, ..., -51.616354, -51.616354,\n", + " -51.616354],\n", + " [-51.137457, -51.122412, -51.107352, ..., -51.182303, -51.167471,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2/MERRA2-TREFMNAV-ANN-polar_S_test.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/MERRA2/MERRA2-TREFMNAV-ANN-polar_S_test.nc\n", + " * var_key: TREFMNAV\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 12600 / 12600 (100%)\n", + "Max absolute difference: 76506.90212402\n", + "Max relative difference: 46304262.81752843\n", + " x: array([[-60954.25 , -60954.25 , -60954.25 , ..., -61677.54 , -61677.54 ,\n", + " -61677.54 ],\n", + " [-61217.457, -61217.25 , -61216.836, ..., -61966.824, -61967.28 ,...\n", + " y: array([[-50.18067 , -50.18067 , -50.18067 , ..., -47.522986, -47.522986,\n", + " -47.522986],\n", + " [-49.213538, -49.214285, -49.215811, ..., -46.460028, -46.45835 ,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2/MERRA2-TREFMXAV-ANN-polar_N_ref.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/MERRA2/MERRA2-TREFMXAV-ANN-polar_N_ref.nc\n", + " * var_key: TREFMXAV\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 46656 / 46656 (100%)\n", + "Max absolute difference: 78576.22005615\n", + "Max relative difference: 3.94330466e+08\n", + " x: array([[-78080.24 , -78131.84 , -78248.96 , ..., -78087.54 , -78094.445,\n", + " -78090.65 ],\n", + " [-78045.5 , -78029.945, -78032.375, ..., -78138.375, -78087.05 ,...\n", + " y: array([[ 12.747827, 12.937433, 13.367792, ..., 12.774652, 12.800012,\n", + " 12.786066],\n", + " [ 12.620172, 12.563013, 12.571954, ..., 12.96145 , 12.772852,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2/MERRA2-TREFMXAV-ANN-polar_N_test.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/MERRA2/MERRA2-TREFMXAV-ANN-polar_N_test.nc\n", + " * var_key: TREFMXAV\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 14400 / 14400 (100%)\n", + "Max absolute difference: 78596.79537354\n", + "Max relative difference: 69455708.09237923\n", + " x: array([[-78390.71 , -78425.64 , -78582.2 , ..., -78278.99 , -78299.64 ,\n", + " -78303.47 ],\n", + " [-78334.6 , -78319.8 , -78203.55 , ..., -78216.76 , -78346.84 ,...\n", + " y: array([[ 13.888635, 14.016992, 14.592249, ..., 13.478143, 13.55401 ,\n", + " 13.568079],\n", + " [ 13.682458, 13.628076, 13.200922, ..., 13.249445, 13.727441,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2/MERRA2-TREFMXAV-ANN-polar_S_ref.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/MERRA2/MERRA2-TREFMXAV-ANN-polar_S_ref.nc\n", + " * var_key: TREFMXAV\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 40896 / 40896 (100%)\n", + "Max absolute difference: 76626.8255249\n", + "Max relative difference: 3.5953713e+08\n", + " x: array([[-61563.195, -61563.195, -61563.195, ..., -61563.195, -61563.195,\n", + " -61563.195],\n", + " [-61667.758, -61671.69 , -61675.668, ..., -61656.164, -61660.004,...\n", + " y: array([[-4.794314e+01, -4.794314e+01, -4.794314e+01, ..., -4.794314e+01,\n", + " -4.794314e+01, -4.794314e+01],\n", + " [-4.755892e+01, -4.754447e+01, -4.752987e+01, ..., -4.760152e+01,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2/MERRA2-TREFMXAV-ANN-polar_S_test.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/MERRA2/MERRA2-TREFMXAV-ANN-polar_S_test.nc\n", + " * var_key: TREFMXAV\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 12600 / 12600 (100%)\n", + "Max absolute difference: 76929.72350464\n", + "Max relative difference: 1.6084517e+08\n", + " x: array([[-61434.605, -61434.605, -61434.605, ..., -62216.88 , -62216.88 ,\n", + " -62216.88 ],\n", + " [-61740.117, -61739.875, -61739.4 , ..., -62576.06 , -62576.625,...\n", + " y: array([[-48.415625, -48.415625, -48.415625, ..., -45.541205, -45.541205,\n", + " -45.541205],\n", + " [-47.293051, -47.293936, -47.295691, ..., -44.221426, -44.219351,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2/MERRA2-U-850-ANN-polar_N_test.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/MERRA2/MERRA2-U-850-ANN-polar_N_test.nc\n", + " * var_key: U\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 4 / 14400 (0.0278%)\n", + "Max absolute difference: 1.0866463e-05\n", + "Max relative difference: 0.00062261\n", + " x: array([[ 5.20822 , 5.208802, 5.213029, ..., 5.280987, 5.219766,\n", + " 5.206481],\n", + " [ 5.193393, 5.201545, 5.26418 , ..., 5.211428, 5.168795,...\n", + " y: array([[ 5.20822 , 5.208802, 5.213029, ..., 5.280987, 5.219766,\n", + " 5.206481],\n", + " [ 5.193392, 5.201545, 5.26418 , ..., 5.211428, 5.168795,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2/MERRA2-U-850-ANN-polar_S_test.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/MERRA2/MERRA2-U-850-ANN-polar_S_test.nc\n", + " * var_key: U\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 4 / 12600 (0.0317%)\n", + "Max absolute difference: 2.11642471e-05\n", + "Max relative difference: 0.00247758\n", + " x: array([[ nan, nan, nan, ..., nan, nan,\n", + " nan],\n", + " [ nan, nan, nan, ..., nan, nan,...\n", + " y: array([[ nan, nan, nan, ..., nan, nan,\n", + " nan],\n", + " [ nan, nan, nan, ..., nan, nan,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/SST_CL_HadISST/HadISST_CL-SST-ANN-polar_N_test.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/SST_CL_HadISST/HadISST_CL-SST-ANN-polar_N_test.nc\n", + " * var_key: SST\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 1806 / 14400 (12.5%)\n", + "Max absolute difference: 78016.45198975\n", + "Max relative difference: 43355.88600439\n", + " x: array([[ nan, nan, nan, ..., nan, nan,\n", + " nan],\n", + " [ nan, nan, nan, ..., nan, nan,...\n", + " y: array([[ nan, nan, nan, ..., nan, nan,\n", + " nan],\n", + " [ nan, nan, nan, ..., nan, nan,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/SST_CL_HadISST/HadISST_CL-SST-ANN-polar_S_test.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/SST_CL_HadISST/HadISST_CL-SST-ANN-polar_S_test.nc\n", + " * var_key: SST\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 2375 / 12600 (18.8%)\n", + "Max absolute difference: 76868.96984253\n", + "Max relative difference: 19434696.83454309\n", + " x: array([[ nan, nan, nan, ..., nan, nan,\n", + " nan],\n", + " [ nan, nan, nan, ..., nan, nan,...\n", + " y: array([[ nan, nan, nan, ..., nan, nan, nan],\n", + " [ nan, nan, nan, ..., nan, nan, nan],\n", + " [ nan, nan, nan, ..., nan, nan, nan],...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/SST_PD_HadISST/HadISST_PD-SST-ANN-polar_N_test.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/SST_PD_HadISST/HadISST_PD-SST-ANN-polar_N_test.nc\n", + " * var_key: SST\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 1806 / 14400 (12.5%)\n", + "Max absolute difference: 78016.45198975\n", + "Max relative difference: 43355.88600439\n", + " x: array([[ nan, nan, nan, ..., nan, nan,\n", + " nan],\n", + " [ nan, nan, nan, ..., nan, nan,...\n", + " y: array([[ nan, nan, nan, ..., nan, nan,\n", + " nan],\n", + " [ nan, nan, nan, ..., nan, nan,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/SST_PD_HadISST/HadISST_PD-SST-ANN-polar_S_test.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/SST_PD_HadISST/HadISST_PD-SST-ANN-polar_S_test.nc\n", + " * var_key: SST\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 2375 / 12600 (18.8%)\n", + "Max absolute difference: 76868.96984253\n", + "Max relative difference: 19434696.83454309\n", + " x: array([[ nan, nan, nan, ..., nan, nan,\n", + " nan],\n", + " [ nan, nan, nan, ..., nan, nan,...\n", + " y: array([[ nan, nan, nan, ..., nan, nan, nan],\n", + " [ nan, nan, nan, ..., nan, nan, nan],\n", + " [ nan, nan, nan, ..., nan, nan, nan],...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/SST_PI_HadISST/HadISST_PI-SST-ANN-polar_N_test.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/SST_PI_HadISST/HadISST_PI-SST-ANN-polar_N_test.nc\n", + " * var_key: SST\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 1806 / 14400 (12.5%)\n", + "Max absolute difference: 78016.45198975\n", + "Max relative difference: 43355.88600439\n", + " x: array([[ nan, nan, nan, ..., nan, nan,\n", + " nan],\n", + " [ nan, nan, nan, ..., nan, nan,...\n", + " y: array([[ nan, nan, nan, ..., nan, nan,\n", + " nan],\n", + " [ nan, nan, nan, ..., nan, nan,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/SST_PI_HadISST/HadISST_PI-SST-ANN-polar_S_test.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/SST_PI_HadISST/HadISST_PI-SST-ANN-polar_S_test.nc\n", + " * var_key: SST\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 2375 / 12600 (18.8%)\n", + "Max absolute difference: 76868.96984253\n", + "Max relative difference: 19434696.83454309\n", + " x: array([[ nan, nan, nan, ..., nan, nan,\n", + " nan],\n", + " [ nan, nan, nan, ..., nan, nan,...\n", + " y: array([[ nan, nan, nan, ..., nan, nan, nan],\n", + " [ nan, nan, nan, ..., nan, nan, nan],\n", + " [ nan, nan, nan, ..., nan, nan, nan],...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/zonal_mean_2d/ERA5/ERA5-OMEGA-ANN-global_test.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/zonal_mean_2d/ERA5/ERA5-OMEGA-ANN-global_test.nc\n", + " * var_key: OMEGA\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 1 / 3600 (0.0278%)\n", + "Max absolute difference: 0.00010383\n", + "Max relative difference: 0.00027003\n", + " x: array([[ 0.025166, 0.023099, 0.017925, ..., -0.461106, -0.460638,\n", + " -0.460472],\n", + " [ 0.171211, 0.167126, 0.156825, ..., -0.220465, -0.212462,...\n", + " y: array([[ 0.025166, 0.023099, 0.017925, ..., -0.461106, -0.460638,\n", + " -0.460472],\n", + " [ 0.171211, 0.167126, 0.156825, ..., -0.220465, -0.212462,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/zonal_mean_2d/MERRA2/MERRA2-OMEGA-ANN-global_test.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/zonal_mean_2d/MERRA2/MERRA2-OMEGA-ANN-global_test.nc\n", + " * var_key: OMEGA\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 1 / 3600 (0.0278%)\n", + "Max absolute difference: 0.00010383\n", + "Max relative difference: 0.00027003\n", + " x: array([[ 0.025166, 0.023099, 0.017925, ..., -0.461106, -0.460638,\n", + " -0.460472],\n", + " [ 0.171211, 0.167126, 0.156825, ..., -0.220465, -0.212462,...\n", + " y: array([[ 0.025166, 0.023099, 0.017925, ..., -0.461106, -0.460638,\n", + " -0.460472],\n", + " [ 0.171211, 0.167126, 0.156825, ..., -0.220465, -0.212462,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/zonal_mean_2d_stratosphere/ERA5/ERA5-H2OLNZ-ANN-global_ref.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/zonal_mean_2d_stratosphere/ERA5/ERA5-H2OLNZ-ANN-global_ref.nc\n", + " * var_key: H2OLNZ\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 7210 / 7210 (100%)\n", + "Max absolute difference: 6.37594484\n", + "Max relative difference: 0.99937867\n", + " x: array([[0.003862, 0.003862, 0.003863, ..., 0.003912, 0.003911, 0.003911],\n", + " [0.003845, 0.003845, 0.003845, ..., 0.003878, 0.003878, 0.003877],\n", + " [0.003819, 0.003819, 0.003819, ..., 0.00385 , 0.00385 , 0.00385 ],...\n", + " y: array([[6.216128, 6.216276, 6.216544, ..., 6.29543 , 6.29478 , 6.29478 ],\n", + " [6.188974, 6.188632, 6.188663, ..., 6.241248, 6.240764, 6.240415],\n", + " [6.146792, 6.14647 , 6.146134, ..., 6.196124, 6.196318, 6.19623 ],...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/zonal_mean_2d_stratosphere/ERA5/ERA5-H2OLNZ-ANN-global_test.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/zonal_mean_2d_stratosphere/ERA5/ERA5-H2OLNZ-ANN-global_test.nc\n", + " * var_key: H2OLNZ\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 1800 / 1800 (100%)\n", + "Max absolute difference: 6.73113556\n", + "Max relative difference: 0.99937867\n", + " x: array([[0.004149, 0.004149, 0.004149, ..., 0.004144, 0.004144, 0.004144],\n", + " [0.004097, 0.004097, 0.004097, ..., 0.004091, 0.004092, 0.004092],\n", + " [0.004017, 0.004017, 0.004017, ..., 0.004013, 0.004013, 0.004013],...\n", + " y: array([[6.677132, 6.677097, 6.677016, ..., 6.669499, 6.669646, 6.669721],\n", + " [6.59368 , 6.59364 , 6.593552, ..., 6.5849 , 6.585056, 6.585129],\n", + " [6.465186, 6.465079, 6.464847, ..., 6.458621, 6.458826, 6.458924],...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/zonal_mean_2d_stratosphere/MERRA2/MERRA2-H2OLNZ-ANN-global_ref.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/zonal_mean_2d_stratosphere/MERRA2/MERRA2-H2OLNZ-ANN-global_ref.nc\n", + " * var_key: H2OLNZ\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 3610 / 3610 (100%)\n", + "Max absolute difference: 6.65749174\n", + "Max relative difference: 0.99937867\n", + " x: array([[0.003968, 0.003968, 0.003968, ..., 0.004033, 0.004033, 0.004033],\n", + " [0.004007, 0.004007, 0.004007, ..., 0.004049, 0.004049, 0.004049],\n", + " [0.004008, 0.004008, 0.004009, ..., 0.004012, 0.004012, 0.004012],...\n", + " y: array([[6.385676, 6.385771, 6.386107, ..., 6.491532, 6.491436, 6.491409],\n", + " [6.448871, 6.448924, 6.449117, ..., 6.516636, 6.516564, 6.516544],\n", + " [6.451395, 6.451418, 6.451509, ..., 6.457302, 6.457244, 6.457227],...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/zonal_mean_2d_stratosphere/MERRA2/MERRA2-H2OLNZ-ANN-global_test.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/zonal_mean_2d_stratosphere/MERRA2/MERRA2-H2OLNZ-ANN-global_test.nc\n", + " * var_key: H2OLNZ\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 1800 / 1800 (100%)\n", + "Max absolute difference: 6.73113556\n", + "Max relative difference: 0.99937867\n", + " x: array([[0.004149, 0.004149, 0.004149, ..., 0.004144, 0.004144, 0.004144],\n", + " [0.004097, 0.004097, 0.004097, ..., 0.004091, 0.004092, 0.004092],\n", + " [0.004017, 0.004017, 0.004017, ..., 0.004013, 0.004013, 0.004013],...\n", + " y: array([[6.677132, 6.677097, 6.677016, ..., 6.669499, 6.669646, 6.669721],\n", + " [6.59368 , 6.59364 , 6.593552, ..., 6.5849 , 6.585056, 6.585129],\n", + " [6.465186, 6.465079, 6.464847, ..., 6.458621, 6.458826, 6.458924],...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/zonal_mean_2d_stratosphere/MERRA2/MERRA2-U-ANN-global_ref.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/zonal_mean_2d_stratosphere/MERRA2/MERRA2-U-ANN-global_ref.nc\n", + " * var_key: U\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 16 / 3610 (0.443%)\n", + "Max absolute difference: 1.0069872e-07\n", + "Max relative difference: 1.48305291\n", + " x: array([[-8.003553e-08, 8.746594e-01, 1.610782e+00, ..., 9.277452e-01,\n", + " 4.884759e-01, 6.868504e-08],\n", + " [ 2.653300e-08, 8.899245e-01, 1.641026e+00, ..., 9.164927e-01,...\n", + " y: array([[-8.003553e-08, 8.746594e-01, 1.610782e+00, ..., 9.277452e-01,\n", + " 4.884759e-01, 6.868504e-08],\n", + " [ 3.507194e-08, 8.899245e-01, 1.641026e+00, ..., 9.164927e-01,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/zonal_mean_xy/Cloud MISR/MISRCOSP-CLDLOW_TAU1.3_9.4_MISR-ANN-global_ref.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/zonal_mean_xy/Cloud MISR/MISRCOSP-CLDLOW_TAU1.3_9.4_MISR-ANN-global_ref.nc\n", + " * var_key: CLDLOW_TAU1.3_9.4_MISR\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 161 / 180 (89.4%)\n", + "Max absolute difference: 5.22607951\n", + "Max relative difference: 0.14372237\n", + " x: array([ nan, nan, nan, nan, nan, nan,\n", + " nan, nan, nan, nan, nan, nan,\n", + " 27.607403, 26.281943, 26.594026, 25.62963 , 24.946797, 25.409239,...\n", + " y: array([ nan, nan, nan, nan, nan, nan,\n", + " nan, nan, nan, nan, nan, nan,\n", + " 29.236507, 28.109412, 28.533893, 27.251634, 26.469386, 26.97218 ,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/zonal_mean_xy/Cloud MISR/MISRCOSP-CLDLOW_TAU1.3_MISR-ANN-global_ref.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/zonal_mean_xy/Cloud MISR/MISRCOSP-CLDLOW_TAU1.3_MISR-ANN-global_ref.nc\n", + " * var_key: CLDLOW_TAU1.3_MISR\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 161 / 180 (89.4%)\n", + "Max absolute difference: 9.42316729\n", + "Max relative difference: 0.20406107\n", + " x: array([ nan, nan, nan, nan, nan, nan,\n", + " nan, nan, nan, nan, nan, nan,\n", + " 50.525568, 52.10918 , 52.191102, 52.493405, 50.181182, 50.357442,...\n", + " y: array([ nan, nan, nan, nan, nan, nan,\n", + " nan, nan, nan, nan, nan, nan,\n", + " 53.769157, 55.229167, 55.455046, 55.463217, 53.257188, 53.239823,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/zonal_mean_xy/Cloud MISR/MISRCOSP-CLDLOW_TAU9.4_MISR-ANN-global_ref.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/zonal_mean_xy/Cloud MISR/MISRCOSP-CLDLOW_TAU9.4_MISR-ANN-global_ref.nc\n", + " * var_key: CLDLOW_TAU9.4_MISR\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 161 / 180 (89.4%)\n", + "Max absolute difference: 4.19708782\n", + "Max relative difference: 0.42758281\n", + " x: array([ nan, nan, nan, nan, nan, nan,\n", + " nan, nan, nan, nan, nan, nan,\n", + " 22.918165, 25.827236, 25.597075, 26.863775, 25.234384, 24.948203,...\n", + " y: array([ nan, nan, nan, nan, nan, nan,\n", + " nan, nan, nan, nan, nan, nan,\n", + " 24.53265 , 27.119755, 26.921153, 28.211582, 26.787802, 26.267643,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/zonal_mean_xy/ERA5/ERA5-TREFHT-ANN-global_ref.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/zonal_mean_xy/ERA5/ERA5-TREFHT-ANN-global_ref.nc\n", + " * var_key: TREFHT\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 721 / 721 (100%)\n", + "Max absolute difference: 81883.41881875\n", + "Max relative difference: 42572340.58050662\n", + " x: array([-62245.929688, -62248.13693 , -62242.472564, -62222.273063,\n", + " -62185.911353, -62186.008385, -62245.802998, -62360.642263,\n", + " -62509.096699, -62667.752235, -62830.170226, -62995.326975,...\n", + " y: array([-4.543447e+01, -4.542636e+01, -4.544717e+01, -4.552139e+01,\n", + " -4.565500e+01, -4.565464e+01, -4.543493e+01, -4.501296e+01,\n", + " -4.446747e+01, -4.388450e+01, -4.328771e+01, -4.268085e+01,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/zonal_mean_xy/ERA5/ERA5-TREFHT-ANN-global_test.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/zonal_mean_xy/ERA5/ERA5-TREFHT-ANN-global_test.nc\n", + " * var_key: TREFHT\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 180 / 180 (100%)\n", + "Max absolute difference: 81989.07632777\n", + "Max relative difference: 356148.50858594\n", + " x: array([-61428.016602, -61700.151964, -62254.053537, -63015.103255,\n", + " -63555.621224, -64007.461306, -64280.214844, -64421.870562,\n", + " -64509.798145, -64564.287869, -64670.931283, -64899.678917,...\n", + " y: array([-48.439841, -47.439896, -45.404615, -42.608181, -40.622077,\n", + " -38.961816, -37.959598, -37.439092, -37.116007, -36.915788,\n", + " -36.523933, -35.683412, -34.238668, -32.817254, -31.078793,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/zonal_mean_xy/MERRA2/MERRA2-TREFHT-ANN-global_ref.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/zonal_mean_xy/MERRA2/MERRA2-TREFHT-ANN-global_ref.nc\n", + " * var_key: TREFHT\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 361 / 361 (100%)\n", + "Max absolute difference: 81957.9111283\n", + "Max relative difference: 7774131.80631079\n", + " x: array([-61046.710938, -61011.838969, -60959.49056 , -61136.906514,\n", + " -61480.481845, -61782.524116, -62066.025974, -62333.919468,\n", + " -62691.274394, -63140.628798, -63445.724196, -63637.801893,...\n", + " y: array([-4.984093e+01, -4.996906e+01, -5.016141e+01, -4.950951e+01,\n", + " -4.824706e+01, -4.713722e+01, -4.609551e+01, -4.511115e+01,\n", + " -4.379807e+01, -4.214694e+01, -4.102589e+01, -4.032011e+01,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/zonal_mean_xy/MERRA2/MERRA2-TREFHT-ANN-global_test.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/zonal_mean_xy/MERRA2/MERRA2-TREFHT-ANN-global_test.nc\n", + " * var_key: TREFHT\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 180 / 180 (100%)\n", + "Max absolute difference: 81989.07632777\n", + "Max relative difference: 356148.50858594\n", + " x: array([-61428.016602, -61700.151964, -62254.053537, -63015.103255,\n", + " -63555.621224, -64007.461306, -64280.214844, -64421.870562,\n", + " -64509.798145, -64564.287869, -64670.931283, -64899.678917,...\n", + " y: array([-48.439841, -47.439896, -45.404615, -42.608181, -40.622077,\n", + " -38.961816, -37.959598, -37.439092, -37.116007, -36.915788,\n", + " -36.523933, -35.683412, -34.238668, -32.817254, -31.078793,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/zonal_mean_xy/MERRA2/MERRA2-TREFMNAV-ANN-global_ref.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/zonal_mean_xy/MERRA2/MERRA2-TREFMNAV-ANN-global_ref.nc\n", + " * var_key: TREFMNAV\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 361 / 361 (100%)\n", + "Max absolute difference: 81566.42241689\n", + "Max relative difference: 7076797.19216029\n", + " x: array([-60563.527344, -60518.436822, -60451.515815, -60613.101705,\n", + " -60945.129544, -61232.153748, -61501.591492, -61756.481432,\n", + " -62109.404765, -62554.869256, -62844.421448, -63017.237617,...\n", + " y: array([-5.161635e+01, -5.178204e+01, -5.202794e+01, -5.143420e+01,\n", + " -5.021418e+01, -4.915953e+01, -4.816950e+01, -4.723292e+01,\n", + " -4.593612e+01, -4.429928e+01, -4.323534e+01, -4.260034e+01,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/zonal_mean_xy/MERRA2/MERRA2-TREFMNAV-ANN-global_test.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/zonal_mean_xy/MERRA2/MERRA2-TREFMNAV-ANN-global_test.nc\n", + " * var_key: TREFMNAV\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 180 / 180 (100%)\n", + "Max absolute difference: 81612.62999683\n", + "Max relative difference: 712436.24904908\n", + " x: array([-61180.776367, -61432.981966, -61948.765484, -62664.370139,\n", + " -63168.81837 , -63574.100358, -63788.256749, -63889.166753,\n", + " -63933.09872 , -63947.154308, -64010.12219 , -64195.91365 ,...\n", + " y: array([-49.348311, -48.421597, -46.526377, -43.89693 , -42.043363,\n", + " -40.554177, -39.767271, -39.396483, -39.235059, -39.183411,\n", + " -38.952039, -38.269358, -36.951686, -35.616629, -33.965708,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/zonal_mean_xy/MERRA2/MERRA2-TREFMXAV-ANN-global_ref.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/zonal_mean_xy/MERRA2/MERRA2-TREFMXAV-ANN-global_ref.nc\n", + " * var_key: TREFMXAV\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 361 / 361 (100%)\n", + "Max absolute difference: 82457.54769351\n", + "Max relative difference: 1076694.9189396\n", + " x: array([-61563.195312, -61540.355509, -61504.997572, -61697.515313,\n", + " -62044.880771, -62359.616116, -62654.704753, -62933.43733 ,\n", + " -63291.002062, -63739.216458, -64057.902635, -64267.677985,...\n", + " y: array([-47.943137, -48.027058, -48.15698 , -47.449583, -46.173209,\n", + " -45.016731, -43.932445, -42.908258, -41.594406, -39.947467,\n", + " -38.776472, -38.005665, -37.548617, -37.162024, -36.772625,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/zonal_mean_xy/MERRA2/MERRA2-TREFMXAV-ANN-global_test.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/zonal_mean_xy/MERRA2/MERRA2-TREFMXAV-ANN-global_test.nc\n", + " * var_key: TREFMXAV\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 180 / 180 (100%)\n", + "Max absolute difference: 82422.22721566\n", + "Max relative difference: 802810.03805471\n", + " x: array([-61693.111328, -61984.897222, -62575.88355 , -63378.481391,\n", + " -63954.161664, -64453.116406, -64786.717415, -64966.959896,\n", + " -65096.826324, -65190.292285, -65337.995432, -65603.469781,...\n", + " y: array([-47.465762, -46.393615, -44.222068, -41.272968, -39.157664,\n", + " -37.324281, -36.098482, -35.436191, -34.959005, -34.615569,\n", + " -34.072842, -33.097372, -31.553541, -30.054237, -28.227429,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/zonal_mean_xy/SST_CL_HadISST/HadISST_CL-SST-ANN-global_test.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/zonal_mean_xy/SST_CL_HadISST/HadISST_CL-SST-ANN-global_test.nc\n", + " * var_key: SST\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 144 / 180 (80%)\n", + "Max absolute difference: 82474.38246081\n", + "Max relative difference: 168240.46152954\n", + " x: array([ nan, nan, nan, nan,\n", + " nan, nan, nan, nan,\n", + " nan, nan, nan, nan,...\n", + " y: array([ nan, nan, nan, nan, nan, nan,\n", + " nan, nan, nan, nan, nan, nan,\n", + " nan, nan, nan, nan, nan, nan,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/zonal_mean_xy/SST_PD_HadISST/HadISST_PD-SST-ANN-global_test.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/zonal_mean_xy/SST_PD_HadISST/HadISST_PD-SST-ANN-global_test.nc\n", + " * var_key: SST\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 144 / 180 (80%)\n", + "Max absolute difference: 82474.38246081\n", + "Max relative difference: 168240.46152954\n", + " x: array([ nan, nan, nan, nan,\n", + " nan, nan, nan, nan,\n", + " nan, nan, nan, nan,...\n", + " y: array([ nan, nan, nan, nan, nan, nan,\n", + " nan, nan, nan, nan, nan, nan,\n", + " nan, nan, nan, nan, nan, nan,...\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/zonal_mean_xy/SST_PI_HadISST/HadISST_PI-SST-ANN-global_test.nc\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/zonal_mean_xy/SST_PI_HadISST/HadISST_PI-SST-ANN-global_test.nc\n", + " * var_key: SST\n", + " \n", + "Not equal to tolerance rtol=0.0001, atol=0\n", + "\n", + "Mismatched elements: 144 / 180 (80%)\n", + "Max absolute difference: 82474.38246081\n", + "Max relative difference: 168240.46152954\n", + " x: array([ nan, nan, nan, nan,\n", + " nan, nan, nan, nan,\n", + " nan, nan, nan, nan,...\n", + " y: array([ nan, nan, nan, nan, nan, nan,\n", + " nan, nan, nan, nan, nan, nan,\n", + " nan, nan, nan, nan, nan, nan,...\n" + ] + } + ], + "source": [ + "results = _get_relative_diffs()" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "\n", + "(\n", + " missing_files,\n", + " missing_vars,\n", + " matching_files,\n", + " mismatch_errors,\n", + " not_equal_errors,\n", + " key_errors,\n", + ") = results.values()" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " stat_name value pct\n", + "0 matching_files_count 501 0.849153\n", + "1 missing_vars_count 0 0.000000\n", + "2 mismatch_errors_count 4 0.006780\n", + "3 not_equal_errors_count 85 0.144068\n", + "4 key_errors_count 0 0.000000\n", + "5 missing_files_count 0 0.000000\n" + ] + } + ], + "source": [ + "# Assuming these variables are defined in your notebook\n", + "matching_files_count = len(matching_files)\n", + "missing_vars_count = len(missing_vars)\n", + "mismatch_errors_count = len(mismatch_errors)\n", + "not_equal_errors_count = len(not_equal_errors)\n", + "key_errors_count = len(key_errors)\n", + "missing_files_count = len(missing_files)\n", + "\n", + "sum_files_compared = (\n", + " matching_files_count\n", + " + missing_vars_count\n", + " + mismatch_errors_count\n", + " + not_equal_errors_count\n", + " + key_errors_count\n", + " + missing_files_count\n", + ")\n", + "\n", + "pct_match = (matching_files_count / sum_files_compared) * 100\n", + "\n", + "# Collect statistics into a dictionary\n", + "statistics = {\n", + " \"stat_name\": [\n", + " \"matching_files_count\",\n", + " \"missing_vars_count\",\n", + " \"mismatch_errors_count\",\n", + " \"not_equal_errors_count\",\n", + " \"key_errors_count\",\n", + " \"missing_files_count\",\n", + " ],\n", + " \"value\": [\n", + " matching_files_count,\n", + " missing_vars_count,\n", + " mismatch_errors_count,\n", + " not_equal_errors_count,\n", + " key_errors_count,\n", + " missing_files_count,\n", + " ],\n", + " \"pct\": [\n", + " matching_files_count / sum_files_compared,\n", + " missing_vars_count / sum_files_compared,\n", + " mismatch_errors_count / sum_files_compared,\n", + " not_equal_errors_count / sum_files_compared,\n", + " key_errors_count / sum_files_compared,\n", + " missing_files_count / sum_files_compared,\n", + " ],\n", + "}\n", + "\n", + "# Convert the dictionary to a pandas DataFrame\n", + "df = pd.DataFrame(statistics)\n", + "\n", + "# Display the DataFrame\n", + "print(df)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Not Equal Errors\n", + "\n", + "- Note, some files are omitted due to known root causes to the diffs (not a concern)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [], + "source": [ + "not_equal_errors = [\n", + " f\n", + " for f in not_equal_errors\n", + " # https://github.com/E3SM-Project/e3sm_diags/issues/797\n", + " if \"MISRCOSP-CLDLOW_TAU1.3_9.4_MISR\" not in f\n", + " and \"MISRCOSP-CLDLOW_TAU1.3_MISR\" not in f\n", + " and \"MISRCOSP-CLDLOW_TAU9.4_MISR\" not in f\n", + " # only 1 mismatching element with 1e-4 tolerance\n", + " and \"ERA5-OMEGA-JJA\" not in f and \"MERRA2-OMEGA-JJA\" not in f\n", + " # https://github.com/E3SM-Project/e3sm_diags/issues/787\n", + " and \"MERRA2-U\" not in f\n", + " # https://github.com/E3SM-Project/e3sm_diags/issues/852\n", + " and \"AOD_550\" not in f\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/COREv2_Flux/COREv2_Flux-PminusE-ANN-global_test.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/CRU_IPCC/CRU-TREFHT-ANN-land_60S90N_ref.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/CRU_IPCC/CRU-TREFHT-ANN-land_60S90N_test.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/Cloud MISR/MISRCOSP-CLDTOT_TAU1.3_9.4_MISR-ANN-global_test.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/Cloud MISR/MISRCOSP-CLDTOT_TAU1.3_MISR-ANN-global_test.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5/ERA5-NET_FLUX_SRF-ANN-global_test.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5/ERA5-OMEGA-200-ANN-global_test.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5/ERA5-OMEGA-500-ANN-global_test.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5/ERA5-OMEGA-850-ANN-global_test.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5/ERA5-TREFHT-ANN-global_ref.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5/ERA5-TREFHT-ANN-global_test.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5/ERA5-TREFHT-ANN-land_test.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5/ERA5-U-850-ANN-global_test.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/GPCP_OAFLux/GPCP_OAFLux-PminusE-ANN-global_test.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2/MERRA2-NET_FLUX_SRF-ANN-global_test.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2/MERRA2-OMEGA-200-ANN-global_test.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2/MERRA2-OMEGA-500-ANN-global_test.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2/MERRA2-OMEGA-850-ANN-global_test.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2/MERRA2-TREFHT-ANN-global_ref.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2/MERRA2-TREFHT-ANN-global_test.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2/MERRA2-TREFHT-ANN-land_test.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2/MERRA2-TREFMNAV-ANN-global_ref.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2/MERRA2-TREFMNAV-ANN-global_test.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2/MERRA2-TREFMXAV-ANN-global_ref.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2/MERRA2-TREFMXAV-ANN-global_test.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/SST_CL_HadISST/HadISST_CL-SST-ANN-global_test.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/SST_HadISST/HadISST-SST-ANN-global_test.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/SST_PD_HadISST/HadISST_PD-SST-ANN-global_test.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/SST_PI_HadISST/HadISST_PI-SST-ANN-global_test.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/meridional_mean_2d/MERRA2/MERRA2-OMEGA-ANN-global_ref.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/CRU_IPCC/CRU-TREFHT-ANN-polar_N_ref.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/CRU_IPCC/CRU-TREFHT-ANN-polar_N_test.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/ERA5/ERA5-TREFHT-ANN-polar_N_ref.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/ERA5/ERA5-TREFHT-ANN-polar_N_test.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/ERA5/ERA5-TREFHT-ANN-polar_S_ref.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/ERA5/ERA5-TREFHT-ANN-polar_S_test.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/ERA5/ERA5-U-850-ANN-polar_N_test.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/ERA5/ERA5-U-850-ANN-polar_S_test.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2/MERRA2-TREFHT-ANN-polar_N_ref.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2/MERRA2-TREFHT-ANN-polar_N_test.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2/MERRA2-TREFHT-ANN-polar_S_ref.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2/MERRA2-TREFHT-ANN-polar_S_test.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2/MERRA2-TREFMNAV-ANN-polar_N_ref.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2/MERRA2-TREFMNAV-ANN-polar_N_test.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2/MERRA2-TREFMNAV-ANN-polar_S_ref.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2/MERRA2-TREFMNAV-ANN-polar_S_test.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2/MERRA2-TREFMXAV-ANN-polar_N_ref.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2/MERRA2-TREFMXAV-ANN-polar_N_test.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2/MERRA2-TREFMXAV-ANN-polar_S_ref.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2/MERRA2-TREFMXAV-ANN-polar_S_test.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/SST_CL_HadISST/HadISST_CL-SST-ANN-polar_N_test.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/SST_CL_HadISST/HadISST_CL-SST-ANN-polar_S_test.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/SST_PD_HadISST/HadISST_PD-SST-ANN-polar_N_test.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/SST_PD_HadISST/HadISST_PD-SST-ANN-polar_S_test.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/SST_PI_HadISST/HadISST_PI-SST-ANN-polar_N_test.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/SST_PI_HadISST/HadISST_PI-SST-ANN-polar_S_test.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/zonal_mean_2d/ERA5/ERA5-OMEGA-ANN-global_test.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/zonal_mean_2d/MERRA2/MERRA2-OMEGA-ANN-global_test.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/zonal_mean_2d_stratosphere/ERA5/ERA5-H2OLNZ-ANN-global_ref.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/zonal_mean_2d_stratosphere/ERA5/ERA5-H2OLNZ-ANN-global_test.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/zonal_mean_2d_stratosphere/MERRA2/MERRA2-H2OLNZ-ANN-global_ref.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/zonal_mean_2d_stratosphere/MERRA2/MERRA2-H2OLNZ-ANN-global_test.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/zonal_mean_xy/ERA5/ERA5-TREFHT-ANN-global_ref.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/zonal_mean_xy/ERA5/ERA5-TREFHT-ANN-global_test.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/zonal_mean_xy/MERRA2/MERRA2-TREFHT-ANN-global_ref.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/zonal_mean_xy/MERRA2/MERRA2-TREFHT-ANN-global_test.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/zonal_mean_xy/MERRA2/MERRA2-TREFMNAV-ANN-global_ref.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/zonal_mean_xy/MERRA2/MERRA2-TREFMNAV-ANN-global_test.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/zonal_mean_xy/MERRA2/MERRA2-TREFMXAV-ANN-global_ref.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/zonal_mean_xy/MERRA2/MERRA2-TREFMXAV-ANN-global_test.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/zonal_mean_xy/SST_CL_HadISST/HadISST_CL-SST-ANN-global_test.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/zonal_mean_xy/SST_PD_HadISST/HadISST_PD-SST-ANN-global_test.nc',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/zonal_mean_xy/SST_PI_HadISST/HadISST_PI-SST-ANN-global_test.nc']" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "not_equal_errors" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [], + "source": [ + "import xarray as xr\n", + "\n", + "ds1 = xr.open_dataset(not_equal_errors[-1])\n", + "ds2 = xr.open_dataset(not_equal_errors[-1].replace(DEV_DIR, MAIN_DIR))" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [], + "source": [ + "ds1 = xr.open_dataset(\n", + " \"/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/CRU_IPCC/CRU-TREFHT-ANN-polar_N_ref.nc\"\n", + ")\n", + "ds2 = xr.open_dataset(\n", + " \"/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/CRU_IPCC/CRU-TREFHT-ANN-polar_N_ref.nc\",\n", + ")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/auxiliary_tools/cdat_regression_testing/894-regression-test/regression_png.ipynb b/auxiliary_tools/cdat_regression_testing/894-regression-test/regression_png.ipynb new file mode 100644 index 000000000..b9ea2b337 --- /dev/null +++ b/auxiliary_tools/cdat_regression_testing/894-regression-test/regression_png.ipynb @@ -0,0 +1,1316 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# CDAT Migration Regression Testing Notebook (`.png` files)\n", + "\n", + "This notebook is used to perform regression testing between the development and\n", + "production versions of a diagnostic set.\n", + "\n", + "## How to use\n", + "\n", + "PREREQUISITE: The diagnostic set's netCDF stored in `.json` files in two directories\n", + "(dev and `main` branches).\n", + "\n", + "1. Make a copy of this notebook under `auxiliary_tools/cdat_regression_testing/`.\n", + "2. Run `mamba create -n cdat_regression_test -y -c conda-forge \"python<3.12\" xarray netcdf4 dask pandas matplotlib-base ipykernel`\n", + "3. Run `mamba activate cdat_regression_test`\n", + "4. Update `SET_DIR` and `SET_NAME` in the copy of your notebook.\n", + "5. Run all cells IN ORDER.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Setup Code\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import glob\n", + "from typing import List\n", + "\n", + "from auxiliary_tools.cdat_regression_testing.utils import get_image_diffs\n", + "\n", + "\n", + "DEV_DIR = \"24-12-09-main\"\n", + "DEV_PATH = f\"/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/{DEV_DIR}/\"\n", + "\n", + "DEV_GLOB = sorted(glob.glob(DEV_PATH + \"**/**/*.png\"))\n", + "DEV_NUM_FILES = len(DEV_GLOB)\n", + "\n", + "MAIN_DIR = \"v2.12.1v2\"\n", + "MAIN_PATH = f\"/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/{MAIN_DIR}/\"\n", + "MAIN_GLOB = sorted(glob.glob(MAIN_PATH + \"**/**/*.png\"))\n", + "MAIN_NUM_FILES = len(MAIN_GLOB)\n", + "\n", + "\n", + "def _remove_unwanted_files(file_glob: List[str]) -> List[str]:\n", + " \"\"\"Remove files that we don't want to compare.\n", + "\n", + " * area_mean_time_series -- `main` does not generate netCDF\n", + " * enso_diags -- `main` does not generate netCDF\n", + " * qbo -- variable name differs\n", + " * diurnal_cycle -- variable name differs\n", + " * diff -- comparing the difference between regridded files is not helpful\n", + " between branches because of the influence in floating point errors.\n", + " * ERA5_ext-U10-ANN-global_ref and ERA5_ext-U10-JJA-global_ref -- dev\n", + " branch does not generate these files because it is a model-only run.\n", + "\n", + " Parameters\n", + " ----------\n", + " file_glob : List[str]\n", + " _description_\n", + "\n", + " Returns\n", + " -------\n", + " List[str]\n", + " _description_\n", + " \"\"\"\n", + "\n", + " new_glob = []\n", + "\n", + " for fp in file_glob:\n", + " if (\n", + " \"area_mean_time_series\" in fp\n", + " or \"enso_diags\" in fp\n", + " or \"qbo\" in fp\n", + " or \"diurnal_cycle\" in fp\n", + " or \"diff\" in fp\n", + " or \"ERA5_ext-U10-ANN-global_ref\" in fp\n", + " or \"ERA5_ext-U10-JJA-global_ref\" in fp\n", + " ):\n", + " continue\n", + "\n", + " new_glob.append(fp)\n", + "\n", + " return new_glob\n", + "\n", + "\n", + "DEV_GLOB = _remove_unwanted_files(DEV_GLOB)\n", + "MAIN_GLOB = _remove_unwanted_files(MAIN_GLOB)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "def _check_if_files_found():\n", + " if DEV_NUM_FILES == 0 or MAIN_NUM_FILES == 0:\n", + " raise IOError(\n", + " \"No files found at DEV_PATH and/or MAIN_PATH. \"\n", + " f\"Please check {DEV_PATH} and {MAIN_PATH}.\"\n", + " )\n", + "\n", + "\n", + "def _check_if_matching_filecount():\n", + " if DEV_NUM_FILES != MAIN_NUM_FILES:\n", + " raise IOError(\n", + " \"Number of files do not match at DEV_PATH and MAIN_PATH \"\n", + " f\"({DEV_NUM_FILES} vs. {MAIN_NUM_FILES}).\"\n", + " )\n", + "\n", + " print(f\"Matching file count ({DEV_NUM_FILES} and {MAIN_NUM_FILES}).\")\n", + "\n", + "\n", + "def _check_if_missing_files():\n", + " missing_dev_files = []\n", + " missing_main_files = []\n", + "\n", + " for fp_main in MAIN_GLOB:\n", + " fp_dev = fp_main.replace(MAIN_DIR, DEV_DIR)\n", + "\n", + " if fp_dev not in DEV_GLOB:\n", + " missing_dev_files.append(fp_dev)\n", + "\n", + " for fp_dev in DEV_GLOB:\n", + " fp_main = fp_dev.replace(DEV_DIR, MAIN_DIR)\n", + "\n", + " if fp_main not in MAIN_GLOB:\n", + " missing_main_files.append(fp_main)\n", + "\n", + " return missing_dev_files, missing_main_files" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(337, 342)" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(DEV_GLOB), len(MAIN_GLOB)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1. Check for matching and equal number of files\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "_check_if_files_found()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "missing_dev_files, missing_main_files = _check_if_missing_files()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/viewer/cmip6-comparison-data/cmip6_amip.png',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/viewer/cmip6-comparison-data/cmip6_historical.png',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/viewer/taylor-diagram-data/ANN_metrics_taylor_diag_amip.png',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/viewer/taylor-diagram-data/ANN_metrics_taylor_diag_historical.png',\n", + " '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/viewer/viewer/e3sm_logo.png']" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "missing_dev_files" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "missing_main_files" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "ename": "OSError", + "evalue": "Number of files do not match at DEV_PATH and MAIN_PATH (547 vs. 363).", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mOSError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[8], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43m_check_if_matching_filecount\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n", + "Cell \u001b[0;32mIn[2], line 11\u001b[0m, in \u001b[0;36m_check_if_matching_filecount\u001b[0;34m()\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_check_if_matching_filecount\u001b[39m():\n\u001b[1;32m 10\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m DEV_NUM_FILES \u001b[38;5;241m!=\u001b[39m MAIN_NUM_FILES:\n\u001b[0;32m---> 11\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mIOError\u001b[39;00m(\n\u001b[1;32m 12\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mNumber of files do not match at DEV_PATH and MAIN_PATH \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 13\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m(\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mDEV_NUM_FILES\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m vs. \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mMAIN_NUM_FILES\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m).\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 14\u001b[0m )\n\u001b[1;32m 16\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mMatching file count (\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mDEV_NUM_FILES\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m and \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mMAIN_NUM_FILES\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m).\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", + "\u001b[0;31mOSError\u001b[0m: Number of files do not match at DEV_PATH and MAIN_PATH (547 vs. 363)." + ] + } + ], + "source": [ + "_check_if_matching_filecount()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2 Compare the plots between branches\n", + "\n", + "- Compare \"ref\" and \"test\" files\n", + "- \"diff\" files are ignored because getting relative diffs for these does not make sense (relative diff will be above tolerance)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/aerosol_aeronet/AERONET/AERONET-AODABS-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/aerosol_aeronet/AERONET/AERONET-AODABS-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/aerosol_aeronet/AERONET_diff/AERONET-AODABS-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/aerosol_aeronet/AERONET/AERONET-AODVIS-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/aerosol_aeronet/AERONET/AERONET-AODVIS-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/aerosol_aeronet/AERONET_diff/AERONET-AODVIS-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/cosp_histogram/ISCCP-COSP/ISCCPCOSP-COSP_HISTOGRAM_ISCCP-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/cosp_histogram/ISCCP-COSP/ISCCPCOSP-COSP_HISTOGRAM_ISCCP-ANN-global.png\n", + " * Plots are identical\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/cosp_histogram/MISR-COSP/MISRCOSP-COSP_HISTOGRAM_MISR-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/cosp_histogram/MISR-COSP/MISRCOSP-COSP_HISTOGRAM_MISR-ANN-global.png\n", + " * Plots are identical\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/cosp_histogram/MODIS-COSP/MODISCOSP-COSP_HISTOGRAM_MODIS-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/cosp_histogram/MODIS-COSP/MODISCOSP-COSP_HISTOGRAM_MODIS-ANN-global.png\n", + " * Plots are identical\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/CERES-EBAF-TOA-v4.1/ceres_ebaf_toa_v4.1-ALBEDO-ANN-75S75N.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/CERES-EBAF-TOA-v4.1/ceres_ebaf_toa_v4.1-ALBEDO-ANN-75S75N.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/CERES-EBAF-TOA-v4.1_diff/ceres_ebaf_toa_v4.1-ALBEDO-ANN-75S75N.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/CERES-EBAF-TOA-v4.1/ceres_ebaf_toa_v4.1-ALBEDOC-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/CERES-EBAF-TOA-v4.1/ceres_ebaf_toa_v4.1-ALBEDOC-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/CERES-EBAF-TOA-v4.1_diff/ceres_ebaf_toa_v4.1-ALBEDOC-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/CERES-EBAF-TOA-v4.1/ceres_ebaf_toa_v4.1-FLUT-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/CERES-EBAF-TOA-v4.1/ceres_ebaf_toa_v4.1-FLUT-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/CERES-EBAF-TOA-v4.1_diff/ceres_ebaf_toa_v4.1-FLUT-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/CERES-EBAF-TOA-v4.1/ceres_ebaf_toa_v4.1-FLUTC-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/CERES-EBAF-TOA-v4.1/ceres_ebaf_toa_v4.1-FLUTC-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/CERES-EBAF-TOA-v4.1_diff/ceres_ebaf_toa_v4.1-FLUTC-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/CERES-EBAF-TOA-v4.1/ceres_ebaf_toa_v4.1-FSNTOA-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/CERES-EBAF-TOA-v4.1/ceres_ebaf_toa_v4.1-FSNTOA-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/CERES-EBAF-TOA-v4.1_diff/ceres_ebaf_toa_v4.1-FSNTOA-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/CERES-EBAF-TOA-v4.1/ceres_ebaf_toa_v4.1-FSNTOAC-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/CERES-EBAF-TOA-v4.1/ceres_ebaf_toa_v4.1-FSNTOAC-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/CERES-EBAF-TOA-v4.1_diff/ceres_ebaf_toa_v4.1-FSNTOAC-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/CERES-EBAF-TOA-v4.1/ceres_ebaf_toa_v4.1-LWCF-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/CERES-EBAF-TOA-v4.1/ceres_ebaf_toa_v4.1-LWCF-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/CERES-EBAF-TOA-v4.1_diff/ceres_ebaf_toa_v4.1-LWCF-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/CERES-EBAF-TOA-v4.1/ceres_ebaf_toa_v4.1-NETCF-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/CERES-EBAF-TOA-v4.1/ceres_ebaf_toa_v4.1-NETCF-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/CERES-EBAF-TOA-v4.1_diff/ceres_ebaf_toa_v4.1-NETCF-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/CERES-EBAF-TOA-v4.1/ceres_ebaf_toa_v4.1-RESTOM-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/CERES-EBAF-TOA-v4.1/ceres_ebaf_toa_v4.1-RESTOM-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/CERES-EBAF-TOA-v4.1_diff/ceres_ebaf_toa_v4.1-RESTOM-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/CERES-EBAF-TOA-v4.1/ceres_ebaf_toa_v4.1-SOLIN-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/CERES-EBAF-TOA-v4.1/ceres_ebaf_toa_v4.1-SOLIN-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/CERES-EBAF-TOA-v4.1_diff/ceres_ebaf_toa_v4.1-SOLIN-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/CERES-EBAF-TOA-v4.1/ceres_ebaf_toa_v4.1-SWCF-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/CERES-EBAF-TOA-v4.1/ceres_ebaf_toa_v4.1-SWCF-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/CERES-EBAF-TOA-v4.1_diff/ceres_ebaf_toa_v4.1-SWCF-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-ALBEDO_SRF-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-ALBEDO_SRF-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/CERES-EBAF-surface-v4.1_diff/ceres_ebaf_surface_v4.1-ALBEDO_SRF-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-FLDS-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-FLDS-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/CERES-EBAF-surface-v4.1_diff/ceres_ebaf_surface_v4.1-FLDS-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-FLDSC-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-FLDSC-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/CERES-EBAF-surface-v4.1_diff/ceres_ebaf_surface_v4.1-FLDSC-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-FLNS-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-FLNS-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/CERES-EBAF-surface-v4.1_diff/ceres_ebaf_surface_v4.1-FLNS-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-FLNSC-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-FLNSC-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/CERES-EBAF-surface-v4.1_diff/ceres_ebaf_surface_v4.1-FLNSC-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-FSDS-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-FSDS-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/CERES-EBAF-surface-v4.1_diff/ceres_ebaf_surface_v4.1-FSDS-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-FSDSC-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-FSDSC-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/CERES-EBAF-surface-v4.1_diff/ceres_ebaf_surface_v4.1-FSDSC-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-FSNS-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-FSNS-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/CERES-EBAF-surface-v4.1_diff/ceres_ebaf_surface_v4.1-FSNS-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-FSNSC-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-FSNSC-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/CERES-EBAF-surface-v4.1_diff/ceres_ebaf_surface_v4.1-FSNSC-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-LWCFSRF-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-LWCFSRF-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/CERES-EBAF-surface-v4.1_diff/ceres_ebaf_surface_v4.1-LWCFSRF-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-NETCF_SRF-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-NETCF_SRF-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/CERES-EBAF-surface-v4.1_diff/ceres_ebaf_surface_v4.1-NETCF_SRF-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-SWCFSRF-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-SWCFSRF-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/CERES-EBAF-surface-v4.1_diff/ceres_ebaf_surface_v4.1-SWCFSRF-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/COREv2_Flux/COREv2_Flux-PminusE-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/COREv2_Flux/COREv2_Flux-PminusE-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/COREv2_Flux_diff/COREv2_Flux-PminusE-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/CRU_IPCC/CRU-TREFHT-ANN-land_60S90N.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/CRU_IPCC/CRU-TREFHT-ANN-land_60S90N.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/CRU_IPCC_diff/CRU-TREFHT-ANN-land_60S90N.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/Cloud Calipso/CALIPSOCOSP-CLDHGH_CAL-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/Cloud Calipso/CALIPSOCOSP-CLDHGH_CAL-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/Cloud Calipso_diff/CALIPSOCOSP-CLDHGH_CAL-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/Cloud Calipso/CALIPSOCOSP-CLDLOW_CAL-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/Cloud Calipso/CALIPSOCOSP-CLDLOW_CAL-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/Cloud Calipso_diff/CALIPSOCOSP-CLDLOW_CAL-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/Cloud Calipso/CALIPSOCOSP-CLDMED_CAL-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/Cloud Calipso/CALIPSOCOSP-CLDMED_CAL-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/Cloud Calipso_diff/CALIPSOCOSP-CLDMED_CAL-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/Cloud Calipso/CALIPSOCOSP-CLDTOT_CAL-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/Cloud Calipso/CALIPSOCOSP-CLDTOT_CAL-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/Cloud Calipso_diff/CALIPSOCOSP-CLDTOT_CAL-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/Cloud ISCCP/ISCCPCOSP-CLDTOT_TAU1.3_9.4_ISCCP-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/Cloud ISCCP/ISCCPCOSP-CLDTOT_TAU1.3_9.4_ISCCP-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/Cloud ISCCP_diff/ISCCPCOSP-CLDTOT_TAU1.3_9.4_ISCCP-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/Cloud ISCCP/ISCCPCOSP-CLDTOT_TAU1.3_ISCCP-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/Cloud ISCCP/ISCCPCOSP-CLDTOT_TAU1.3_ISCCP-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/Cloud ISCCP_diff/ISCCPCOSP-CLDTOT_TAU1.3_ISCCP-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/Cloud ISCCP/ISCCPCOSP-CLDTOT_TAU9.4_ISCCP-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/Cloud ISCCP/ISCCPCOSP-CLDTOT_TAU9.4_ISCCP-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/Cloud ISCCP_diff/ISCCPCOSP-CLDTOT_TAU9.4_ISCCP-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/Cloud MISR/MISRCOSP-CLDLOW_TAU1.3_9.4_MISR-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/Cloud MISR/MISRCOSP-CLDLOW_TAU1.3_9.4_MISR-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/Cloud MISR_diff/MISRCOSP-CLDLOW_TAU1.3_9.4_MISR-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/Cloud MISR/MISRCOSP-CLDLOW_TAU1.3_MISR-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/Cloud MISR/MISRCOSP-CLDLOW_TAU1.3_MISR-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/Cloud MISR_diff/MISRCOSP-CLDLOW_TAU1.3_MISR-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/Cloud MISR/MISRCOSP-CLDLOW_TAU9.4_MISR-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/Cloud MISR/MISRCOSP-CLDLOW_TAU9.4_MISR-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/Cloud MISR_diff/MISRCOSP-CLDLOW_TAU9.4_MISR-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/Cloud MISR/MISRCOSP-CLDTOT_TAU1.3_9.4_MISR-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/Cloud MISR/MISRCOSP-CLDTOT_TAU1.3_9.4_MISR-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/Cloud MISR_diff/MISRCOSP-CLDTOT_TAU1.3_9.4_MISR-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/Cloud MISR/MISRCOSP-CLDTOT_TAU1.3_MISR-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/Cloud MISR/MISRCOSP-CLDTOT_TAU1.3_MISR-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/Cloud MISR_diff/MISRCOSP-CLDTOT_TAU1.3_MISR-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/Cloud MISR/MISRCOSP-CLDTOT_TAU9.4_MISR-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/Cloud MISR/MISRCOSP-CLDTOT_TAU9.4_MISR-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/Cloud MISR_diff/MISRCOSP-CLDTOT_TAU9.4_MISR-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/Cloud MODIS/MODISCOSP-CLDHGH_TAU1.3_9.4_MODIS-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/Cloud MODIS/MODISCOSP-CLDHGH_TAU1.3_9.4_MODIS-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/Cloud MODIS_diff/MODISCOSP-CLDHGH_TAU1.3_9.4_MODIS-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/Cloud MODIS/MODISCOSP-CLDHGH_TAU1.3_MODIS-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/Cloud MODIS/MODISCOSP-CLDHGH_TAU1.3_MODIS-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/Cloud MODIS_diff/MODISCOSP-CLDHGH_TAU1.3_MODIS-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/Cloud MODIS/MODISCOSP-CLDHGH_TAU9.4_MODIS-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/Cloud MODIS/MODISCOSP-CLDHGH_TAU9.4_MODIS-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/Cloud MODIS_diff/MODISCOSP-CLDHGH_TAU9.4_MODIS-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/Cloud MODIS/MODISCOSP-CLDTOT_TAU1.3_9.4_MODIS-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/Cloud MODIS/MODISCOSP-CLDTOT_TAU1.3_9.4_MODIS-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/Cloud MODIS_diff/MODISCOSP-CLDTOT_TAU1.3_9.4_MODIS-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/Cloud MODIS/MODISCOSP-CLDTOT_TAU1.3_MODIS-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/Cloud MODIS/MODISCOSP-CLDTOT_TAU1.3_MODIS-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/Cloud MODIS_diff/MODISCOSP-CLDTOT_TAU1.3_MODIS-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/Cloud MODIS/MODISCOSP-CLDTOT_TAU9.4_MODIS-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/Cloud MODIS/MODISCOSP-CLDTOT_TAU9.4_MODIS-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/Cloud MODIS_diff/MODISCOSP-CLDTOT_TAU9.4_MODIS-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/ERA5/ERA5-FLNS-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5/ERA5-FLNS-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5_diff/ERA5-FLNS-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/ERA5/ERA5-FSNS-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5/ERA5-FSNS-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5_diff/ERA5-FSNS-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/ERA5/ERA5-LHFLX-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5/ERA5-LHFLX-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5_diff/ERA5-LHFLX-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/ERA5/ERA5-NET_FLUX_SRF-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5/ERA5-NET_FLUX_SRF-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5_diff/ERA5-NET_FLUX_SRF-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/ERA5/ERA5-OMEGA-200-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5/ERA5-OMEGA-200-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5_diff/ERA5-OMEGA-200-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/ERA5/ERA5-OMEGA-500-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5/ERA5-OMEGA-500-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5_diff/ERA5-OMEGA-500-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/ERA5/ERA5-OMEGA-850-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5/ERA5-OMEGA-850-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5_diff/ERA5-OMEGA-850-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/ERA5/ERA5-PRECT-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5/ERA5-PRECT-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5_diff/ERA5-PRECT-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/ERA5/ERA5-PSL-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5/ERA5-PSL-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5_diff/ERA5-PSL-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/ERA5/ERA5-SHFLX-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5/ERA5-SHFLX-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5_diff/ERA5-SHFLX-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/ERA5/ERA5-T-200-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5/ERA5-T-200-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5_diff/ERA5-T-200-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/ERA5/ERA5-T-850-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5/ERA5-T-850-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5_diff/ERA5-T-850-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/ERA5/ERA5-TAUXY-ANN-ocean.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5/ERA5-TAUXY-ANN-ocean.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5_diff/ERA5-TAUXY-ANN-ocean.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/ERA5/ERA5-TMQ-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5/ERA5-TMQ-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5_diff/ERA5-TMQ-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/ERA5/ERA5-TREFHT-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5/ERA5-TREFHT-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5_diff/ERA5-TREFHT-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/ERA5/ERA5-TREFHT-ANN-land.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5/ERA5-TREFHT-ANN-land.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5_diff/ERA5-TREFHT-ANN-land.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/ERA5/ERA5-U-200-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5/ERA5-U-200-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5_diff/ERA5-U-200-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/ERA5/ERA5-U-850-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5/ERA5-U-850-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5_diff/ERA5-U-850-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/ERA5/ERA5-Z3-500-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5/ERA5-Z3-500-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5_diff/ERA5-Z3-500-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/ERA5/ERA5_ext-QREFHT-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5/ERA5_ext-QREFHT-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5_diff/ERA5_ext-QREFHT-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/ERA5/ERA5_ext-U10-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5/ERA5_ext-U10-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/ERA5_diff/ERA5_ext-U10-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/GPCP_OAFLux/GPCP_OAFLux-PminusE-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/GPCP_OAFLux/GPCP_OAFLux-PminusE-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/GPCP_OAFLux_diff/GPCP_OAFLux-PminusE-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/GPCP_v2.3/GPCP_v2.3-PRECT-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/GPCP_v2.3/GPCP_v2.3-PRECT-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/GPCP_v2.3_diff/GPCP_v2.3-PRECT-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/GPCP_v3.2/GPCP_v3.2-PRECT-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/GPCP_v3.2/GPCP_v3.2-PRECT-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/GPCP_v3.2_diff/GPCP_v3.2-PRECT-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/MERRA2/MERRA2-FLNS-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2/MERRA2-FLNS-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2_diff/MERRA2-FLNS-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/MERRA2/MERRA2-FSNS-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2/MERRA2-FSNS-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2_diff/MERRA2-FSNS-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/MERRA2/MERRA2-LHFLX-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2/MERRA2-LHFLX-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2_diff/MERRA2-LHFLX-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/MERRA2/MERRA2-NET_FLUX_SRF-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2/MERRA2-NET_FLUX_SRF-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2_diff/MERRA2-NET_FLUX_SRF-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/MERRA2/MERRA2-OMEGA-200-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2/MERRA2-OMEGA-200-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2_diff/MERRA2-OMEGA-200-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/MERRA2/MERRA2-OMEGA-500-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2/MERRA2-OMEGA-500-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2_diff/MERRA2-OMEGA-500-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/MERRA2/MERRA2-OMEGA-850-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2/MERRA2-OMEGA-850-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2_diff/MERRA2-OMEGA-850-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/MERRA2/MERRA2-PRECT-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2/MERRA2-PRECT-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2_diff/MERRA2-PRECT-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/MERRA2/MERRA2-PSL-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2/MERRA2-PSL-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2_diff/MERRA2-PSL-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/MERRA2/MERRA2-SHFLX-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2/MERRA2-SHFLX-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2_diff/MERRA2-SHFLX-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/MERRA2/MERRA2-T-200-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2/MERRA2-T-200-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2_diff/MERRA2-T-200-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/MERRA2/MERRA2-T-850-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2/MERRA2-T-850-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2_diff/MERRA2-T-850-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/MERRA2/MERRA2-TAUXY-ANN-ocean.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2/MERRA2-TAUXY-ANN-ocean.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2_diff/MERRA2-TAUXY-ANN-ocean.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/MERRA2/MERRA2-TMQ-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2/MERRA2-TMQ-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2_diff/MERRA2-TMQ-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/MERRA2/MERRA2-TREFHT-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2/MERRA2-TREFHT-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2_diff/MERRA2-TREFHT-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/MERRA2/MERRA2-TREFHT-ANN-land.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2/MERRA2-TREFHT-ANN-land.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2_diff/MERRA2-TREFHT-ANN-land.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/MERRA2/MERRA2-TREFMNAV-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2/MERRA2-TREFMNAV-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2_diff/MERRA2-TREFMNAV-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/MERRA2/MERRA2-TREFMXAV-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2/MERRA2-TREFMXAV-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2_diff/MERRA2-TREFMXAV-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/MERRA2/MERRA2-TREF_range-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2/MERRA2-TREF_range-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2_diff/MERRA2-TREF_range-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/MERRA2/MERRA2-U-200-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2/MERRA2-U-200-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2_diff/MERRA2-U-200-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/MERRA2/MERRA2-U-850-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2/MERRA2-U-850-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2_diff/MERRA2-U-850-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/MERRA2/MERRA2-Z3-500-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2/MERRA2-Z3-500-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/MERRA2_diff/MERRA2-Z3-500-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/OMI-MLS/OMI-MLS-TCO-ANN-60S60N.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/OMI-MLS/OMI-MLS-TCO-ANN-60S60N.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/OMI-MLS_diff/OMI-MLS-TCO-ANN-60S60N.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/OMI-MLS/OMI-MLS-TCO-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/OMI-MLS/OMI-MLS-TCO-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/OMI-MLS_diff/OMI-MLS-TCO-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/SST_CL_HadISST/HadISST_CL-SST-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/SST_CL_HadISST/HadISST_CL-SST-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/SST_CL_HadISST_diff/HadISST_CL-SST-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/SST_HadISST/HadISST-SST-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/SST_HadISST/HadISST-SST-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/SST_HadISST_diff/HadISST-SST-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/SST_PD_HadISST/HadISST_PD-SST-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/SST_PD_HadISST/HadISST_PD-SST-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/SST_PD_HadISST_diff/HadISST_PD-SST-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/SST_PI_HadISST/HadISST_PI-SST-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/SST_PI_HadISST/HadISST_PI-SST-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/SST_PI_HadISST_diff/HadISST_PI-SST-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/WHOI-OAFlux/OAFlux-LHFLX-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/WHOI-OAFlux/OAFlux-LHFLX-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/WHOI-OAFlux_diff/OAFlux-LHFLX-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/WHOI-OAFlux/OAFlux-SHFLX-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/WHOI-OAFlux/OAFlux-SHFLX-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/WHOI-OAFlux_diff/OAFlux-SHFLX-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/aero-no-ref-data/-_ABURDENBC-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/aero-no-ref-data/-_ABURDENBC-ANN-global.png\n", + " * Plots are identical\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/aero-no-ref-data/-_ABURDENDUST-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/aero-no-ref-data/-_ABURDENDUST-ANN-global.png\n", + " * Plots are identical\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/aero-no-ref-data/-_ABURDENPOM-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/aero-no-ref-data/-_ABURDENPOM-ANN-global.png\n", + " * Plots are identical\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/aero-no-ref-data/-_ABURDENSEASALT-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/aero-no-ref-data/-_ABURDENSEASALT-ANN-global.png\n", + " * Plots are identical\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/aero-no-ref-data/-_ABURDENSO4-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/aero-no-ref-data/-_ABURDENSO4-ANN-global.png\n", + " * Plots are identical\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/aero-no-ref-data/-_ABURDENSO4_STR-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/aero-no-ref-data/-_ABURDENSO4_STR-ANN-global.png\n", + " * Plots are identical\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/aero-no-ref-data/-_ABURDENSO4_TRO-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/aero-no-ref-data/-_ABURDENSO4_TRO-ANN-global.png\n", + " * Plots are identical\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/aero-no-ref-data/-_ABURDENSOA-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/aero-no-ref-data/-_ABURDENSOA-ANN-global.png\n", + " * Plots are identical\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/aero-no-ref-data/-_Mass_bc_330-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/aero-no-ref-data/-_Mass_bc_330-ANN-global.png\n", + " * Plots are identical\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/aero-no-ref-data/-_Mass_bc_850-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/aero-no-ref-data/-_Mass_bc_850-ANN-global.png\n", + " * Plots are identical\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/aero-no-ref-data/-_Mass_bc_srf-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/aero-no-ref-data/-_Mass_bc_srf-ANN-global.png\n", + " * Plots are identical\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/aero-no-ref-data/-_Mass_dst_330-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/aero-no-ref-data/-_Mass_dst_330-ANN-global.png\n", + " * Plots are identical\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/aero-no-ref-data/-_Mass_dst_850-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/aero-no-ref-data/-_Mass_dst_850-ANN-global.png\n", + " * Plots are identical\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/aero-no-ref-data/-_Mass_dst_srf-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/aero-no-ref-data/-_Mass_dst_srf-ANN-global.png\n", + " * Plots are identical\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/aero-no-ref-data/-_Mass_mom_330-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/aero-no-ref-data/-_Mass_mom_330-ANN-global.png\n", + " * Plots are identical\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/aero-no-ref-data/-_Mass_mom_850-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/aero-no-ref-data/-_Mass_mom_850-ANN-global.png\n", + " * Plots are identical\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/aero-no-ref-data/-_Mass_mom_srf-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/aero-no-ref-data/-_Mass_mom_srf-ANN-global.png\n", + " * Plots are identical\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/aero-no-ref-data/-_Mass_ncl_330-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/aero-no-ref-data/-_Mass_ncl_330-ANN-global.png\n", + " * Plots are identical\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/aero-no-ref-data/-_Mass_ncl_850-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/aero-no-ref-data/-_Mass_ncl_850-ANN-global.png\n", + " * Plots are identical\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/aero-no-ref-data/-_Mass_ncl_srf-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/aero-no-ref-data/-_Mass_ncl_srf-ANN-global.png\n", + " * Plots are identical\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/aero-no-ref-data/-_Mass_pom_330-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/aero-no-ref-data/-_Mass_pom_330-ANN-global.png\n", + " * Plots are identical\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/aero-no-ref-data/-_Mass_pom_850-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/aero-no-ref-data/-_Mass_pom_850-ANN-global.png\n", + " * Plots are identical\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/aero-no-ref-data/-_Mass_pom_srf-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/aero-no-ref-data/-_Mass_pom_srf-ANN-global.png\n", + " * Plots are identical\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/aero-no-ref-data/-_Mass_so4_330-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/aero-no-ref-data/-_Mass_so4_330-ANN-global.png\n", + " * Plots are identical\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/aero-no-ref-data/-_Mass_so4_850-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/aero-no-ref-data/-_Mass_so4_850-ANN-global.png\n", + " * Plots are identical\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/aero-no-ref-data/-_Mass_so4_srf-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/aero-no-ref-data/-_Mass_so4_srf-ANN-global.png\n", + " * Plots are identical\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/aero-no-ref-data/-_Mass_soa_330-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/aero-no-ref-data/-_Mass_soa_330-ANN-global.png\n", + " * Plots are identical\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/aero-no-ref-data/-_Mass_soa_850-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/aero-no-ref-data/-_Mass_soa_850-ANN-global.png\n", + " * Plots are identical\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/lat_lon/aero-no-ref-data/-_Mass_soa_srf-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/lat_lon/aero-no-ref-data/-_Mass_soa_srf-ANN-global.png\n", + " * Plots are identical\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/meridional_mean_2d/ERA5/ERA5-OMEGA-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/meridional_mean_2d/ERA5/ERA5-OMEGA-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/meridional_mean_2d/ERA5_diff/ERA5-OMEGA-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/meridional_mean_2d/ERA5/ERA5-RELHUM-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/meridional_mean_2d/ERA5/ERA5-RELHUM-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/meridional_mean_2d/ERA5_diff/ERA5-RELHUM-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/meridional_mean_2d/ERA5/ERA5-T-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/meridional_mean_2d/ERA5/ERA5-T-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/meridional_mean_2d/ERA5_diff/ERA5-T-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/meridional_mean_2d/ERA5/ERA5-U-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/meridional_mean_2d/ERA5/ERA5-U-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/meridional_mean_2d/ERA5_diff/ERA5-U-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/meridional_mean_2d/MERRA2/MERRA2-OMEGA-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/meridional_mean_2d/MERRA2/MERRA2-OMEGA-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/meridional_mean_2d/MERRA2_diff/MERRA2-OMEGA-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/meridional_mean_2d/MERRA2/MERRA2-RELHUM-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/meridional_mean_2d/MERRA2/MERRA2-RELHUM-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/meridional_mean_2d/MERRA2_diff/MERRA2-RELHUM-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/meridional_mean_2d/MERRA2/MERRA2-T-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/meridional_mean_2d/MERRA2/MERRA2-T-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/meridional_mean_2d/MERRA2_diff/MERRA2-T-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/meridional_mean_2d/MERRA2/MERRA2-U-ANN-global.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/meridional_mean_2d/MERRA2/MERRA2-U-ANN-global.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/meridional_mean_2d/MERRA2_diff/MERRA2-U-ANN-global.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-ALBEDO_SRF-ANN-polar_N.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-ALBEDO_SRF-ANN-polar_N.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/CERES-EBAF-surface-v4.1_diff/ceres_ebaf_surface_v4.1-ALBEDO_SRF-ANN-polar_N.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-ALBEDO_SRF-ANN-polar_S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-ALBEDO_SRF-ANN-polar_S.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/CERES-EBAF-surface-v4.1_diff/ceres_ebaf_surface_v4.1-ALBEDO_SRF-ANN-polar_S.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-FLDS-ANN-polar_N.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-FLDS-ANN-polar_N.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/CERES-EBAF-surface-v4.1_diff/ceres_ebaf_surface_v4.1-FLDS-ANN-polar_N.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-FLDS-ANN-polar_S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-FLDS-ANN-polar_S.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/CERES-EBAF-surface-v4.1_diff/ceres_ebaf_surface_v4.1-FLDS-ANN-polar_S.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-FLDSC-ANN-polar_N.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-FLDSC-ANN-polar_N.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/CERES-EBAF-surface-v4.1_diff/ceres_ebaf_surface_v4.1-FLDSC-ANN-polar_N.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-FLDSC-ANN-polar_S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-FLDSC-ANN-polar_S.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/CERES-EBAF-surface-v4.1_diff/ceres_ebaf_surface_v4.1-FLDSC-ANN-polar_S.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-FLNS-ANN-polar_N.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-FLNS-ANN-polar_N.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/CERES-EBAF-surface-v4.1_diff/ceres_ebaf_surface_v4.1-FLNS-ANN-polar_N.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-FLNS-ANN-polar_S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-FLNS-ANN-polar_S.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/CERES-EBAF-surface-v4.1_diff/ceres_ebaf_surface_v4.1-FLNS-ANN-polar_S.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-FLNSC-ANN-polar_N.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-FLNSC-ANN-polar_N.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/CERES-EBAF-surface-v4.1_diff/ceres_ebaf_surface_v4.1-FLNSC-ANN-polar_N.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-FLNSC-ANN-polar_S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-FLNSC-ANN-polar_S.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/CERES-EBAF-surface-v4.1_diff/ceres_ebaf_surface_v4.1-FLNSC-ANN-polar_S.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-FSDS-ANN-polar_N.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-FSDS-ANN-polar_N.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/CERES-EBAF-surface-v4.1_diff/ceres_ebaf_surface_v4.1-FSDS-ANN-polar_N.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-FSDS-ANN-polar_S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-FSDS-ANN-polar_S.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/CERES-EBAF-surface-v4.1_diff/ceres_ebaf_surface_v4.1-FSDS-ANN-polar_S.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-FSDSC-ANN-polar_N.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-FSDSC-ANN-polar_N.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/CERES-EBAF-surface-v4.1_diff/ceres_ebaf_surface_v4.1-FSDSC-ANN-polar_N.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-FSDSC-ANN-polar_S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-FSDSC-ANN-polar_S.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/CERES-EBAF-surface-v4.1_diff/ceres_ebaf_surface_v4.1-FSDSC-ANN-polar_S.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-FSNS-ANN-polar_N.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-FSNS-ANN-polar_N.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/CERES-EBAF-surface-v4.1_diff/ceres_ebaf_surface_v4.1-FSNS-ANN-polar_N.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-FSNS-ANN-polar_S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-FSNS-ANN-polar_S.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/CERES-EBAF-surface-v4.1_diff/ceres_ebaf_surface_v4.1-FSNS-ANN-polar_S.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-FSNSC-ANN-polar_N.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-FSNSC-ANN-polar_N.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/CERES-EBAF-surface-v4.1_diff/ceres_ebaf_surface_v4.1-FSNSC-ANN-polar_N.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-FSNSC-ANN-polar_S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-FSNSC-ANN-polar_S.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/CERES-EBAF-surface-v4.1_diff/ceres_ebaf_surface_v4.1-FSNSC-ANN-polar_S.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-LWCFSRF-ANN-polar_N.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-LWCFSRF-ANN-polar_N.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/CERES-EBAF-surface-v4.1_diff/ceres_ebaf_surface_v4.1-LWCFSRF-ANN-polar_N.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-LWCFSRF-ANN-polar_S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-LWCFSRF-ANN-polar_S.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/CERES-EBAF-surface-v4.1_diff/ceres_ebaf_surface_v4.1-LWCFSRF-ANN-polar_S.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-SWCFSRF-ANN-polar_N.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-SWCFSRF-ANN-polar_N.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/CERES-EBAF-surface-v4.1_diff/ceres_ebaf_surface_v4.1-SWCFSRF-ANN-polar_N.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-SWCFSRF-ANN-polar_S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/CERES-EBAF-surface-v4.1/ceres_ebaf_surface_v4.1-SWCFSRF-ANN-polar_S.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/CERES-EBAF-surface-v4.1_diff/ceres_ebaf_surface_v4.1-SWCFSRF-ANN-polar_S.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/CRU_IPCC/CRU-TREFHT-ANN-polar_N.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/CRU_IPCC/CRU-TREFHT-ANN-polar_N.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/CRU_IPCC_diff/CRU-TREFHT-ANN-polar_N.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/ERA5/ERA5-LHFLX-ANN-polar_N.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/ERA5/ERA5-LHFLX-ANN-polar_N.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/ERA5_diff/ERA5-LHFLX-ANN-polar_N.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/ERA5/ERA5-LHFLX-ANN-polar_S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/ERA5/ERA5-LHFLX-ANN-polar_S.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/ERA5_diff/ERA5-LHFLX-ANN-polar_S.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/ERA5/ERA5-PRECT-ANN-polar_N.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/ERA5/ERA5-PRECT-ANN-polar_N.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/ERA5_diff/ERA5-PRECT-ANN-polar_N.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/ERA5/ERA5-PRECT-ANN-polar_S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/ERA5/ERA5-PRECT-ANN-polar_S.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/ERA5_diff/ERA5-PRECT-ANN-polar_S.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/ERA5/ERA5-PSL-ANN-polar_N.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/ERA5/ERA5-PSL-ANN-polar_N.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/ERA5_diff/ERA5-PSL-ANN-polar_N.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/ERA5/ERA5-PSL-ANN-polar_S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/ERA5/ERA5-PSL-ANN-polar_S.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/ERA5_diff/ERA5-PSL-ANN-polar_S.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/ERA5/ERA5-T-200-ANN-polar_N.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/ERA5/ERA5-T-200-ANN-polar_N.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/ERA5_diff/ERA5-T-200-ANN-polar_N.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/ERA5/ERA5-T-200-ANN-polar_S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/ERA5/ERA5-T-200-ANN-polar_S.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/ERA5_diff/ERA5-T-200-ANN-polar_S.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/ERA5/ERA5-T-850-ANN-polar_N.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/ERA5/ERA5-T-850-ANN-polar_N.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/ERA5_diff/ERA5-T-850-ANN-polar_N.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/ERA5/ERA5-T-850-ANN-polar_S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/ERA5/ERA5-T-850-ANN-polar_S.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/ERA5_diff/ERA5-T-850-ANN-polar_S.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/ERA5/ERA5-TAUXY-ANN-polar_N.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/ERA5/ERA5-TAUXY-ANN-polar_N.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/ERA5_diff/ERA5-TAUXY-ANN-polar_N.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/ERA5/ERA5-TAUXY-ANN-polar_S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/ERA5/ERA5-TAUXY-ANN-polar_S.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/ERA5_diff/ERA5-TAUXY-ANN-polar_S.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/ERA5/ERA5-TMQ-ANN-polar_N.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/ERA5/ERA5-TMQ-ANN-polar_N.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/ERA5_diff/ERA5-TMQ-ANN-polar_N.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/ERA5/ERA5-TMQ-ANN-polar_S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/ERA5/ERA5-TMQ-ANN-polar_S.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/ERA5_diff/ERA5-TMQ-ANN-polar_S.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/ERA5/ERA5-TREFHT-ANN-polar_N.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/ERA5/ERA5-TREFHT-ANN-polar_N.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/ERA5_diff/ERA5-TREFHT-ANN-polar_N.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/ERA5/ERA5-TREFHT-ANN-polar_S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/ERA5/ERA5-TREFHT-ANN-polar_S.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/ERA5_diff/ERA5-TREFHT-ANN-polar_S.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/ERA5/ERA5-U-200-ANN-polar_N.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/ERA5/ERA5-U-200-ANN-polar_N.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/ERA5_diff/ERA5-U-200-ANN-polar_N.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/ERA5/ERA5-U-200-ANN-polar_S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/ERA5/ERA5-U-200-ANN-polar_S.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/ERA5_diff/ERA5-U-200-ANN-polar_S.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/ERA5/ERA5-U-850-ANN-polar_N.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/ERA5/ERA5-U-850-ANN-polar_N.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/ERA5_diff/ERA5-U-850-ANN-polar_N.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/ERA5/ERA5-U-850-ANN-polar_S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/ERA5/ERA5-U-850-ANN-polar_S.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/ERA5_diff/ERA5-U-850-ANN-polar_S.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/ERA5/ERA5-Z3-500-ANN-polar_N.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/ERA5/ERA5-Z3-500-ANN-polar_N.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/ERA5_diff/ERA5-Z3-500-ANN-polar_N.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/ERA5/ERA5-Z3-500-ANN-polar_S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/ERA5/ERA5-Z3-500-ANN-polar_S.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/ERA5_diff/ERA5-Z3-500-ANN-polar_S.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/GPCP_v2.3/GPCP_v2.3-PRECT-ANN-polar_N.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/GPCP_v2.3/GPCP_v2.3-PRECT-ANN-polar_N.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/GPCP_v2.3_diff/GPCP_v2.3-PRECT-ANN-polar_N.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/GPCP_v2.3/GPCP_v2.3-PRECT-ANN-polar_S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/GPCP_v2.3/GPCP_v2.3-PRECT-ANN-polar_S.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/GPCP_v2.3_diff/GPCP_v2.3-PRECT-ANN-polar_S.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/GPCP_v3.2/GPCP_v3.2-PRECT-ANN-polar_N.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/GPCP_v3.2/GPCP_v3.2-PRECT-ANN-polar_N.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/GPCP_v3.2_diff/GPCP_v3.2-PRECT-ANN-polar_N.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/GPCP_v3.2/GPCP_v3.2-PRECT-ANN-polar_S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/GPCP_v3.2/GPCP_v3.2-PRECT-ANN-polar_S.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/GPCP_v3.2_diff/GPCP_v3.2-PRECT-ANN-polar_S.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/MERRA2/MERRA2-LHFLX-ANN-polar_N.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2/MERRA2-LHFLX-ANN-polar_N.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2_diff/MERRA2-LHFLX-ANN-polar_N.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/MERRA2/MERRA2-LHFLX-ANN-polar_S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2/MERRA2-LHFLX-ANN-polar_S.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2_diff/MERRA2-LHFLX-ANN-polar_S.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/MERRA2/MERRA2-PRECT-ANN-polar_N.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2/MERRA2-PRECT-ANN-polar_N.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2_diff/MERRA2-PRECT-ANN-polar_N.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/MERRA2/MERRA2-PRECT-ANN-polar_S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2/MERRA2-PRECT-ANN-polar_S.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2_diff/MERRA2-PRECT-ANN-polar_S.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/MERRA2/MERRA2-PSL-ANN-polar_N.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2/MERRA2-PSL-ANN-polar_N.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2_diff/MERRA2-PSL-ANN-polar_N.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/MERRA2/MERRA2-PSL-ANN-polar_S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2/MERRA2-PSL-ANN-polar_S.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2_diff/MERRA2-PSL-ANN-polar_S.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/MERRA2/MERRA2-T-200-ANN-polar_N.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2/MERRA2-T-200-ANN-polar_N.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2_diff/MERRA2-T-200-ANN-polar_N.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/MERRA2/MERRA2-T-200-ANN-polar_S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2/MERRA2-T-200-ANN-polar_S.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2_diff/MERRA2-T-200-ANN-polar_S.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/MERRA2/MERRA2-T-850-ANN-polar_N.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2/MERRA2-T-850-ANN-polar_N.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2_diff/MERRA2-T-850-ANN-polar_N.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/MERRA2/MERRA2-T-850-ANN-polar_S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2/MERRA2-T-850-ANN-polar_S.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2_diff/MERRA2-T-850-ANN-polar_S.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/MERRA2/MERRA2-TAUXY-ANN-polar_N.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2/MERRA2-TAUXY-ANN-polar_N.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2_diff/MERRA2-TAUXY-ANN-polar_N.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/MERRA2/MERRA2-TAUXY-ANN-polar_S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2/MERRA2-TAUXY-ANN-polar_S.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2_diff/MERRA2-TAUXY-ANN-polar_S.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/MERRA2/MERRA2-TMQ-ANN-polar_N.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2/MERRA2-TMQ-ANN-polar_N.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2_diff/MERRA2-TMQ-ANN-polar_N.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/MERRA2/MERRA2-TMQ-ANN-polar_S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2/MERRA2-TMQ-ANN-polar_S.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2_diff/MERRA2-TMQ-ANN-polar_S.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/MERRA2/MERRA2-TREFHT-ANN-polar_N.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2/MERRA2-TREFHT-ANN-polar_N.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2_diff/MERRA2-TREFHT-ANN-polar_N.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/MERRA2/MERRA2-TREFHT-ANN-polar_S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2/MERRA2-TREFHT-ANN-polar_S.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2_diff/MERRA2-TREFHT-ANN-polar_S.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/MERRA2/MERRA2-TREFMNAV-ANN-polar_N.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2/MERRA2-TREFMNAV-ANN-polar_N.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2_diff/MERRA2-TREFMNAV-ANN-polar_N.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/MERRA2/MERRA2-TREFMNAV-ANN-polar_S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2/MERRA2-TREFMNAV-ANN-polar_S.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2_diff/MERRA2-TREFMNAV-ANN-polar_S.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/MERRA2/MERRA2-TREFMXAV-ANN-polar_N.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2/MERRA2-TREFMXAV-ANN-polar_N.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2_diff/MERRA2-TREFMXAV-ANN-polar_N.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/MERRA2/MERRA2-TREFMXAV-ANN-polar_S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2/MERRA2-TREFMXAV-ANN-polar_S.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2_diff/MERRA2-TREFMXAV-ANN-polar_S.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/MERRA2/MERRA2-U-200-ANN-polar_N.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2/MERRA2-U-200-ANN-polar_N.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2_diff/MERRA2-U-200-ANN-polar_N.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/MERRA2/MERRA2-U-200-ANN-polar_S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2/MERRA2-U-200-ANN-polar_S.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2_diff/MERRA2-U-200-ANN-polar_S.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/MERRA2/MERRA2-U-850-ANN-polar_N.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2/MERRA2-U-850-ANN-polar_N.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2_diff/MERRA2-U-850-ANN-polar_N.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/MERRA2/MERRA2-U-850-ANN-polar_S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2/MERRA2-U-850-ANN-polar_S.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2_diff/MERRA2-U-850-ANN-polar_S.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/MERRA2/MERRA2-Z3-500-ANN-polar_N.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2/MERRA2-Z3-500-ANN-polar_N.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2_diff/MERRA2-Z3-500-ANN-polar_N.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/MERRA2/MERRA2-Z3-500-ANN-polar_S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2/MERRA2-Z3-500-ANN-polar_S.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/MERRA2_diff/MERRA2-Z3-500-ANN-polar_S.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/SST_CL_HadISST/HadISST_CL-SST-ANN-polar_N.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/SST_CL_HadISST/HadISST_CL-SST-ANN-polar_N.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/SST_CL_HadISST_diff/HadISST_CL-SST-ANN-polar_N.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/SST_CL_HadISST/HadISST_CL-SST-ANN-polar_S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/SST_CL_HadISST/HadISST_CL-SST-ANN-polar_S.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/SST_CL_HadISST_diff/HadISST_CL-SST-ANN-polar_S.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/SST_PD_HadISST/HadISST_PD-SST-ANN-polar_N.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/SST_PD_HadISST/HadISST_PD-SST-ANN-polar_N.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/SST_PD_HadISST_diff/HadISST_PD-SST-ANN-polar_N.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/SST_PD_HadISST/HadISST_PD-SST-ANN-polar_S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/SST_PD_HadISST/HadISST_PD-SST-ANN-polar_S.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/SST_PD_HadISST_diff/HadISST_PD-SST-ANN-polar_S.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/SST_PI_HadISST/HadISST_PI-SST-ANN-polar_N.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/SST_PI_HadISST/HadISST_PI-SST-ANN-polar_N.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/SST_PI_HadISST_diff/HadISST_PI-SST-ANN-polar_N.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/polar/SST_PI_HadISST/HadISST_PI-SST-ANN-polar_S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/SST_PI_HadISST/HadISST_PI-SST-ANN-polar_S.png\n", + " * Difference path /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/polar/SST_PI_HadISST_diff/HadISST_PI-SST-ANN-polar_S.png\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/streamflow/RIVER_DISCHARGE_OVER_LAND_LIQ_GSIM/annual_map.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/streamflow/RIVER_DISCHARGE_OVER_LAND_LIQ_GSIM/annual_map.png\n", + " * Plots are identical\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/streamflow/RIVER_DISCHARGE_OVER_LAND_LIQ_GSIM/annual_scatter.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/streamflow/RIVER_DISCHARGE_OVER_LAND_LIQ_GSIM/annual_scatter.png\n", + " * Plots are identical\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/streamflow/RIVER_DISCHARGE_OVER_LAND_LIQ_GSIM/seasonality_map.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/streamflow/RIVER_DISCHARGE_OVER_LAND_LIQ_GSIM/seasonality_map.png\n", + " * Plots are identical\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/tropical_subseasonal/wavenumber-frequency/FLUT_background_15N-15S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/tropical_subseasonal/wavenumber-frequency/FLUT_background_15N-15S.png\n", + " * Plots are identical\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/tropical_subseasonal/wavenumber-frequency/FLUT_norm_asy_15N-15S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/tropical_subseasonal/wavenumber-frequency/FLUT_norm_asy_15N-15S.png\n", + " * Plots are identical\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/tropical_subseasonal/wavenumber-frequency/FLUT_norm_asy_zoom_15N-15S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/tropical_subseasonal/wavenumber-frequency/FLUT_norm_asy_zoom_15N-15S.png\n", + " * Plots are identical\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/tropical_subseasonal/wavenumber-frequency/FLUT_norm_sym_15N-15S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/tropical_subseasonal/wavenumber-frequency/FLUT_norm_sym_15N-15S.png\n", + " * Plots are identical\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/tropical_subseasonal/wavenumber-frequency/FLUT_norm_sym_zoom_15N-15S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/tropical_subseasonal/wavenumber-frequency/FLUT_norm_sym_zoom_15N-15S.png\n", + " * Plots are identical\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/tropical_subseasonal/wavenumber-frequency/FLUT_raw_asy_15N-15S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/tropical_subseasonal/wavenumber-frequency/FLUT_raw_asy_15N-15S.png\n", + " * Plots are identical\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/tropical_subseasonal/wavenumber-frequency/FLUT_raw_sym_15N-15S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/tropical_subseasonal/wavenumber-frequency/FLUT_raw_sym_15N-15S.png\n", + " * Plots are identical\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/tropical_subseasonal/wavenumber-frequency/PRECT_background_15N-15S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/tropical_subseasonal/wavenumber-frequency/PRECT_background_15N-15S.png\n", + " * Plots are identical\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/tropical_subseasonal/wavenumber-frequency/PRECT_norm_asy_15N-15S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/tropical_subseasonal/wavenumber-frequency/PRECT_norm_asy_15N-15S.png\n", + " * Plots are identical\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/tropical_subseasonal/wavenumber-frequency/PRECT_norm_asy_zoom_15N-15S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/tropical_subseasonal/wavenumber-frequency/PRECT_norm_asy_zoom_15N-15S.png\n", + " * Plots are identical\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/tropical_subseasonal/wavenumber-frequency/PRECT_norm_sym_15N-15S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/tropical_subseasonal/wavenumber-frequency/PRECT_norm_sym_15N-15S.png\n", + " * Plots are identical\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/tropical_subseasonal/wavenumber-frequency/PRECT_norm_sym_zoom_15N-15S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/tropical_subseasonal/wavenumber-frequency/PRECT_norm_sym_zoom_15N-15S.png\n", + " * Plots are identical\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/tropical_subseasonal/wavenumber-frequency/PRECT_raw_asy_15N-15S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/tropical_subseasonal/wavenumber-frequency/PRECT_raw_asy_15N-15S.png\n", + " * Plots are identical\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/tropical_subseasonal/wavenumber-frequency/PRECT_raw_sym_15N-15S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/tropical_subseasonal/wavenumber-frequency/PRECT_raw_sym_15N-15S.png\n", + " * Plots are identical\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/tropical_subseasonal/wavenumber-frequency/U850_background_15N-15S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/tropical_subseasonal/wavenumber-frequency/U850_background_15N-15S.png\n", + " * Plots are identical\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/tropical_subseasonal/wavenumber-frequency/U850_norm_asy_15N-15S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/tropical_subseasonal/wavenumber-frequency/U850_norm_asy_15N-15S.png\n", + " * Plots are identical\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/tropical_subseasonal/wavenumber-frequency/U850_norm_asy_zoom_15N-15S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/tropical_subseasonal/wavenumber-frequency/U850_norm_asy_zoom_15N-15S.png\n", + " * Plots are identical\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/tropical_subseasonal/wavenumber-frequency/U850_norm_sym_15N-15S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/tropical_subseasonal/wavenumber-frequency/U850_norm_sym_15N-15S.png\n", + " * Plots are identical\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/tropical_subseasonal/wavenumber-frequency/U850_norm_sym_zoom_15N-15S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/tropical_subseasonal/wavenumber-frequency/U850_norm_sym_zoom_15N-15S.png\n", + " * Plots are identical\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/tropical_subseasonal/wavenumber-frequency/U850_raw_asy_15N-15S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/tropical_subseasonal/wavenumber-frequency/U850_raw_asy_15N-15S.png\n", + " * Plots are identical\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/tropical_subseasonal/wavenumber-frequency/U850_raw_sym_15N-15S.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/tropical_subseasonal/wavenumber-frequency/U850_raw_sym_15N-15S.png\n", + " * Plots are identical\n", + "Comparing:\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/v2.12.1v2/viewer/cmip6-comparison-data/cmip6_amip.png\n", + " * /global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/viewer/cmip6-comparison-data/cmip6_amip.png\n" + ] + }, + { + "ename": "FileNotFoundError", + "evalue": "[Errno 2] No such file or directory: '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/viewer/cmip6-comparison-data/cmip6_amip.png'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[9], line 9\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m * \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mmain_path\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 7\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m * \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mdev_path\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m----> 9\u001b[0m \u001b[43mget_image_diffs\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdev_path\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmain_path\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m/global/u2/v/vo13/E3SM-Project/e3sm_diags/auxiliary_tools/cdat_regression_testing/utils.py:183\u001b[0m, in \u001b[0;36mget_image_diffs\u001b[0;34m(actual_path, expected_path)\u001b[0m\n\u001b[1;32m 167\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mget_image_diffs\u001b[39m(actual_path: \u001b[38;5;28mstr\u001b[39m, expected_path: \u001b[38;5;28mstr\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28mstr\u001b[39m \u001b[38;5;241m|\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 168\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Get the diffs between two images.\u001b[39;00m\n\u001b[1;32m 169\u001b[0m \n\u001b[1;32m 170\u001b[0m \u001b[38;5;124;03m This function is useful for comparing two datasets that can't be compared\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 181\u001b[0m \u001b[38;5;124;03m The path to the expected png (e.g., CDAT).\u001b[39;00m\n\u001b[1;32m 182\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m--> 183\u001b[0m actual_png \u001b[38;5;241m=\u001b[39m \u001b[43mImage\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mopen\u001b[49m\u001b[43m(\u001b[49m\u001b[43mactual_path\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241m.\u001b[39mconvert(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mRGB\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 184\u001b[0m expected_png \u001b[38;5;241m=\u001b[39m Image\u001b[38;5;241m.\u001b[39mopen(expected_path)\u001b[38;5;241m.\u001b[39mconvert(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mRGB\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 186\u001b[0m diff \u001b[38;5;241m=\u001b[39m ImageChops\u001b[38;5;241m.\u001b[39mdifference(actual_png, expected_png)\n", + "File \u001b[0;32m/global/u2/v/vo13/mambaforge/envs/e3sm_diags_dev_cm/lib/python3.10/site-packages/PIL/Image.py:3431\u001b[0m, in \u001b[0;36mopen\u001b[0;34m(fp, mode, formats)\u001b[0m\n\u001b[1;32m 3428\u001b[0m filename \u001b[38;5;241m=\u001b[39m os\u001b[38;5;241m.\u001b[39mpath\u001b[38;5;241m.\u001b[39mrealpath(os\u001b[38;5;241m.\u001b[39mfspath(fp))\n\u001b[1;32m 3430\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m filename:\n\u001b[0;32m-> 3431\u001b[0m fp \u001b[38;5;241m=\u001b[39m \u001b[43mbuiltins\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mopen\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfilename\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mrb\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 3432\u001b[0m exclusive_fp \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n\u001b[1;32m 3433\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n", + "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: '/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/24-12-09-main/viewer/cmip6-comparison-data/cmip6_amip.png'" + ] + } + ], + "source": [ + "MAIN_GLOB = [f for f in MAIN_GLOB if \"AOD_550\" not in f]\n", + "\n", + "for main_path in MAIN_GLOB:\n", + " dev_path = main_path.replace(MAIN_PATH, DEV_PATH)\n", + " print(\"Comparing:\")\n", + " print(f\" * {main_path}\")\n", + " print(f\" * {dev_path}\")\n", + "\n", + " get_image_diffs(dev_path, main_path)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Results\n", + "\n", + "All the plots are virtually identical. There looks like one red dot that is different, which creates a diff plot.\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/conda-env/ci.yml b/conda-env/ci.yml index 2ab429333..b1cfb6c98 100644 --- a/conda-env/ci.yml +++ b/conda-env/ci.yml @@ -16,7 +16,6 @@ dependencies: - cartopy_offlinedata - cf-units - dask - - esmpy >=8.4.0 - lxml - mache >=0.15.0 - matplotlib-base >=3.8.2 diff --git a/conda-env/dev.yml b/conda-env/dev.yml index 96a76f6eb..fb363b64f 100644 --- a/conda-env/dev.yml +++ b/conda-env/dev.yml @@ -14,7 +14,6 @@ dependencies: - cartopy_offlinedata - cf-units - dask - - esmpy >=8.4.0 - lxml - mache >=0.15.0 - matplotlib-base >=3.8.2 diff --git a/pyproject.toml b/pyproject.toml index ab936ea8a..34fb0bf5a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -34,7 +34,6 @@ dependencies = [ # "cartopy_offlinedata", "cf-units", "dask", - "esmpy >=8.4.0", "lxml", "mache >=0.15.0", "matplotlib >=3.8.2", diff --git a/tests/clean_tests_repo.sh b/tests/clean_tests_repo.sh deleted file mode 100755 index 3cf4d497e..000000000 --- a/tests/clean_tests_repo.sh +++ /dev/null @@ -1,6 +0,0 @@ -rm -rf tests/__pycache__ -rm -rf tests/integration/__pycache__ -rm -rf tests/integration/all_sets_results_test -rm -rf tests/integration/image_check_failures -rm -rf tests/integration/integration_test_data -rm -rf tests/integration/integration_test_images diff --git a/tests/complete_run.py b/tests/complete_run.py new file mode 100644 index 000000000..22a568965 --- /dev/null +++ b/tests/complete_run.py @@ -0,0 +1,26 @@ +from e3sm_diags.run import runner + +from tests.complete_run_params import params + +# Run +runner.sets_to_run = [ + "lat_lon", + "zonal_mean_xy", + "zonal_mean_2d", + "polar", + "cosp_histogram", + "meridional_mean_2d", + "enso_diags", + "qbo", + "diurnal_cycle", + "annual_cycle_zonal_mean", + "streamflow", + "zonal_mean_2d_stratosphere", + "arm_diags", + "tc_analysis", + "aerosol_aeronet", + "aerosol_budget", + "tropical_subseasonal", +] + +runner.run_diags(params) diff --git a/tests/complete_run_params.py b/tests/complete_run_params.py new file mode 100644 index 000000000..114093681 --- /dev/null +++ b/tests/complete_run_params.py @@ -0,0 +1,194 @@ +""" +This script sets up and runs a series of diagnostics for the E3SM model output. + +The diagnostics include: +- ENSO diagnostics +- Tropical subseasonal variability diagnostics +- QBO diagnostics +- Diurnal cycle diagnostics +- Streamflow diagnostics +- Tropical cyclone analysis +- ARM diagnostics + +The script configures the parameters for each diagnostic, including paths to +model output and observational data, time periods for analysis, and output +settings. It then runs the diagnostics using the e3sm_diags package. + +Parameters: +- case: The name of the model case. +- short_name: A short name for the model case. +- results_dir: Directory where the results will be saved. +- test_climo: Path to the model climatology data. +- test_ts: Path to the model time-series data. +- test_ts_daily_dir: Path to the model daily time-series data. +- ref_climo: Path to the reference climatology data. +- ref_ts: Path to the reference time-series data. +- start_yr: Start year for the analysis. +- end_yr: End year for the analysis. + +The script uses multiprocessing to speed up the diagnostics computation. + +Example usage: + python complete_run_script.py +""" + +from e3sm_diags.parameter.arm_diags_parameter import ARMDiagsParameter +from e3sm_diags.parameter.core_parameter import CoreParameter +from e3sm_diags.parameter.diurnal_cycle_parameter import DiurnalCycleParameter +from e3sm_diags.parameter.enso_diags_parameter import EnsoDiagsParameter +from e3sm_diags.parameter.qbo_parameter import QboParameter +from e3sm_diags.parameter.streamflow_parameter import StreamflowParameter +from e3sm_diags.parameter.tc_analysis_parameter import TCAnalysisParameter +from e3sm_diags.parameter.tropical_subseasonal_parameter import ( + TropicalSubseasonalParameter, +) + +case = "extendedOutput.v3.LR.historical_0101" +short_name = "v3.LR.historical_0101" + +# TODO: Update `MAIN_DIR` as needed. +MAIN_DIR = "v2.12.1" +results_dir = f"/global/cfs/cdirs/e3sm/www/e3sm_diags/{MAIN_DIR}/" + +test_climo = "/global/cfs/cdirs/e3sm/chengzhu/tutorial2024/v3.LR.historical_0101/post/atm/180x360_aave/clim/15yr" +test_ts = "/global/cfs/cdirs/e3sm/chengzhu/tutorial2024/v3.LR.historical_0101/post/atm/180x360_aave/ts/monthly/15yr" +test_ts_daily_dir = "/global/cfs/cdirs/e3sm/chengzhu/tutorial2024/v3.LR.historical_0101/post/atm/180x360_aave/ts/daily/15yr" + +ref_climo = "/global/cfs/cdirs/e3sm/diagnostics/observations/Atm/climatology/" +ref_ts = "/global/cfs/cdirs/e3sm/diagnostics/observations/Atm/time-series" + +start_yr = "2000" +end_yr = "2014" + +param = CoreParameter() + +# Model +param.test_data_path = test_climo +param.test_name = case +param.short_test_name = short_name + +# Ref/Obs +param.reference_data_path = ref_climo + +# Output dir +param.results_dir = results_dir + +# Additional settings +param.run_type = "model_vs_obs" +param.diff_title = "Model - Observations" +param.output_format = ["png"] +param.output_format_subplot = [] +param.multiprocessing = True +param.num_workers = 24 +param.save_netcdf = True +param.seasons = ["ANN"] +params = [param] + +# Model +enso_param = EnsoDiagsParameter() +enso_param.test_data_path = test_ts +# enso_param.test_name = short_name +enso_param.test_start_yr = start_yr +enso_param.test_end_yr = end_yr + +# Obs +enso_param.reference_data_path = ref_ts +enso_param.ref_start_yr = start_yr +enso_param.ref_end_yr = end_yr + +enso_param.save_netcdf = True +params.append(enso_param) + +trop_param = TropicalSubseasonalParameter() +trop_param.test_data_path = test_ts_daily_dir +# trop_param.test_name = short_name +trop_param.test_start_yr = start_yr +trop_param.test_end_yr = end_yr + +# Obs +trop_param.reference_data_path = ref_ts +trop_param.ref_start_yr = "2001" +trop_param.ref_end_yr = "2010" + +trop_param.save_netcdf = True +params.append(trop_param) + +qbo_param = QboParameter() +qbo_param.test_data_path = test_ts +# qbo_param.test_name = short_name +qbo_param.test_start_yr = start_yr +qbo_param.test_end_yr = end_yr +qbo_param.ref_start_yr = start_yr +qbo_param.ref_end_yr = end_yr + +# Obs +qbo_param.reference_data_path = ref_ts + +qbo_param.save_netcdf = True +params.append(qbo_param) + +dc_param = DiurnalCycleParameter() +dc_param.test_data_path = "/global/cfs/cdirs/e3sm/chengzhu/tutorial2024/v3.LR.historical_0101/post/atm/180x360_aave/clim_diurnal_8xdaily/" +# dc_param.short_test_name = short_name +# Plotting diurnal cycle amplitude on different scales. Default is True +dc_param.normalize_test_amp = False + +# Obs +dc_param.reference_data_path = ref_climo + +dc_param.save_netcdf = True +params.append(dc_param) + +streamflow_param = StreamflowParameter() +streamflow_param.reference_data_path = ref_ts +streamflow_param.test_data_path = "/global/cfs/cdirs/e3sm/chengzhu/tutorial2024/v3.LR.historical_0101/post/rof/native/ts/monthly/15yr/" +# streamflow_param.test_name = short_name +streamflow_param.test_start_yr = start_yr +streamflow_param.test_end_yr = end_yr + +# Obs +streamflow_param.reference_data_path = ref_ts +streamflow_param.ref_start_yr = ( + "1986" # Streamflow gauge station data range from year 1986 to 1995 +) +streamflow_param.ref_end_yr = "1995" + +streamflow_param.save_netcdf = True +params.append(streamflow_param) + +tc_param = TCAnalysisParameter() +tc_param.test_data_path = "/global/cfs/cdirs/e3sm/chengzhu/tutorial2024/v3.LR.historical_0101/post/atm/tc-analysis_2000_2014" +# tc_param.short_test_name = short_name +tc_param.test_start_yr = start_yr +tc_param.test_end_yr = end_yr + +# Obs +tc_param.reference_data_path = ( + "/global/cfs/cdirs/e3sm/diagnostics/observations/Atm/tc-analysis/" +) +# For model vs obs, the ref start and end year can be any four digit strings +# For now, use all available years from obs by default +tc_param.ref_start_yr = "1979" +tc_param.ref_end_yr = "2018" + +tc_param.save_netcdf = True +params.append(tc_param) + +arm_param = ARMDiagsParameter() +arm_param.reference_data_path = ( + "/global/cfs/cdirs/e3sm/diagnostics/observations/Atm/arm-diags-data" +) +arm_param.ref_name = "armdiags" +arm_param.test_data_path = ( + "/global/cfs/cdirs/e3sm/chengzhu/tutorial2024/v3.LR.historical_0101/post/atm/site" +) +arm_param.test_name = short_name +arm_param.test_start_yr = start_yr +arm_param.test_end_yr = end_yr +# For model vs obs, the ref start and end year can be any four digit strings. +# For now, will use all available years form obs +arm_param.ref_start_yr = "0001" +arm_param.ref_end_yr = "0001" + +arm_param.save_netcdf = True +params.append(arm_param) diff --git a/tests/integration/complete_run.py b/tests/integration/old_complete_run.py similarity index 100% rename from tests/integration/complete_run.py rename to tests/integration/old_complete_run.py diff --git a/tests/test_area_mean_time_series.py b/tests/test_area_mean_time_series.py deleted file mode 100644 index 464090415..000000000 --- a/tests/test_area_mean_time_series.py +++ /dev/null @@ -1 +0,0 @@ -# TODO diff --git a/tests/test_complete_run.py b/tests/test_complete_run.py new file mode 100644 index 000000000..3b7cdd90c --- /dev/null +++ b/tests/test_complete_run.py @@ -0,0 +1,280 @@ +from __future__ import annotations + +import glob +import subprocess +from datetime import datetime +from typing import List, TypedDict + +import numpy as np +import pytest +import xarray as xr + +from tests.complete_run_params import params + +from e3sm_diags.derivations.derivations import DERIVED_VARIABLES +from e3sm_diags.logger import custom_logger +from e3sm_diags.run import runner + +logger = custom_logger(__name__) + + +class DiffResults(TypedDict): + """Type annotation for the results of the relative differences comparison.""" + + missing_files: List[str] + missing_vars: List[str] + matching_files: List[str] + mismatch_errors: List[str] + not_equal_errors: List[str] + key_errors: List[str] + + +# Absolute and relative tolerance levels for comparison of the data. +# Absolute is in floating point terms, relative is in percentage terms. +ATOL = 0 +RTOL = 1e-5 + + +def _get_git_branch_name() -> str: + """Get the current git branch name.""" + try: + branch_name = ( + subprocess.check_output( + ["git", "rev-parse", "--abbrev-ref", "HEAD"], + stderr=subprocess.DEVNULL, + ) + .strip() + .decode("utf-8") + ) + except subprocess.CalledProcessError: + branch_name = "unknown" + + return branch_name + + +BRANCH_NAME = _get_git_branch_name() +DEV_TIMESTAMP = datetime.now().strftime("%y-%m-%d") +DEV_DIR = f"{DEV_TIMESTAMP}-{BRANCH_NAME}" +DEV_PATH = f"/global/cfs/cdirs/e3sm/www/e3sm_diags/complete_run/{DEV_DIR}" + +DEV_GLOB = sorted(glob.glob(DEV_PATH + "**/**/*.nc")) +DEV_NUM_FILES = len(DEV_GLOB) + +# TODO: Update `MAIN_DIR` as needed. +MAIN_DIR = "24-12-09-main" +MAIN_PATH = f"/global/cfs/cdirs/e3sm/www/e3sm_diags/{MAIN_DIR}/" +MAIN_GLOB = sorted(glob.glob(MAIN_PATH + "**/**/*.nc")) +MAIN_NUM_FILES = len(MAIN_GLOB) + + +@pytest.fixture(scope="module") +def run_diags_and_get_results_dir() -> str: + """Run the diagnostics and get the results directory containing the images. + + The scope of this fixture is at the module level so that it only runs + once, then each individual test can reference the result directory. + + Returns + ------- + str + The path to the results directory. + """ + params[0].results_dir = DEV_PATH + + runner.sets_to_run = [ + "lat_lon", + "zonal_mean_xy", + "zonal_mean_2d", + "polar", + "cosp_histogram", + "meridional_mean_2d", + "enso_diags", + "qbo", + "diurnal_cycle", + "annual_cycle_zonal_mean", + "streamflow", + "zonal_mean_2d_stratosphere", + "arm_diags", + "tc_analysis", + "aerosol_aeronet", + "aerosol_budget", + "tropical_subseasonal", + ] + results = runner.run_diags(params) + + if results is not None: + results_dir = results[0].results_dir + else: + results_dir = params[0].results_dir + + return results_dir + + +class TestRegression: + @pytest.fixture(autouse=True) + def setup(self, run_diags_and_get_results_dir): + self.results_dir = run_diags_and_get_results_dir + + def test_check_if_files_found(self): + if DEV_NUM_FILES == 0 or MAIN_NUM_FILES == 0: + raise IOError( + "No files found at DEV_PATH and/or MAIN_PATH. " + f"Please check {DEV_PATH} and {MAIN_PATH}." + ) + + def test_check_if_matching_filecount(self): + if DEV_NUM_FILES != MAIN_NUM_FILES: + raise IOError( + "Number of files do not match at DEV_PATH and MAIN_PATH " + f"({DEV_NUM_FILES} vs. {MAIN_NUM_FILES})." + ) + + logger.info(f"Matching file count ({DEV_NUM_FILES} and {MAIN_NUM_FILES}).") + + def test_check_if_missing_files(self): + missing_dev_files, missing_main_files = _check_if_missing_files() + + assert len(missing_dev_files) == 0 + assert len(missing_main_files) == 0 + + def test_get_relative_diffs(self): + results = _get_relative_diffs() + + assert len(results["missing_files"]) == 0 + assert len(results["missing_vars"]) == 0 + assert len(results["matching_files"]) > 0 + assert len(results["mismatch_errors"]) == 0 + assert len(results["not_equal_errors"]) == 0 + assert len(results["key_errors"]) == 0 + + +def _get_relative_diffs() -> DiffResults: + results: DiffResults = { + "missing_files": [], + "missing_vars": [], + "matching_files": [], + "mismatch_errors": [], + "not_equal_errors": [], + "key_errors": [], + } + + for fp_main in MAIN_GLOB: + fp_dev = fp_main.replace(MAIN_DIR, DEV_DIR) + + logger.info("Comparing:") + logger.info(f" * {fp_dev}") + logger.info(f" * {fp_main}") + + try: + ds1 = xr.open_dataset(fp_dev) + ds2 = xr.open_dataset(fp_main) + except FileNotFoundError as e: + logger.info(f" {e}") + + if isinstance(e, FileNotFoundError) or isinstance(e, OSError): + results["missing_files"].append(fp_dev) + + continue + + var_key = fp_main.split("-")[-3] + + # for 3d vars such as T-200 + var_key.isdigit() + if var_key.isdigit(): + var_key = fp_main.split("-")[-4] + + dev_data = _get_var_data(ds1, var_key) + main_data = _get_var_data(ds2, var_key) + + logger.info(f" * var_key: {var_key}") + + if dev_data is None or main_data is None: + if dev_data is None: + results["missing_vars"].append(fp_dev) + elif main_data is None: + results["missing_vars"].append(fp_main) + + logger.error(" * Could not find variable key in the dataset(s)") + + continue + + try: + np.testing.assert_allclose( + dev_data, + main_data, + atol=ATOL, + rtol=RTOL, + ) + results["matching_files"].append(fp_main) + except (KeyError, AssertionError) as e: + msg = str(e) + + logger.info(f" {msg}") + + if "mismatch" in msg: + results["mismatch_errors"].append(fp_dev) + elif "Not equal to tolerance" in msg: + results["not_equal_errors"].append(fp_dev) + else: + logger.info(f" * All close and within relative tolerance ({RTOL})") + + return results + + +def _get_var_data(ds: xr.Dataset, var_key: str) -> np.ndarray | None: + """Retrieve variable data from an xarray Dataset. + + Parameters + ---------- + ds : xr.Dataset + The xarray Dataset from which to retrieve the variable data. + var_key : str + The key of the variable to retrieve. + + Returns + ------- + np.ndarray + The data of the specified variable as a NumPy array. If the variable is + not found, returns None. + + Raises + ------ + KeyError + If the variable key is not found in the Dataset and is not a derived + variable. + """ + data = None + + try: + var_keys = DERIVED_VARIABLES[var_key].keys() + except KeyError: + var_keys = DERIVED_VARIABLES[var_key.upper()].keys() + + var_keys = [var_key] + list(sum(var_keys, ())) # type: ignore + + for key in var_keys: + if key in ds.data_vars.keys(): + data = ds[key].values + + break + + return data + + +def _check_if_missing_files(): + missing_dev_files = [] + missing_main_files = [] + + for fp_main in MAIN_GLOB: + fp_dev = fp_main.replace(MAIN_DIR, DEV_DIR) + + if fp_dev not in DEV_GLOB: + missing_dev_files.append(fp_dev) + + for fp_dev in DEV_GLOB: + fp_main = fp_dev.replace(DEV_DIR, MAIN_DIR) + + if fp_main not in MAIN_GLOB: + missing_main_files.append(fp_main) + + return missing_dev_files, missing_main_files