{ "cells": [ { "cell_type": "markdown", "id": "623cbc23-45bf-4dfd-9f49-8d814d0394ba", "metadata": { "papermill": { "duration": 0.00591, "end_time": "2025-12-10T17:14:14.462980", "exception": false, "start_time": "2025-12-10T17:14:14.457070", "status": "completed" }, "tags": [] }, "source": [ "# COMPASS Model Diagnostics 2: Electric Bogaloo\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": "2a759f1b-eca7-4eec-a16a-eede1a6ab36c", "metadata": { "editable": true, "execution": { "iopub.execute_input": "2025-12-10T17:14:14.474741Z", "iopub.status.busy": "2025-12-10T17:14:14.474526Z", "iopub.status.idle": "2025-12-10T17:14:14.480709Z", "shell.execute_reply": "2025-12-10T17:14:14.480274Z" }, "papermill": { "duration": 0.012765, "end_time": "2025-12-10T17:14:14.481441", "exception": false, "start_time": "2025-12-10T17:14:14.468676", "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", "var_list = [\"T\"]\n", "compass_root = \".\"\n", "runs_dict = {}\n", "\n", "# adf_root will be external_diag_packages/computed_notebooks/ADF/" ] }, { "cell_type": "code", "execution_count": 2, "id": "f6b3203b", "metadata": { "execution": { "iopub.execute_input": "2025-12-10T17:14:14.492723Z", "iopub.status.busy": "2025-12-10T17:14:14.492566Z", "iopub.status.idle": "2025-12-10T17:14:14.496149Z", "shell.execute_reply": "2025-12-10T17:14:14.495792Z" }, "papermill": { "duration": 0.009938, "end_time": "2025-12-10T17:14:14.496739", "exception": false, "start_time": "2025-12-10T17:14:14.486801", "status": "completed" }, "tags": [ "injected-parameters" ] }, "outputs": [], "source": [ "# Parameters\n", "case_name = \"b.e23_alpha17f.BLT1850.ne30_t232.092\"\n", "base_case_name = \"b.e30_beta02.BLT1850.ne30_t232.104\"\n", "case_nickname = \"BLT1850_92\"\n", "base_case_nickname = \"BLT1850_104\"\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 = \"0021-01-01\"\n", "climo_start_date = \"0001-01-01\"\n", "climo_end_date = \"0021-01-01\"\n", "base_start_date = \"0001-01-01\"\n", "base_end_date = \"0045-01-01\"\n", "base_climo_start_date = \"0001-01-01\"\n", "base_climo_end_date = \"0021-01-01\"\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", "compass_root = \"/glade/work/richling/ADF/ADF_dev/Justin_ADF_2/ADF/adf_try_plots/f.e21.FHIST_BGC.f09_f09_mg17.SOCRATES_nudgeUVTfull/T/ERA5/RF13/\"\n", "runs_dict = {\n", " \"f.e21.FHIST_BGC.f09_f09_mg17.SOCRATES_nudgeUVTfull\": [\n", " \"f.e21.FHIST_BGC.f09_f09_mg17.SOCRATES_nudgeUVTfull_tau12h.001\",\n", " \"f.e21.FHIST_BGC.f09_f09_mg17.SOCRATES_nudgeUVTfull_tau24h.001\",\n", " ],\n", " \"f.e30_cam6_4_120.FHISTC_LTso.ne30pg3_ne30pg3_mg17.SOCRATES_nudgeUVTfull_withCOSP\": [\n", " \"f.e30_cam6_4_120.FHISTC_LTso.ne30pg3_ne30pg3_mg17.SOCRATES_nudgeUVTfull_withCOSP_tau6h.001\",\n", " \"f.e30_cam6_4_120.FHISTC_LTso.ne30pg3_ne30pg3_mg17.SOCRATES_nudgeUVTfull_withCOSP_tau12h.001\",\n", " ],\n", "}\n", "subset_kwargs = {}\n", "product = \"/glade/derecho/scratch/richling/compass-cupid/CUPiD/examples/external_diag_packages/computed_notebooks//atm/COMPASS_model_diags_2.ipynb\"\n" ] }, { "cell_type": "code", "execution_count": 3, "id": "84925f9d", "metadata": { "editable": true, "execution": { "iopub.execute_input": "2025-12-10T17:14:14.508112Z", "iopub.status.busy": "2025-12-10T17:14:14.507953Z", "iopub.status.idle": "2025-12-10T17:14:14.510316Z", "shell.execute_reply": "2025-12-10T17:14:14.509986Z" }, "papermill": { "duration": 0.008913, "end_time": "2025-12-10T17:14:14.510926", "exception": false, "start_time": "2025-12-10T17:14:14.502013", "status": "completed" }, "slideshow": { "slide_type": "" }, "tags": [ "parameters", "hide-cell" ] }, "outputs": [], "source": [ "runs_dict_tmp = {}\n", "if isinstance(runs_dict, list):\n", " for run in runs_dict:\n", " runs_dict_tmp[run] = [run]\n", " runs_dict = runs_dict_tmp" ] }, { "cell_type": "markdown", "id": "f9234aec-1fe5-4bbf-ad6c-fb565297afbe", "metadata": { "papermill": { "duration": 0.00513, "end_time": "2025-12-10T17:14:14.521448", "exception": false, "start_time": "2025-12-10T17:14:14.516318", "status": "completed" }, "tags": [] }, "source": [ "## Key Metrics from COMPASS Model Diagnostics (CMD)\n", "\n", "Some important things to look at from CMD include a slap to the face and then a hug:" ] }, { "cell_type": "markdown", "id": "be819352-c723-4f48-afac-d93f6d192f96", "metadata": { "editable": true, "papermill": { "duration": 0.005377, "end_time": "2025-12-10T17:14:14.532269", "exception": false, "start_time": "2025-12-10T17:14:14.526892", "status": "completed" }, "slideshow": { "slide_type": "" }, "tags": [ "hide-input" ] }, "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_pbath))" ] }, { "cell_type": "code", "execution_count": 4, "id": "06d29973", "metadata": { "editable": true, "execution": { "iopub.execute_input": "2025-12-10T17:14:14.543954Z", "iopub.status.busy": "2025-12-10T17:14:14.543770Z", "iopub.status.idle": "2025-12-10T17:14:14.566461Z", "shell.execute_reply": "2025-12-10T17:14:14.566093Z" }, "papermill": { "duration": 0.029644, "end_time": "2025-12-10T17:14:14.567139", "exception": false, "start_time": "2025-12-10T17:14:14.537495", "status": "completed" }, "slideshow": { "slide_type": "" }, "tags": [ "parameters", "hide-cell" ] }, "outputs": [], "source": [ "def slider(case_name, image_dir, ldrop=None, settings_list=None, rdrop=None):\n", " import os\n", " import re\n", " from glob import glob\n", " from PIL import Image\n", " from io import BytesIO\n", " import base64\n", " from IPython.display import display, HTML\n", " import ipywidgets as widgets\n", " from ipywidgets import Layout\n", "\n", " tooltip_dict = {\n", " \"Nudge_Uprof\": \"\"\"Selectively apply nudging to U:\n", "\n", " OFF = Switch off nudging\n", " ON = Apply nudging everywhere\n", " WINDOW = Apply window function to\n", " nudging tendencies.\n", " \n", " 0 = OFF\n", " 1 = ON\n", " 2 = WINDOW\n", " \"\"\",\n", " #\"nudge_uprof\": \"Profile of zonal wind nudging\",\n", " \"Nudge_Ucoef\": \"\"\"Selectively adjust the nudging strength applied to U. (normalized) [0.,1.]\n", " \"\"\",\n", " \"Nudge_Hwin_lat0\": \"\"\"Specify the horizontal center of the\n", " window (lat0) in degrees. [-90., +90.]\"\"\",\n", " \"Nudge_Hwin_lon0\":\"\"\"Specify the horizontal center of the\n", " window (lon0) in degrees. [ 0. , 360.]\"\"\",\n", " \"Nudge_Hwin_latWidth\": \"\"\"Specify the lat width of the\n", " horizontal window in degrees.\n", " Setting a width to a large value\n", " (e.g. 999.) renders the window\n", " constant in that direction.\n", " \n", " >0\"\"\",\n", " \"Nudge_Hwin_lonWidth\": \"\"\"Specify the lon width of the\n", " horizontal window in degrees.\n", " Setting a width to a large value\n", " (e.g. 999.) renders the window\n", " constant in that direction.\n", " \n", " >0\"\"\",\n", " \"Nudge_Vwin_Hindex\": \"Vertical window high index\",\n", " \"Nudge_Vwin_Lindex\": \"Vertical window low index\",\n", " \"Nudge_Vwin_Hdelta\": \"Vertical window high delta\",\n", " \"Nudge_Vwin_Ldelta\": \"Vertical window low delta\",\n", " \"Nudge_Vwin_Invert\":\"\"\"A logical flag used to invert the\n", " horizontal window function to get its\n", " compliment.\n", " \n", " True/False\"\"\",\n", " \"Nudge_Hwin_latDelta\": \"Horizontal lat delta\",\n", " \"Nudge_Hwin_lonDelta\": \"Horizontal lon delta\",\n", " \"Nudge_Hwin_Invert\":\"\"\"A logical flag used to invert the\n", " horizontal window function to get its\n", " compliment.\n", " (e.g. to nudge outside a given window)\n", " \n", " True/False\"\"\",\n", " \"Nudge_TimeScale_Opt\":\"\"\"Select the timescale for the relaxation:\n", "\n", " WEAK = Constant time scale based in\n", " the time interval of Target values.\n", " \n", " STRONG = Variable timescale which\n", " gets stronger near each Target time.\n", " \n", " 0 = WEAK\n", " 1 = STRONG\n", " \"\"\",\n", " \"Nudge_Force_Opt\":\"\"\"Select the form of the Target values:\n", "\n", " NEXT = Target at next future time\n", " LINEAR = Linearly interpolate Target\n", " values to current model time.\n", "\n", " 0 = NEXT\n", " 1 = LINEAR\n", " \"\"\"\n", " }\n", "\n", "\n", " link_dict = {\n", " \"Nudge_Uprof\": \"https://ncar.github.io/CAM/doc/build/html/users_guide/physics-modifications-via-the-namelist.html?highlight=nudge#namelist-values\",\n", " \"Nudge_Ucoef\": \"https://ncar.github.io/CAM/doc/build/html/users_guide/physics-modifications-via-the-namelist.html?highlight=nudge#namelist-values\",\n", " \"Nudge_TimeScale_Opt\":\"www.google.com\",\n", " #\"nudge_timescale_opt\":\"www.google.com\"\n", " }\n", "\n", " if not image_dir:\n", " print(\"No image directory :/\")\n", " return\n", "\n", " # --- Detect levels ---\n", " lev_pattern = re.compile(r'(\\d+)hPa\\.png$')\n", " all_files = os.listdir(image_dir)\n", " levels = sorted({lev_pattern.search(f).group(1) for f in all_files if lev_pattern.search(f)})\n", "\n", " if not levels:\n", " print(\"No level-specific image files found.\")\n", " return\n", "\n", " # Grab all PNG files\n", " files = glob(os.path.join(image_dir, \"*.png\"))\n", "\n", " # Regex to extract timestamp after hPa_ and before .png\n", " timestamp_pattern = re.compile(r\"hPa_(\\d{4}_\\d{2}_\\d{2}_\\d{2}:\\d{2})\\.png$\")\n", "\n", " timestamps = []\n", " for f in all_files:\n", " base = os.path.basename(f)\n", " m = timestamp_pattern.search(base)\n", " if m:\n", " timestamps.append(m.group(1))\n", "\n", " # Optional: sort by timestamp\n", " timestamps = sorted(timestamps)\n", " print(timestamps)\n", " # Widgets\n", " level_dropdown = widgets.Dropdown(options=levels, value=levels[0], description=\"Level (hPa)\")\n", " slider = widgets.IntSlider(min=0, max=0, step=1, description='Time Step')\n", " #time_label = widgets.Label(value=str(timestamps[0]))\n", " #def update_label(change):\n", " # time_label.value = timestamps[slider.value].strftime(\"%Y-%m-%d %H:%M\")\n", " html_widget = widgets.HTML()\n", "\n", " def get_images_for_level(level):\n", " level = str(level)\n", " level_files = sorted([\n", " os.path.join(image_dir, f) for f in os.listdir(image_dir)\n", " if f.endswith(f'{level}hPa.png')\n", " ])\n", " timestamps = [\n", " '-'.join(os.path.basename(f).split('_')[1:4]) + ' ' + os.path.basename(f).split('_')[4]\n", " for f in level_files\n", " ]\n", " return level_files, timestamps\n", "\n", " image_files, timestamps = get_images_for_level(levels[0])\n", " print(timestamps)\n", " #image_files = get_images_for_level(levels[0])\n", " slider.max = max(0, len(image_files) - 1)\n", "\n", " def image_to_html(path):\n", " img = Image.open(path).resize((1000, 300))\n", " buffer = BytesIO()\n", " img.save(buffer, format='PNG')\n", " b64 = base64.b64encode(buffer.getvalue()).decode()\n", " return f\"\"\n", "\n", " def update_display(change=None):\n", " if not image_files:\n", " html_widget.value = \"No images found for this level.\"\n", " return\n", " html_img = image_to_html(image_files[slider.value])\n", " html_ts = f\"

{timestamps[slider.value]}

\"\n", " html_widget.value = html_ts + html_img\n", "\n", " def on_level_change(change):\n", " nonlocal image_files, timestamps\n", " image_files, timestamps = get_images_for_level(change.new)\n", " slider.max = max(0, len(image_files) - 1)\n", " slider.value = 0\n", " update_display()\n", "\n", " # --- Case info ---\n", " def load_user_nl(ldrop, settings_list):\n", " default_setting_list = [\"fincl\",\"mfilt\",\"nhtfrq\",\"ncdata\"]\n", " #if isinstance(ldrop,list):\n", " lines_nudged = []\n", " lines_all = []\n", " lines_subset = []\n", " try:\n", " with open(ldrop, 'r') as file:\n", " for line in file:\n", " if line.startswith(' Nudge_') or line.startswith(' nudge_') or line.startswith('Nudge_') or line.startswith('nudge_'):\n", " cleaned_line = re.sub(r'\\s{3,}', ' ', line)\n", " lines_subset.append(cleaned_line.strip())\n", " lines_nudged.append(cleaned_line.strip())\n", " #if line.startswith('fincl2'):\n", " if settings_list:\n", " for setting in settings_list:\n", " if setting not in default_setting_list:\n", " if setting in line:\n", " cleaned_line = re.sub(r'\\s{3,}', ' ', line)\n", " lines_subset.append(cleaned_line.strip())\n", " if \"fincl\" in line:\n", " #print(\"non\")\n", " strp_line = line.strip()\n", " #print(strp_line)\n", " cleaned_line = re.sub(r'\\s{3,}', ' ', strp_line)\n", " #print(\"cleaned\")\n", " #print(cleaned_line)\n", " lines_subset.append(cleaned_line)\n", " if \"mfilt\" in line:\n", " cleaned_line = re.sub(r'\\s{3,}', ' ', line)\n", " lines_subset.append(cleaned_line.strip())\n", " if \"nhtfrq\" in line:\n", " cleaned_line = re.sub(r'\\s{3,}', ' ', line)\n", " lines_subset.append(cleaned_line.strip())\n", " if \"ncdata\" in line:\n", " cleaned_line = re.sub(r'\\s{3,}', ' ', line)\n", " lines_subset.append(cleaned_line.strip())\n", " lines_all.append(line.strip())\n", " except Exception as e:\n", " lines = [f\"Error reading user_nl_cam: {e}\"]\n", " lines_all = lines\n", " return \"\\n\".join(lines_nudged), \"\\n\".join(lines_all), \"\\n\".join(lines_subset)\n", "\n", " def load_case_status(case_status):\n", " lines = []\n", " try:\n", " with open(case_status, 'r') as file:\n", " #cleaned_line = re.sub(r'\\s{3,}', ' ', line)\n", " #lines_all.append(cleaned_line.strip())\n", " lines = [re.sub(r'\\s{3,}', ' ', line).strip() for line in file]\n", " #lines = [line.strip() for line in file]\n", " except Exception as e:\n", " lines = [f\"Error reading CaseStatus: {e}\"]\n", " return \"\\n\".join(lines)\n", "\n", " ldrop_opts=[\"Hide Settings\", \"Nudge Params\"]\n", " # \"Nudge Params\", \"Full user_nl_cam\"\n", " if ldrop:\n", " nudge_text, full_text, subset_text = load_user_nl(ldrop,settings_list)\n", " #print(full_text)\n", " fname = \"\"\n", " if \"atm_in\" in ldrop:\n", " ldrop_opts.append(\"Full atm_in\")\n", " ldrop_opts.append(\"Subset atm_in\")\n", " fname = \"atm_in\"\n", " if \"user_nl_cam\" in ldrop:\n", " ldrop_opts.append(\"Full user_nl_cam\")\n", " fname = \"user_nl_cam\"\n", " if rdrop:\n", " status_text = load_case_status(rdrop)\n", " #print(\"status_text\",status_text)\n", " else:\n", " status_text = \"Nothing here...\"\n", " \n", " #settings_dropdown = widgets.Dropdown(options=[\"Hide Settings\", \"Nudge Params\", \"Full user_nl_cam\"], description=\"Settings\")\n", " #status_dropdown = widgets.Dropdown(options=[\"Hide CaseStatus\", \"CaseStatus\"], description=\"CaseDocs\")\n", "\n", " settings_dropdown = widgets.Dropdown(options=ldrop_opts, description=\"Settings\")\n", " status_dropdown = widgets.Dropdown(options=[\"Hide CaseStatus\", \"CaseStatus\"], description=\"CaseDocs\")\n", " \n", " settings_output = widgets.Output()\n", " status_output = widgets.Output()\n", "\n", " import re\n", " from IPython.display import HTML\n", " \n", " def update_settings(change):\n", " settings_output.clear_output()\n", " if settings_dropdown.value == \"Nudge Params\":\n", " processed_lines = []\n", " \n", " for line in nudge_text.splitlines():\n", " original_line = line # Keep the original for searchability\n", " \n", " for key in tooltip_dict.keys():\n", " # Case-insensitive replacement\n", " pattern = re.compile(re.escape(key), re.IGNORECASE)\n", " title = tooltip_dict.get(key, \"\")\n", " href = link_dict.get(key, \"\")\n", " \n", " if href:\n", " replacement = f'{key}'\n", " else:\n", " replacement = f'{key}'\n", " \n", " line = pattern.sub(replacement, line)\n", " \n", " # Wrap the line in
and preserve the original line in a hidden
 for search\n",
    "                processed_lines.append(line)\n",
    "    \n",
    "            html_output = \"
\".join(processed_lines)\n", " \n", " with settings_output:\n", " # Use
 + HTML for easy copy/search\n",
    "                display(HTML(f\"
{html_output}
\"))\n", " \n", " elif settings_dropdown.value == f\"Subset {fname}\":\n", " with settings_output:\n", " display(HTML(f\"
{subset_text}
\"))\n", " elif settings_dropdown.value == f\"Full {fname}\":\n", " with settings_output:\n", " display(HTML(f\"
{full_text}
\"))\n", "\n", " \n", " \n", " \n", " \"\"\"\n", " def update_settings(change):\n", " settings_output.clear_output()\n", " if settings_dropdown.value == \"Nudge Params\":\n", " processed_lines = []\n", " for line in nudge_text.splitlines():\n", " #for key in set(link_dict.keys()).union(tooltip_dict.keys()): #use as an intersection of both dict kyes\n", " for key in tooltip_dict.keys():\n", " #match = next((k for k in tooltip_dict if k.upper() == key.upper()), None)\n", " #if k.upper() == key\n", " if key.lower() in line:\n", " title = tooltip_dict.get(key, \"\")\n", " href = link_dict.get(key, \"\")\n", " if href:\n", " replacement = f'{key.lower()}'\n", " else:\n", " replacement = f'{key.lower()}'\n", " line = line.replace(key.lower(), replacement)\n", " processed_lines.append(line)\n", " html_output = \"
\".join(processed_lines)\n", " with settings_output:\n", " display(HTML(html_output))\n", " elif settings_dropdown.value == f\"Subset {fname}\":\n", " with settings_output:\n", " display(HTML(\"
\" + subset_text + \"
\"))\n", " elif settings_dropdown.value == f\"Full {fname}\":\n", " with settings_output:\n", " display(HTML(\"
\" + full_text + \"
\"))\n", " \"\"\"\n", "\n", " def update_status(change):\n", " with status_output:\n", " status_output.clear_output()\n", " if status_dropdown.value == \"CaseStatus\":\n", " print(status_text)\n", "\n", " slider.observe(update_display, names='value')\n", " settings_dropdown.observe(update_settings, names='value')\n", " status_dropdown.observe(update_status, names='value')\n", " level_dropdown.observe(on_level_change, names='value')\n", "\n", " # Layout\n", " settings_output.layout = Layout(margin='0 20px 0 0')\n", " status_output.layout = Layout(margin='0 0 0 20px')\n", " output_row = widgets.HBox([settings_output, status_output])\n", " dropdown_row = widgets.HBox([settings_dropdown, status_dropdown], layout=Layout(margin='10px 0 10px 0'))\n", " control_row = widgets.HBox([level_dropdown, slider])\n", " title = widgets.HTML(\n", " value=f\"

{case_name}

\"\n", " )\n", " ui = widgets.VBox([title, control_row, html_widget, dropdown_row, output_row])\n", "\n", " #display(ui)\n", " #update_display()\n", "\n", " update_display()\n", " return ui\n" ] }, { "cell_type": "code", "execution_count": 5, "id": "bdb5e7b0", "metadata": { "execution": { "iopub.execute_input": "2025-12-10T17:14:14.578863Z", "iopub.status.busy": "2025-12-10T17:14:14.578702Z", "iopub.status.idle": "2025-12-10T17:14:15.555262Z", "shell.execute_reply": "2025-12-10T17:14:15.554870Z" }, "papermill": { "duration": 0.983751, "end_time": "2025-12-10T17:14:15.556730", "exception": false, "start_time": "2025-12-10T17:14:14.572979", "status": "completed" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[]\n", "['2018-02-19 17:00', '2018-02-19 18:00', '2018-02-19 19:00', '2018-02-19 20:00', '2018-02-19 21:00', '2018-02-19 22:00', '2018-02-19 23:00', '2018-02-20 00:00', '2018-02-20 01:00', '2018-02-20 02:00', '2018-02-20 03:00', '2018-02-20 04:00', '2018-02-20 05:00', '2018-02-20 06:00', '2018-02-20 07:00']\n", "[]\n", "['2018-02-19 17:00', '2018-02-19 18:00', '2018-02-19 19:00', '2018-02-19 20:00', '2018-02-19 21:00', '2018-02-19 22:00', '2018-02-19 23:00', '2018-02-20 00:00', '2018-02-20 01:00', '2018-02-20 02:00', '2018-02-20 03:00', '2018-02-20 04:00', '2018-02-20 05:00', '2018-02-20 06:00', '2018-02-20 07:00']\n", "[]\n", "['2018-02-19 17:00', '2018-02-19 18:00', '2018-02-19 19:00', '2018-02-19 20:00', '2018-02-19 21:00', '2018-02-19 22:00', '2018-02-19 23:00', '2018-02-20 00:00', '2018-02-20 01:00', '2018-02-20 02:00', '2018-02-20 03:00', '2018-02-20 04:00', '2018-02-20 05:00', '2018-02-20 06:00', '2018-02-20 07:00']\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "85ba19fcb6f248ee8262a7d7f91c2072", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Tab(children=(Tab(children=(VBox(children=(HTML(value=\"

f.e21.FH…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import ipywidgets as widgets\n", "from IPython.display import display\n", "from pathlib import Path\n", "\n", "# ----------------------------------------------------------\n", "# Define your case *families* and runs\n", "# ----------------------------------------------------------\n", "case_groups = {\n", " \"f.e21.FHIST_BGC.f09_f09_mg17.SOCRATES_nudgeUVTfull\": [\n", " \"f.e21.FHIST_BGC.f09_f09_mg17.SOCRATES_nudgeUVTfull_tau12h.001\",\n", " \"f.e21.FHIST_BGC.f09_f09_mg17.SOCRATES_nudgeUVTfull_tau24h.001\",\n", " ],\n", " \"f.e30_cam6_4_120.FHIST_BGC.f09_f09_mg17.SOCRATES_nudgeUVTfull_withCOSP\": [\n", " \"f.e30_cam6_4_120.FHIST_BGC.f09_f09_mg17.SOCRATES_nudgeUVTfull_withCOSP_tau6h.001\",\n", " #\"f.e30_cam6_4_120.FHIST_BGC.f09_f09_mg17.SOCRATES_nudgeUVTfull_withCOSP_tau48h.001\",\n", " ]\n", "}\n", "\n", "# ----------------------------------------------------------\n", "# Create nested tabs\n", "# ----------------------------------------------------------\n", "top_tabs = widgets.Tab()\n", "\n", "top_level_children = []\n", "top_titles = []\n", "for var in var_list:\n", " plot_type = \"T\"\n", " #file_path = Path(f\"/glade/derecho/scratch/islas/{caze}/run/atm_in\")\n", "for case_family, run_list in case_groups.items():\n", "\n", " # Create sub-tab for each family\n", " sub_tab = widgets.Tab()\n", "\n", " sub_children = []\n", " sub_titles = []\n", "\n", " for run in run_list:\n", " # Replace this with: widget = slider(...)\n", " #widget = fake_slider(run)\n", " #caze = \"f.e30_cam6_4_120.FHIST_BGC.f09_f09_mg17.SOCRATES_nudgeUVTfull_withCOSP_tau6h.001\"\n", " file_path = Path(f\"/glade/derecho/scratch/islas/{run}/run/atm_in\")\n", " widget = slider(run,\n", " #f\"plots/{run}/{plot_type}/ERA5/RF13/\",\n", " compass_root,\n", " f\"{str(file_path)}\",\n", " #settings_list=[\"fincl\",\"mfilt\",\"nhtfrq\",\"ncdata\",\"cld\",\"cosp\"],\n", " settings_list=[\"cosp\"],\n", " #rdrop=\"/glade/derecho/scratch/richling/cases/F2000climo.f09_f09_mg17.window.exp.6hrInit.R13.003/CaseStatus\"\n", " )\n", "\n", " sub_children.append(widget)\n", " sub_titles.append(run)\n", "\n", " sub_tab.children = sub_children\n", "\n", " # Name the sub-tabs (each run)\n", " for i, title in enumerate(sub_titles):\n", " sub_tab.set_title(i, title)\n", "\n", " # Add subtab into top tab\n", " top_level_children.append(sub_tab)\n", " top_titles.append(case_family)\n", "\n", "# Assign to top-level tab\n", "top_tabs.children = top_level_children\n", "\n", "# Name top-level tabs (each case family)\n", "for i, title in enumerate(top_titles):\n", " top_tabs.set_title(i, title)\n", "\n", "display(top_tabs)\n" ] }, { "cell_type": "raw", "id": "c083b669", "metadata": { "editable": true, "papermill": { "duration": 0.005622, "end_time": "2025-12-10T17:14:15.568987", "exception": false, "start_time": "2025-12-10T17:14:15.563365", "status": "completed" }, "slideshow": { "slide_type": "" }, "tags": [ "parameters", "hide-cell" ], "vscode": { "languageId": "raw" } }, "source": [ "%%html\n", "\n", "\n", "\n", "
\n", " \n", "
\n", " \n", " \n", "
\n", "\n", " \n", "
\n", "\n", "
\n", " \n", " \n", "
\n", "\n", "
\n", "

Run 1 content

\n", "

You can inject HTML here (images, case settings, anything).

\n", "
\n", "\n", "
\n", "

Run 2 content

\n", "
\n", "\n", "
\n", "\n", " \n", "
\n", "\n", "
\n", " \n", " \n", "
\n", "\n", "
\n", "

Run 3 content

\n", "
\n", "\n", "
\n", "

Run 4 content

\n", "
\n", "
\n", "
\n", "\n", "\n", "\n" ] }, { "cell_type": "raw", "id": "24f946cc", "metadata": { "editable": true, "papermill": { "duration": 0.005574, "end_time": "2025-12-10T17:14:15.579965", "exception": false, "start_time": "2025-12-10T17:14:15.574391", "status": "completed" }, "slideshow": { "slide_type": "" }, "tags": [ "parameters", "hide-cell" ], "vscode": { "languageId": "raw" } }, "source": [ "from IPython.display import HTML, display\n", "import os, re, json\n", "from glob import glob\n", "from PIL import Image\n", "from io import BytesIO\n", "import base64\n", "from html import escape\n", "\n", "def build_slider_html(case_name, image_dir, ldrop=None, settings_list=None, rdrop=None):\n", " \"\"\"\n", " Convert your slider(...) to a pure HTML/CSS/JS blob returned as IPython.display.HTML.\n", " - case_name: string\n", " - image_dir: directory containing images named like ..._hPa.png and with timestamps after 'hPa_'\n", " - ldrop: path to user_nl (optional)\n", " - settings_list: list of additional keywords to include in subset (optional)\n", " - rdrop: path to CaseStatus (optional)\n", " \"\"\"\n", " # --- tooltip / link dicts from your function ---\n", " tooltip_dict = {\n", " \"Nudge_Uprof\": \"\"\"Selectively apply nudging to U:\n", "\n", "OFF = Switch off nudging\n", "ON = Apply nudging everywhere\n", "WINDOW = Apply window function to\n", "nudging tendencies.\n", "\n", "0 = OFF\n", "1 = ON\n", "2 = WINDOW\n", "\"\"\",\n", " \"Nudge_Ucoef\": \"Selectively adjust the nudging strength applied to U. (normalized) [0.,1.]\",\n", " \"Nudge_Hwin_lat0\": \"Specify the horizontal center of the window (lat0) in degrees. [-90., +90.]\",\n", " \"Nudge_Hwin_lon0\": \"Specify the horizontal center of the window (lon0) in degrees. [ 0. , 360.]\",\n", " \"Nudge_Hwin_latWidth\": \"Specify the lat width of the horizontal window in degrees. >0\",\n", " \"Nudge_Hwin_lonWidth\": \"Specify the lon width of the horizontal window in degrees. >0\",\n", " \"Nudge_Vwin_Hindex\": \"Vertical window high index\",\n", " \"Nudge_Vwin_Lindex\": \"Vertical window low index\",\n", " \"Nudge_Vwin_Hdelta\": \"Vertical window high delta\",\n", " \"Nudge_Vwin_Ldelta\": \"Vertical window low delta\",\n", " \"Nudge_Vwin_Invert\": \"A logical flag used to invert the horizontal window function to get its compliment. True/False\",\n", " \"Nudge_Hwin_latDelta\": \"Horizontal lat delta\",\n", " \"Nudge_Hwin_lonDelta\": \"Horizontal lon delta\",\n", " \"Nudge_Hwin_Invert\": \"A logical flag used to invert the horizontal window function to get its compliment. (e.g. to nudge outside a given window) True/False\",\n", " \"Nudge_TimeScale_Opt\": \"Select the timescale for the relaxation: WEAK / STRONG (0=WEAK,1=STRONG)\",\n", " \"Nudge_Force_Opt\": \"Select the form of the Target values: NEXT / LINEAR (0=NEXT,1=LINEAR)\"\n", " }\n", "\n", " link_dict = {\n", " \"Nudge_Uprof\": \"https://ncar.github.io/CAM/doc/build/html/users_guide/physics-modifications-via-the-namelist.html?highlight=nudge#namelist-values\",\n", " \"Nudge_Ucoef\": \"https://ncar.github.io/CAM/doc/build/html/users_guide/physics-modifications-via-the-namelist.html?highlight=nudge#namelist-values\",\n", " \"Nudge_TimeScale_Opt\": \"https://www.google.com\"\n", " }\n", "\n", " # --- guard ---\n", " if not image_dir or not os.path.isdir(image_dir):\n", " return HTML(f\"
No valid image_dir: {escape(str(image_dir))}
\")\n", "\n", " # --- detect levels and image files per level ---\n", " lev_pattern = re.compile(r'(\\d+)hPa\\.png$')\n", " all_files = os.listdir(image_dir)\n", " levels = sorted({lev_pattern.search(f).group(1) for f in all_files if lev_pattern.search(f)})\n", " if not levels:\n", " return HTML(\"
No level-specific image files found (expecting '*hPa.png').
\")\n", "\n", " # helper to extract timestamp like your original code\n", " timestamp_pattern = re.compile(r\"hPa_(\\d{4}_\\d{2}_\\d{2}_\\d{2}:\\d{2})\\.png$\")\n", "\n", " def get_images_for_level(level):\n", " level = str(level)\n", " level_files = sorted([\n", " os.path.join(image_dir, f) for f in os.listdir(image_dir)\n", " if f.endswith(f'{level}hPa.png')\n", " ])\n", " timestamps = [\n", " '-'.join(os.path.basename(f).split('_')[1:4]) + ' ' + os.path.basename(f).split('_')[4]\n", " for f in level_files\n", " ]\n", " return level_files, timestamps\n", "\n", " # --- build base64-encoded images per level (list of lists) ---\n", " images_per_level = {}\n", " timestamps_per_level = {}\n", " for lev in levels:\n", " files, tss = get_images_for_level(lev)\n", " b64_list = []\n", " for p in files:\n", " try:\n", " img = Image.open(p)\n", " # keep aspect similar to your original resize (1000x300) but scale if smaller\n", " #img = img.resize((1000, 300))\n", " img = img.resize((1200, 400))\n", " buf = BytesIO()\n", " img.save(buf, format='PNG')\n", " b64 = base64.b64encode(buf.getvalue()).decode()\n", " b64_list.append(b64)\n", " except Exception as e:\n", " b64_list.append(\"\") # placeholder if something fails\n", " images_per_level[lev] = b64_list\n", " timestamps_per_level[lev] = tss\n", "\n", " # --- load and process settings and status text like your original functions ---\n", " def load_user_nl(ldrop, settings_list):\n", " default_setting_list = [\"fincl\",\"mfilt\",\"nhtfrq\",\"ncdata\"]\n", " lines_nudged = []\n", " lines_all = []\n", " lines_subset = []\n", " try:\n", " with open(ldrop, 'r') as file:\n", " for line in file:\n", " if line.startswith(' Nudge_') or line.startswith(' nudge_') or line.startswith('Nudge_') or line.startswith('nudge_'):\n", " cleaned_line = re.sub(r'\\s{3,}', ' ', line)\n", " lines_subset.append(cleaned_line.strip())\n", " lines_nudged.append(cleaned_line.strip())\n", " if settings_list:\n", " for setting in settings_list:\n", " if setting not in default_setting_list:\n", " if setting in line:\n", " cleaned_line = re.sub(r'\\s{3,}', ' ', line)\n", " lines_subset.append(cleaned_line.strip())\n", " if \"fincl\" in line:\n", " cleaned_line = re.sub(r'\\s{3,}', ' ', line.strip())\n", " lines_subset.append(cleaned_line)\n", " if \"mfilt\" in line:\n", " cleaned_line = re.sub(r'\\s{3,}', ' ', line)\n", " lines_subset.append(cleaned_line.strip())\n", " if \"nhtfrq\" in line:\n", " cleaned_line = re.sub(r'\\s{3,}', ' ', line)\n", " lines_subset.append(cleaned_line.strip())\n", " if \"ncdata\" in line:\n", " cleaned_line = re.sub(r'\\s{3,}', ' ', line)\n", " lines_subset.append(cleaned_line.strip())\n", " lines_all.append(line.strip())\n", " except Exception as e:\n", " lines_all = [f\"Error reading user_nl_cam: {e}\"]\n", " return \"\\n\".join(lines_nudged), \"\\n\".join(lines_all), \"\\n\".join(lines_subset)\n", "\n", " def load_case_status(case_status):\n", " lines = []\n", " try:\n", " with open(case_status, 'r') as file:\n", " lines = [re.sub(r'\\s{3,}', ' ', line).strip() for line in file]\n", " except Exception as e:\n", " lines = [f\"Error reading CaseStatus: {e}\"]\n", " return \"\\n\".join(lines)\n", "\n", " ldrop_opts = [\"Hide Settings\", \"Nudge Params\"]\n", " fname = \"\"\n", " nudge_text = full_text = subset_text = \"\"\n", " if ldrop and os.path.isfile(ldrop):\n", " nudge_text, full_text, subset_text = load_user_nl(ldrop, settings_list)\n", " if \"atm_in\" in ldrop:\n", " ldrop_opts += [\"Full atm_in\", \"Subset atm_in\"]\n", " fname = \"atm_in\"\n", " if \"user_nl_cam\" in ldrop:\n", " ldrop_opts.append(\"Full user_nl_cam\")\n", " fname = \"user_nl_cam\"\n", "\n", " if rdrop and os.path.isfile(rdrop):\n", " status_text = load_case_status(rdrop)\n", " else:\n", " status_text = \"Nothing here...\"\n", "\n", " # --- sanitized HTML snippets ready for insertion (escape content except where we want HTML links) ---\n", " # For settings Nudge Params we will replace keys with or including title attributes.\n", " def process_nudge_html(text):\n", " lines = []\n", " for line in text.splitlines():\n", " original = line\n", " for key in tooltip_dict.keys():\n", " pattern = re.compile(re.escape(key), re.IGNORECASE)\n", " title = tooltip_dict.get(key, \"\")\n", " href = link_dict.get(key, \"\")\n", " if href:\n", " repl = f'{escape(key)}'\n", " else:\n", " repl = f'{escape(key)}'\n", " line = pattern.sub(repl, line)\n", " # escape leftover content\n", " # we assume replacements already escaped; ensure any other characters are safe\n", " lines.append(escape(line, quote=False))\n", " # join with
and then unescape the already-constructed / by replacing their escaped forms\n", " html_out = \"
\".join(lines)\n", " # fix the escaped
and by unescaping their tags (they were double-escaped)\n", " # (we purposely escaped the full line earlier — now restore tags)\n", " for key in tooltip_dict.keys():\n", " # replace the escaped anchor/span (they contain <a ... >) with actual tags by searching for the escaped substring\n", " if key in html_out:\n", " # anchors contain the key text; replace the escaped key-only instances with unescaped link/span\n", " # This step is conservative and will mainly restore our inserted tags.\n", " pass\n", " # simpler: since we already constructed repl with proper tags and then escaped the whole line,\n", " # we need to instead rebuild from original again but carefully:\n", " processed = []\n", " for line in text.splitlines():\n", " line2 = line\n", " for key in tooltip_dict.keys():\n", " pattern = re.compile(re.escape(key), re.IGNORECASE)\n", " title = tooltip_dict.get(key, \"\")\n", " href = link_dict.get(key, \"\")\n", " if href:\n", " repl = f'{escape(key)}'\n", " else:\n", " repl = f'{escape(key)}'\n", " line2 = pattern.sub(repl, line2)\n", " processed.append(escape(line2))\n", " # Now processed contains escaped content with tags escaped; we must insert the tags verbatim.\n", " # So we'll take the original lines and perform the substitution without escaping the replacements.\n", " final_lines = []\n", " for line in text.splitlines():\n", " ln = line\n", " for key in tooltip_dict.keys():\n", " pattern = re.compile(re.escape(key), re.IGNORECASE)\n", " title = tooltip_dict.get(key, \"\")\n", " href = link_dict.get(key, \"\")\n", " if href:\n", " repl = f'{escape(key)}'\n", " else:\n", " repl = f'{escape(key)}'\n", " ln = pattern.sub(repl, ln)\n", " final_lines.append(escape(ln))\n", " # convert to HTML with
 styling preserved\n",
    "        return \"
\" + \"
\".join(final_lines) + \"
\"\n", "\n", " nudge_html = process_nudge_html(nudge_text) if nudge_text else \"
No nudge params found.
\"\n", " subset_html = \"
\" + escape(subset_text) + \"
\" if subset_text else \"
No subset.
\"\n", " full_html = \"
\" + escape(full_text) + \"
\" if full_text else \"
No full text.
\"\n", " status_html = \"
\" + escape(status_text) + \"
\"\n", "\n", " # --- Build an HTML blob and inject JSON data for JS ---\n", " data = {\n", " \"case_name\": case_name,\n", " \"levels\": levels,\n", " \"images_per_level\": images_per_level,\n", " \"timestamps_per_level\": timestamps_per_level,\n", " \"nudge_html\": nudge_html,\n", " \"subset_html\": subset_html,\n", " \"full_html\": full_html,\n", " \"status_html\": status_html,\n", " \"ldrop_opts\": ldrop_opts,\n", " \"fname\": fname\n", " }\n", "\n", " # Convert data to JSON safely for embedding\n", " data_json = json.dumps(data)\n", "\n", " # HTML/CSS/JS template\n", " html = f\"\"\"\n", "
\n", " \n", "\n", "
{escape(case_name)}
\n", "\n", "
\n", " \n", " \n", "\n", " \n", " \n", " \n", "
\n", "\n", "
\n", "
\n", "
\n", " \n", " \n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "
\n", " \n", " \n", "
\n", "
Choose Settings to view
\n", "
\n", "\n", "
\n", "
\n", " \n", " \n", "
\n", "
CaseStatus output
\n", "
\n", "
\n", "\n", "
\n", "\n", "\n", " \"\"\"\n", "\n", " return HTML(html)\n", "\n", "# Example usage:\n", "# display(build_slider_html(\"CASE_NAME\", \"/path/to/images\", ldrop=\"/path/to/user_nl_cam\", settings_list=[\"cosp\"], rdrop=\"/path/to/CaseStatus\"))\n", "\"\"\"\n", "\"f.e21.FHIST_BGC.f09_f09_mg17.SOCRATES_nudgeUVTfull\": [\n", " \"f.e21.FHIST_BGC.f09_f09_mg17.SOCRATES_nudgeUVTfull_tau12h.001\",\n", " \"f.e21.FHIST_BGC.f09_f09_mg17.SOCRATES_nudgeUVTfull_tau24h.001\",\n", " ],\n", "\"\"\"\n", "from pathlib import Path\n", "run = \"f.e21.FHIST_BGC.f09_f09_mg17.SOCRATES_nudgeUVTfull_tau12h.001\"\n", "#for run in [\"f.e21.FHIST_BGC.f09_f09_mg17.SOCRATES_nudgeUVTfull_tau12h.001\", \n", "# \"f.e21.FHIST_BGC.f09_f09_mg17.SOCRATES_nudgeUVTfull_tau24h.001\"]:\n", "file_path = Path(f\"/glade/derecho/scratch/islas/{run}/run/atm_in\")\n", "display(build_slider_html(run,\n", " #f\"plots/{run}/{plot_type}/ERA5/RF13/\",\n", " compass_root,\n", " f\"{str(file_path)}\",\n", " #settings_list=[\"fincl\",\"mfilt\",\"nhtfrq\",\"ncdata\",\"cld\",\"cosp\"],\n", " settings_list=[\"cosp\"],\n", " #rdrop=\"/glade/derecho/scratch/richling/cases/F2000climo.f09_f09_mg17.window.exp.6hrInit.R13.003/CaseStatus\"\n", " )\n", ")" ] }, { "cell_type": "code", "execution_count": 6, "id": "a6de11ef", "metadata": { "editable": true, "execution": { "iopub.execute_input": "2025-12-10T17:14:15.595841Z", "iopub.status.busy": "2025-12-10T17:14:15.595625Z", "iopub.status.idle": "2025-12-10T17:14:15.620379Z", "shell.execute_reply": "2025-12-10T17:14:15.619967Z" }, "papermill": { "duration": 0.032103, "end_time": "2025-12-10T17:14:15.621154", "exception": false, "start_time": "2025-12-10T17:14:15.589051", "status": "completed" }, "slideshow": { "slide_type": "" }, "tags": [ "parameters", "hide-cell" ] }, "outputs": [], "source": [ "#GOOD FUNCTION\n", "from IPython.display import HTML, display\n", "import os, re, json\n", "from glob import glob\n", "from PIL import Image\n", "from io import BytesIO\n", "import base64\n", "from html import escape\n", "\n", "def build_slider_html(case_name, image_dir, ldrop=None, settings_list=None, rdrop=None):\n", " \"\"\"\n", " Convert your slider(...) to a pure HTML/CSS/JS blob returned as IPython.display.HTML.\n", " - case_name: string\n", " - image_dir: directory containing images named like ..._hPa.png and with timestamps after 'hPa_'\n", " - ldrop: path to user_nl (optional)\n", " - settings_list: list of additional keywords to include in subset (optional)\n", " - rdrop: path to CaseStatus (optional)\n", " \"\"\"\n", " # --- tooltip / link dicts from your function ---\n", " tooltip_dict = {\n", " \"Nudge_Uprof\": \"\"\"Selectively apply nudging to U:\n", "\n", "OFF = Switch off nudging\n", "ON = Apply nudging everywhere\n", "WINDOW = Apply window function to\n", "nudging tendencies.\n", "\n", "0 = OFF\n", "1 = ON\n", "2 = WINDOW\n", "\"\"\",\n", " \"Nudge_Ucoef\": \"Selectively adjust the nudging strength applied to U. (normalized) [0.,1.]\",\n", " \"Nudge_Hwin_lat0\": \"Specify the horizontal center of the window (lat0) in degrees. [-90., +90.]\",\n", " \"Nudge_Hwin_lon0\": \"Specify the horizontal center of the window (lon0) in degrees. [ 0. , 360.]\",\n", " \"Nudge_Hwin_latWidth\": \"Specify the lat width of the horizontal window in degrees. >0\",\n", " \"Nudge_Hwin_lonWidth\": \"Specify the lon width of the horizontal window in degrees. >0\",\n", " \"Nudge_Vwin_Hindex\": \"Vertical window high index\",\n", " \"Nudge_Vwin_Lindex\": \"Vertical window low index\",\n", " \"Nudge_Vwin_Hdelta\": \"Vertical window high delta\",\n", " \"Nudge_Vwin_Ldelta\": \"Vertical window low delta\",\n", " \"Nudge_Vwin_Invert\": \"A logical flag used to invert the horizontal window function to get its compliment. True/False\",\n", " \"Nudge_Hwin_latDelta\": \"Horizontal lat delta\",\n", " \"Nudge_Hwin_lonDelta\": \"Horizontal lon delta\",\n", " \"Nudge_Hwin_Invert\": \"A logical flag used to invert the horizontal window function to get its compliment. (e.g. to nudge outside a given window) True/False\",\n", " \"Nudge_TimeScale_Opt\": \"Select the timescale for the relaxation: WEAK / STRONG (0=WEAK,1=STRONG)\",\n", " \"Nudge_Force_Opt\": \"Select the form of the Target values: NEXT / LINEAR (0=NEXT,1=LINEAR)\"\n", " }\n", "\n", " link_dict = {\n", " \"Nudge_Uprof\": \"https://ncar.github.io/CAM/doc/build/html/users_guide/physics-modifications-via-the-namelist.html?highlight=nudge#namelist-values\",\n", " \"Nudge_Ucoef\": \"https://ncar.github.io/CAM/doc/build/html/users_guide/physics-modifications-via-the-namelist.html?highlight=nudge#namelist-values\",\n", " \"Nudge_TimeScale_Opt\": \"https://www.google.com\"\n", " }\n", "\n", " # --- guard ---\n", " if not image_dir or not os.path.isdir(image_dir):\n", " return HTML(f\"
No valid image_dir: {escape(str(image_dir))}
\")\n", "\n", " # --- detect levels and image files per level ---\n", " lev_pattern = re.compile(r'(\\d+)hPa\\.png$')\n", " all_files = os.listdir(image_dir)\n", " levels = sorted({lev_pattern.search(f).group(1) for f in all_files if lev_pattern.search(f)})\n", " if not levels:\n", " return HTML(\"
No level-specific image files found (expecting '*hPa.png').
\")\n", "\n", " # helper to extract timestamp like your original code\n", " timestamp_pattern = re.compile(r\"hPa_(\\d{4}_\\d{2}_\\d{2}_\\d{2}:\\d{2})\\.png$\")\n", "\n", " def get_images_for_level(level):\n", " level = str(level)\n", " level_files = sorted([\n", " os.path.join(image_dir, f) for f in os.listdir(image_dir)\n", " if f.endswith(f'{level}hPa.png')\n", " ])\n", " timestamps = [\n", " '-'.join(os.path.basename(f).split('_')[1:4]) + ' ' + os.path.basename(f).split('_')[4]\n", " for f in level_files\n", " ]\n", " return level_files, timestamps\n", "\n", " # --- build base64-encoded images per level (list of lists) ---\n", " images_per_level = {}\n", " timestamps_per_level = {}\n", " for lev in levels:\n", " files, tss = get_images_for_level(lev)\n", " b64_list = []\n", " for p in files:\n", " try:\n", " img = Image.open(p)\n", " # keep aspect similar to your original resize (1000x300) but scale if smaller\n", " #img = img.resize((1000, 300))\n", " img = img.resize((1200, 400))\n", " buf = BytesIO()\n", " img.save(buf, format='PNG')\n", " b64 = base64.b64encode(buf.getvalue()).decode()\n", " b64_list.append(b64)\n", " except Exception as e:\n", " b64_list.append(\"\") # placeholder if something fails\n", " images_per_level[lev] = b64_list\n", " timestamps_per_level[lev] = tss\n", "\n", " # --- load and process settings and status text like your original functions ---\n", " def load_user_nl(ldrop, settings_list):\n", " default_setting_list = [\"fincl\",\"mfilt\",\"nhtfrq\",\"ncdata\"]\n", " lines_nudged = []\n", " lines_all = []\n", " lines_subset = []\n", " try:\n", " with open(ldrop, 'r') as file:\n", " for line in file:\n", " if line.startswith(' Nudge_') or line.startswith(' nudge_') or line.startswith('Nudge_') or line.startswith('nudge_'):\n", " cleaned_line = re.sub(r'\\s{3,}', ' ', line)\n", " lines_subset.append(cleaned_line.strip())\n", " lines_nudged.append(cleaned_line.strip())\n", " if settings_list:\n", " for setting in settings_list:\n", " if setting not in default_setting_list:\n", " if setting in line:\n", " cleaned_line = re.sub(r'\\s{3,}', ' ', line)\n", " lines_subset.append(cleaned_line.strip())\n", " if \"fincl\" in line:\n", " cleaned_line = re.sub(r'\\s{3,}', ' ', line.strip())\n", " lines_subset.append(cleaned_line)\n", " if \"mfilt\" in line:\n", " cleaned_line = re.sub(r'\\s{3,}', ' ', line)\n", " lines_subset.append(cleaned_line.strip())\n", " if \"nhtfrq\" in line:\n", " cleaned_line = re.sub(r'\\s{3,}', ' ', line)\n", " lines_subset.append(cleaned_line.strip())\n", " if \"ncdata\" in line:\n", " cleaned_line = re.sub(r'\\s{3,}', ' ', line)\n", " lines_subset.append(cleaned_line.strip())\n", " lines_all.append(line.strip())\n", " except Exception as e:\n", " lines_all = [f\"Error reading user_nl_cam: {e}\"]\n", " return \"\\n\".join(lines_nudged), \"\\n\".join(lines_all), \"\\n\".join(lines_subset)\n", "\n", " def load_case_status(case_status):\n", " lines = []\n", " try:\n", " with open(case_status, 'r') as file:\n", " lines = [re.sub(r'\\s{3,}', ' ', line).strip() for line in file]\n", " except Exception as e:\n", " lines = [f\"Error reading CaseStatus: {e}\"]\n", " return \"\\n\".join(lines)\n", "\n", " ldrop_opts = [\"Hide Settings\", \"Nudge Params\"]\n", " fname = \"\"\n", " nudge_text = full_text = subset_text = \"\"\n", " if ldrop and os.path.isfile(ldrop):\n", " nudge_text, full_text, subset_text = load_user_nl(ldrop, settings_list)\n", " if \"atm_in\" in ldrop:\n", " ldrop_opts += [\"Full atm_in\", \"Subset atm_in\"]\n", " fname = \"atm_in\"\n", " if \"user_nl_cam\" in ldrop:\n", " ldrop_opts.append(\"Full user_nl_cam\")\n", " fname = \"user_nl_cam\"\n", "\n", " if rdrop and os.path.isfile(rdrop):\n", " status_text = load_case_status(rdrop)\n", " else:\n", " status_text = \"Nothing here...\"\n", "\n", " # --- sanitized HTML snippets ready for insertion (escape content except where we want HTML links) ---\n", " # For settings Nudge Params we will replace keys with or including title attributes.\n", " def process_nudge_html(text):\n", " lines = []\n", " for line in text.splitlines():\n", " original = line\n", " for key in tooltip_dict.keys():\n", " pattern = re.compile(re.escape(key), re.IGNORECASE)\n", " title = tooltip_dict.get(key, \"\")\n", " href = link_dict.get(key, \"\")\n", " if href:\n", " repl = f'{escape(key)}'\n", " else:\n", " repl = f'{escape(key)}'\n", " line = pattern.sub(repl, line)\n", " # escape leftover content\n", " # we assume replacements already escaped; ensure any other characters are safe\n", " lines.append(escape(line, quote=False))\n", " # join with
and then unescape the already-constructed / by replacing their escaped forms\n", " html_out = \"
\".join(lines)\n", " # fix the escaped
and by unescaping their tags (they were double-escaped)\n", " # (we purposely escaped the full line earlier — now restore tags)\n", " for key in tooltip_dict.keys():\n", " # replace the escaped anchor/span (they contain <a ... >) with actual tags by searching for the escaped substring\n", " if key in html_out:\n", " # anchors contain the key text; replace the escaped key-only instances with unescaped link/span\n", " # This step is conservative and will mainly restore our inserted tags.\n", " pass\n", " # simpler: since we already constructed repl with proper tags and then escaped the whole line,\n", " # we need to instead rebuild from original again but carefully:\n", " processed = []\n", " for line in text.splitlines():\n", " line2 = line\n", " for key in tooltip_dict.keys():\n", " pattern = re.compile(re.escape(key), re.IGNORECASE)\n", " title = tooltip_dict.get(key, \"\")\n", " href = link_dict.get(key, \"\")\n", " if href:\n", " repl = f'{escape(key)}'\n", " else:\n", " repl = f'{escape(key)}'\n", " line2 = pattern.sub(repl, line2)\n", " processed.append(escape(line2))\n", " # Now processed contains escaped content with tags escaped; we must insert the tags verbatim.\n", " # So we'll take the original lines and perform the substitution without escaping the replacements.\n", " final_lines = []\n", " for line in text.splitlines():\n", " ln = line\n", " for key in tooltip_dict.keys():\n", " pattern = re.compile(re.escape(key), re.IGNORECASE)\n", " title = tooltip_dict.get(key, \"\")\n", " href = link_dict.get(key, \"\")\n", " if href:\n", " repl = f'{escape(key)}'\n", " else:\n", " repl = f'{escape(key)}'\n", " ln = pattern.sub(repl, ln)\n", " final_lines.append(escape(ln))\n", " # convert to HTML with
 styling preserved\n",
    "        return \"
\" + \"
\".join(final_lines) + \"
\"\n", "\n", " nudge_html = process_nudge_html(nudge_text) if nudge_text else \"
No nudge params found.
\"\n", " subset_html = \"
\" + escape(subset_text) + \"
\" if subset_text else \"
No subset.
\"\n", " full_html = \"
\" + escape(full_text) + \"
\" if full_text else \"
No full text.
\"\n", " status_html = \"
\" + escape(status_text) + \"
\"\n", "\n", " # --- Build an HTML blob and inject JSON data for JS ---\n", " data = {\n", " \"case_name\": case_name,\n", " \"levels\": levels,\n", " \"images_per_level\": images_per_level,\n", " \"timestamps_per_level\": timestamps_per_level,\n", " \"nudge_html\": nudge_html,\n", " \"subset_html\": subset_html,\n", " \"full_html\": full_html,\n", " \"status_html\": status_html,\n", " \"ldrop_opts\": ldrop_opts,\n", " \"fname\": fname\n", " }\n", "\n", " # Convert data to JSON safely for embedding\n", " data_json = json.dumps(data)\n", "\n", " # HTML/CSS/JS template\n", " html = f\"\"\"\n", "
\n", " \n", "\n", "
{escape(case_name)}
\n", "\n", "
\n", " \n", " \n", "\n", " \n", " \n", " \n", "
\n", "\n", "
\n", "
\n", "
\n", " \n", " \n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "
\n", " \n", " \n", "
\n", "
Choose Settings to view
\n", "
\n", "\n", "
\n", "
\n", " \n", " \n", "
\n", "
CaseStatus output
\n", "
\n", "
\n", "\n", "
\n", "\n", "\n", " \"\"\"\n", "\n", " return HTML(html)" ] }, { "cell_type": "code", "execution_count": 7, "id": "34db62b6", "metadata": { "editable": true, "execution": { "iopub.execute_input": "2025-12-10T17:14:15.635118Z", "iopub.status.busy": "2025-12-10T17:14:15.634944Z", "iopub.status.idle": "2025-12-10T17:14:20.642273Z", "shell.execute_reply": "2025-12-10T17:14:20.641725Z" }, "papermill": { "duration": 5.015936, "end_time": "2025-12-10T17:14:20.643373", "exception": false, "start_time": "2025-12-10T17:14:15.627437", "status": "completed" }, "slideshow": { "slide_type": "" }, "tags": [ "parameters", "hide-cell" ] }, "outputs": [], "source": [ "#GOOD FUNCTION\n", "from IPython.display import HTML, display\n", "from pathlib import Path\n", "\n", "outer_tabs_html = []\n", "outer_tab_buttons = []\n", "outer_content_html = []\n", "\n", "for i, (outer_name, inner_runs) in enumerate(runs_dict.items()):\n", " # Outer tab button\n", " active_cls = \"active\" if i==0 else \"\"\n", " outer_tab_buttons.append(f'
{outer_name}
')\n", "\n", " inner_tabs = []\n", " inner_contents = []\n", " for j, run_name in enumerate(inner_runs):\n", " # Inner tab button\n", " inner_active = \"active\" if j==0 else \"\"\n", " inner_tabs.append(f'
{run_name.split(\"_\")[-1]}
')\n", "\n", " ## Inner content: slider HTML\n", " #slider_html = build_slider_html(\n", " # run_name,\n", " # image_dir=f\"/glade/derecho/scratch/islas/{run_name}/run/atm_in\",\n", " # settings_list=[\"cosp\"],\n", " #).data # get the raw HTML string\n", " file_path = Path(f\"/glade/derecho/scratch/islas/{run_name}/run/atm_in\")\n", " slider_html = build_slider_html(run_name,\n", " #f\"plots/{run}/{plot_type}/ERA5/RF13/\",\n", " compass_root,\n", " f\"{str(file_path)}\",\n", " #settings_list=[\"fincl\",\"mfilt\",\"nhtfrq\",\"ncdata\",\"cld\",\"cosp\"],\n", " settings_list=[\"cosp\"],\n", " #rdrop=\"/glade/derecho/scratch/richling/cases/F2000climo.f09_f09_mg17.window.exp.6hrInit.R13.003/CaseStatus\"\n", " ).data # get the raw HTML string\n", "\n", " inner_contents.append(f'
{slider_html}
')\n", "\n", " outer_active = \"active\" if i==0 else \"\"\n", " outer_content_html.append(f\"\"\"\n", "
\n", "
{''.join(inner_tabs)}
\n", " {''.join(inner_contents)}\n", "
\n", " \"\"\")\n", "\n", "html_full = f\"\"\"\n", "
\n", "{''.join(outer_tab_buttons)}\n", "
\n", "{''.join(outer_content_html)}\n", "\n", "\n", "\n", "\n", "\"\"\"\n", "\n" ] }, { "cell_type": "code", "execution_count": 8, "id": "5324784d", "metadata": { "execution": { "iopub.execute_input": "2025-12-10T17:14:20.656808Z", "iopub.status.busy": "2025-12-10T17:14:20.656584Z", "iopub.status.idle": "2025-12-10T17:14:20.763106Z", "shell.execute_reply": "2025-12-10T17:14:20.762634Z" }, "papermill": { "duration": 0.22479, "end_time": "2025-12-10T17:14:20.874460", "exception": false, "start_time": "2025-12-10T17:14:20.649670", "status": "completed" }, "tags": [] }, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "
f.e21.FHIST_BGC.f09_f09_mg17.SOCRATES_nudgeUVTfull
f.e30_cam6_4_120.FHISTC_LTso.ne30pg3_ne30pg3_mg17.SOCRATES_nudgeUVTfull_withCOSP
\n", "
\n", "\n", "
\n", "
tau12h.001
tau24h.001
\n", "
\n", "
\n", " \n", "\n", "
f.e21.FHIST_BGC.f09_f09_mg17.SOCRATES_nudgeUVTfull_tau12h.001
\n", "\n", "
\n", " \n", " \n", "\n", " \n", " \n", " \n", "
\n", "\n", "
\n", "
\n", "
\n", " \n", " \n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "
\n", " \n", " \n", "
\n", "
Choose Settings to view
\n", "
\n", "\n", "
\n", "
\n", " \n", " \n", "
\n", "
CaseStatus output
\n", "
\n", "
\n", "\n", "
\n", "\n", "\n", "
\n", "
\n", " \n", "\n", "
f.e21.FHIST_BGC.f09_f09_mg17.SOCRATES_nudgeUVTfull_tau24h.001
\n", "\n", "
\n", " \n", " \n", "\n", " \n", " \n", " \n", "
\n", "\n", "
\n", "
\n", "
\n", " \n", " \n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "
\n", " \n", " \n", "
\n", "
Choose Settings to view
\n", "
\n", "\n", "
\n", "
\n", " \n", " \n", "
\n", "
CaseStatus output
\n", "
\n", "
\n", "\n", "
\n", "\n", "\n", "
\n", "
\n", " \n", "
\n", "
tau6h.001
tau12h.001
\n", "
\n", "
\n", " \n", "\n", "
f.e30_cam6_4_120.FHISTC_LTso.ne30pg3_ne30pg3_mg17.SOCRATES_nudgeUVTfull_withCOSP_tau6h.001
\n", "\n", "
\n", " \n", " \n", "\n", " \n", " \n", " \n", "
\n", "\n", "
\n", "
\n", "
\n", " \n", " \n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "
\n", " \n", " \n", "
\n", "
Choose Settings to view
\n", "
\n", "\n", "
\n", "
\n", " \n", " \n", "
\n", "
CaseStatus output
\n", "
\n", "
\n", "\n", "
\n", "\n", "\n", "
\n", "
\n", " \n", "\n", "
f.e30_cam6_4_120.FHISTC_LTso.ne30pg3_ne30pg3_mg17.SOCRATES_nudgeUVTfull_withCOSP_tau12h.001
\n", "\n", "
\n", " \n", " \n", "\n", " \n", " \n", " \n", "
\n", "\n", "
\n", "
\n", "
\n", " \n", " \n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "
\n", " \n", " \n", "
\n", "
Choose Settings to view
\n", "
\n", "\n", "
\n", "
\n", " \n", " \n", "
\n", "
CaseStatus output
\n", "
\n", "
\n", "\n", "
\n", "\n", "\n", "
\n", "
\n", " \n", "\n", "\n", "\n", "\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "display(HTML(html_full))" ] }, { "cell_type": "raw", "id": "9a39ea6c", "metadata": { "papermill": { "duration": 0.085851, "end_time": "2025-12-10T17:14:21.046303", "exception": false, "start_time": "2025-12-10T17:14:20.960452", "status": "completed" }, "tags": [], "vscode": { "languageId": "raw" } }, "source": [ "from IPython.display import HTML, display\n", "\n", "\n", "# Build HTML\n", "outer_options = \"\".join([f'' for i, name in enumerate(runs_dict.keys())])\n", "\n", "outer_contents = []\n", "for i, (outer_name, inner_runs) in enumerate(runs_dict.items()):\n", " inner_tabs_html = []\n", " inner_contents_html = []\n", " for j, run_name in enumerate(inner_runs):\n", " active_cls = \"active\" if j==0 else \"\"\n", " # Inner tab button\n", " inner_tabs_html.append(f'
{run_name.split(\"_\")[-1]}
')\n", " # Inner content: embed your slider HTML\n", " slider_html = build_slider_html(run_name,\n", " #f\"plots/{run}/{plot_type}/ERA5/RF13/\",\n", " compass_root,\n", " f\"{str(file_path)}\",\n", " #settings_list=[\"fincl\",\"mfilt\",\"nhtfrq\",\"ncdata\",\"cld\",\"cosp\"],\n", " settings_list=[\"cosp\"],\n", " #rdrop=\"/glade/derecho/scratch/richling/cases/F2000climo.f09_f09_mg17.window.exp.6hrInit.R13.003/CaseStatus\"\n", " ).data # extract HTML string\n", " inner_contents_html.append(f'
{slider_html}
')\n", "\n", " outer_active = \"active\" if i==0 else \"\"\n", " outer_contents.append(f\"\"\"\n", "
\n", "
{''.join(inner_tabs_html)}
\n", " {''.join(inner_contents_html)}\n", "
\n", " \"\"\")\n", "\n", "html_full = f\"\"\"\n", "
\n", " \n", " \n", "\n", " {''.join(outer_contents)}\n", "
\n", "\n", "\n", "\n", "\n", "\"\"\"\n", "\n", "display(HTML(html_full))\n" ] }, { "cell_type": "raw", "id": "66abeb9e", "metadata": { "papermill": { "duration": 0.084078, "end_time": "2025-12-10T17:14:21.215064", "exception": false, "start_time": "2025-12-10T17:14:21.130986", "status": "completed" }, "tags": [], "vscode": { "languageId": "raw" } }, "source": [ "from IPython.display import HTML, display\n", "import os, re, json\n", "from glob import glob\n", "from PIL import Image\n", "from io import BytesIO\n", "import base64\n", "from html import escape\n", "from pathlib import Path\n", "\n", "def build_slider_html_multi(run_families, compass_root, base_path, settings_list=None):\n", " \"\"\"\n", " Build a slider widget with outer dropdown (run families) and inner tabs (runs within family)\n", " \n", " run_families: dict\n", " {\"family_name1\": [\"run1\",\"run2\"], \"family_name2\": [\"run3\",\"run4\"]}\n", " base_path: str or Path\n", " Base path where runs are located (will append /run/atm_in)\n", " settings_list: list of strings (optional)\n", " \"\"\"\n", " \n", " # --- helper functions from your previous function ---\n", " \n", " tooltip_dict = {\n", " \"Nudge_Uprof\": \"Selectively apply nudging to U\",\n", " \"Nudge_Ucoef\": \"Selectively adjust the nudging strength applied to U. (normalized) [0.,1.]\",\n", " \"Nudge_Hwin_lat0\": \"Specify the horizontal center of the window (lat0) in degrees. [-90., +90.]\",\n", " \"Nudge_Hwin_lon0\": \"Specify the horizontal center of the window (lon0) in degrees. [ 0. , 360.]\",\n", " \"Nudge_Hwin_latWidth\": \"Specify the lat width of the horizontal window in degrees. >0\",\n", " \"Nudge_Hwin_lonWidth\": \"Specify the lon width of the horizontal window in degrees. >0\",\n", " \"Nudge_Vwin_Hindex\": \"Vertical window high index\",\n", " \"Nudge_Vwin_Lindex\": \"Vertical window low index\",\n", " \"Nudge_Vwin_Hdelta\": \"Vertical window high delta\",\n", " \"Nudge_Vwin_Ldelta\": \"Vertical window low delta\",\n", " \"Nudge_Vwin_Invert\": \"A logical flag used to invert the horizontal window function to get its compliment. True/False\",\n", " \"Nudge_Hwin_latDelta\": \"Horizontal lat delta\",\n", " \"Nudge_Hwin_lonDelta\": \"Horizontal lon delta\",\n", " \"Nudge_Hwin_Invert\": \"A logical flag used to invert the horizontal window function to get its compliment. (e.g. to nudge outside a given window) True/False\",\n", " \"Nudge_TimeScale_Opt\": \"Select the timescale for the relaxation: WEAK / STRONG (0=WEAK,1=STRONG)\",\n", " \"Nudge_Force_Opt\": \"Select the form of the Target values: NEXT / LINEAR (0=NEXT,1=LINEAR)\"\n", " }\n", "\n", " link_dict = {\n", " \"Nudge_Uprof\": \"https://ncar.github.io/CAM/doc/build/html/users_guide/physics-modifications-via-the-namelist.html?highlight=nudge#namelist-values\",\n", " \"Nudge_Ucoef\": \"https://ncar.github.io/CAM/doc/build/html/users_guide/physics-modifications-via-the-namelist.html?highlight=nudge#namelist-values\",\n", " \"Nudge_TimeScale_Opt\": \"https://www.google.com\"\n", " }\n", "\n", " def process_nudge_html(text):\n", " lines = []\n", " for line in text.splitlines():\n", " line2 = line\n", " for key in tooltip_dict.keys():\n", " pattern = re.compile(re.escape(key), re.IGNORECASE)\n", " title = tooltip_dict.get(key, \"\")\n", " href = link_dict.get(key, \"\")\n", " if href:\n", " repl = f'{escape(key)}'\n", " else:\n", " repl = f'{escape(key)}'\n", " line2 = pattern.sub(repl, line2)\n", " lines.append(escape(line2))\n", " return \"
\" + \"
\".join(lines) + \"
\"\n", "\n", " def load_user_nl(ldrop):\n", " lines_nudged = []\n", " try:\n", " with open(ldrop, 'r') as file:\n", " for line in file:\n", " if line.startswith(' Nudge_') or line.startswith('nudge_'):\n", " lines_nudged.append(line.strip())\n", " except Exception as e:\n", " lines_nudged = [f\"Error reading user_nl_cam: {e}\"]\n", " return \"\\n\".join(lines_nudged)\n", "\n", " def get_images(compass_root):\n", " lev_pattern = re.compile(r'(\\d+)hPa\\.png$')\n", " timestamp_pattern = re.compile(r\"hPa_(\\d{4}_\\d{2}_\\d{2}_\\d{2}:\\d{2})\\.png$\")\n", " if not os.path.isdir(compass_root):\n", " return [], [], []\n", " files = sorted(os.listdir(compass_root))\n", " levels = sorted({lev_pattern.search(f).group(1) for f in files if lev_pattern.search(f)})\n", " images_per_level = {}\n", " timestamps_per_level = {}\n", " for lev in levels:\n", " level_files = sorted([os.path.join(compass_root, f) for f in files if f.endswith(f\"{lev}hPa.png\")])\n", " tss = []\n", " b64_list = []\n", " for f in level_files:\n", " # timestamp\n", " ts_m = timestamp_pattern.search(f)\n", " tss.append(ts_m.group(1) if ts_m else \"NoTS\")\n", " # image\n", " try:\n", " img = Image.open(f)\n", " img = img.resize((1200,400))\n", " buf = BytesIO()\n", " img.save(buf, format='PNG')\n", " b64_list.append(base64.b64encode(buf.getvalue()).decode())\n", " except:\n", " b64_list.append(\"\")\n", " images_per_level[lev] = b64_list\n", " timestamps_per_level[lev] = tss\n", " return levels, images_per_level, timestamps_per_level\n", "\n", " # --- Build data structure for all runs ---\n", " all_data = {}\n", " slider_count = 0 # to generate unique ID prefixes\n", " for fam_name, run_list in run_families.items():\n", " all_data[fam_name] = {}\n", " for run_name in run_list:\n", " run_path = Path(base_path)/run_name/\"run\"/\"atm_in\"\n", " levels, images_per_level, timestamps_per_level = get_images(str(compass_root))\n", " # Load nudge params if exist\n", " ldrop = run_path # just as example\n", " nudge_text = load_user_nl(str(run_path/\"user_nl_cam\")) if (run_path/\"user_nl_cam\").exists() else \"\"\n", " data = {\n", " \"case_name\": run_name,\n", " \"levels\": levels,\n", " \"images_per_level\": images_per_level,\n", " \"timestamps_per_level\": timestamps_per_level,\n", " \"nudge_html\": process_nudge_html(nudge_text),\n", " \"ldrop_opts\": [\"Hide Settings\",\"Nudge Params\"],\n", " \"slider_id\": f\"slider_{slider_count}\"\n", " }\n", " all_data[fam_name][run_name] = data\n", " slider_count += 1\n", "\n", " data_json = json.dumps(all_data)\n", "\n", " # --- HTML/JS template ---\n", " html = f\"\"\"\n", "
\n", " \n", " \n", "
\n", "
\n", "\n", "\n", " \"\"\"\n", " return HTML(html)\n", "compass_root,\n", "#f\"{str(file_path)}\",\n", "display(build_slider_html_multi(runs_dict, compass_root, f\"{str(file_path)}\", settings_list=[\"cosp\"]))" ] }, { "cell_type": "raw", "id": "89d3acce", "metadata": { "editable": true, "papermill": { "duration": 0.085236, "end_time": "2025-12-10T17:14:21.384725", "exception": false, "start_time": "2025-12-10T17:14:21.299489", "status": "completed" }, "slideshow": { "slide_type": "" }, "tags": [ "hide-cell" ], "vscode": { "languageId": "raw" } }, "source": [ "from IPython.display import HTML, display\n", "from pathlib import Path\n", "\n", "def build_slider_dropdown(runs_dict, compass_root, base_path=None, settings_list=None):\n", " \"\"\"\n", " runs_dict: {\"Family1\": [\"Run1\", \"Run2\"], ...}\n", " compass_root: Path to PNG images for all runs\n", " base_path: optional base path to /run/atm_in (for ldrop/rdrop)\n", " settings_list: list of settings keywords to pass to build_slider_html\n", " \"\"\"\n", " outer_options = \"\".join([f'' \n", " for i, name in enumerate(runs_dict.keys())])\n", "\n", " outer_contents = []\n", " for i, (outer_name, inner_runs) in enumerate(runs_dict.items()):\n", " inner_tabs_html = []\n", " inner_contents_html = []\n", " for j, run_name in enumerate(inner_runs):\n", " active_cls = \"active\" if j == 0 else \"\"\n", " # Inner tab button\n", " inner_tabs_html.append(\n", " f'
'\n", " f'{run_name.split(\"_\")[-1]}
'\n", " )\n", "\n", " # optional ldrop/rdrop path\n", " file_path = Path(f\"/glade/derecho/scratch/islas/{run_name}/run/atm_in\")\n", " #ldrop_path = Path(base_path) / run_name / \"run\" / \"atm_in\" if base_path else None\n", " ldrop_path = str(file_path) if file_path else None\n", "\n", " # embed slider HTML for this run\n", " slider_html = build_slider_html(\n", " run_name,\n", " compass_root,\n", " ldrop=ldrop_path,\n", " settings_list=settings_list\n", " ).data\n", " inner_contents_html.append(\n", " f'
{slider_html}
'\n", " )\n", "\n", " outer_active = \"active\" if i == 0 else \"\"\n", " outer_contents.append(f\"\"\"\n", "
\n", "
{''.join(inner_tabs_html)}
\n", " {''.join(inner_contents_html)}\n", "
\n", " \"\"\")\n", "\n", " html_full = f\"\"\"\n", "
\n", " \n", " \n", "\n", " {''.join(outer_contents)}\n", "
\n", "\n", "\n", "\n", "\n", "\"\"\"\n", " display(HTML(html_full))\n" ] }, { "cell_type": "raw", "id": "97cd74a1", "metadata": { "papermill": { "duration": 0.084826, "end_time": "2025-12-10T17:14:21.554625", "exception": false, "start_time": "2025-12-10T17:14:21.469799", "status": "completed" }, "tags": [], "vscode": { "languageId": "raw" } }, "source": [ "#compass_root = \"/glade/derecho/scratch/islas/plots_all_pngs\"\n", "base_path = \"/glade/derecho/scratch/islas\"\n", "build_slider_dropdown(runs_dict, compass_root, settings_list=[\"cosp\"])" ] }, { "cell_type": "raw", "id": "14103859", "metadata": { "editable": true, "papermill": { "duration": 0.084618, "end_time": "2025-12-10T17:14:21.724184", "exception": false, "start_time": "2025-12-10T17:14:21.639566", "status": "completed" }, "slideshow": { "slide_type": "" }, "tags": [ "hide-cell" ], "vscode": { "languageId": "raw" } }, "source": [ "from IPython.display import HTML, display\n", "\n", "# Example: runs_dict = {\"FamilyA\": [\"runA1\",\"runA2\"], \"FamilyB\": [\"runB1\",\"runB2\"]}\n", "# compass_root = path to images\n", "# base_path = path to /run/atm_in\n", "\n", "outer_options = \"\".join([f'' for i, name in enumerate(runs_dict.keys())])\n", "\n", "outer_contents = []\n", "for i, (outer_name, inner_runs) in enumerate(runs_dict.items()):\n", " inner_tabs_html = []\n", " inner_contents_html = []\n", " for j, run_name in enumerate(inner_runs):\n", " active_cls = \"active\" if j==0 else \"\"\n", " # Inner tab button\n", " inner_tabs_html.append(f'
{run_name.split(\"_\")[-1]}
')\n", "\n", " # Build slider HTML for this run\n", " slider_html = build_slider_html(\n", " run_name,\n", " compass_root,\n", " ldrop=f\"{base_path}/{run_name}/run/atm_in\",\n", " settings_list=[\"cosp\"]\n", " ).data # HTML string\n", "\n", " inner_contents_html.append(f'
{slider_html}
')\n", "\n", " outer_active = \"active\" if i==0 else \"\"\n", " outer_contents.append(f\"\"\"\n", "
\n", "
{''.join(inner_tabs_html)}
\n", " {''.join(inner_contents_html)}\n", "
\n", " \"\"\")\n", "\n", "html_full = f\"\"\"\n", "
\n", " \n", " \n", "\n", " {''.join(outer_contents)}\n", "
\n", "\n", "\n", "\n", "\n", "\"\"\"\n", "\n", "display(HTML(html_full))\n" ] }, { "cell_type": "code", "execution_count": null, "id": "7d5eabd4", "metadata": { "papermill": { "duration": 0.085064, "end_time": "2025-12-10T17:14:21.894803", "exception": false, "start_time": "2025-12-10T17:14:21.809739", "status": "completed" }, "tags": [] }, "outputs": [], "source": [] } ], "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": 8.491703, "end_time": "2025-12-10T17:14:22.197059", "exception": null, "input_path": "/glade/derecho/scratch/richling/tmp/tmpd8v7h47r.ipynb", "output_path": "/glade/derecho/scratch/richling/compass-cupid/CUPiD/examples/external_diag_packages/computed_notebooks/atm/COMPASS_model_diags_2.ipynb", "parameters": { "CESM_output_dir": "/glade/campaign/cesm/development/cross-wg/diagnostic_framework/CESM_output_for_testing", "base_case_name": "b.e30_beta02.BLT1850.ne30_t232.104", "base_case_nickname": "BLT1850_104", "base_climo_end_date": "0021-01-01", "base_climo_start_date": "0001-01-01", "base_end_date": "0045-01-01", "base_start_date": "0001-01-01", "case_name": "b.e23_alpha17f.BLT1850.ne30_t232.092", "case_nickname": "BLT1850_92", "climo_end_date": "0021-01-01", "climo_start_date": "0001-01-01", "compass_root": "/glade/work/richling/ADF/ADF_dev/Justin_ADF_2/ADF/adf_try_plots/f.e21.FHIST_BGC.f09_f09_mg17.SOCRATES_nudgeUVTfull/T/ERA5/RF13/", "end_date": "0021-01-01", "lc_kwargs": { "threads_per_worker": 1 }, "obs_data_dir": "/glade/campaign/cesm/development/cross-wg/diagnostic_framework/CUPiD_obs_data", "product": "/glade/derecho/scratch/richling/compass-cupid/CUPiD/examples/external_diag_packages/computed_notebooks//atm/COMPASS_model_diags_2.ipynb", "runs_dict": { "f.e21.FHIST_BGC.f09_f09_mg17.SOCRATES_nudgeUVTfull": [ "f.e21.FHIST_BGC.f09_f09_mg17.SOCRATES_nudgeUVTfull_tau12h.001", "f.e21.FHIST_BGC.f09_f09_mg17.SOCRATES_nudgeUVTfull_tau24h.001" ], "f.e30_cam6_4_120.FHISTC_LTso.ne30pg3_ne30pg3_mg17.SOCRATES_nudgeUVTfull_withCOSP": [ "f.e30_cam6_4_120.FHISTC_LTso.ne30pg3_ne30pg3_mg17.SOCRATES_nudgeUVTfull_withCOSP_tau6h.001", "f.e30_cam6_4_120.FHISTC_LTso.ne30pg3_ne30pg3_mg17.SOCRATES_nudgeUVTfull_withCOSP_tau12h.001" ] }, "serial": false, "start_date": "0001-01-01", "subset_kwargs": {}, "ts_dir": null }, "start_time": "2025-12-10T17:14:13.705356" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": { "02e639040e974a01969f917fb91e794e": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "DropdownModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "DropdownModel", "_options_labels": [ "Hide Settings", "Nudge Params", "Full atm_in", "Subset atm_in" ], "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "DropdownView", "description": "Settings", "description_allow_html": false, "disabled": false, "index": 0, "layout": "IPY_MODEL_3724fbc98649405cac3a11636e1b6b25", "style": "IPY_MODEL_d883c004668f42ec84dfdd152c60482d", "tabbable": null, "tooltip": null } }, "04583dcb44f54c07bbb908899805ec29": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "DropdownModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "DropdownModel", "_options_labels": [ "763" ], "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "DropdownView", "description": "Level (hPa)", "description_allow_html": false, "disabled": false, "index": 0, "layout": "IPY_MODEL_d8c226e7f48347c4b81d299b1418f152", "style": "IPY_MODEL_4bca9e1dde794457af9051a754ab4638", "tabbable": null, "tooltip": null } }, "06172d5aa7144ee0a16ece562d08b494": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HBoxModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_feb6e269071e481a8b4fa5025f9d4c87", "IPY_MODEL_dcf8666be47f4c49868141c36bdf6cfa" ], "layout": "IPY_MODEL_4b1bc3d137e54d52acb6b3f37ce8cdf5", "tabbable": null, "tooltip": null } }, "0abfa1f1c99c4a05810e21a87466c9ba": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": "0 0 0 20px", "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "0ae3a9036e4c439183e32733433d9275": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "0db1c2aac3684b3ab106cfc07ffa0ccd": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "14aa20d2179846bb84a3397025253609": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HBoxModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_a3cd977ca85f43dbaa8a1c1ea60ee8d1", "IPY_MODEL_6a8ed6ad56a145d48563a77c711e115d" ], "layout": "IPY_MODEL_232a62c695dc4c828a2c0cbbcefc19b7", "tabbable": null, "tooltip": null } }, "19494537b5d6428ea37c06b2dbacfeb0": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "IntSliderModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "IntSliderModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "IntSliderView", "behavior": "drag-tap", "continuous_update": true, "description": "Time Step", "description_allow_html": false, "disabled": false, "layout": "IPY_MODEL_90dac2229e7b42b6aec20b126ba82043", "max": 14, "min": 0, "orientation": "horizontal", "readout": true, "readout_format": "d", "step": 1, "style": "IPY_MODEL_70b1c67f588145a9aa6726c9ba3bac11", "tabbable": null, "tooltip": null, "value": 0 } }, "198a6be606e141b183455749c5834300": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "VBoxModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "VBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "VBoxView", "box_style": "", "children": [ "IPY_MODEL_540a7ec6bf604571997a954d88066e3f", "IPY_MODEL_918c418b02fd4a3d80cd932b9d2b2749", "IPY_MODEL_5f75ec2353b0405f8386a7340a20b9c6", "IPY_MODEL_9c95326328aa48228e854d2de0b7758a", "IPY_MODEL_14aa20d2179846bb84a3397025253609" ], "layout": "IPY_MODEL_2d2d6575565d48ab88b2f8223b259ff6", "tabbable": null, "tooltip": null } }, "19da3d22d75240d0892172aae0c24472": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null } }, "1a023cf10e9042dd96c96d63729ad5ba": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "1cb6541cf40c4c669efcbf957f3bba6a": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "DropdownModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "DropdownModel", "_options_labels": [ "763" ], "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "DropdownView", "description": "Level (hPa)", "description_allow_html": false, "disabled": false, "index": 0, "layout": "IPY_MODEL_8ce8fd9b714e427184c98d7c771aaf36", "style": "IPY_MODEL_c0924ae96a52474db92c95edb96726de", "tabbable": null, "tooltip": null } }, "1ce0c64bc01e478aad0b269bb395c7dc": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "description_width": "" } }, "1e66650d764a491b9988be2ec54f5b1e": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "DropdownModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "DropdownModel", "_options_labels": [ "763" ], "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "DropdownView", "description": "Level (hPa)", "description_allow_html": false, "disabled": false, "index": 0, "layout": "IPY_MODEL_81a262604f1745178d58dafd444504df", "style": "IPY_MODEL_e2971053767b4cb3af7f327ef76153d7", "tabbable": null, "tooltip": null } }, "20bd59539f4741148ab4ace33abad441": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null } }, "232a62c695dc4c828a2c0cbbcefc19b7": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "26ce96680b474231b42719371669403e": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HBoxModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_fbe7e217d30343eea0207fd8bbc6fec8", "IPY_MODEL_7de0ec5d0cd14653bb6c2418d088e164" ], "layout": "IPY_MODEL_9de2bec87f7f4ea0a0386f48f143e6c4", "tabbable": null, "tooltip": null } }, "27b35ee66b0d49e4886673c1fd1dad79": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "SliderStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "SliderStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "description_width": "", "handle_color": null } }, "28c914937da3440786a61066a0481ac0": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "2c07ca7e6dc4493c9f694dba47722e81": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "2d2d6575565d48ab88b2f8223b259ff6": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "2d348c246b6e49798343cca35853ca7b": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "3331d874e3ef4def8748f6103179eaee": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": "0 20px 0 0", "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "34235d9093ea451ba51b5bfddeda6534": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "IntSliderModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "IntSliderModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "IntSliderView", "behavior": "drag-tap", "continuous_update": true, "description": "Time Step", "description_allow_html": false, "disabled": false, "layout": "IPY_MODEL_671a7dbe1a1a4ab4a81f2fc014e3b25d", "max": 14, "min": 0, "orientation": "horizontal", "readout": true, "readout_format": "d", "step": 1, "style": "IPY_MODEL_f3126ba597984cebae222c4b9ad0428b", "tabbable": null, "tooltip": null, "value": 0 } }, "3724fbc98649405cac3a11636e1b6b25": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "37b1053f3c964db9b8625d7aafdc761d": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": "0 20px 0 0", "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "383e4fdfebbc4da691253d0bdc6ee5be": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "DropdownModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "DropdownModel", "_options_labels": [ "Hide Settings", "Nudge Params", "Full atm_in", "Subset atm_in" ], "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "DropdownView", "description": "Settings", "description_allow_html": false, "disabled": false, "index": 0, "layout": "IPY_MODEL_0db1c2aac3684b3ab106cfc07ffa0ccd", "style": "IPY_MODEL_7d2a1e8715e143e5b9125e58e00bf798", "tabbable": null, "tooltip": null } }, "396d7432b2654f1b94b09469af4ef4c0": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": "10px 0 10px 0", "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "3c4a271bae06469680e4c24b23c9d0d5": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/output", "_model_module_version": "1.0.0", "_model_name": "OutputModel", "_view_count": null, "_view_module": "@jupyter-widgets/output", "_view_module_version": "1.0.0", "_view_name": "OutputView", "layout": "IPY_MODEL_4551f3c5b9f64adc8df9f9838cecce77", "msg_id": "", "outputs": [], "tabbable": null, "tooltip": null } }, "3d261c03bbcb466e9ba7cd1e30c25093": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null } }, "3e735145d1854685bd2628f6abdd4d8f": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "4238e9788b4d40999512b81627158c57": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "4551f3c5b9f64adc8df9f9838cecce77": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": "0 0 0 20px", "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "47268d926aed40e88893b94be6108b62": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "4838a79efdfc4f818e6cd1c5ca05f221": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "4b1bc3d137e54d52acb6b3f37ce8cdf5": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "4bca9e1dde794457af9051a754ab4638": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "description_width": "" } }, "4e373517914a4cb88c64a82b04036eb6": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HBoxModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_1cb6541cf40c4c669efcbf957f3bba6a", "IPY_MODEL_b09e9fb2618e473db17bd4d01d0df8e6" ], "layout": "IPY_MODEL_28c914937da3440786a61066a0481ac0", "tabbable": null, "tooltip": null } }, "540a7ec6bf604571997a954d88066e3f": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_ec90c6bbba1d4f4db8b8b82f12e786f6", "placeholder": "​", "style": "IPY_MODEL_872831bbb37340ccb0fa0ac1ab01a805", "tabbable": null, "tooltip": null, "value": "

f.e21.FHIST_BGC.f09_f09_mg17.SOCRATES_nudgeUVTfull_tau12h.001

" } }, "54dd38a792e34c13a430a749d72e4e5b": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "558e720a7d094fa884def5a72986b105": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "DropdownModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "DropdownModel", "_options_labels": [ "Hide CaseStatus", "CaseStatus" ], "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "DropdownView", "description": "CaseDocs", "description_allow_html": false, "disabled": false, "index": 0, "layout": "IPY_MODEL_cedc7be5cda44e33bf0b888a76c510e0", "style": "IPY_MODEL_aa1b80db466540a3afac8f2a9be01528", "tabbable": null, "tooltip": null } }, "5b9500589aa14d03a4555837f67654d0": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_ca78934a3eb246d58bcf023e4e6dfde6", "placeholder": "​", "style": "IPY_MODEL_760b100b01234e779f95bc8877341d4e", "tabbable": null, "tooltip": null, "value": "

f.e30_cam6_4_120.FHIST_BGC.f09_f09_mg17.SOCRATES_nudgeUVTfull_withCOSP_tau6h.001

" } }, "5d2dc24e1df348598ab1e366526eba02": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "5f75ec2353b0405f8386a7340a20b9c6": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_bff95a8b5cb04ee79dc02756c6808843", "placeholder": "​", "style": "IPY_MODEL_cd727ad0dce7409f939076c638609185", "tabbable": null, "tooltip": null, "value": "

2018-02-19 17:00

" } }, "607d1a6bc2a74a07a1d9c57dde2cd7a7": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "607d67f000c64f9ca3a878c4801ab358": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": "0 20px 0 0", "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "61b004e3db144b418c1cb8fa7c701d87": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "description_width": "" } }, "6430fb6840bf408da429cf7b08a72bdf": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HBoxModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_b1800acb302d46428b0257b10d700386", "IPY_MODEL_3c4a271bae06469680e4c24b23c9d0d5" ], "layout": "IPY_MODEL_3e735145d1854685bd2628f6abdd4d8f", "tabbable": null, "tooltip": null } }, "671a7dbe1a1a4ab4a81f2fc014e3b25d": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "6942b618cfac4110b79044e381d9ef15": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "DropdownModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "DropdownModel", "_options_labels": [ "Hide CaseStatus", "CaseStatus" ], "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "DropdownView", "description": "CaseDocs", "description_allow_html": false, "disabled": false, "index": 0, "layout": "IPY_MODEL_2d348c246b6e49798343cca35853ca7b", "style": "IPY_MODEL_61b004e3db144b418c1cb8fa7c701d87", "tabbable": null, "tooltip": null } }, "6a4305104d9b4a7c818149563c789914": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "6a8ed6ad56a145d48563a77c711e115d": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/output", "_model_module_version": "1.0.0", "_model_name": "OutputModel", "_view_count": null, "_view_module": "@jupyter-widgets/output", "_view_module_version": "1.0.0", "_view_name": "OutputView", "layout": "IPY_MODEL_9df294d70384430fb33609bc7fea6bc6", "msg_id": "", "outputs": [], "tabbable": null, "tooltip": null } }, "6dac7e70a67e4cf6914673e947fc9660": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "70b1c67f588145a9aa6726c9ba3bac11": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "SliderStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "SliderStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "description_width": "", "handle_color": null } }, "70cd6d94e1974e82ad06e8c2f7076dd8": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_4238e9788b4d40999512b81627158c57", "placeholder": "​", "style": "IPY_MODEL_19da3d22d75240d0892172aae0c24472", "tabbable": null, "tooltip": null, "value": "

f.e21.FHIST_BGC.f09_f09_mg17.SOCRATES_nudgeUVTfull_tau24h.001

" } }, "760b100b01234e779f95bc8877341d4e": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null } }, "7d2a1e8715e143e5b9125e58e00bf798": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "description_width": "" } }, "7de0ec5d0cd14653bb6c2418d088e164": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "DropdownModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "DropdownModel", "_options_labels": [ "Hide CaseStatus", "CaseStatus" ], "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "DropdownView", "description": "CaseDocs", "description_allow_html": false, "disabled": false, "index": 0, "layout": "IPY_MODEL_d54da8a3cb7240309957575574a1abd4", "style": "IPY_MODEL_1ce0c64bc01e478aad0b269bb395c7dc", "tabbable": null, "tooltip": null } }, "7f31d46533ca4429a222f703123d3423": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HBoxModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_04583dcb44f54c07bbb908899805ec29", "IPY_MODEL_19494537b5d6428ea37c06b2dbacfeb0" ], "layout": "IPY_MODEL_5d2dc24e1df348598ab1e366526eba02", "tabbable": null, "tooltip": null } }, "81a262604f1745178d58dafd444504df": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "85ba19fcb6f248ee8262a7d7f91c2072": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "TabModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "TabModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "TabView", "box_style": "", "children": [ "IPY_MODEL_fb5dc0436b2c456ebede9872b2797923", "IPY_MODEL_ef3a45f8c2dd44af8f72f17658d23f01" ], "layout": "IPY_MODEL_2c07ca7e6dc4493c9f694dba47722e81", "selected_index": 0, "tabbable": null, "titles": [ "f.e21.FHIST_BGC.f09_f09_mg17.SOCRATES_nudgeUVTfull", "f.e30_cam6_4_120.FHIST_BGC.f09_f09_mg17.SOCRATES_nudgeUVTfull_withCOSP" ], "tooltip": null } }, "872831bbb37340ccb0fa0ac1ab01a805": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null } }, "8b0003ada9404dc28137aecd45097e41": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HBoxModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_02e639040e974a01969f917fb91e794e", "IPY_MODEL_558e720a7d094fa884def5a72986b105" ], "layout": "IPY_MODEL_396d7432b2654f1b94b09469af4ef4c0", "tabbable": null, "tooltip": null } }, "8b817aea1e2d4903884f72dc6f6717f0": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_d9e29e7b86074724849de76ae079dde8", "placeholder": "​", "style": "IPY_MODEL_3d261c03bbcb466e9ba7cd1e30c25093", "tabbable": null, "tooltip": null, "value": "

2018-02-19 17:00

" } }, "8ce8fd9b714e427184c98d7c771aaf36": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "8fe67b15a7504cb8a7adaad7ec105078": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "90dac2229e7b42b6aec20b126ba82043": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "918c418b02fd4a3d80cd932b9d2b2749": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HBoxModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_1e66650d764a491b9988be2ec54f5b1e", "IPY_MODEL_34235d9093ea451ba51b5bfddeda6534" ], "layout": "IPY_MODEL_47268d926aed40e88893b94be6108b62", "tabbable": null, "tooltip": null } }, "965370bd60064769874e04a86e4ef07e": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "97882c2055ca44bdacb90c85aff289ab": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "description_width": "" } }, "98a8e84ff0cd416eac5c3600175b7e90": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "9c95326328aa48228e854d2de0b7758a": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HBoxModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_383e4fdfebbc4da691253d0bdc6ee5be", "IPY_MODEL_6942b618cfac4110b79044e381d9ef15" ], "layout": "IPY_MODEL_b1222c5dec4b41d782233864321c0127", "tabbable": null, "tooltip": null } }, "9de2bec87f7f4ea0a0386f48f143e6c4": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": "10px 0 10px 0", "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "9df294d70384430fb33609bc7fea6bc6": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": "0 0 0 20px", "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "a37edc1aa85c4573816752106d1ffbd6": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "VBoxModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "VBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "VBoxView", "box_style": "", "children": [ "IPY_MODEL_5b9500589aa14d03a4555837f67654d0", "IPY_MODEL_7f31d46533ca4429a222f703123d3423", "IPY_MODEL_8b817aea1e2d4903884f72dc6f6717f0", "IPY_MODEL_8b0003ada9404dc28137aecd45097e41", "IPY_MODEL_06172d5aa7144ee0a16ece562d08b494" ], "layout": "IPY_MODEL_d82425002fe548848352e67123807a50", "tabbable": null, "tooltip": null } }, "a3cd977ca85f43dbaa8a1c1ea60ee8d1": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/output", "_model_module_version": "1.0.0", "_model_name": "OutputModel", "_view_count": null, "_view_module": "@jupyter-widgets/output", "_view_module_version": "1.0.0", "_view_name": "OutputView", "layout": "IPY_MODEL_607d67f000c64f9ca3a878c4801ab358", "msg_id": "", "outputs": [], "tabbable": null, "tooltip": null } }, "a7f735bfe9844b2e9c20139945053381": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "VBoxModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "VBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "VBoxView", "box_style": "", "children": [ "IPY_MODEL_70cd6d94e1974e82ad06e8c2f7076dd8", "IPY_MODEL_4e373517914a4cb88c64a82b04036eb6", "IPY_MODEL_d004515763d94e2ebaecc9639391507e", "IPY_MODEL_26ce96680b474231b42719371669403e", "IPY_MODEL_6430fb6840bf408da429cf7b08a72bdf" ], "layout": "IPY_MODEL_965370bd60064769874e04a86e4ef07e", "tabbable": null, "tooltip": null } }, "aa1b80db466540a3afac8f2a9be01528": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "description_width": "" } }, "b09e9fb2618e473db17bd4d01d0df8e6": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "IntSliderModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "IntSliderModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "IntSliderView", "behavior": "drag-tap", "continuous_update": true, "description": "Time Step", "description_allow_html": false, "disabled": false, "layout": "IPY_MODEL_607d1a6bc2a74a07a1d9c57dde2cd7a7", "max": 14, "min": 0, "orientation": "horizontal", "readout": true, "readout_format": "d", "step": 1, "style": "IPY_MODEL_27b35ee66b0d49e4886673c1fd1dad79", "tabbable": null, "tooltip": null, "value": 0 } }, "b1222c5dec4b41d782233864321c0127": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": "10px 0 10px 0", "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "b1800acb302d46428b0257b10d700386": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/output", "_model_module_version": "1.0.0", "_model_name": "OutputModel", "_view_count": null, "_view_module": "@jupyter-widgets/output", "_view_module_version": "1.0.0", "_view_name": "OutputView", "layout": "IPY_MODEL_37b1053f3c964db9b8625d7aafdc761d", "msg_id": "", "outputs": [], "tabbable": null, "tooltip": null } }, "bff95a8b5cb04ee79dc02756c6808843": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "c0924ae96a52474db92c95edb96726de": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "description_width": "" } }, "ca78934a3eb246d58bcf023e4e6dfde6": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "cd727ad0dce7409f939076c638609185": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null } }, "cedc7be5cda44e33bf0b888a76c510e0": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "d004515763d94e2ebaecc9639391507e": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_6dac7e70a67e4cf6914673e947fc9660", "placeholder": "​", "style": "IPY_MODEL_20bd59539f4741148ab4ace33abad441", "tabbable": null, "tooltip": null, "value": "

2018-02-19 17:00

" } }, "d419081be404461faf24f248d8be5031": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "d54da8a3cb7240309957575574a1abd4": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "d82425002fe548848352e67123807a50": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "d883c004668f42ec84dfdd152c60482d": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "description_width": "" } }, "d8c226e7f48347c4b81d299b1418f152": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "d9e29e7b86074724849de76ae079dde8": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "dcf8666be47f4c49868141c36bdf6cfa": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/output", "_model_module_version": "1.0.0", "_model_name": "OutputModel", "_view_count": null, "_view_module": "@jupyter-widgets/output", "_view_module_version": "1.0.0", "_view_name": "OutputView", "layout": "IPY_MODEL_0abfa1f1c99c4a05810e21a87466c9ba", "msg_id": "", "outputs": [], "tabbable": null, "tooltip": null } }, "e2971053767b4cb3af7f327ef76153d7": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "description_width": "" } }, "ec231fbb353846a69003ffbfea25d295": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "ec90c6bbba1d4f4db8b8b82f12e786f6": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "ef3a45f8c2dd44af8f72f17658d23f01": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "TabModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "TabModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "TabView", "box_style": "", "children": [ "IPY_MODEL_a37edc1aa85c4573816752106d1ffbd6" ], "layout": "IPY_MODEL_54dd38a792e34c13a430a749d72e4e5b", "selected_index": 0, "tabbable": null, "titles": [ "f.e30_cam6_4_120.FHIST_BGC.f09_f09_mg17.SOCRATES_nudgeUVTfull_withCOSP_tau6h.001" ], "tooltip": null } }, "f3126ba597984cebae222c4b9ad0428b": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "SliderStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "SliderStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "description_width": "", "handle_color": null } }, "fb5dc0436b2c456ebede9872b2797923": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "TabModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "TabModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "TabView", "box_style": "", "children": [ "IPY_MODEL_198a6be606e141b183455749c5834300", "IPY_MODEL_a7f735bfe9844b2e9c20139945053381" ], "layout": "IPY_MODEL_8fe67b15a7504cb8a7adaad7ec105078", "selected_index": 0, "tabbable": null, "titles": [ "f.e21.FHIST_BGC.f09_f09_mg17.SOCRATES_nudgeUVTfull_tau12h.001", "f.e21.FHIST_BGC.f09_f09_mg17.SOCRATES_nudgeUVTfull_tau24h.001" ], "tooltip": null } }, "fbe7e217d30343eea0207fd8bbc6fec8": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "DropdownModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "DropdownModel", "_options_labels": [ "Hide Settings", "Nudge Params", "Full atm_in", "Subset atm_in" ], "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "DropdownView", "description": "Settings", "description_allow_html": false, "disabled": false, "index": 0, "layout": "IPY_MODEL_1a023cf10e9042dd96c96d63729ad5ba", "style": "IPY_MODEL_97882c2055ca44bdacb90c85aff289ab", "tabbable": null, "tooltip": null } }, "feb6e269071e481a8b4fa5025f9d4c87": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/output", "_model_module_version": "1.0.0", "_model_name": "OutputModel", "_view_count": null, "_view_module": "@jupyter-widgets/output", "_view_module_version": "1.0.0", "_view_name": "OutputView", "layout": "IPY_MODEL_3331d874e3ef4def8748f6103179eaee", "msg_id": "", "outputs": [], "tabbable": null, "tooltip": null } } }, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 5 }