{
"cells": [
{
"cell_type": "markdown",
"id": "623cbc23-45bf-4dfd-9f49-8d814d0394ba",
"metadata": {
"papermill": {
"duration": 0.003445,
"end_time": "2025-11-25T03:11:15.595967",
"exception": false,
"start_time": "2025-11-25T03:11:15.592522",
"status": "completed"
},
"tags": []
},
"source": [
"# ADF\n",
"\n",
"A number of plots are provided from ADF. The full output from the stand-alone ADF configuration is in the link below.\n",
"\n",
"\n",
"Note that in standalone format (eg, CUPiD run not through CESM workflow), ADF is currently run by users via the following process:\n",
"1) Install ADF and activate cupid-analysis\n",
"2) Use the `CUPiD/helper_scripts/generate_adf_config_file.py` script to generate an ADF config file based on a CUPiD configuration file.\n",
" * `cd CUPiD/examples/external_diag_packages`\n",
" * `../../helper_scripts/generate_adf_config_file.py --cupid-config-loc . --adf-template ../../externals/ADF/config_amwg_default_plots.yaml --out-file ADF_config.yaml`\n",
"3) Run ADF with the newly created configuration file.\n",
" * `../../externals/ADF/run_adf_diag ADF_config.yaml`"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "82af7435-3849-4fd1-bb2d-2e062719ec5b",
"metadata": {
"editable": true,
"execution": {
"iopub.execute_input": "2025-11-25T03:11:15.604356Z",
"iopub.status.busy": "2025-11-25T03:11:15.603984Z",
"iopub.status.idle": "2025-11-25T03:11:18.556164Z",
"shell.execute_reply": "2025-11-25T03:11:18.555265Z"
},
"papermill": {
"duration": 2.958137,
"end_time": "2025-11-25T03:11:18.557720",
"exception": false,
"start_time": "2025-11-25T03:11:15.599583",
"status": "completed"
},
"slideshow": {
"slide_type": ""
},
"tags": [
"hide-cell"
]
},
"outputs": [],
"source": [
"import os\n",
"\n",
"from IPython.core.display import HTML, Image\n",
"from IPython.display import display\n",
"import pandas as pd"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "2a759f1b-eca7-4eec-a16a-eede1a6ab36c",
"metadata": {
"editable": true,
"execution": {
"iopub.execute_input": "2025-11-25T03:11:18.566843Z",
"iopub.status.busy": "2025-11-25T03:11:18.566430Z",
"iopub.status.idle": "2025-11-25T03:11:18.570950Z",
"shell.execute_reply": "2025-11-25T03:11:18.570296Z"
},
"papermill": {
"duration": 0.010495,
"end_time": "2025-11-25T03:11:18.572110",
"exception": false,
"start_time": "2025-11-25T03:11:18.561615",
"status": "completed"
},
"slideshow": {
"slide_type": ""
},
"tags": [
"parameters",
"hide-cell"
]
},
"outputs": [],
"source": [
"adf_root = \".\"\n",
"case_name = None\n",
"base_case_name = None\n",
"start_date = \"\"\n",
"end_date = \"\"\n",
"base_start_date = None\n",
"base_end_date = None\n",
"key_plots = None\n",
"compare_obs: False\n",
"# adf_root will be external_diag_packages/computed_notebooks/ADF/"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "a6d25fb1",
"metadata": {
"execution": {
"iopub.execute_input": "2025-11-25T03:11:18.580534Z",
"iopub.status.busy": "2025-11-25T03:11:18.580211Z",
"iopub.status.idle": "2025-11-25T03:11:18.586646Z",
"shell.execute_reply": "2025-11-25T03:11:18.585928Z"
},
"papermill": {
"duration": 0.012657,
"end_time": "2025-11-25T03:11:18.588402",
"exception": false,
"start_time": "2025-11-25T03:11:18.575745",
"status": "completed"
},
"tags": [
"injected-parameters"
]
},
"outputs": [],
"source": [
"# Parameters\n",
"case_name = \"b.e30_alpha07c_cesm.B1850C_LTso.ne30_t232_wgx3.250\"\n",
"base_case_name = \"b.e30_alpha07c_cesm.B1850C_LTso.ne30_t232_wgx3.234\"\n",
"case_nickname = \"BLT1850_250\"\n",
"base_case_nickname = \"BLT1850_234\"\n",
"CESM_output_dir = \"/glade/campaign/cesm/development/cross-wg/diagnostic_framework/CESM_output_for_testing\"\n",
"start_date = \"0001-01-01\"\n",
"end_date = \"0030-01-01\"\n",
"climo_start_year = 1\n",
"climo_end_year = 29\n",
"base_start_date = \"0001-01-01\"\n",
"base_end_date = \"0082-01-01\"\n",
"base_climo_start_year = 1\n",
"base_climo_end_year = 81\n",
"obs_data_dir = (\n",
" \"/glade/campaign/cesm/development/cross-wg/diagnostic_framework/CUPiD_obs_data\"\n",
")\n",
"ts_dir = None\n",
"lc_kwargs = {\"threads_per_worker\": 1}\n",
"serial = False\n",
"adf_root = \"../../examples/key_metrics/ADF_output/\"\n",
"key_plots = [\n",
" \"Surface_Wind_Stress_ANN_LatLon_Vector_Mean.png\",\n",
" \"PRECT_ANN_LatLon_Mean.png\",\n",
" \"PS_DJF_SHPolar_Mean.png\",\n",
" \"TaylorDiag_ANN_Special_Mean.png\",\n",
"]\n",
"compare_obs = False\n",
"subset_kwargs = {}\n",
"product = \"/glade/work/richling/cupid-test-2/CUPiD/examples/key_metrics/computed_notebooks//atm/ADF.ipynb\"\n"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "81bf4573-8806-486f-a2f6-79e244415c07",
"metadata": {
"editable": true,
"execution": {
"iopub.execute_input": "2025-11-25T03:11:18.597419Z",
"iopub.status.busy": "2025-11-25T03:11:18.597155Z",
"iopub.status.idle": "2025-11-25T03:11:18.600735Z",
"shell.execute_reply": "2025-11-25T03:11:18.600172Z"
},
"papermill": {
"duration": 0.010307,
"end_time": "2025-11-25T03:11:18.601658",
"exception": false,
"start_time": "2025-11-25T03:11:18.591351",
"status": "completed"
},
"slideshow": {
"slide_type": ""
},
"tags": [
"hide-cell"
]
},
"outputs": [],
"source": [
"# Want some base case parameter defaults to equal control case values\n",
"if base_case_name is not None:\n",
" if base_start_date is None:\n",
" base_start_date = start_date\n",
"\n",
" if base_end_date is None:\n",
" base_end_date = end_date\n",
"if compare_obs:\n",
" base_case_name = \"Obs\"\n",
" base_start_date = None\n",
" base_end_date = None"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "4104f878-a8c3-4d0f-8c00-555e6b2b3273",
"metadata": {
"editable": true,
"execution": {
"iopub.execute_input": "2025-11-25T03:11:18.608053Z",
"iopub.status.busy": "2025-11-25T03:11:18.607775Z",
"iopub.status.idle": "2025-11-25T03:11:18.612450Z",
"shell.execute_reply": "2025-11-25T03:11:18.611826Z"
},
"papermill": {
"duration": 0.008926,
"end_time": "2025-11-25T03:11:18.613385",
"exception": false,
"start_time": "2025-11-25T03:11:18.604459",
"status": "completed"
},
"slideshow": {
"slide_type": ""
},
"tags": [
"hide-cell"
]
},
"outputs": [],
"source": [
"# convert start-date and end-date to year range\n",
"case_year_range = [int(start_date.split(\"-\")[0]), int(end_date.split(\"-\")[0]) - 1]\n",
"\n",
"if (not base_start_date) and (not base_end_date):\n",
" base_case_year_range = None\n",
"else:\n",
" base_case_year_range = [\n",
" int(base_start_date.split(\"-\")[0]),\n",
" int(base_end_date.split(\"-\")[0]) - 1,\n",
" ]"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "ee0774cc-c68a-4385-b94c-08fa806f28c0",
"metadata": {
"editable": true,
"execution": {
"iopub.execute_input": "2025-11-25T03:11:18.621433Z",
"iopub.status.busy": "2025-11-25T03:11:18.621089Z",
"iopub.status.idle": "2025-11-25T03:11:18.630547Z",
"shell.execute_reply": "2025-11-25T03:11:18.630004Z"
},
"papermill": {
"duration": 0.01459,
"end_time": "2025-11-25T03:11:18.631509",
"exception": false,
"start_time": "2025-11-25T03:11:18.616919",
"status": "completed"
},
"slideshow": {
"slide_type": ""
},
"tags": [
"hide-input"
]
},
"outputs": [
{
"data": {
"text/html": [
"Full ADF output"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"if base_case_year_range:\n",
" base_case_yr_range_str = f\"_{base_case_year_range[0]}_{base_case_year_range[1]}\"\n",
"else:\n",
" base_case_yr_range_str = \"\"\n",
"adf_comparison_name = f\"{case_name}_{case_year_range[0]}_{case_year_range[1]}_vs_{base_case_name}{base_case_yr_range_str}\"\n",
"adf_root = os.path.join(adf_root, adf_comparison_name)\n",
"display(\n",
" HTML(\n",
" f'Full ADF output'\n",
" )\n",
")"
]
},
{
"cell_type": "markdown",
"id": "f9234aec-1fe5-4bbf-ad6c-fb565297afbe",
"metadata": {
"papermill": {
"duration": 0.003352,
"end_time": "2025-11-25T03:11:18.638250",
"exception": false,
"start_time": "2025-11-25T03:11:18.634898",
"status": "completed"
},
"tags": []
},
"source": [
"## Key Metrics from ADF\n",
"\n",
"Some important things to look at from ADF include a comparison table and a few maps:"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "a5b02451-98ad-4089-b184-75391a262db3",
"metadata": {
"editable": true,
"execution": {
"iopub.execute_input": "2025-11-25T03:11:18.645877Z",
"iopub.status.busy": "2025-11-25T03:11:18.645660Z",
"iopub.status.idle": "2025-11-25T03:11:18.649242Z",
"shell.execute_reply": "2025-11-25T03:11:18.648722Z"
},
"papermill": {
"duration": 0.008523,
"end_time": "2025-11-25T03:11:18.650027",
"exception": false,
"start_time": "2025-11-25T03:11:18.641504",
"status": "completed"
},
"slideshow": {
"slide_type": ""
},
"tags": [
"hide-input"
]
},
"outputs": [],
"source": [
"comparison_table = os.path.join(adf_root, \"amwg_table_comp.csv\")\n",
"if os.path.isfile(comparison_table):\n",
" table = pd.read_csv(comparison_table)\n",
" display(HTML(table.to_html(index=False, float_format=\"{:6g}\".format)))"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "be819352-c723-4f48-afac-d93f6d192f96",
"metadata": {
"editable": true,
"execution": {
"iopub.execute_input": "2025-11-25T03:11:18.655652Z",
"iopub.status.busy": "2025-11-25T03:11:18.655431Z",
"iopub.status.idle": "2025-11-25T03:11:18.661726Z",
"shell.execute_reply": "2025-11-25T03:11:18.661081Z"
},
"papermill": {
"duration": 0.010597,
"end_time": "2025-11-25T03:11:18.662956",
"exception": false,
"start_time": "2025-11-25T03:11:18.652359",
"status": "completed"
},
"slideshow": {
"slide_type": ""
},
"tags": [
"hide-input"
]
},
"outputs": [],
"source": [
"for path_to_key_plot in key_plots:\n",
" full_path = os.path.join(adf_root, path_to_key_plot)\n",
" if os.path.isfile(full_path):\n",
" display(Image(full_path))"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "cupid-infrastructure",
"language": "python",
"name": "cupid-infrastructure"
},
"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.11.4"
},
"papermill": {
"duration": 6.28074,
"end_time": "2025-11-25T03:11:19.304474",
"exception": null,
"input_path": "/glade/derecho/scratch/richling/tmp/tmpn55g3gw2.ipynb",
"output_path": "/glade/work/richling/cupid-test-2/CUPiD/examples/key_metrics/computed_notebooks/atm/ADF.ipynb",
"parameters": {
"CESM_output_dir": "/glade/campaign/cesm/development/cross-wg/diagnostic_framework/CESM_output_for_testing",
"adf_root": "../../examples/key_metrics/ADF_output/",
"base_case_name": "b.e30_alpha07c_cesm.B1850C_LTso.ne30_t232_wgx3.234",
"base_case_nickname": "BLT1850_234",
"base_climo_end_year": 81,
"base_climo_start_year": 1,
"base_end_date": "0082-01-01",
"base_start_date": "0001-01-01",
"case_name": "b.e30_alpha07c_cesm.B1850C_LTso.ne30_t232_wgx3.250",
"case_nickname": "BLT1850_250",
"climo_end_year": 29,
"climo_start_year": 1,
"compare_obs": false,
"end_date": "0030-01-01",
"key_plots": [
"Surface_Wind_Stress_ANN_LatLon_Vector_Mean.png",
"PRECT_ANN_LatLon_Mean.png",
"PS_DJF_SHPolar_Mean.png",
"TaylorDiag_ANN_Special_Mean.png"
],
"lc_kwargs": {
"threads_per_worker": 1
},
"obs_data_dir": "/glade/campaign/cesm/development/cross-wg/diagnostic_framework/CUPiD_obs_data",
"product": "/glade/work/richling/cupid-test-2/CUPiD/examples/key_metrics/computed_notebooks//atm/ADF.ipynb",
"serial": false,
"start_date": "0001-01-01",
"subset_kwargs": {},
"ts_dir": null
},
"start_time": "2025-11-25T03:11:13.023734"
}
},
"nbformat": 4,
"nbformat_minor": 5
}