{ "cells": [ { "cell_type": "markdown", "id": "623cbc23-45bf-4dfd-9f49-8d814d0394ba", "metadata": { "papermill": { "duration": 0.00581, "end_time": "2026-01-05T20:53:09.953268", "exception": false, "start_time": "2026-01-05T20:53:09.947458", "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": "2026-01-05T20:53:09.964950Z", "iopub.status.busy": "2026-01-05T20:53:09.964722Z", "iopub.status.idle": "2026-01-05T20:53:09.971133Z", "shell.execute_reply": "2026-01-05T20:53:09.970640Z" }, "papermill": { "duration": 0.013514, "end_time": "2026-01-05T20:53:09.972318", "exception": false, "start_time": "2026-01-05T20:53:09.958804", "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": "17246cfd", "metadata": { "execution": { "iopub.execute_input": "2026-01-05T20:53:09.990323Z", "iopub.status.busy": "2026-01-05T20:53:09.990132Z", "iopub.status.idle": "2026-01-05T20:53:09.994285Z", "shell.execute_reply": "2026-01-05T20:53:09.993822Z" }, "papermill": { "duration": 0.014034, "end_time": "2026-01-05T20:53:09.995179", "exception": false, "start_time": "2026-01-05T20:53:09.981145", "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": "2026-01-05T20:53:10.013367Z", "iopub.status.busy": "2026-01-05T20:53:10.013174Z", "iopub.status.idle": "2026-01-05T20:53:10.016160Z", "shell.execute_reply": "2026-01-05T20:53:10.015693Z" }, "papermill": { "duration": 0.013262, "end_time": "2026-01-05T20:53:10.017028", "exception": false, "start_time": "2026-01-05T20:53:10.003766", "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.00826, "end_time": "2026-01-05T20:53:10.033851", "exception": false, "start_time": "2026-01-05T20:53:10.025591", "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.008441, "end_time": "2026-01-05T20:53:10.050599", "exception": false, "start_time": "2026-01-05T20:53:10.042158", "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": "2026-01-05T20:53:10.068858Z", "iopub.status.busy": "2026-01-05T20:53:10.068662Z", "iopub.status.idle": "2026-01-05T20:53:10.092588Z", "shell.execute_reply": "2026-01-05T20:53:10.092097Z" }, "papermill": { "duration": 0.034342, "end_time": "2026-01-05T20:53:10.093521", "exception": false, "start_time": "2026-01-05T20:53:10.059179", "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": "2026-01-05T20:53:10.111889Z", "iopub.status.busy": "2026-01-05T20:53:10.111690Z", "iopub.status.idle": "2026-01-05T20:53:10.708653Z", "shell.execute_reply": "2026-01-05T20:53:10.708193Z" }, "papermill": { "duration": 0.609006, "end_time": "2026-01-05T20:53:10.711506", "exception": false, "start_time": "2026-01-05T20:53:10.102500", "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" ] }, { "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" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "559e5d6dd8714a16b73e9370657a4bdc", "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.009107, "end_time": "2026-01-05T20:53:10.730282", "exception": false, "start_time": "2026-01-05T20:53:10.721175", "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.008824, "end_time": "2026-01-05T20:53:10.748349", "exception": false, "start_time": "2026-01-05T20:53:10.739525", "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": "2026-01-05T20:53:10.763348Z", "iopub.status.busy": "2026-01-05T20:53:10.763116Z", "iopub.status.idle": "2026-01-05T20:53:10.795343Z", "shell.execute_reply": "2026-01-05T20:53:10.794561Z" }, "papermill": { "duration": 0.039824, "end_time": "2026-01-05T20:53:10.796266", "exception": false, "start_time": "2026-01-05T20:53:10.756442", "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": "2026-01-05T20:53:10.818446Z", "iopub.status.busy": "2026-01-05T20:53:10.818203Z", "iopub.status.idle": "2026-01-05T20:53:16.094896Z", "shell.execute_reply": "2026-01-05T20:53:16.094216Z" }, "papermill": { "duration": 5.290518, "end_time": "2026-01-05T20:53:16.096077", "exception": false, "start_time": "2026-01-05T20:53:10.805559", "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": "2026-01-05T20:53:16.110851Z", "iopub.status.busy": "2026-01-05T20:53:16.110611Z", "iopub.status.idle": "2026-01-05T20:53:16.219011Z", "shell.execute_reply": "2026-01-05T20:53:16.218439Z" }, "papermill": { "duration": 0.22705, "end_time": "2026-01-05T20:53:16.330483", "exception": false, "start_time": "2026-01-05T20:53:16.103433", "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.092317, "end_time": "2026-01-05T20:53:16.511661", "exception": false, "start_time": "2026-01-05T20:53:16.419344", "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.087315, "end_time": "2026-01-05T20:53:16.687138", "exception": false, "start_time": "2026-01-05T20:53:16.599823", "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.09432, "end_time": "2026-01-05T20:53:16.878386", "exception": false, "start_time": "2026-01-05T20:53:16.784066", "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.090661, "end_time": "2026-01-05T20:53:17.060941", "exception": false, "start_time": "2026-01-05T20:53:16.970280", "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.089015, "end_time": "2026-01-05T20:53:17.237990", "exception": false, "start_time": "2026-01-05T20:53:17.148975", "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.087978, "end_time": "2026-01-05T20:53:17.417810", "exception": false, "start_time": "2026-01-05T20:53:17.329832", "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.701121, "end_time": "2026-01-05T20:53:17.828485", "exception": null, "input_path": "/glade/derecho/scratch/richling/tmp/tmpz1gsrzay.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": "2026-01-05T20:53:09.127364" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": { "02c3729491d24364ad971f1717f8ea17": { "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 } }, "04fd0c4046c8495bb8a509a219227ad9": { "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": "" } }, "05bd6b724d8b406684968064b205b31f": { "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_819cb0e52133413ea1ec85f197d6152c", "style": "IPY_MODEL_a5e3907ba13a4b05863ace4141152d70", "tabbable": null, "tooltip": null } }, "084d8239850e421b95a4d4f8b0aa4dbe": { "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_119ce5cecc5b4aa8b232499d59b923b0", "msg_id": "", "outputs": [], "tabbable": null, "tooltip": null } }, "0d65e87d1dea488996b3ab0f7e46bf8e": { "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 } }, "0e378f3961f542aeb9ac939edd65958f": { "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 } }, "10aa149c5c424dfdba05142eccde4294": { "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 } }, "119ce5cecc5b4aa8b232499d59b923b0": { "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 } }, "1869bb32be7342c8b13706c386cb606a": { "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 } }, "18b38fbbaf3c4c2fa21935da859c6f79": { "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_86821a437c8f408bb0fd2111fcfa7ab0", "msg_id": "", "outputs": [], "tabbable": null, "tooltip": null } }, "195708af572147eea386ac2e94f5cf84": { "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": "" } }, "1bacde92257544abb56b8de989896ed0": { "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 } }, "1c257ec976c747659ea0e269b81ac22d": { "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 } }, "1ed01789ce924156a8367932195939f7": { "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 } }, "1f7555648bd74e2da104bbbc28e060d4": { "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": "" } }, "234dba0c2920449d8fb8a81eb0e4bc43": { "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 } }, "23bf941c5f33453194070b540c8e38c3": { "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_b9140bb021714b149acdf262f4c95109", "IPY_MODEL_776e885e759842fc9d3e9e5e5f5f5c21" ], "layout": "IPY_MODEL_ae73ffb66f294ea89028b75dcba63045", "tabbable": null, "tooltip": null } }, "245866234e0a41fa98d7819cce05b622": { "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 } }, "2e11a25b72d0435eb9cd1b3fffa30415": { "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 } }, "31ababf412e54961a375cbdcca3da7c8": { "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_5f7c43f886da4c39afe7b57fb2b17cdf" ], "layout": "IPY_MODEL_c3701a5bf3aa4b99abe9f7175887fe41", "selected_index": 0, "tabbable": null, "titles": [ "f.e30_cam6_4_120.FHIST_BGC.f09_f09_mg17.SOCRATES_nudgeUVTfull_withCOSP_tau6h.001" ], "tooltip": null } }, "360feecff1ba43229b6106e53cc25a97": { "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_b3e6eb730e864bd785a8668b2d782d7f", "msg_id": "", "outputs": [], "tabbable": null, "tooltip": null } }, "4133354030d2417b90939b5294cb22ba": { "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_e3164d01367f4ef6917e33fba5859869", "IPY_MODEL_ee890876f3ed4e34b5d17fef94b2b027" ], "layout": "IPY_MODEL_2e11a25b72d0435eb9cd1b3fffa30415", "tabbable": null, "tooltip": null } }, "4372eb4bd2654e3d8d57db5a685b43e1": { "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_7e59a11f7b8444699193c936b92a9b42", "style": "IPY_MODEL_b040c108b0334ffe87b5cb8b76d46041", "tabbable": null, "tooltip": null } }, "45043125bd914b2987383dc5de0653bb": { "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_0e378f3961f542aeb9ac939edd65958f", "style": "IPY_MODEL_f90a8df985204a13b0ab73aee0c903a2", "tabbable": null, "tooltip": null } }, "47994b102b4140399bf0eb4688de1c3a": { "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 } }, "4b10799608854227b81181295d9cca7c": { "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_1bacde92257544abb56b8de989896ed0", "placeholder": "​", "style": "IPY_MODEL_234dba0c2920449d8fb8a81eb0e4bc43", "tabbable": null, "tooltip": null, "value": "

2018-02-19 17:00

" } }, "4bbe240cbaa14b0cb00782156afec71f": { "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": "" } }, "4e26d0850184474a8d442e157a9c6a5b": { "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_a43b2af424aa40d187c00a6a6fcfb1d0", "IPY_MODEL_4133354030d2417b90939b5294cb22ba", "IPY_MODEL_ee034d88b5a940f28857dde40ceb7beb", "IPY_MODEL_bcf8354162fa43fc8443273f73515dcf", "IPY_MODEL_9c9c626ea0ce44da9738ae2c52668843" ], "layout": "IPY_MODEL_5c241e56fca14b30b8e0934b02a70787", "tabbable": null, "tooltip": null } }, "4e91b0300f4447feac52b130f919a3be": { "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 } }, "52da383b5f2c4f2a861b24e4f7799eef": { "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 } }, "54bf69d302f24cddb48af3a27c2ceb9f": { "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 } }, "5513142a345f40a588109edc1b6d14e2": { "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_360feecff1ba43229b6106e53cc25a97", "IPY_MODEL_cc4adeae036940ac9552bd4c29ed5a82" ], "layout": "IPY_MODEL_5dd69a6fad8945e08cb96f4ed555a693", "tabbable": null, "tooltip": null } }, "559e5d6dd8714a16b73e9370657a4bdc": { "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_63582314412d4396b0a006e175c827ff", "IPY_MODEL_31ababf412e54961a375cbdcca3da7c8" ], "layout": "IPY_MODEL_f38b02f8aa894a6e8bbfb24df31575ed", "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 } }, "5661a9601438448591165ba3591ce31c": { "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_57f8c0300c5f4a8f96a094884c43c8e6", "max": 14, "min": 0, "orientation": "horizontal", "readout": true, "readout_format": "d", "step": 1, "style": "IPY_MODEL_ac11cdb83cbc43ed868d48abe1b251df", "tabbable": null, "tooltip": null, "value": 0 } }, "575ecd1ae5e840e8811af2055d3dd162": { "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 } }, "57f8c0300c5f4a8f96a094884c43c8e6": { "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 } }, "5c241e56fca14b30b8e0934b02a70787": { "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 } }, "5dd69a6fad8945e08cb96f4ed555a693": { "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 } }, "5f7c43f886da4c39afe7b57fb2b17cdf": { "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_ab8cd53053ff474ba5d32fe0ef781c44", "IPY_MODEL_681d5f71cac04e5aad394571c3b6faa3", "IPY_MODEL_a66a127fe5074f1ea64e2bf823e757c3", "IPY_MODEL_9af1d5270e374cb19c949c06b1785f5a", "IPY_MODEL_5513142a345f40a588109edc1b6d14e2" ], "layout": "IPY_MODEL_a058691e4c344bb58ae43e973f85674e", "tabbable": null, "tooltip": null } }, "63582314412d4396b0a006e175c827ff": { "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_4e26d0850184474a8d442e157a9c6a5b", "IPY_MODEL_74ba74ed6dac41a0b2f56aaac026d50a" ], "layout": "IPY_MODEL_52da383b5f2c4f2a861b24e4f7799eef", "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 } }, "65bf0de945444e548c4e15ef1ae02204": { "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_736b9e99ac58466c8c7c5596154297e7", "msg_id": "", "outputs": [], "tabbable": null, "tooltip": null } }, "681d5f71cac04e5aad394571c3b6faa3": { "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_cfdc5f3896224830a1bcae5a1c0fb3fa", "IPY_MODEL_5661a9601438448591165ba3591ce31c" ], "layout": "IPY_MODEL_968fb02e1b154cdfb1995ec155fe95c1", "tabbable": null, "tooltip": null } }, "697f4638d72548fb8d5f3e3d5a804feb": { "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 } }, "6fb67cc1a2234be1bafe86ea2409b4e8": { "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 } }, "736b9e99ac58466c8c7c5596154297e7": { "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 } }, "74ba74ed6dac41a0b2f56aaac026d50a": { "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_d83fdddee0964bb8b8bea82ccfc96e09", "IPY_MODEL_baa0fd4e885d42299c456154bc2d78f3", "IPY_MODEL_4b10799608854227b81181295d9cca7c", "IPY_MODEL_23bf941c5f33453194070b540c8e38c3", "IPY_MODEL_94f0b87f4c174f8fbf03fa65828ae8a7" ], "layout": "IPY_MODEL_e0afc812bae1431b8e5c86d97615d0fe", "tabbable": null, "tooltip": null } }, "7688169f36a34222a8be7accef98e1c2": { "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 } }, "776e885e759842fc9d3e9e5e5f5f5c21": { "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_c16350909b3c45dfa5acdbd7d108d34b", "style": "IPY_MODEL_1f7555648bd74e2da104bbbc28e060d4", "tabbable": null, "tooltip": null } }, "7b564e180ea647a8ac172f684bb0d915": { "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 } }, "7b7d19fe3c0a4400b63d78fedd1f724f": { "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 } }, "7e59a11f7b8444699193c936b92a9b42": { "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 } }, "80c1b961d3724462a8b90c40495a24d9": { "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 } }, "819cb0e52133413ea1ec85f197d6152c": { "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 } }, "86821a437c8f408bb0fd2111fcfa7ab0": { "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 } }, "87f33f92593a41c98919f2cfb45e76e6": { "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 } }, "89a40487b184455e9b362e42d2ea8e53": { "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_54bf69d302f24cddb48af3a27c2ceb9f", "max": 14, "min": 0, "orientation": "horizontal", "readout": true, "readout_format": "d", "step": 1, "style": "IPY_MODEL_47994b102b4140399bf0eb4688de1c3a", "tabbable": null, "tooltip": null, "value": 0 } }, "8f8c7216589443c4820316fa17eb5d38": { "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_4e91b0300f4447feac52b130f919a3be", "msg_id": "", "outputs": [], "tabbable": null, "tooltip": null } }, "920b4f93bca14e66944153b9f7653d4c": { "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 } }, "94f0b87f4c174f8fbf03fa65828ae8a7": { "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_18b38fbbaf3c4c2fa21935da859c6f79", "IPY_MODEL_65bf0de945444e548c4e15ef1ae02204" ], "layout": "IPY_MODEL_02c3729491d24364ad971f1717f8ea17", "tabbable": null, "tooltip": null } }, "968fb02e1b154cdfb1995ec155fe95c1": { "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 } }, "985d5c78242e45f7bdb4dfadc4220b7d": { "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 } }, "9af1d5270e374cb19c949c06b1785f5a": { "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_de7f9a464a4a48238ea918f2a308d569", "IPY_MODEL_45043125bd914b2987383dc5de0653bb" ], "layout": "IPY_MODEL_c25251408b514a829b77de6f5447d632", "tabbable": null, "tooltip": null } }, "9c9c626ea0ce44da9738ae2c52668843": { "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_8f8c7216589443c4820316fa17eb5d38", "IPY_MODEL_084d8239850e421b95a4d4f8b0aa4dbe" ], "layout": "IPY_MODEL_bcd3a2ecc9904d01b034a8c9045b98da", "tabbable": null, "tooltip": null } }, "a058691e4c344bb58ae43e973f85674e": { "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 } }, "a2a062f6bbc742c8921a713dd212f788": { "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": "" } }, "a2cd42b084bf427cb72fc3ec87bbbe7d": { "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 } }, "a43b2af424aa40d187c00a6a6fcfb1d0": { "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_a5c332eec84d4a6c9f256bb5032a6d51", "placeholder": "​", "style": "IPY_MODEL_80c1b961d3724462a8b90c40495a24d9", "tabbable": null, "tooltip": null, "value": "

f.e21.FHIST_BGC.f09_f09_mg17.SOCRATES_nudgeUVTfull_tau12h.001

" } }, "a5c332eec84d4a6c9f256bb5032a6d51": { "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 } }, "a5e3907ba13a4b05863ace4141152d70": { "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": "" } }, "a66a127fe5074f1ea64e2bf823e757c3": { "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_920b4f93bca14e66944153b9f7653d4c", "placeholder": "​", "style": "IPY_MODEL_e3db7984d343473599f2c4b7a9fddffb", "tabbable": null, "tooltip": null, "value": "

2018-02-19 17:00

" } }, "a91037f80dd2437a939702a4cba9b711": { "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 } }, "ab8cd53053ff474ba5d32fe0ef781c44": { "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_1c257ec976c747659ea0e269b81ac22d", "placeholder": "​", "style": "IPY_MODEL_da8c280e526b44ec8e15f713569ade12", "tabbable": null, "tooltip": null, "value": "

f.e30_cam6_4_120.FHIST_BGC.f09_f09_mg17.SOCRATES_nudgeUVTfull_withCOSP_tau6h.001

" } }, "abef17d5679f4961ba0208649bb2e582": { "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 } }, "ac11cdb83cbc43ed868d48abe1b251df": { "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 } }, "ae73ffb66f294ea89028b75dcba63045": { "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 } }, "b040c108b0334ffe87b5cb8b76d46041": { "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": "" } }, "b342049c1f6e438295cba519d2144a7f": { "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 } }, "b385d9c8703144ed965eb0b65a97e3f8": { "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 } }, "b3e6eb730e864bd785a8668b2d782d7f": { "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 } }, "b9140bb021714b149acdf262f4c95109": { "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_1ed01789ce924156a8367932195939f7", "style": "IPY_MODEL_04fd0c4046c8495bb8a509a219227ad9", "tabbable": null, "tooltip": null } }, "baa0fd4e885d42299c456154bc2d78f3": { "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_4372eb4bd2654e3d8d57db5a685b43e1", "IPY_MODEL_89a40487b184455e9b362e42d2ea8e53" ], "layout": "IPY_MODEL_b385d9c8703144ed965eb0b65a97e3f8", "tabbable": null, "tooltip": null } }, "bb930e9d662e454b92565e98c097a2f7": { "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": "" } }, "bcd3a2ecc9904d01b034a8c9045b98da": { "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 } }, "bcf8354162fa43fc8443273f73515dcf": { "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_05bd6b724d8b406684968064b205b31f", "IPY_MODEL_f502525a94f84af7b1c4e0e5caf371be" ], "layout": "IPY_MODEL_575ecd1ae5e840e8811af2055d3dd162", "tabbable": null, "tooltip": null } }, "c16350909b3c45dfa5acdbd7d108d34b": { "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 } }, "c25251408b514a829b77de6f5447d632": { "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 } }, "c3701a5bf3aa4b99abe9f7175887fe41": { "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 } }, "cc4adeae036940ac9552bd4c29ed5a82": { "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_10aa149c5c424dfdba05142eccde4294", "msg_id": "", "outputs": [], "tabbable": null, "tooltip": null } }, "cc65e5f521ef46d78caee7e98565be71": { "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 } }, "cfdc5f3896224830a1bcae5a1c0fb3fa": { "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_7b564e180ea647a8ac172f684bb0d915", "style": "IPY_MODEL_195708af572147eea386ac2e94f5cf84", "tabbable": null, "tooltip": null } }, "d83fdddee0964bb8b8bea82ccfc96e09": { "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_a91037f80dd2437a939702a4cba9b711", "placeholder": "​", "style": "IPY_MODEL_ff30c99efe10446f86d863c40d951f9a", "tabbable": null, "tooltip": null, "value": "

f.e21.FHIST_BGC.f09_f09_mg17.SOCRATES_nudgeUVTfull_tau24h.001

" } }, "da8c280e526b44ec8e15f713569ade12": { "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 } }, "de7f9a464a4a48238ea918f2a308d569": { "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_245866234e0a41fa98d7819cce05b622", "style": "IPY_MODEL_a2a062f6bbc742c8921a713dd212f788", "tabbable": null, "tooltip": null } }, "e0afc812bae1431b8e5c86d97615d0fe": { "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 } }, "e3164d01367f4ef6917e33fba5859869": { "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_cc65e5f521ef46d78caee7e98565be71", "style": "IPY_MODEL_4bbe240cbaa14b0cb00782156afec71f", "tabbable": null, "tooltip": null } }, "e3db7984d343473599f2c4b7a9fddffb": { "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 } }, "ee034d88b5a940f28857dde40ceb7beb": { "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_a2cd42b084bf427cb72fc3ec87bbbe7d", "placeholder": "​", "style": "IPY_MODEL_697f4638d72548fb8d5f3e3d5a804feb", "tabbable": null, "tooltip": null, "value": "

2018-02-19 17:00

" } }, "ee890876f3ed4e34b5d17fef94b2b027": { "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_7b7d19fe3c0a4400b63d78fedd1f724f", "max": 14, "min": 0, "orientation": "horizontal", "readout": true, "readout_format": "d", "step": 1, "style": "IPY_MODEL_7688169f36a34222a8be7accef98e1c2", "tabbable": null, "tooltip": null, "value": 0 } }, "f38b02f8aa894a6e8bbfb24df31575ed": { "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 } }, "f502525a94f84af7b1c4e0e5caf371be": { "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_6fb67cc1a2234be1bafe86ea2409b4e8", "style": "IPY_MODEL_bb930e9d662e454b92565e98c097a2f7", "tabbable": null, "tooltip": null } }, "f90a8df985204a13b0ab73aee0c903a2": { "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": "" } }, "ff30c99efe10446f86d863c40d951f9a": { "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 } } }, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 5 }