Created
January 22, 2026 21:30
-
-
Save rsignell/89d1deb1333f87710b683fdbbbc1ac76 to your computer and use it in GitHub Desktop.
noaa-hrrr-gfs-analysis-compare.ipynb
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "cells": [ | |
| { | |
| "cell_type": "markdown", | |
| "id": "f5fda874", | |
| "metadata": {}, | |
| "source": [ | |
| "# Quickstart: Compare NOAA HRRR and GFS analysis at a point - dynamical.org \n", | |
| "\n", | |
| "Dataset documentation: \n", | |
| "* https://dynamical.org/catalog/noaa-hrrr-analysis/\n", | |
| "* https://dynamical.org/catalog/noaa-gfs-analysis-hourly/" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 1, | |
| "id": "1", | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "# If running locally, follow README.md for simple dependency installation.\n", | |
| "# If using Google Colab, run this cell and then restart the notebook.\n", | |
| "#%pip install \"xarray[complete]>=2025.1.2\" \"zarr>=3.0.8\" icechunk rioxarray pyproj hvplot \n", | |
| "# rioxarray and pyproj are used here for working with map projections\n", | |
| "# hvplot for interactive visualization" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 2, | |
| "id": "869adb81-a44a-4cb1-8c93-d0e1d2b632df", | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "# 180 County Rd, Bourne, MA\n", | |
| "lon_point = -70.603846\n", | |
| "lat_point = 41.729479 \n", | |
| "start = \"2020-08-01\"\n", | |
| "stop = \"2020-08-30\"" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 3, | |
| "id": "2", | |
| "metadata": { | |
| "scrolled": true | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/html": [ | |
| "<script type=\"esms-options\">{\"shimMode\": true}</script><style>*[data-root-id],\n", | |
| "*[data-root-id] > * {\n", | |
| " box-sizing: border-box;\n", | |
| " font-family: var(--jp-ui-font-family);\n", | |
| " font-size: var(--jp-ui-font-size1);\n", | |
| " color: var(--vscode-editor-foreground, var(--jp-ui-font-color1));\n", | |
| "}\n", | |
| "\n", | |
| "/* Override VSCode background color */\n", | |
| ".cell-output-ipywidget-background:has(\n", | |
| " > .cell-output-ipywidget-background > .lm-Widget > *[data-root-id]\n", | |
| "),\n", | |
| ".cell-output-ipywidget-background:has(> .lm-Widget > *[data-root-id]) {\n", | |
| " background-color: transparent !important;\n", | |
| "}\n", | |
| "</style>" | |
| ] | |
| }, | |
| "metadata": {}, | |
| "output_type": "display_data" | |
| }, | |
| { | |
| "data": { | |
| "application/javascript": [ | |
| "(function(root) {\n", | |
| " function now() {\n", | |
| " return new Date();\n", | |
| " }\n", | |
| "\n", | |
| " const force = true;\n", | |
| " const py_version = '3.7.3'.replace('rc', '-rc.').replace('.dev', '-dev.');\n", | |
| " const reloading = false;\n", | |
| " const Bokeh = root.Bokeh;\n", | |
| "\n", | |
| " // Set a timeout for this load but only if we are not already initializing\n", | |
| " if (typeof (root._bokeh_timeout) === \"undefined\" || (force || !root._bokeh_is_initializing)) {\n", | |
| " root._bokeh_timeout = Date.now() + 5000;\n", | |
| " root._bokeh_failed_load = false;\n", | |
| " }\n", | |
| "\n", | |
| " function run_callbacks() {\n", | |
| " try {\n", | |
| " root._bokeh_onload_callbacks.forEach(function(callback) {\n", | |
| " if (callback != null)\n", | |
| " callback();\n", | |
| " });\n", | |
| " } finally {\n", | |
| " delete root._bokeh_onload_callbacks;\n", | |
| " }\n", | |
| " console.debug(\"Bokeh: all callbacks have finished\");\n", | |
| " }\n", | |
| "\n", | |
| " function load_libs(css_urls, js_urls, js_modules, js_exports, callback) {\n", | |
| " if (css_urls == null) css_urls = [];\n", | |
| " if (js_urls == null) js_urls = [];\n", | |
| " if (js_modules == null) js_modules = [];\n", | |
| " if (js_exports == null) js_exports = {};\n", | |
| "\n", | |
| " root._bokeh_onload_callbacks.push(callback);\n", | |
| "\n", | |
| " if (root._bokeh_is_loading > 0) {\n", | |
| " // Don't load bokeh if it is still initializing\n", | |
| " console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n", | |
| " return null;\n", | |
| " } else if (js_urls.length === 0 && js_modules.length === 0 && Object.keys(js_exports).length === 0) {\n", | |
| " // There is nothing to load\n", | |
| " run_callbacks();\n", | |
| " return null;\n", | |
| " }\n", | |
| "\n", | |
| " function on_load() {\n", | |
| " root._bokeh_is_loading--;\n", | |
| " if (root._bokeh_is_loading === 0) {\n", | |
| " console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n", | |
| " run_callbacks()\n", | |
| " }\n", | |
| " }\n", | |
| " window._bokeh_on_load = on_load\n", | |
| "\n", | |
| " function on_error(e) {\n", | |
| " const src_el = e.srcElement\n", | |
| " console.error(\"failed to load \" + (src_el.href || src_el.src));\n", | |
| " }\n", | |
| "\n", | |
| " const skip = [];\n", | |
| " if (window.requirejs) {\n", | |
| " window.requirejs.config({'packages': {}, 'paths': {}, 'shim': {}});\n", | |
| " root._bokeh_is_loading = css_urls.length + 0;\n", | |
| " } else {\n", | |
| " root._bokeh_is_loading = css_urls.length + js_urls.length + js_modules.length + Object.keys(js_exports).length;\n", | |
| " }\n", | |
| "\n", | |
| " const existing_stylesheets = []\n", | |
| " const links = document.getElementsByTagName('link')\n", | |
| " for (let i = 0; i < links.length; i++) {\n", | |
| " const link = links[i]\n", | |
| " if (link.href != null) {\n", | |
| " existing_stylesheets.push(link.href)\n", | |
| " }\n", | |
| " }\n", | |
| " for (let i = 0; i < css_urls.length; i++) {\n", | |
| " const url = css_urls[i];\n", | |
| " const escaped = encodeURI(url)\n", | |
| " if (existing_stylesheets.indexOf(escaped) !== -1) {\n", | |
| " on_load()\n", | |
| " continue;\n", | |
| " }\n", | |
| " const element = document.createElement(\"link\");\n", | |
| " element.onload = on_load;\n", | |
| " element.onerror = on_error;\n", | |
| " element.rel = \"stylesheet\";\n", | |
| " element.type = \"text/css\";\n", | |
| " element.href = url;\n", | |
| " console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n", | |
| " document.body.appendChild(element);\n", | |
| " } var existing_scripts = []\n", | |
| " const scripts = document.getElementsByTagName('script')\n", | |
| " for (let i = 0; i < scripts.length; i++) {\n", | |
| " var script = scripts[i]\n", | |
| " if (script.src != null) {\n", | |
| " existing_scripts.push(script.src)\n", | |
| " }\n", | |
| " }\n", | |
| " for (let i = 0; i < js_urls.length; i++) {\n", | |
| " const url = js_urls[i];\n", | |
| " const escaped = encodeURI(url)\n", | |
| " if (skip.indexOf(escaped) !== -1 || existing_scripts.indexOf(escaped) !== -1) {\n", | |
| " if (!window.requirejs) {\n", | |
| " on_load();\n", | |
| " }\n", | |
| " continue;\n", | |
| " }\n", | |
| " const element = document.createElement('script');\n", | |
| " element.onload = on_load;\n", | |
| " element.onerror = on_error;\n", | |
| " element.async = false;\n", | |
| " element.src = url;\n", | |
| " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", | |
| " document.head.appendChild(element);\n", | |
| " }\n", | |
| " for (let i = 0; i < js_modules.length; i++) {\n", | |
| " const url = js_modules[i];\n", | |
| " const escaped = encodeURI(url)\n", | |
| " if (skip.indexOf(escaped) !== -1 || existing_scripts.indexOf(escaped) !== -1) {\n", | |
| " if (!window.requirejs) {\n", | |
| " on_load();\n", | |
| " }\n", | |
| " continue;\n", | |
| " }\n", | |
| " var element = document.createElement('script');\n", | |
| " element.onload = on_load;\n", | |
| " element.onerror = on_error;\n", | |
| " element.async = false;\n", | |
| " element.src = url;\n", | |
| " element.type = \"module\";\n", | |
| " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", | |
| " document.head.appendChild(element);\n", | |
| " }\n", | |
| " for (const name in js_exports) {\n", | |
| " const url = js_exports[name];\n", | |
| " const escaped = encodeURI(url)\n", | |
| " if (skip.indexOf(escaped) >= 0 || root[name] != null) {\n", | |
| " if (!window.requirejs) {\n", | |
| " on_load();\n", | |
| " }\n", | |
| " continue;\n", | |
| " }\n", | |
| " var element = document.createElement('script');\n", | |
| " element.onerror = on_error;\n", | |
| " element.async = false;\n", | |
| " element.type = \"module\";\n", | |
| " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", | |
| " element.textContent = `\n", | |
| " import ${name} from \"${url}\"\n", | |
| " window.${name} = ${name}\n", | |
| " window._bokeh_on_load()\n", | |
| " `\n", | |
| " document.head.appendChild(element);\n", | |
| " }\n", | |
| " if (!js_urls.length && !js_modules.length) {\n", | |
| " on_load()\n", | |
| " }\n", | |
| " };\n", | |
| "\n", | |
| " function inject_raw_css(css) {\n", | |
| " const element = document.createElement(\"style\");\n", | |
| " element.appendChild(document.createTextNode(css));\n", | |
| " document.body.appendChild(element);\n", | |
| " }\n", | |
| "\n", | |
| " const js_urls = [\"https://cdn.holoviz.org/panel/1.7.5/dist/bundled/reactiveesm/es-module-shims@^1.10.0/dist/es-module-shims.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-3.7.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.7.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.7.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.7.3.min.js\", \"https://cdn.holoviz.org/panel/1.7.5/dist/panel.min.js\"];\n", | |
| " const js_modules = [];\n", | |
| " const js_exports = {};\n", | |
| " const css_urls = [];\n", | |
| " const inline_js = [ function(Bokeh) {\n", | |
| " Bokeh.set_log_level(\"info\");\n", | |
| " },\n", | |
| "function(Bokeh) {} // ensure no trailing comma for IE\n", | |
| " ];\n", | |
| "\n", | |
| " function run_inline_js() {\n", | |
| " if ((root.Bokeh !== undefined) || (force === true)) {\n", | |
| " for (let i = 0; i < inline_js.length; i++) {\n", | |
| " try {\n", | |
| " inline_js[i].call(root, root.Bokeh);\n", | |
| " } catch(e) {\n", | |
| " if (!reloading) {\n", | |
| " throw e;\n", | |
| " }\n", | |
| " }\n", | |
| " }\n", | |
| " // Cache old bokeh versions\n", | |
| " if (Bokeh != undefined && !reloading) {\n", | |
| " var NewBokeh = root.Bokeh;\n", | |
| " if (Bokeh.versions === undefined) {\n", | |
| " Bokeh.versions = new Map();\n", | |
| " }\n", | |
| " if (NewBokeh.version !== Bokeh.version) {\n", | |
| " Bokeh.versions.set(NewBokeh.version, NewBokeh)\n", | |
| " }\n", | |
| " root.Bokeh = Bokeh;\n", | |
| " }\n", | |
| " } else if (Date.now() < root._bokeh_timeout) {\n", | |
| " setTimeout(run_inline_js, 100);\n", | |
| " } else if (!root._bokeh_failed_load) {\n", | |
| " console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n", | |
| " root._bokeh_failed_load = true;\n", | |
| " }\n", | |
| " root._bokeh_is_initializing = false\n", | |
| " }\n", | |
| "\n", | |
| " function load_or_wait() {\n", | |
| " // Implement a backoff loop that tries to ensure we do not load multiple\n", | |
| " // versions of Bokeh and its dependencies at the same time.\n", | |
| " // In recent versions we use the root._bokeh_is_initializing flag\n", | |
| " // to determine whether there is an ongoing attempt to initialize\n", | |
| " // bokeh, however for backward compatibility we also try to ensure\n", | |
| " // that we do not start loading a newer (Panel>=1.0 and Bokeh>3) version\n", | |
| " // before older versions are fully initialized.\n", | |
| " if (root._bokeh_is_initializing && Date.now() > root._bokeh_timeout) {\n", | |
| " // If the timeout and bokeh was not successfully loaded we reset\n", | |
| " // everything and try loading again\n", | |
| " root._bokeh_timeout = Date.now() + 5000;\n", | |
| " root._bokeh_is_initializing = false;\n", | |
| " root._bokeh_onload_callbacks = undefined;\n", | |
| " root._bokeh_is_loading = 0\n", | |
| " console.log(\"Bokeh: BokehJS was loaded multiple times but one version failed to initialize.\");\n", | |
| " load_or_wait();\n", | |
| " } else if (root._bokeh_is_initializing || (typeof root._bokeh_is_initializing === \"undefined\" && root._bokeh_onload_callbacks !== undefined)) {\n", | |
| " setTimeout(load_or_wait, 100);\n", | |
| " } else {\n", | |
| " root._bokeh_is_initializing = true\n", | |
| " root._bokeh_onload_callbacks = []\n", | |
| " const bokeh_loaded = root.Bokeh != null && (root.Bokeh.version === py_version || (root.Bokeh.versions !== undefined && root.Bokeh.versions.has(py_version)));\n", | |
| " if (!reloading && !bokeh_loaded) {\n", | |
| " if (root.Bokeh) {\n", | |
| " root.Bokeh = undefined;\n", | |
| " }\n", | |
| " console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n", | |
| " }\n", | |
| " load_libs(css_urls, js_urls, js_modules, js_exports, function() {\n", | |
| " console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n", | |
| " run_inline_js();\n", | |
| " });\n", | |
| " }\n", | |
| " }\n", | |
| " // Give older versions of the autoload script a head-start to ensure\n", | |
| " // they initialize before we start loading newer version.\n", | |
| " setTimeout(load_or_wait, 100)\n", | |
| "}(window));" | |
| ], | |
| "application/vnd.holoviews_load.v0+json": "(function(root) {\n function now() {\n return new Date();\n }\n\n const force = true;\n const py_version = '3.7.3'.replace('rc', '-rc.').replace('.dev', '-dev.');\n const reloading = false;\n const Bokeh = root.Bokeh;\n\n // Set a timeout for this load but only if we are not already initializing\n if (typeof (root._bokeh_timeout) === \"undefined\" || (force || !root._bokeh_is_initializing)) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks;\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, js_modules, js_exports, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n if (js_modules == null) js_modules = [];\n if (js_exports == null) js_exports = {};\n\n root._bokeh_onload_callbacks.push(callback);\n\n if (root._bokeh_is_loading > 0) {\n // Don't load bokeh if it is still initializing\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n } else if (js_urls.length === 0 && js_modules.length === 0 && Object.keys(js_exports).length === 0) {\n // There is nothing to load\n run_callbacks();\n return null;\n }\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n window._bokeh_on_load = on_load\n\n function on_error(e) {\n const src_el = e.srcElement\n console.error(\"failed to load \" + (src_el.href || src_el.src));\n }\n\n const skip = [];\n if (window.requirejs) {\n window.requirejs.config({'packages': {}, 'paths': {}, 'shim': {}});\n root._bokeh_is_loading = css_urls.length + 0;\n } else {\n root._bokeh_is_loading = css_urls.length + js_urls.length + js_modules.length + Object.keys(js_exports).length;\n }\n\n const existing_stylesheets = []\n const links = document.getElementsByTagName('link')\n for (let i = 0; i < links.length; i++) {\n const link = links[i]\n if (link.href != null) {\n existing_stylesheets.push(link.href)\n }\n }\n for (let i = 0; i < css_urls.length; i++) {\n const url = css_urls[i];\n const escaped = encodeURI(url)\n if (existing_stylesheets.indexOf(escaped) !== -1) {\n on_load()\n continue;\n }\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error;\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n } var existing_scripts = []\n const scripts = document.getElementsByTagName('script')\n for (let i = 0; i < scripts.length; i++) {\n var script = scripts[i]\n if (script.src != null) {\n existing_scripts.push(script.src)\n }\n }\n for (let i = 0; i < js_urls.length; i++) {\n const url = js_urls[i];\n const escaped = encodeURI(url)\n if (skip.indexOf(escaped) !== -1 || existing_scripts.indexOf(escaped) !== -1) {\n if (!window.requirejs) {\n on_load();\n }\n continue;\n }\n const element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error;\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n for (let i = 0; i < js_modules.length; i++) {\n const url = js_modules[i];\n const escaped = encodeURI(url)\n if (skip.indexOf(escaped) !== -1 || existing_scripts.indexOf(escaped) !== -1) {\n if (!window.requirejs) {\n on_load();\n }\n continue;\n }\n var element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error;\n element.async = false;\n element.src = url;\n element.type = \"module\";\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n for (const name in js_exports) {\n const url = js_exports[name];\n const escaped = encodeURI(url)\n if (skip.indexOf(escaped) >= 0 || root[name] != null) {\n if (!window.requirejs) {\n on_load();\n }\n continue;\n }\n var element = document.createElement('script');\n element.onerror = on_error;\n element.async = false;\n element.type = \"module\";\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n element.textContent = `\n import ${name} from \"${url}\"\n window.${name} = ${name}\n window._bokeh_on_load()\n `\n document.head.appendChild(element);\n }\n if (!js_urls.length && !js_modules.length) {\n on_load()\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n const js_urls = [\"https://cdn.holoviz.org/panel/1.7.5/dist/bundled/reactiveesm/es-module-shims@^1.10.0/dist/es-module-shims.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-3.7.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.7.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.7.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.7.3.min.js\", \"https://cdn.holoviz.org/panel/1.7.5/dist/panel.min.js\"];\n const js_modules = [];\n const js_exports = {};\n const css_urls = [];\n const inline_js = [ function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\nfunction(Bokeh) {} // ensure no trailing comma for IE\n ];\n\n function run_inline_js() {\n if ((root.Bokeh !== undefined) || (force === true)) {\n for (let i = 0; i < inline_js.length; i++) {\n try {\n inline_js[i].call(root, root.Bokeh);\n } catch(e) {\n if (!reloading) {\n throw e;\n }\n }\n }\n // Cache old bokeh versions\n if (Bokeh != undefined && !reloading) {\n var NewBokeh = root.Bokeh;\n if (Bokeh.versions === undefined) {\n Bokeh.versions = new Map();\n }\n if (NewBokeh.version !== Bokeh.version) {\n Bokeh.versions.set(NewBokeh.version, NewBokeh)\n }\n root.Bokeh = Bokeh;\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n }\n root._bokeh_is_initializing = false\n }\n\n function load_or_wait() {\n // Implement a backoff loop that tries to ensure we do not load multiple\n // versions of Bokeh and its dependencies at the same time.\n // In recent versions we use the root._bokeh_is_initializing flag\n // to determine whether there is an ongoing attempt to initialize\n // bokeh, however for backward compatibility we also try to ensure\n // that we do not start loading a newer (Panel>=1.0 and Bokeh>3) version\n // before older versions are fully initialized.\n if (root._bokeh_is_initializing && Date.now() > root._bokeh_timeout) {\n // If the timeout and bokeh was not successfully loaded we reset\n // everything and try loading again\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_is_initializing = false;\n root._bokeh_onload_callbacks = undefined;\n root._bokeh_is_loading = 0\n console.log(\"Bokeh: BokehJS was loaded multiple times but one version failed to initialize.\");\n load_or_wait();\n } else if (root._bokeh_is_initializing || (typeof root._bokeh_is_initializing === \"undefined\" && root._bokeh_onload_callbacks !== undefined)) {\n setTimeout(load_or_wait, 100);\n } else {\n root._bokeh_is_initializing = true\n root._bokeh_onload_callbacks = []\n const bokeh_loaded = root.Bokeh != null && (root.Bokeh.version === py_version || (root.Bokeh.versions !== undefined && root.Bokeh.versions.has(py_version)));\n if (!reloading && !bokeh_loaded) {\n if (root.Bokeh) {\n root.Bokeh = undefined;\n }\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n }\n load_libs(css_urls, js_urls, js_modules, js_exports, function() {\n console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n }\n // Give older versions of the autoload script a head-start to ensure\n // they initialize before we start loading newer version.\n setTimeout(load_or_wait, 100)\n}(window));" | |
| }, | |
| "metadata": {}, | |
| "output_type": "display_data" | |
| }, | |
| { | |
| "data": { | |
| "application/javascript": [ | |
| "\n", | |
| "if ((window.PyViz === undefined) || (window.PyViz instanceof HTMLElement)) {\n", | |
| " window.PyViz = {comms: {}, comm_status:{}, kernels:{}, receivers: {}, plot_index: []}\n", | |
| "}\n", | |
| "\n", | |
| "\n", | |
| " function JupyterCommManager() {\n", | |
| " }\n", | |
| "\n", | |
| " JupyterCommManager.prototype.register_target = function(plot_id, comm_id, msg_handler) {\n", | |
| " if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n", | |
| " var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n", | |
| " comm_manager.register_target(comm_id, function(comm) {\n", | |
| " comm.on_msg(msg_handler);\n", | |
| " });\n", | |
| " } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n", | |
| " window.PyViz.kernels[plot_id].registerCommTarget(comm_id, function(comm) {\n", | |
| " comm.onMsg = msg_handler;\n", | |
| " });\n", | |
| " } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n", | |
| " google.colab.kernel.comms.registerTarget(comm_id, (comm) => {\n", | |
| " var messages = comm.messages[Symbol.asyncIterator]();\n", | |
| " function processIteratorResult(result) {\n", | |
| " var message = result.value;\n", | |
| " var content = {data: message.data, comm_id};\n", | |
| " var buffers = []\n", | |
| " for (var buffer of message.buffers || []) {\n", | |
| " buffers.push(new DataView(buffer))\n", | |
| " }\n", | |
| " var metadata = message.metadata || {};\n", | |
| " var msg = {content, buffers, metadata}\n", | |
| " msg_handler(msg);\n", | |
| " return messages.next().then(processIteratorResult);\n", | |
| " }\n", | |
| " return messages.next().then(processIteratorResult);\n", | |
| " })\n", | |
| " }\n", | |
| " }\n", | |
| "\n", | |
| " JupyterCommManager.prototype.get_client_comm = function(plot_id, comm_id, msg_handler) {\n", | |
| " if (comm_id in window.PyViz.comms) {\n", | |
| " return window.PyViz.comms[comm_id];\n", | |
| " } else if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n", | |
| " var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n", | |
| " var comm = comm_manager.new_comm(comm_id, {}, {}, {}, comm_id);\n", | |
| " if (msg_handler) {\n", | |
| " comm.on_msg(msg_handler);\n", | |
| " }\n", | |
| " } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n", | |
| " var comm = window.PyViz.kernels[plot_id].connectToComm(comm_id);\n", | |
| " let retries = 0;\n", | |
| " const open = () => {\n", | |
| " if (comm.active) {\n", | |
| " comm.open();\n", | |
| " } else if (retries > 3) {\n", | |
| " console.warn('Comm target never activated')\n", | |
| " } else {\n", | |
| " retries += 1\n", | |
| " setTimeout(open, 500)\n", | |
| " }\n", | |
| " }\n", | |
| " if (comm.active) {\n", | |
| " comm.open();\n", | |
| " } else {\n", | |
| " setTimeout(open, 500)\n", | |
| " }\n", | |
| " if (msg_handler) {\n", | |
| " comm.onMsg = msg_handler;\n", | |
| " }\n", | |
| " } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n", | |
| " var comm_promise = google.colab.kernel.comms.open(comm_id)\n", | |
| " comm_promise.then((comm) => {\n", | |
| " window.PyViz.comms[comm_id] = comm;\n", | |
| " if (msg_handler) {\n", | |
| " var messages = comm.messages[Symbol.asyncIterator]();\n", | |
| " function processIteratorResult(result) {\n", | |
| " var message = result.value;\n", | |
| " var content = {data: message.data};\n", | |
| " var metadata = message.metadata || {comm_id};\n", | |
| " var msg = {content, metadata}\n", | |
| " msg_handler(msg);\n", | |
| " return messages.next().then(processIteratorResult);\n", | |
| " }\n", | |
| " return messages.next().then(processIteratorResult);\n", | |
| " }\n", | |
| " })\n", | |
| " var sendClosure = (data, metadata, buffers, disposeOnDone) => {\n", | |
| " return comm_promise.then((comm) => {\n", | |
| " comm.send(data, metadata, buffers, disposeOnDone);\n", | |
| " });\n", | |
| " };\n", | |
| " var comm = {\n", | |
| " send: sendClosure\n", | |
| " };\n", | |
| " }\n", | |
| " window.PyViz.comms[comm_id] = comm;\n", | |
| " return comm;\n", | |
| " }\n", | |
| " window.PyViz.comm_manager = new JupyterCommManager();\n", | |
| " \n", | |
| "\n", | |
| "\n", | |
| "var JS_MIME_TYPE = 'application/javascript';\n", | |
| "var HTML_MIME_TYPE = 'text/html';\n", | |
| "var EXEC_MIME_TYPE = 'application/vnd.holoviews_exec.v0+json';\n", | |
| "var CLASS_NAME = 'output';\n", | |
| "\n", | |
| "/**\n", | |
| " * Render data to the DOM node\n", | |
| " */\n", | |
| "function render(props, node) {\n", | |
| " var div = document.createElement(\"div\");\n", | |
| " var script = document.createElement(\"script\");\n", | |
| " node.appendChild(div);\n", | |
| " node.appendChild(script);\n", | |
| "}\n", | |
| "\n", | |
| "/**\n", | |
| " * Handle when a new output is added\n", | |
| " */\n", | |
| "function handle_add_output(event, handle) {\n", | |
| " var output_area = handle.output_area;\n", | |
| " var output = handle.output;\n", | |
| " if ((output.data == undefined) || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\n", | |
| " return\n", | |
| " }\n", | |
| " var id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n", | |
| " var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n", | |
| " if (id !== undefined) {\n", | |
| " var nchildren = toinsert.length;\n", | |
| " var html_node = toinsert[nchildren-1].children[0];\n", | |
| " html_node.innerHTML = output.data[HTML_MIME_TYPE];\n", | |
| " var scripts = [];\n", | |
| " var nodelist = html_node.querySelectorAll(\"script\");\n", | |
| " for (var i in nodelist) {\n", | |
| " if (nodelist.hasOwnProperty(i)) {\n", | |
| " scripts.push(nodelist[i])\n", | |
| " }\n", | |
| " }\n", | |
| "\n", | |
| " scripts.forEach( function (oldScript) {\n", | |
| " var newScript = document.createElement(\"script\");\n", | |
| " var attrs = [];\n", | |
| " var nodemap = oldScript.attributes;\n", | |
| " for (var j in nodemap) {\n", | |
| " if (nodemap.hasOwnProperty(j)) {\n", | |
| " attrs.push(nodemap[j])\n", | |
| " }\n", | |
| " }\n", | |
| " attrs.forEach(function(attr) { newScript.setAttribute(attr.name, attr.value) });\n", | |
| " newScript.appendChild(document.createTextNode(oldScript.innerHTML));\n", | |
| " oldScript.parentNode.replaceChild(newScript, oldScript);\n", | |
| " });\n", | |
| " if (JS_MIME_TYPE in output.data) {\n", | |
| " toinsert[nchildren-1].children[1].textContent = output.data[JS_MIME_TYPE];\n", | |
| " }\n", | |
| " output_area._hv_plot_id = id;\n", | |
| " if ((window.Bokeh !== undefined) && (id in Bokeh.index)) {\n", | |
| " window.PyViz.plot_index[id] = Bokeh.index[id];\n", | |
| " } else {\n", | |
| " window.PyViz.plot_index[id] = null;\n", | |
| " }\n", | |
| " } else if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n", | |
| " var bk_div = document.createElement(\"div\");\n", | |
| " bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n", | |
| " var script_attrs = bk_div.children[0].attributes;\n", | |
| " for (var i = 0; i < script_attrs.length; i++) {\n", | |
| " toinsert[toinsert.length - 1].childNodes[1].setAttribute(script_attrs[i].name, script_attrs[i].value);\n", | |
| " }\n", | |
| " // store reference to server id on output_area\n", | |
| " output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n", | |
| " }\n", | |
| "}\n", | |
| "\n", | |
| "/**\n", | |
| " * Handle when an output is cleared or removed\n", | |
| " */\n", | |
| "function handle_clear_output(event, handle) {\n", | |
| " var id = handle.cell.output_area._hv_plot_id;\n", | |
| " var server_id = handle.cell.output_area._bokeh_server_id;\n", | |
| " if (((id === undefined) || !(id in PyViz.plot_index)) && (server_id !== undefined)) { return; }\n", | |
| " var comm = window.PyViz.comm_manager.get_client_comm(\"hv-extension-comm\", \"hv-extension-comm\", function () {});\n", | |
| " if (server_id !== null) {\n", | |
| " comm.send({event_type: 'server_delete', 'id': server_id});\n", | |
| " return;\n", | |
| " } else if (comm !== null) {\n", | |
| " comm.send({event_type: 'delete', 'id': id});\n", | |
| " }\n", | |
| " delete PyViz.plot_index[id];\n", | |
| " if ((window.Bokeh !== undefined) & (id in window.Bokeh.index)) {\n", | |
| " var doc = window.Bokeh.index[id].model.document\n", | |
| " doc.clear();\n", | |
| " const i = window.Bokeh.documents.indexOf(doc);\n", | |
| " if (i > -1) {\n", | |
| " window.Bokeh.documents.splice(i, 1);\n", | |
| " }\n", | |
| " }\n", | |
| "}\n", | |
| "\n", | |
| "/**\n", | |
| " * Handle kernel restart event\n", | |
| " */\n", | |
| "function handle_kernel_cleanup(event, handle) {\n", | |
| " delete PyViz.comms[\"hv-extension-comm\"];\n", | |
| " window.PyViz.plot_index = {}\n", | |
| "}\n", | |
| "\n", | |
| "/**\n", | |
| " * Handle update_display_data messages\n", | |
| " */\n", | |
| "function handle_update_output(event, handle) {\n", | |
| " handle_clear_output(event, {cell: {output_area: handle.output_area}})\n", | |
| " handle_add_output(event, handle)\n", | |
| "}\n", | |
| "\n", | |
| "function register_renderer(events, OutputArea) {\n", | |
| " function append_mime(data, metadata, element) {\n", | |
| " // create a DOM node to render to\n", | |
| " var toinsert = this.create_output_subarea(\n", | |
| " metadata,\n", | |
| " CLASS_NAME,\n", | |
| " EXEC_MIME_TYPE\n", | |
| " );\n", | |
| " this.keyboard_manager.register_events(toinsert);\n", | |
| " // Render to node\n", | |
| " var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n", | |
| " render(props, toinsert[0]);\n", | |
| " element.append(toinsert);\n", | |
| " return toinsert\n", | |
| " }\n", | |
| "\n", | |
| " events.on('output_added.OutputArea', handle_add_output);\n", | |
| " events.on('output_updated.OutputArea', handle_update_output);\n", | |
| " events.on('clear_output.CodeCell', handle_clear_output);\n", | |
| " events.on('delete.Cell', handle_clear_output);\n", | |
| " events.on('kernel_ready.Kernel', handle_kernel_cleanup);\n", | |
| "\n", | |
| " OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n", | |
| " safe: true,\n", | |
| " index: 0\n", | |
| " });\n", | |
| "}\n", | |
| "\n", | |
| "if (window.Jupyter !== undefined) {\n", | |
| " try {\n", | |
| " var events = require('base/js/events');\n", | |
| " var OutputArea = require('notebook/js/outputarea').OutputArea;\n", | |
| " if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n", | |
| " register_renderer(events, OutputArea);\n", | |
| " }\n", | |
| " } catch(err) {\n", | |
| " }\n", | |
| "}\n" | |
| ], | |
| "application/vnd.holoviews_load.v0+json": "\nif ((window.PyViz === undefined) || (window.PyViz instanceof HTMLElement)) {\n window.PyViz = {comms: {}, comm_status:{}, kernels:{}, receivers: {}, plot_index: []}\n}\n\n\n function JupyterCommManager() {\n }\n\n JupyterCommManager.prototype.register_target = function(plot_id, comm_id, msg_handler) {\n if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n comm_manager.register_target(comm_id, function(comm) {\n comm.on_msg(msg_handler);\n });\n } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n window.PyViz.kernels[plot_id].registerCommTarget(comm_id, function(comm) {\n comm.onMsg = msg_handler;\n });\n } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n google.colab.kernel.comms.registerTarget(comm_id, (comm) => {\n var messages = comm.messages[Symbol.asyncIterator]();\n function processIteratorResult(result) {\n var message = result.value;\n var content = {data: message.data, comm_id};\n var buffers = []\n for (var buffer of message.buffers || []) {\n buffers.push(new DataView(buffer))\n }\n var metadata = message.metadata || {};\n var msg = {content, buffers, metadata}\n msg_handler(msg);\n return messages.next().then(processIteratorResult);\n }\n return messages.next().then(processIteratorResult);\n })\n }\n }\n\n JupyterCommManager.prototype.get_client_comm = function(plot_id, comm_id, msg_handler) {\n if (comm_id in window.PyViz.comms) {\n return window.PyViz.comms[comm_id];\n } else if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n var comm = comm_manager.new_comm(comm_id, {}, {}, {}, comm_id);\n if (msg_handler) {\n comm.on_msg(msg_handler);\n }\n } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n var comm = window.PyViz.kernels[plot_id].connectToComm(comm_id);\n let retries = 0;\n const open = () => {\n if (comm.active) {\n comm.open();\n } else if (retries > 3) {\n console.warn('Comm target never activated')\n } else {\n retries += 1\n setTimeout(open, 500)\n }\n }\n if (comm.active) {\n comm.open();\n } else {\n setTimeout(open, 500)\n }\n if (msg_handler) {\n comm.onMsg = msg_handler;\n }\n } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n var comm_promise = google.colab.kernel.comms.open(comm_id)\n comm_promise.then((comm) => {\n window.PyViz.comms[comm_id] = comm;\n if (msg_handler) {\n var messages = comm.messages[Symbol.asyncIterator]();\n function processIteratorResult(result) {\n var message = result.value;\n var content = {data: message.data};\n var metadata = message.metadata || {comm_id};\n var msg = {content, metadata}\n msg_handler(msg);\n return messages.next().then(processIteratorResult);\n }\n return messages.next().then(processIteratorResult);\n }\n })\n var sendClosure = (data, metadata, buffers, disposeOnDone) => {\n return comm_promise.then((comm) => {\n comm.send(data, metadata, buffers, disposeOnDone);\n });\n };\n var comm = {\n send: sendClosure\n };\n }\n window.PyViz.comms[comm_id] = comm;\n return comm;\n }\n window.PyViz.comm_manager = new JupyterCommManager();\n \n\n\nvar JS_MIME_TYPE = 'application/javascript';\nvar HTML_MIME_TYPE = 'text/html';\nvar EXEC_MIME_TYPE = 'application/vnd.holoviews_exec.v0+json';\nvar CLASS_NAME = 'output';\n\n/**\n * Render data to the DOM node\n */\nfunction render(props, node) {\n var div = document.createElement(\"div\");\n var script = document.createElement(\"script\");\n node.appendChild(div);\n node.appendChild(script);\n}\n\n/**\n * Handle when a new output is added\n */\nfunction handle_add_output(event, handle) {\n var output_area = handle.output_area;\n var output = handle.output;\n if ((output.data == undefined) || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\n return\n }\n var id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n if (id !== undefined) {\n var nchildren = toinsert.length;\n var html_node = toinsert[nchildren-1].children[0];\n html_node.innerHTML = output.data[HTML_MIME_TYPE];\n var scripts = [];\n var nodelist = html_node.querySelectorAll(\"script\");\n for (var i in nodelist) {\n if (nodelist.hasOwnProperty(i)) {\n scripts.push(nodelist[i])\n }\n }\n\n scripts.forEach( function (oldScript) {\n var newScript = document.createElement(\"script\");\n var attrs = [];\n var nodemap = oldScript.attributes;\n for (var j in nodemap) {\n if (nodemap.hasOwnProperty(j)) {\n attrs.push(nodemap[j])\n }\n }\n attrs.forEach(function(attr) { newScript.setAttribute(attr.name, attr.value) });\n newScript.appendChild(document.createTextNode(oldScript.innerHTML));\n oldScript.parentNode.replaceChild(newScript, oldScript);\n });\n if (JS_MIME_TYPE in output.data) {\n toinsert[nchildren-1].children[1].textContent = output.data[JS_MIME_TYPE];\n }\n output_area._hv_plot_id = id;\n if ((window.Bokeh !== undefined) && (id in Bokeh.index)) {\n window.PyViz.plot_index[id] = Bokeh.index[id];\n } else {\n window.PyViz.plot_index[id] = null;\n }\n } else if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n var bk_div = document.createElement(\"div\");\n bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n var script_attrs = bk_div.children[0].attributes;\n for (var i = 0; i < script_attrs.length; i++) {\n toinsert[toinsert.length - 1].childNodes[1].setAttribute(script_attrs[i].name, script_attrs[i].value);\n }\n // store reference to server id on output_area\n output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n }\n}\n\n/**\n * Handle when an output is cleared or removed\n */\nfunction handle_clear_output(event, handle) {\n var id = handle.cell.output_area._hv_plot_id;\n var server_id = handle.cell.output_area._bokeh_server_id;\n if (((id === undefined) || !(id in PyViz.plot_index)) && (server_id !== undefined)) { return; }\n var comm = window.PyViz.comm_manager.get_client_comm(\"hv-extension-comm\", \"hv-extension-comm\", function () {});\n if (server_id !== null) {\n comm.send({event_type: 'server_delete', 'id': server_id});\n return;\n } else if (comm !== null) {\n comm.send({event_type: 'delete', 'id': id});\n }\n delete PyViz.plot_index[id];\n if ((window.Bokeh !== undefined) & (id in window.Bokeh.index)) {\n var doc = window.Bokeh.index[id].model.document\n doc.clear();\n const i = window.Bokeh.documents.indexOf(doc);\n if (i > -1) {\n window.Bokeh.documents.splice(i, 1);\n }\n }\n}\n\n/**\n * Handle kernel restart event\n */\nfunction handle_kernel_cleanup(event, handle) {\n delete PyViz.comms[\"hv-extension-comm\"];\n window.PyViz.plot_index = {}\n}\n\n/**\n * Handle update_display_data messages\n */\nfunction handle_update_output(event, handle) {\n handle_clear_output(event, {cell: {output_area: handle.output_area}})\n handle_add_output(event, handle)\n}\n\nfunction register_renderer(events, OutputArea) {\n function append_mime(data, metadata, element) {\n // create a DOM node to render to\n var toinsert = this.create_output_subarea(\n metadata,\n CLASS_NAME,\n EXEC_MIME_TYPE\n );\n this.keyboard_manager.register_events(toinsert);\n // Render to node\n var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n render(props, toinsert[0]);\n element.append(toinsert);\n return toinsert\n }\n\n events.on('output_added.OutputArea', handle_add_output);\n events.on('output_updated.OutputArea', handle_update_output);\n events.on('clear_output.CodeCell', handle_clear_output);\n events.on('delete.Cell', handle_clear_output);\n events.on('kernel_ready.Kernel', handle_kernel_cleanup);\n\n OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n safe: true,\n index: 0\n });\n}\n\nif (window.Jupyter !== undefined) {\n try {\n var events = require('base/js/events');\n var OutputArea = require('notebook/js/outputarea').OutputArea;\n if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n register_renderer(events, OutputArea);\n }\n } catch(err) {\n }\n}\n" | |
| }, | |
| "metadata": {}, | |
| "output_type": "display_data" | |
| }, | |
| { | |
| "data": { | |
| "application/vnd.holoviews_exec.v0+json": "", | |
| "text/html": [ | |
| "<div id='158afbbb-bfde-47e0-bf6a-670c1965df1f'>\n", | |
| " <div id=\"b8b387ec-5f5d-4386-a1f4-f26d7c27126f\" data-root-id=\"158afbbb-bfde-47e0-bf6a-670c1965df1f\" style=\"display: contents;\"></div>\n", | |
| "</div>\n", | |
| "<script type=\"application/javascript\">(function(root) {\n", | |
| " var docs_json = {\"889aedc0-7eda-4ceb-ad65-02b54d4f9118\":{\"version\":\"3.7.3\",\"title\":\"Bokeh Application\",\"roots\":[{\"type\":\"object\",\"name\":\"panel.models.browser.BrowserInfo\",\"id\":\"158afbbb-bfde-47e0-bf6a-670c1965df1f\"},{\"type\":\"object\",\"name\":\"panel.models.comm_manager.CommManager\",\"id\":\"3c64f378-e2b6-4bd5-ba1c-9c5e1f1759df\",\"attributes\":{\"plot_id\":\"158afbbb-bfde-47e0-bf6a-670c1965df1f\",\"comm_id\":\"8c8efa24b5ac4e9a93e66cb5a217836c\",\"client_comm_id\":\"cd1a7b59ad5c44c2a8ec5d92a3e29e60\"}}],\"defs\":[{\"type\":\"model\",\"name\":\"ReactiveHTML1\"},{\"type\":\"model\",\"name\":\"FlexBox1\",\"properties\":[{\"name\":\"align_content\",\"kind\":\"Any\",\"default\":\"flex-start\"},{\"name\":\"align_items\",\"kind\":\"Any\",\"default\":\"flex-start\"},{\"name\":\"flex_direction\",\"kind\":\"Any\",\"default\":\"row\"},{\"name\":\"flex_wrap\",\"kind\":\"Any\",\"default\":\"wrap\"},{\"name\":\"gap\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"justify_content\",\"kind\":\"Any\",\"default\":\"flex-start\"}]},{\"type\":\"model\",\"name\":\"FloatPanel1\",\"properties\":[{\"name\":\"config\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"contained\",\"kind\":\"Any\",\"default\":true},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"right-top\"},{\"name\":\"offsetx\",\"kind\":\"Any\",\"default\":null},{\"name\":\"offsety\",\"kind\":\"Any\",\"default\":null},{\"name\":\"theme\",\"kind\":\"Any\",\"default\":\"primary\"},{\"name\":\"status\",\"kind\":\"Any\",\"default\":\"normalized\"}]},{\"type\":\"model\",\"name\":\"GridStack1\",\"properties\":[{\"name\":\"ncols\",\"kind\":\"Any\",\"default\":null},{\"name\":\"nrows\",\"kind\":\"Any\",\"default\":null},{\"name\":\"allow_resize\",\"kind\":\"Any\",\"default\":true},{\"name\":\"allow_drag\",\"kind\":\"Any\",\"default\":true},{\"name\":\"state\",\"kind\":\"Any\",\"default\":[]}]},{\"type\":\"model\",\"name\":\"drag1\",\"properties\":[{\"name\":\"slider_width\",\"kind\":\"Any\",\"default\":5},{\"name\":\"slider_color\",\"kind\":\"Any\",\"default\":\"black\"},{\"name\":\"value\",\"kind\":\"Any\",\"default\":50}]},{\"type\":\"model\",\"name\":\"click1\",\"properties\":[{\"name\":\"terminal_output\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"debug_name\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"clears\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"ReactiveESM1\",\"properties\":[{\"name\":\"esm_constants\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}}]},{\"type\":\"model\",\"name\":\"JSComponent1\",\"properties\":[{\"name\":\"esm_constants\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}}]},{\"type\":\"model\",\"name\":\"ReactComponent1\",\"properties\":[{\"name\":\"use_shadow_dom\",\"kind\":\"Any\",\"default\":true},{\"name\":\"esm_constants\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}}]},{\"type\":\"model\",\"name\":\"AnyWidgetComponent1\",\"properties\":[{\"name\":\"use_shadow_dom\",\"kind\":\"Any\",\"default\":true},{\"name\":\"esm_constants\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}}]},{\"type\":\"model\",\"name\":\"FastWrapper1\",\"properties\":[{\"name\":\"object\",\"kind\":\"Any\",\"default\":null},{\"name\":\"style\",\"kind\":\"Any\",\"default\":null}]},{\"type\":\"model\",\"name\":\"NotificationArea1\",\"properties\":[{\"name\":\"js_events\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"max_notifications\",\"kind\":\"Any\",\"default\":5},{\"name\":\"notifications\",\"kind\":\"Any\",\"default\":[]},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"bottom-right\"},{\"name\":\"_clear\",\"kind\":\"Any\",\"default\":0},{\"name\":\"types\",\"kind\":\"Any\",\"default\":[{\"type\":\"map\",\"entries\":[[\"type\",\"warning\"],[\"background\",\"#ffc107\"],[\"icon\",{\"type\":\"map\",\"entries\":[[\"className\",\"fas fa-exclamation-triangle\"],[\"tagName\",\"i\"],[\"color\",\"white\"]]}]]},{\"type\":\"map\",\"entries\":[[\"type\",\"info\"],[\"background\",\"#007bff\"],[\"icon\",{\"type\":\"map\",\"entries\":[[\"className\",\"fas fa-info-circle\"],[\"tagName\",\"i\"],[\"color\",\"white\"]]}]]}]}]},{\"type\":\"model\",\"name\":\"Notification\",\"properties\":[{\"name\":\"background\",\"kind\":\"Any\",\"default\":null},{\"name\":\"duration\",\"kind\":\"Any\",\"default\":3000},{\"name\":\"icon\",\"kind\":\"Any\",\"default\":null},{\"name\":\"message\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"notification_type\",\"kind\":\"Any\",\"default\":null},{\"name\":\"_rendered\",\"kind\":\"Any\",\"default\":false},{\"name\":\"_destroyed\",\"kind\":\"Any\",\"default\":false}]},{\"type\":\"model\",\"name\":\"TemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"BootstrapTemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"TemplateEditor1\",\"properties\":[{\"name\":\"layout\",\"kind\":\"Any\",\"default\":[]}]},{\"type\":\"model\",\"name\":\"MaterialTemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"request_value1\",\"properties\":[{\"name\":\"fill\",\"kind\":\"Any\",\"default\":\"none\"},{\"name\":\"_synced\",\"kind\":\"Any\",\"default\":null},{\"name\":\"_request_sync\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"holoviews.plotting.bokeh.raster.HoverModel\",\"properties\":[{\"name\":\"xy\",\"kind\":\"Any\",\"default\":null},{\"name\":\"data\",\"kind\":\"Any\",\"default\":null}]}]}};\n", | |
| " var render_items = [{\"docid\":\"889aedc0-7eda-4ceb-ad65-02b54d4f9118\",\"roots\":{\"158afbbb-bfde-47e0-bf6a-670c1965df1f\":\"b8b387ec-5f5d-4386-a1f4-f26d7c27126f\"},\"root_ids\":[\"158afbbb-bfde-47e0-bf6a-670c1965df1f\"]}];\n", | |
| " var docs = Object.values(docs_json)\n", | |
| " if (!docs) {\n", | |
| " return\n", | |
| " }\n", | |
| " const py_version = docs[0].version.replace('rc', '-rc.').replace('.dev', '-dev.')\n", | |
| " async function embed_document(root) {\n", | |
| " var Bokeh = get_bokeh(root)\n", | |
| " await Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", | |
| " for (const render_item of render_items) {\n", | |
| " for (const root_id of render_item.root_ids) {\n", | |
| "\tconst id_el = document.getElementById(root_id)\n", | |
| "\tif (id_el.children.length && id_el.children[0].hasAttribute('data-root-id')) {\n", | |
| "\t const root_el = id_el.children[0]\n", | |
| "\t root_el.id = root_el.id + '-rendered'\n", | |
| "\t for (const child of root_el.children) {\n", | |
| " // Ensure JupyterLab does not capture keyboard shortcuts\n", | |
| " // see: https://jupyterlab.readthedocs.io/en/4.1.x/extension/notebook.html#keyboard-interaction-model\n", | |
| "\t child.setAttribute('data-lm-suppress-shortcuts', 'true')\n", | |
| "\t }\n", | |
| "\t}\n", | |
| " }\n", | |
| " }\n", | |
| " }\n", | |
| " function get_bokeh(root) {\n", | |
| " if (root.Bokeh === undefined) {\n", | |
| " return null\n", | |
| " } else if (root.Bokeh.version !== py_version) {\n", | |
| " if (root.Bokeh.versions === undefined || !root.Bokeh.versions.has(py_version)) {\n", | |
| "\treturn null\n", | |
| " }\n", | |
| " return root.Bokeh.versions.get(py_version);\n", | |
| " } else if (root.Bokeh.version === py_version) {\n", | |
| " return root.Bokeh\n", | |
| " }\n", | |
| " return null\n", | |
| " }\n", | |
| " function is_loaded(root) {\n", | |
| " var Bokeh = get_bokeh(root)\n", | |
| " return (Bokeh != null && Bokeh.Panel !== undefined)\n", | |
| " }\n", | |
| " if (is_loaded(root)) {\n", | |
| " embed_document(root);\n", | |
| " } else {\n", | |
| " var attempts = 0;\n", | |
| " var timer = setInterval(function(root) {\n", | |
| " if (is_loaded(root)) {\n", | |
| " clearInterval(timer);\n", | |
| " embed_document(root);\n", | |
| " } else if (document.readyState == \"complete\") {\n", | |
| " attempts++;\n", | |
| " if (attempts > 200) {\n", | |
| " clearInterval(timer);\n", | |
| "\t var Bokeh = get_bokeh(root)\n", | |
| "\t if (Bokeh == null || Bokeh.Panel == null) {\n", | |
| " console.warn(\"Panel: ERROR: Unable to run Panel code because Bokeh or Panel library is missing\");\n", | |
| "\t } else {\n", | |
| "\t console.warn(\"Panel: WARNING: Attempting to render but not all required libraries could be resolved.\")\n", | |
| "\t embed_document(root)\n", | |
| "\t }\n", | |
| " }\n", | |
| " }\n", | |
| " }, 25, root)\n", | |
| " }\n", | |
| "})(window);</script>" | |
| ] | |
| }, | |
| "metadata": { | |
| "application/vnd.holoviews_exec.v0+json": { | |
| "id": "158afbbb-bfde-47e0-bf6a-670c1965df1f" | |
| } | |
| }, | |
| "output_type": "display_data" | |
| }, | |
| { | |
| "data": { | |
| "text/html": [ | |
| "<div><svg style=\"position: absolute; width: 0; height: 0; overflow: hidden\">\n", | |
| "<defs>\n", | |
| "<symbol id=\"icon-database\" viewBox=\"0 0 32 32\">\n", | |
| "<path d=\"M16 0c-8.837 0-16 2.239-16 5v4c0 2.761 7.163 5 16 5s16-2.239 16-5v-4c0-2.761-7.163-5-16-5z\"></path>\n", | |
| "<path d=\"M16 17c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n", | |
| "<path d=\"M16 26c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n", | |
| "</symbol>\n", | |
| "<symbol id=\"icon-file-text2\" viewBox=\"0 0 32 32\">\n", | |
| "<path d=\"M28.681 7.159c-0.694-0.947-1.662-2.053-2.724-3.116s-2.169-2.030-3.116-2.724c-1.612-1.182-2.393-1.319-2.841-1.319h-15.5c-1.378 0-2.5 1.121-2.5 2.5v27c0 1.378 1.122 2.5 2.5 2.5h23c1.378 0 2.5-1.122 2.5-2.5v-19.5c0-0.448-0.137-1.23-1.319-2.841zM24.543 5.457c0.959 0.959 1.712 1.825 2.268 2.543h-4.811v-4.811c0.718 0.556 1.584 1.309 2.543 2.268zM28 29.5c0 0.271-0.229 0.5-0.5 0.5h-23c-0.271 0-0.5-0.229-0.5-0.5v-27c0-0.271 0.229-0.5 0.5-0.5 0 0 15.499-0 15.5 0v7c0 0.552 0.448 1 1 1h7v19.5z\"></path>\n", | |
| "<path d=\"M23 26h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n", | |
| "<path d=\"M23 22h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n", | |
| "<path d=\"M23 18h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n", | |
| "</symbol>\n", | |
| "</defs>\n", | |
| "</svg>\n", | |
| "<style>/* CSS stylesheet for displaying xarray objects in jupyterlab.\n", | |
| " *\n", | |
| " */\n", | |
| "\n", | |
| ":root {\n", | |
| " --xr-font-color0: var(\n", | |
| " --jp-content-font-color0,\n", | |
| " var(--pst-color-text-base rgba(0, 0, 0, 1))\n", | |
| " );\n", | |
| " --xr-font-color2: var(\n", | |
| " --jp-content-font-color2,\n", | |
| " var(--pst-color-text-base, rgba(0, 0, 0, 0.54))\n", | |
| " );\n", | |
| " --xr-font-color3: var(\n", | |
| " --jp-content-font-color3,\n", | |
| " var(--pst-color-text-base, rgba(0, 0, 0, 0.38))\n", | |
| " );\n", | |
| " --xr-border-color: var(\n", | |
| " --jp-border-color2,\n", | |
| " hsl(from var(--pst-color-on-background, white) h s calc(l - 10))\n", | |
| " );\n", | |
| " --xr-disabled-color: var(\n", | |
| " --jp-layout-color3,\n", | |
| " hsl(from var(--pst-color-on-background, white) h s calc(l - 40))\n", | |
| " );\n", | |
| " --xr-background-color: var(\n", | |
| " --jp-layout-color0,\n", | |
| " var(--pst-color-on-background, white)\n", | |
| " );\n", | |
| " --xr-background-color-row-even: var(\n", | |
| " --jp-layout-color1,\n", | |
| " hsl(from var(--pst-color-on-background, white) h s calc(l - 5))\n", | |
| " );\n", | |
| " --xr-background-color-row-odd: var(\n", | |
| " --jp-layout-color2,\n", | |
| " hsl(from var(--pst-color-on-background, white) h s calc(l - 15))\n", | |
| " );\n", | |
| "}\n", | |
| "\n", | |
| "html[theme=\"dark\"],\n", | |
| "html[data-theme=\"dark\"],\n", | |
| "body[data-theme=\"dark\"],\n", | |
| "body.vscode-dark {\n", | |
| " --xr-font-color0: var(\n", | |
| " --jp-content-font-color0,\n", | |
| " var(--pst-color-text-base, rgba(255, 255, 255, 1))\n", | |
| " );\n", | |
| " --xr-font-color2: var(\n", | |
| " --jp-content-font-color2,\n", | |
| " var(--pst-color-text-base, rgba(255, 255, 255, 0.54))\n", | |
| " );\n", | |
| " --xr-font-color3: var(\n", | |
| " --jp-content-font-color3,\n", | |
| " var(--pst-color-text-base, rgba(255, 255, 255, 0.38))\n", | |
| " );\n", | |
| " --xr-border-color: var(\n", | |
| " --jp-border-color2,\n", | |
| " hsl(from var(--pst-color-on-background, #111111) h s calc(l + 10))\n", | |
| " );\n", | |
| " --xr-disabled-color: var(\n", | |
| " --jp-layout-color3,\n", | |
| " hsl(from var(--pst-color-on-background, #111111) h s calc(l + 40))\n", | |
| " );\n", | |
| " --xr-background-color: var(\n", | |
| " --jp-layout-color0,\n", | |
| " var(--pst-color-on-background, #111111)\n", | |
| " );\n", | |
| " --xr-background-color-row-even: var(\n", | |
| " --jp-layout-color1,\n", | |
| " hsl(from var(--pst-color-on-background, #111111) h s calc(l + 5))\n", | |
| " );\n", | |
| " --xr-background-color-row-odd: var(\n", | |
| " --jp-layout-color2,\n", | |
| " hsl(from var(--pst-color-on-background, #111111) h s calc(l + 15))\n", | |
| " );\n", | |
| "}\n", | |
| "\n", | |
| ".xr-wrap {\n", | |
| " display: block !important;\n", | |
| " min-width: 300px;\n", | |
| " max-width: 700px;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-text-repr-fallback {\n", | |
| " /* fallback to plain text repr when CSS is not injected (untrusted notebook) */\n", | |
| " display: none;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-header {\n", | |
| " padding-top: 6px;\n", | |
| " padding-bottom: 6px;\n", | |
| " margin-bottom: 4px;\n", | |
| " border-bottom: solid 1px var(--xr-border-color);\n", | |
| "}\n", | |
| "\n", | |
| ".xr-header > div,\n", | |
| ".xr-header > ul {\n", | |
| " display: inline;\n", | |
| " margin-top: 0;\n", | |
| " margin-bottom: 0;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-obj-type,\n", | |
| ".xr-array-name {\n", | |
| " margin-left: 2px;\n", | |
| " margin-right: 10px;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-obj-type {\n", | |
| " color: var(--xr-font-color2);\n", | |
| "}\n", | |
| "\n", | |
| ".xr-sections {\n", | |
| " padding-left: 0 !important;\n", | |
| " display: grid;\n", | |
| " grid-template-columns: 150px auto auto 1fr 0 20px 0 20px;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-section-item {\n", | |
| " display: contents;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-section-item input {\n", | |
| " display: inline-block;\n", | |
| " opacity: 0;\n", | |
| " height: 0;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-section-item input + label {\n", | |
| " color: var(--xr-disabled-color);\n", | |
| " border: 2px solid transparent !important;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-section-item input:enabled + label {\n", | |
| " cursor: pointer;\n", | |
| " color: var(--xr-font-color2);\n", | |
| "}\n", | |
| "\n", | |
| ".xr-section-item input:focus + label {\n", | |
| " border: 2px solid var(--xr-font-color0) !important;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-section-item input:enabled + label:hover {\n", | |
| " color: var(--xr-font-color0);\n", | |
| "}\n", | |
| "\n", | |
| ".xr-section-summary {\n", | |
| " grid-column: 1;\n", | |
| " color: var(--xr-font-color2);\n", | |
| " font-weight: 500;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-section-summary > span {\n", | |
| " display: inline-block;\n", | |
| " padding-left: 0.5em;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-section-summary-in:disabled + label {\n", | |
| " color: var(--xr-font-color2);\n", | |
| "}\n", | |
| "\n", | |
| ".xr-section-summary-in + label:before {\n", | |
| " display: inline-block;\n", | |
| " content: \"►\";\n", | |
| " font-size: 11px;\n", | |
| " width: 15px;\n", | |
| " text-align: center;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-section-summary-in:disabled + label:before {\n", | |
| " color: var(--xr-disabled-color);\n", | |
| "}\n", | |
| "\n", | |
| ".xr-section-summary-in:checked + label:before {\n", | |
| " content: \"▼\";\n", | |
| "}\n", | |
| "\n", | |
| ".xr-section-summary-in:checked + label > span {\n", | |
| " display: none;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-section-summary,\n", | |
| ".xr-section-inline-details {\n", | |
| " padding-top: 4px;\n", | |
| " padding-bottom: 4px;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-section-inline-details {\n", | |
| " grid-column: 2 / -1;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-section-details {\n", | |
| " display: none;\n", | |
| " grid-column: 1 / -1;\n", | |
| " margin-bottom: 5px;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-section-summary-in:checked ~ .xr-section-details {\n", | |
| " display: contents;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-array-wrap {\n", | |
| " grid-column: 1 / -1;\n", | |
| " display: grid;\n", | |
| " grid-template-columns: 20px auto;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-array-wrap > label {\n", | |
| " grid-column: 1;\n", | |
| " vertical-align: top;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-preview {\n", | |
| " color: var(--xr-font-color3);\n", | |
| "}\n", | |
| "\n", | |
| ".xr-array-preview,\n", | |
| ".xr-array-data {\n", | |
| " padding: 0 5px !important;\n", | |
| " grid-column: 2;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-array-data,\n", | |
| ".xr-array-in:checked ~ .xr-array-preview {\n", | |
| " display: none;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-array-in:checked ~ .xr-array-data,\n", | |
| ".xr-array-preview {\n", | |
| " display: inline-block;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-dim-list {\n", | |
| " display: inline-block !important;\n", | |
| " list-style: none;\n", | |
| " padding: 0 !important;\n", | |
| " margin: 0;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-dim-list li {\n", | |
| " display: inline-block;\n", | |
| " padding: 0;\n", | |
| " margin: 0;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-dim-list:before {\n", | |
| " content: \"(\";\n", | |
| "}\n", | |
| "\n", | |
| ".xr-dim-list:after {\n", | |
| " content: \")\";\n", | |
| "}\n", | |
| "\n", | |
| ".xr-dim-list li:not(:last-child):after {\n", | |
| " content: \",\";\n", | |
| " padding-right: 5px;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-has-index {\n", | |
| " font-weight: bold;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-var-list,\n", | |
| ".xr-var-item {\n", | |
| " display: contents;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-var-item > div,\n", | |
| ".xr-var-item label,\n", | |
| ".xr-var-item > .xr-var-name span {\n", | |
| " background-color: var(--xr-background-color-row-even);\n", | |
| " border-color: var(--xr-background-color-row-odd);\n", | |
| " margin-bottom: 0;\n", | |
| " padding-top: 2px;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-var-item > .xr-var-name:hover span {\n", | |
| " padding-right: 5px;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-var-list > li:nth-child(odd) > div,\n", | |
| ".xr-var-list > li:nth-child(odd) > label,\n", | |
| ".xr-var-list > li:nth-child(odd) > .xr-var-name span {\n", | |
| " background-color: var(--xr-background-color-row-odd);\n", | |
| " border-color: var(--xr-background-color-row-even);\n", | |
| "}\n", | |
| "\n", | |
| ".xr-var-name {\n", | |
| " grid-column: 1;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-var-dims {\n", | |
| " grid-column: 2;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-var-dtype {\n", | |
| " grid-column: 3;\n", | |
| " text-align: right;\n", | |
| " color: var(--xr-font-color2);\n", | |
| "}\n", | |
| "\n", | |
| ".xr-var-preview {\n", | |
| " grid-column: 4;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-index-preview {\n", | |
| " grid-column: 2 / 5;\n", | |
| " color: var(--xr-font-color2);\n", | |
| "}\n", | |
| "\n", | |
| ".xr-var-name,\n", | |
| ".xr-var-dims,\n", | |
| ".xr-var-dtype,\n", | |
| ".xr-preview,\n", | |
| ".xr-attrs dt {\n", | |
| " white-space: nowrap;\n", | |
| " overflow: hidden;\n", | |
| " text-overflow: ellipsis;\n", | |
| " padding-right: 10px;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-var-name:hover,\n", | |
| ".xr-var-dims:hover,\n", | |
| ".xr-var-dtype:hover,\n", | |
| ".xr-attrs dt:hover {\n", | |
| " overflow: visible;\n", | |
| " width: auto;\n", | |
| " z-index: 1;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-var-attrs,\n", | |
| ".xr-var-data,\n", | |
| ".xr-index-data {\n", | |
| " display: none;\n", | |
| " border-top: 2px dotted var(--xr-background-color);\n", | |
| " padding-bottom: 20px !important;\n", | |
| " padding-top: 10px !important;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-var-attrs-in + label,\n", | |
| ".xr-var-data-in + label,\n", | |
| ".xr-index-data-in + label {\n", | |
| " padding: 0 1px;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-var-attrs-in:checked ~ .xr-var-attrs,\n", | |
| ".xr-var-data-in:checked ~ .xr-var-data,\n", | |
| ".xr-index-data-in:checked ~ .xr-index-data {\n", | |
| " display: block;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-var-data > table {\n", | |
| " float: right;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-var-data > pre,\n", | |
| ".xr-index-data > pre,\n", | |
| ".xr-var-data > table > tbody > tr {\n", | |
| " background-color: transparent !important;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-var-name span,\n", | |
| ".xr-var-data,\n", | |
| ".xr-index-name div,\n", | |
| ".xr-index-data,\n", | |
| ".xr-attrs {\n", | |
| " padding-left: 25px !important;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-attrs,\n", | |
| ".xr-var-attrs,\n", | |
| ".xr-var-data,\n", | |
| ".xr-index-data {\n", | |
| " grid-column: 1 / -1;\n", | |
| "}\n", | |
| "\n", | |
| "dl.xr-attrs {\n", | |
| " padding: 0;\n", | |
| " margin: 0;\n", | |
| " display: grid;\n", | |
| " grid-template-columns: 125px auto;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-attrs dt,\n", | |
| ".xr-attrs dd {\n", | |
| " padding: 0;\n", | |
| " margin: 0;\n", | |
| " float: left;\n", | |
| " padding-right: 10px;\n", | |
| " width: auto;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-attrs dt {\n", | |
| " font-weight: normal;\n", | |
| " grid-column: 1;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-attrs dt:hover span {\n", | |
| " display: inline-block;\n", | |
| " background: var(--xr-background-color);\n", | |
| " padding-right: 10px;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-attrs dd {\n", | |
| " grid-column: 2;\n", | |
| " white-space: pre-wrap;\n", | |
| " word-break: break-all;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-icon-database,\n", | |
| ".xr-icon-file-text2,\n", | |
| ".xr-no-icon {\n", | |
| " display: inline-block;\n", | |
| " vertical-align: middle;\n", | |
| " width: 1em;\n", | |
| " height: 1.5em !important;\n", | |
| " stroke-width: 0;\n", | |
| " stroke: currentColor;\n", | |
| " fill: currentColor;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-var-attrs-in:checked + label > .xr-icon-file-text2,\n", | |
| ".xr-var-data-in:checked + label > .xr-icon-database,\n", | |
| ".xr-index-data-in:checked + label > .xr-icon-database {\n", | |
| " color: var(--xr-font-color0);\n", | |
| " filter: drop-shadow(1px 1px 5px var(--xr-font-color2));\n", | |
| " stroke-width: 0.8px;\n", | |
| "}\n", | |
| "</style><pre class='xr-text-repr-fallback'><xarray.Dataset> Size: 10TB\n", | |
| "Dimensions: (time: 64458, y: 1059, x: 1799)\n", | |
| "Coordinates:\n", | |
| " latitude (y, x) float32 8MB ...\n", | |
| " longitude (y, x) float32 8MB ...\n", | |
| " spatial_ref int64 8B ...\n", | |
| " * time (time) datetime64[ns] 516kB 2...\n", | |
| " * x (x) float64 14kB -2.698e+06 ....\n", | |
| " * y (y) float64 8kB 1.587e+06 ......\n", | |
| "Data variables: (12/20)\n", | |
| " categorical_freezing_rain_surface (time, y, x) float32 491GB ...\n", | |
| " categorical_ice_pellets_surface (time, y, x) float32 491GB ...\n", | |
| " categorical_snow_surface (time, y, x) float32 491GB ...\n", | |
| " geopotential_height_cloud_ceiling (time, y, x) float32 491GB ...\n", | |
| " categorical_rain_surface (time, y, x) float32 491GB ...\n", | |
| " downward_long_wave_radiation_flux_surface (time, y, x) float32 491GB ...\n", | |
| " ... ...\n", | |
| " precipitable_water_atmosphere (time, y, x) float32 491GB ...\n", | |
| " total_cloud_cover_atmosphere (time, y, x) float32 491GB ...\n", | |
| " wind_u_10m (time, y, x) float32 491GB ...\n", | |
| " wind_u_80m (time, y, x) float32 491GB ...\n", | |
| " wind_v_10m (time, y, x) float32 491GB ...\n", | |
| " wind_v_80m (time, y, x) float32 491GB ...\n", | |
| "Attributes:\n", | |
| " dataset_id: noaa-hrrr-analysis\n", | |
| " dataset_version: 0.1.0\n", | |
| " name: NOAA HRRR analysis\n", | |
| " description: Analysis data from the High-Resolution Rapid Refresh...\n", | |
| " attribution: NOAA NWS NCEP HRRR data processed by dynamical.org f...\n", | |
| " spatial_domain: Continental United States\n", | |
| " spatial_resolution: 3 km\n", | |
| " time_domain: 2018-09-16 00:00:00 UTC to Present\n", | |
| " time_resolution: 1 hour</pre><div class='xr-wrap' style='display:none'><div class='xr-header'><div class='xr-obj-type'>xarray.Dataset</div></div><ul class='xr-sections'><li class='xr-section-item'><input id='section-0354cb9d-e337-46cf-8e61-a3bbedb2e1f5' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-0354cb9d-e337-46cf-8e61-a3bbedb2e1f5' class='xr-section-summary' title='Expand/collapse section'>Dimensions:</label><div class='xr-section-inline-details'><ul class='xr-dim-list'><li><span class='xr-has-index'>time</span>: 64458</li><li><span class='xr-has-index'>y</span>: 1059</li><li><span class='xr-has-index'>x</span>: 1799</li></ul></div><div class='xr-section-details'></div></li><li class='xr-section-item'><input id='section-988f39cc-a02e-4a4c-8e7f-9b8fe2b4d08e' class='xr-section-summary-in' type='checkbox' checked><label for='section-988f39cc-a02e-4a4c-8e7f-9b8fe2b4d08e' class='xr-section-summary' >Coordinates: <span>(6)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-var-name'><span>latitude</span></div><div class='xr-var-dims'>(y, x)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>...</div><input id='attrs-8ea843c5-565b-4859-855a-07252ae23be1' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-8ea843c5-565b-4859-855a-07252ae23be1' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-fad4dd24-392a-4c18-900f-dbf9dee7f64a' class='xr-var-data-in' type='checkbox'><label for='data-fad4dd24-392a-4c18-900f-dbf9dee7f64a' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>long_name :</span></dt><dd>Latitude</dd><dt><span>standard_name :</span></dt><dd>latitude</dd><dt><span>units :</span></dt><dd>degree_north</dd><dt><span>statistics_approximate :</span></dt><dd>{'min': 21.138123, 'max': 52.615653}</dd></dl></div><div class='xr-var-data'><pre>[1905141 values with dtype=float32]</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>longitude</span></div><div class='xr-var-dims'>(y, x)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>...</div><input id='attrs-a0babd89-790b-445b-849e-26302a426256' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-a0babd89-790b-445b-849e-26302a426256' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-41d112c0-2d91-40e8-8656-6fa3b7ad6774' class='xr-var-data-in' type='checkbox'><label for='data-41d112c0-2d91-40e8-8656-6fa3b7ad6774' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>long_name :</span></dt><dd>Longitude</dd><dt><span>standard_name :</span></dt><dd>longitude</dd><dt><span>units :</span></dt><dd>degree_east</dd><dt><span>statistics_approximate :</span></dt><dd>{'min': -134.09548, 'max': -60.917192}</dd></dl></div><div class='xr-var-data'><pre>[1905141 values with dtype=float32]</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>spatial_ref</span></div><div class='xr-var-dims'>()</div><div class='xr-var-dtype'>int64</div><div class='xr-var-preview xr-preview'>...</div><input id='attrs-68ab5e72-7200-488a-acbd-f55f981f13eb' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-68ab5e72-7200-488a-acbd-f55f981f13eb' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-76241586-9950-4fea-8d40-b5da5e5592b5' class='xr-var-data-in' type='checkbox'><label for='data-76241586-9950-4fea-8d40-b5da5e5592b5' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>crs_wkt :</span></dt><dd>PROJCS["unnamed",GEOGCS["Coordinate System imported from GRIB file",DATUM["unnamed",SPHEROID["Sphere",6371229,0]],PRIMEM["Greenwich",0],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]]],PROJECTION["Lambert_Conformal_Conic_2SP"],PARAMETER["latitude_of_origin",38.5],PARAMETER["central_meridian",-97.5],PARAMETER["standard_parallel_1",38.5],PARAMETER["standard_parallel_2",38.5],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["Metre",1],AXIS["Easting",EAST],AXIS["Northing",NORTH]]</dd><dt><span>semi_major_axis :</span></dt><dd>6371229.0</dd><dt><span>semi_minor_axis :</span></dt><dd>6371229.0</dd><dt><span>inverse_flattening :</span></dt><dd>0.0</dd><dt><span>reference_ellipsoid_name :</span></dt><dd>Sphere</dd><dt><span>longitude_of_prime_meridian :</span></dt><dd>0.0</dd><dt><span>prime_meridian_name :</span></dt><dd>Greenwich</dd><dt><span>geographic_crs_name :</span></dt><dd>Coordinate System imported from GRIB file</dd><dt><span>horizontal_datum_name :</span></dt><dd>unnamed</dd><dt><span>grid_mapping_name :</span></dt><dd>lambert_conformal_conic</dd><dt><span>spatial_ref :</span></dt><dd>PROJCS["unnamed",GEOGCS["Coordinate System imported from GRIB file",DATUM["unnamed",SPHEROID["Sphere",6371229,0]],PRIMEM["Greenwich",0],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]]],PROJECTION["Lambert_Conformal_Conic_2SP"],PARAMETER["latitude_of_origin",38.5],PARAMETER["central_meridian",-97.5],PARAMETER["standard_parallel_1",38.5],PARAMETER["standard_parallel_2",38.5],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["Metre",1],AXIS["Easting",EAST],AXIS["Northing",NORTH]]</dd><dt><span>GeoTransform :</span></dt><dd>-2699020.142521929 3000.0 0.0 1588193.847443335 0.0 -3000.0</dd><dt><span>false_easting :</span></dt><dd>0.0</dd><dt><span>false_northing :</span></dt><dd>0.0</dd><dt><span>latitude_of_projection_origin :</span></dt><dd>38.5</dd><dt><span>longitude_of_central_meridian :</span></dt><dd>-97.5</dd><dt><span>projected_crs_name :</span></dt><dd>unnamed</dd><dt><span>standard_parallel :</span></dt><dd>[38.5, 38.5]</dd></dl></div><div class='xr-var-data'><pre>[1 values with dtype=int64]</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>time</span></div><div class='xr-var-dims'>(time)</div><div class='xr-var-dtype'>datetime64[ns]</div><div class='xr-var-preview xr-preview'>2018-09-16 ... 2026-01-22T17:00:00</div><input id='attrs-b0401ca4-0bb0-4161-b4e9-ea69ecdda8a9' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-b0401ca4-0bb0-4161-b4e9-ea69ecdda8a9' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-c9bff0e9-c0ba-47c3-88d0-f822e18b364b' class='xr-var-data-in' type='checkbox'><label for='data-c9bff0e9-c0ba-47c3-88d0-f822e18b364b' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>long_name :</span></dt><dd>Time</dd><dt><span>standard_name :</span></dt><dd>time</dd><dt><span>axis :</span></dt><dd>T</dd><dt><span>statistics_approximate :</span></dt><dd>{'min': '2018-09-16T00:00:00', 'max': 'Present'}</dd></dl></div><div class='xr-var-data'><pre>array(['2018-09-16T00:00:00.000000000', '2018-09-16T01:00:00.000000000',\n", | |
| " '2018-09-16T02:00:00.000000000', ..., '2026-01-22T15:00:00.000000000',\n", | |
| " '2026-01-22T16:00:00.000000000', '2026-01-22T17:00:00.000000000'],\n", | |
| " shape=(64458,), dtype='datetime64[ns]')</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>x</span></div><div class='xr-var-dims'>(x)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>-2.698e+06 -2.695e+06 ... 2.696e+06</div><input id='attrs-480b6ebe-70ba-40ba-abc3-1e137d61320d' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-480b6ebe-70ba-40ba-abc3-1e137d61320d' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-e74eb4dd-2cc0-41a9-aed5-cf4508a3b494' class='xr-var-data-in' type='checkbox'><label for='data-e74eb4dd-2cc0-41a9-aed5-cf4508a3b494' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>long_name :</span></dt><dd>X coordinate of projection</dd><dt><span>standard_name :</span></dt><dd>projection_x_coordinate</dd><dt><span>axis :</span></dt><dd>X</dd><dt><span>units :</span></dt><dd>m</dd><dt><span>statistics_approximate :</span></dt><dd>{'min': -2700000.0, 'max': 2700000.0}</dd></dl></div><div class='xr-var-data'><pre>array([-2697520.142522, -2694520.142522, -2691520.142522, ..., 2690479.857478,\n", | |
| " 2693479.857478, 2696479.857478], shape=(1799,))</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>y</span></div><div class='xr-var-dims'>(y)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>1.587e+06 1.584e+06 ... -1.587e+06</div><input id='attrs-406ba012-7dfa-4559-980d-92a53bbfe67f' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-406ba012-7dfa-4559-980d-92a53bbfe67f' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-2ef20dbe-89a6-465b-8033-13a49fd82983' class='xr-var-data-in' type='checkbox'><label for='data-2ef20dbe-89a6-465b-8033-13a49fd82983' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>long_name :</span></dt><dd>Y coordinate of projection</dd><dt><span>standard_name :</span></dt><dd>projection_y_coordinate</dd><dt><span>axis :</span></dt><dd>Y</dd><dt><span>units :</span></dt><dd>m</dd><dt><span>statistics_approximate :</span></dt><dd>{'min': -1600000.0, 'max': 1600000.0}</dd></dl></div><div class='xr-var-data'><pre>array([ 1586693.847443, 1583693.847443, 1580693.847443, ..., -1581306.152557,\n", | |
| " -1584306.152557, -1587306.152557], shape=(1059,))</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-58fca9e7-731b-405c-be2a-5c817f4a14a4' class='xr-section-summary-in' type='checkbox' ><label for='section-58fca9e7-731b-405c-be2a-5c817f4a14a4' class='xr-section-summary' >Data variables: <span>(20)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-var-name'><span>categorical_freezing_rain_surface</span></div><div class='xr-var-dims'>(time, y, x)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>...</div><input id='attrs-6dc8a0fd-fd24-4ab3-afef-7f10e89d211f' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-6dc8a0fd-fd24-4ab3-afef-7f10e89d211f' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-49c34ed7-bccc-4e39-83c3-6abd6c32cfe7' class='xr-var-data-in' type='checkbox'><label for='data-49c34ed7-bccc-4e39-83c3-6abd6c32cfe7' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>long_name :</span></dt><dd>Categorical freezing rain</dd><dt><span>short_name :</span></dt><dd>cfrzr</dd><dt><span>units :</span></dt><dd>1</dd><dt><span>comment :</span></dt><dd>0=no; 1=yes</dd><dt><span>step_type :</span></dt><dd>instant</dd></dl></div><div class='xr-var-data'><pre>[122801578578 values with dtype=float32]</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>categorical_ice_pellets_surface</span></div><div class='xr-var-dims'>(time, y, x)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>...</div><input id='attrs-4bf7716a-3c70-467b-9dfc-cd99e67a250a' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-4bf7716a-3c70-467b-9dfc-cd99e67a250a' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-8916b12b-9235-4853-a4f3-988198c0f573' class='xr-var-data-in' type='checkbox'><label for='data-8916b12b-9235-4853-a4f3-988198c0f573' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>long_name :</span></dt><dd>Categorical ice pellets</dd><dt><span>short_name :</span></dt><dd>cicep</dd><dt><span>units :</span></dt><dd>1</dd><dt><span>comment :</span></dt><dd>0=no; 1=yes</dd><dt><span>step_type :</span></dt><dd>instant</dd></dl></div><div class='xr-var-data'><pre>[122801578578 values with dtype=float32]</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>categorical_snow_surface</span></div><div class='xr-var-dims'>(time, y, x)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>...</div><input id='attrs-99cc5faa-210d-45a8-9bad-e351143ab297' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-99cc5faa-210d-45a8-9bad-e351143ab297' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-bc6a49d2-3dc5-4f02-8cb8-d51759e06ff3' class='xr-var-data-in' type='checkbox'><label for='data-bc6a49d2-3dc5-4f02-8cb8-d51759e06ff3' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>long_name :</span></dt><dd>Categorical snow</dd><dt><span>short_name :</span></dt><dd>csnow</dd><dt><span>units :</span></dt><dd>1</dd><dt><span>comment :</span></dt><dd>0=no; 1=yes</dd><dt><span>step_type :</span></dt><dd>instant</dd></dl></div><div class='xr-var-data'><pre>[122801578578 values with dtype=float32]</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>geopotential_height_cloud_ceiling</span></div><div class='xr-var-dims'>(time, y, x)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>...</div><input id='attrs-71bb354b-fa83-43c3-87cf-fbcd44a2f814' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-71bb354b-fa83-43c3-87cf-fbcd44a2f814' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-b9d0b0e7-7b68-4db4-b56b-1fe3b158b34c' class='xr-var-data-in' type='checkbox'><label for='data-b9d0b0e7-7b68-4db4-b56b-1fe3b158b34c' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>long_name :</span></dt><dd>Geopotential height</dd><dt><span>short_name :</span></dt><dd>gh</dd><dt><span>standard_name :</span></dt><dd>geopotential_height</dd><dt><span>units :</span></dt><dd>m</dd><dt><span>step_type :</span></dt><dd>instant</dd></dl></div><div class='xr-var-data'><pre>[122801578578 values with dtype=float32]</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>categorical_rain_surface</span></div><div class='xr-var-dims'>(time, y, x)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>...</div><input id='attrs-20aeb750-629d-4794-9165-1a1272234c98' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-20aeb750-629d-4794-9165-1a1272234c98' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-d63b9875-1939-4aa7-934d-b840e3909f8e' class='xr-var-data-in' type='checkbox'><label for='data-d63b9875-1939-4aa7-934d-b840e3909f8e' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>long_name :</span></dt><dd>Categorical rain</dd><dt><span>short_name :</span></dt><dd>crain</dd><dt><span>units :</span></dt><dd>1</dd><dt><span>comment :</span></dt><dd>0=no; 1=yes</dd><dt><span>step_type :</span></dt><dd>instant</dd></dl></div><div class='xr-var-data'><pre>[122801578578 values with dtype=float32]</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>downward_long_wave_radiation_flux_surface</span></div><div class='xr-var-dims'>(time, y, x)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>...</div><input id='attrs-44737aab-f778-4097-9ea3-d112b7b2d178' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-44737aab-f778-4097-9ea3-d112b7b2d178' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-f1f9f7c4-906c-4f18-b3f6-c0440c55e31b' class='xr-var-data-in' type='checkbox'><label for='data-f1f9f7c4-906c-4f18-b3f6-c0440c55e31b' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>long_name :</span></dt><dd>Surface downward long-wave radiation flux</dd><dt><span>short_name :</span></dt><dd>sdlwrf</dd><dt><span>standard_name :</span></dt><dd>surface_downwelling_longwave_flux_in_air</dd><dt><span>units :</span></dt><dd>W m-2</dd><dt><span>step_type :</span></dt><dd>instant</dd></dl></div><div class='xr-var-data'><pre>[122801578578 values with dtype=float32]</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>composite_reflectivity</span></div><div class='xr-var-dims'>(time, y, x)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>...</div><input id='attrs-5e8e4f00-8732-4956-bf5d-070fb55aaca4' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-5e8e4f00-8732-4956-bf5d-070fb55aaca4' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-c210df90-6e76-4692-ab76-48192bcf7de7' class='xr-var-data-in' type='checkbox'><label for='data-c210df90-6e76-4692-ab76-48192bcf7de7' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>long_name :</span></dt><dd>Maximum/Composite radar reflectivity</dd><dt><span>short_name :</span></dt><dd>refc</dd><dt><span>units :</span></dt><dd>dBZ</dd><dt><span>step_type :</span></dt><dd>instant</dd></dl></div><div class='xr-var-data'><pre>[122801578578 values with dtype=float32]</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>downward_short_wave_radiation_flux_surface</span></div><div class='xr-var-dims'>(time, y, x)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>...</div><input id='attrs-8add4001-36c5-47c1-97d7-96ac39770735' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-8add4001-36c5-47c1-97d7-96ac39770735' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-2fb7b19c-db66-4d09-972f-30b4400786da' class='xr-var-data-in' type='checkbox'><label for='data-2fb7b19c-db66-4d09-972f-30b4400786da' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>long_name :</span></dt><dd>Surface downward short-wave radiation flux</dd><dt><span>short_name :</span></dt><dd>sdswrf</dd><dt><span>standard_name :</span></dt><dd>surface_downwelling_shortwave_flux_in_air</dd><dt><span>units :</span></dt><dd>W m-2</dd><dt><span>step_type :</span></dt><dd>instant</dd></dl></div><div class='xr-var-data'><pre>[122801578578 values with dtype=float32]</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>pressure_reduced_to_mean_sea_level</span></div><div class='xr-var-dims'>(time, y, x)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>...</div><input id='attrs-545e20ee-36ff-43ff-9a18-37247f2ac109' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-545e20ee-36ff-43ff-9a18-37247f2ac109' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-b17e3302-1956-4549-ba89-9db418db62a9' class='xr-var-data-in' type='checkbox'><label for='data-b17e3302-1956-4549-ba89-9db418db62a9' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>long_name :</span></dt><dd>Pressure reduced to MSL</dd><dt><span>short_name :</span></dt><dd>prmsl</dd><dt><span>standard_name :</span></dt><dd>air_pressure_at_mean_sea_level</dd><dt><span>units :</span></dt><dd>Pa</dd><dt><span>step_type :</span></dt><dd>instant</dd></dl></div><div class='xr-var-data'><pre>[122801578578 values with dtype=float32]</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>precipitation_surface</span></div><div class='xr-var-dims'>(time, y, x)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>...</div><input id='attrs-fce12d94-0f66-4cba-b6bc-547816ddd25b' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-fce12d94-0f66-4cba-b6bc-547816ddd25b' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-6720557e-f2ec-4d56-a394-2509450f4718' class='xr-var-data-in' type='checkbox'><label for='data-6720557e-f2ec-4d56-a394-2509450f4718' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>long_name :</span></dt><dd>Precipitation rate</dd><dt><span>short_name :</span></dt><dd>prate</dd><dt><span>standard_name :</span></dt><dd>precipitation_flux</dd><dt><span>units :</span></dt><dd>kg m-2 s-1</dd><dt><span>comment :</span></dt><dd>Average precipitation rate since the previous forecast step. Units equivalent to mm/s.</dd><dt><span>step_type :</span></dt><dd>avg</dd></dl></div><div class='xr-var-data'><pre>[122801578578 values with dtype=float32]</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>percent_frozen_precipitation_surface</span></div><div class='xr-var-dims'>(time, y, x)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>...</div><input id='attrs-f0177cb6-1424-4527-9678-b9fd33e6372b' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-f0177cb6-1424-4527-9678-b9fd33e6372b' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-88f2b440-c5d9-4150-8c3d-c400dd9faf26' class='xr-var-data-in' type='checkbox'><label for='data-88f2b440-c5d9-4150-8c3d-c400dd9faf26' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>long_name :</span></dt><dd>Percent frozen precipitation</dd><dt><span>short_name :</span></dt><dd>cpofp</dd><dt><span>units :</span></dt><dd>percent</dd><dt><span>step_type :</span></dt><dd>instant</dd></dl></div><div class='xr-var-data'><pre>[122801578578 values with dtype=float32]</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>pressure_surface</span></div><div class='xr-var-dims'>(time, y, x)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>...</div><input id='attrs-a14e9692-052d-4d67-8e0d-c3db34949b6d' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-a14e9692-052d-4d67-8e0d-c3db34949b6d' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-c1c3a5be-4a9c-402f-8d1f-92f48fd1aaa8' class='xr-var-data-in' type='checkbox'><label for='data-c1c3a5be-4a9c-402f-8d1f-92f48fd1aaa8' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>long_name :</span></dt><dd>Surface pressure</dd><dt><span>short_name :</span></dt><dd>sp</dd><dt><span>standard_name :</span></dt><dd>surface_air_pressure</dd><dt><span>units :</span></dt><dd>Pa</dd><dt><span>step_type :</span></dt><dd>instant</dd></dl></div><div class='xr-var-data'><pre>[122801578578 values with dtype=float32]</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>relative_humidity_2m</span></div><div class='xr-var-dims'>(time, y, x)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>...</div><input id='attrs-f243204f-1c9a-46f9-b22e-623259913362' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-f243204f-1c9a-46f9-b22e-623259913362' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-d8ea50f9-fc97-4f21-a534-339eb697d0a7' class='xr-var-data-in' type='checkbox'><label for='data-d8ea50f9-fc97-4f21-a534-339eb697d0a7' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>long_name :</span></dt><dd>2 metre relative humidity</dd><dt><span>short_name :</span></dt><dd>2r</dd><dt><span>standard_name :</span></dt><dd>relative_humidity</dd><dt><span>units :</span></dt><dd>percent</dd><dt><span>step_type :</span></dt><dd>instant</dd></dl></div><div class='xr-var-data'><pre>[122801578578 values with dtype=float32]</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>temperature_2m</span></div><div class='xr-var-dims'>(time, y, x)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>...</div><input id='attrs-a226f006-03f5-4241-9844-2cac3b87bb6e' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-a226f006-03f5-4241-9844-2cac3b87bb6e' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-5ff07e95-0721-49c7-976d-02ece5f55ebc' class='xr-var-data-in' type='checkbox'><label for='data-5ff07e95-0721-49c7-976d-02ece5f55ebc' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>long_name :</span></dt><dd>2 metre temperature</dd><dt><span>short_name :</span></dt><dd>2t</dd><dt><span>standard_name :</span></dt><dd>air_temperature</dd><dt><span>units :</span></dt><dd>degree_Celsius</dd><dt><span>step_type :</span></dt><dd>instant</dd></dl></div><div class='xr-var-data'><pre>[122801578578 values with dtype=float32]</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>precipitable_water_atmosphere</span></div><div class='xr-var-dims'>(time, y, x)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>...</div><input id='attrs-616dd3c7-b01f-4f11-910c-d233fd2a5898' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-616dd3c7-b01f-4f11-910c-d233fd2a5898' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-e3ab8aff-340a-423c-883b-bcf4c53e95ce' class='xr-var-data-in' type='checkbox'><label for='data-e3ab8aff-340a-423c-883b-bcf4c53e95ce' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>long_name :</span></dt><dd>Precipitable water</dd><dt><span>short_name :</span></dt><dd>pwat</dd><dt><span>standard_name :</span></dt><dd>atmosphere_mass_content_of_water_vapor</dd><dt><span>units :</span></dt><dd>kg m-2</dd><dt><span>step_type :</span></dt><dd>instant</dd></dl></div><div class='xr-var-data'><pre>[122801578578 values with dtype=float32]</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>total_cloud_cover_atmosphere</span></div><div class='xr-var-dims'>(time, y, x)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>...</div><input id='attrs-19507c03-7510-442b-8986-8c98e98cbf6b' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-19507c03-7510-442b-8986-8c98e98cbf6b' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-14578a67-516d-48c3-9195-cf4818e6cf02' class='xr-var-data-in' type='checkbox'><label for='data-14578a67-516d-48c3-9195-cf4818e6cf02' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>long_name :</span></dt><dd>Total Cloud Cover</dd><dt><span>short_name :</span></dt><dd>tcc</dd><dt><span>standard_name :</span></dt><dd>cloud_area_fraction</dd><dt><span>units :</span></dt><dd>percent</dd><dt><span>step_type :</span></dt><dd>instant</dd></dl></div><div class='xr-var-data'><pre>[122801578578 values with dtype=float32]</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>wind_u_10m</span></div><div class='xr-var-dims'>(time, y, x)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>...</div><input id='attrs-ab4cd397-932a-484b-90bd-0d7ca0353750' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-ab4cd397-932a-484b-90bd-0d7ca0353750' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-3823184c-a59a-4e1d-9162-3ad9af9be0a6' class='xr-var-data-in' type='checkbox'><label for='data-3823184c-a59a-4e1d-9162-3ad9af9be0a6' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>long_name :</span></dt><dd>10 metre U wind component</dd><dt><span>short_name :</span></dt><dd>10u</dd><dt><span>standard_name :</span></dt><dd>eastward_wind</dd><dt><span>units :</span></dt><dd>m s-1</dd><dt><span>step_type :</span></dt><dd>instant</dd></dl></div><div class='xr-var-data'><pre>[122801578578 values with dtype=float32]</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>wind_u_80m</span></div><div class='xr-var-dims'>(time, y, x)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>...</div><input id='attrs-8f9a34e0-68e6-4de7-85b5-41df3f25f861' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-8f9a34e0-68e6-4de7-85b5-41df3f25f861' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-7fc9b2db-5973-4b89-a175-f2418f21a2aa' class='xr-var-data-in' type='checkbox'><label for='data-7fc9b2db-5973-4b89-a175-f2418f21a2aa' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>long_name :</span></dt><dd>80 metre U wind component</dd><dt><span>short_name :</span></dt><dd>80u</dd><dt><span>standard_name :</span></dt><dd>eastward_wind</dd><dt><span>units :</span></dt><dd>m s-1</dd><dt><span>step_type :</span></dt><dd>instant</dd></dl></div><div class='xr-var-data'><pre>[122801578578 values with dtype=float32]</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>wind_v_10m</span></div><div class='xr-var-dims'>(time, y, x)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>...</div><input id='attrs-d540e78b-bfda-4304-851c-cfaa8f780d1c' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-d540e78b-bfda-4304-851c-cfaa8f780d1c' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-fdc9bd27-3d5b-4478-8f02-47a3917503e9' class='xr-var-data-in' type='checkbox'><label for='data-fdc9bd27-3d5b-4478-8f02-47a3917503e9' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>long_name :</span></dt><dd>10 metre V wind component</dd><dt><span>short_name :</span></dt><dd>10v</dd><dt><span>standard_name :</span></dt><dd>northward_wind</dd><dt><span>units :</span></dt><dd>m s-1</dd><dt><span>step_type :</span></dt><dd>instant</dd></dl></div><div class='xr-var-data'><pre>[122801578578 values with dtype=float32]</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>wind_v_80m</span></div><div class='xr-var-dims'>(time, y, x)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>...</div><input id='attrs-18b1faec-c7ea-46b6-abed-14780e90db8e' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-18b1faec-c7ea-46b6-abed-14780e90db8e' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-1cf655d2-e3f9-4273-87be-bbedc9f3b817' class='xr-var-data-in' type='checkbox'><label for='data-1cf655d2-e3f9-4273-87be-bbedc9f3b817' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>long_name :</span></dt><dd>80 metre V wind component</dd><dt><span>short_name :</span></dt><dd>80v</dd><dt><span>standard_name :</span></dt><dd>northward_wind</dd><dt><span>units :</span></dt><dd>m s-1</dd><dt><span>step_type :</span></dt><dd>instant</dd></dl></div><div class='xr-var-data'><pre>[122801578578 values with dtype=float32]</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-279984f0-c2a1-4733-a46d-d846543e7f4c' class='xr-section-summary-in' type='checkbox' ><label for='section-279984f0-c2a1-4733-a46d-d846543e7f4c' class='xr-section-summary' >Indexes: <span>(3)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-index-name'><div>time</div></div><div class='xr-index-preview'>PandasIndex</div><input type='checkbox' disabled/><label></label><input id='index-cbbcac8f-d452-4231-bd1f-e3c2ad097b59' class='xr-index-data-in' type='checkbox'/><label for='index-cbbcac8f-d452-4231-bd1f-e3c2ad097b59' title='Show/Hide index repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-index-data'><pre>PandasIndex(DatetimeIndex(['2018-09-16 00:00:00', '2018-09-16 01:00:00',\n", | |
| " '2018-09-16 02:00:00', '2018-09-16 03:00:00',\n", | |
| " '2018-09-16 04:00:00', '2018-09-16 05:00:00',\n", | |
| " '2018-09-16 06:00:00', '2018-09-16 07:00:00',\n", | |
| " '2018-09-16 08:00:00', '2018-09-16 09:00:00',\n", | |
| " ...\n", | |
| " '2026-01-22 08:00:00', '2026-01-22 09:00:00',\n", | |
| " '2026-01-22 10:00:00', '2026-01-22 11:00:00',\n", | |
| " '2026-01-22 12:00:00', '2026-01-22 13:00:00',\n", | |
| " '2026-01-22 14:00:00', '2026-01-22 15:00:00',\n", | |
| " '2026-01-22 16:00:00', '2026-01-22 17:00:00'],\n", | |
| " dtype='datetime64[ns]', name='time', length=64458, freq=None))</pre></div></li><li class='xr-var-item'><div class='xr-index-name'><div>x</div></div><div class='xr-index-preview'>PandasIndex</div><input type='checkbox' disabled/><label></label><input id='index-26fa86b8-1a7c-440c-922d-9ffd4ae702fe' class='xr-index-data-in' type='checkbox'/><label for='index-26fa86b8-1a7c-440c-922d-9ffd4ae702fe' title='Show/Hide index repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-index-data'><pre>PandasIndex(Index([-2697520.142521929, -2694520.142521929, -2691520.142521929,\n", | |
| " -2688520.142521929, -2685520.142521929, -2682520.142521929,\n", | |
| " -2679520.142521929, -2676520.142521929, -2673520.142521929,\n", | |
| " -2670520.142521929,\n", | |
| " ...\n", | |
| " 2669479.857478071, 2672479.857478071, 2675479.857478071,\n", | |
| " 2678479.857478071, 2681479.857478071, 2684479.857478071,\n", | |
| " 2687479.857478071, 2690479.857478071, 2693479.857478071,\n", | |
| " 2696479.857478071],\n", | |
| " dtype='float64', name='x', length=1799))</pre></div></li><li class='xr-var-item'><div class='xr-index-name'><div>y</div></div><div class='xr-index-preview'>PandasIndex</div><input type='checkbox' disabled/><label></label><input id='index-0ac4807d-730d-44c5-8371-d439101eb72a' class='xr-index-data-in' type='checkbox'/><label for='index-0ac4807d-730d-44c5-8371-d439101eb72a' title='Show/Hide index repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-index-data'><pre>PandasIndex(Index([ 1586693.847443335, 1583693.847443335, 1580693.847443335,\n", | |
| " 1577693.847443335, 1574693.847443335, 1571693.847443335,\n", | |
| " 1568693.847443335, 1565693.847443335, 1562693.847443335,\n", | |
| " 1559693.847443335,\n", | |
| " ...\n", | |
| " -1560306.152556665, -1563306.152556665, -1566306.152556665,\n", | |
| " -1569306.152556665, -1572306.152556665, -1575306.152556665,\n", | |
| " -1578306.152556665, -1581306.152556665, -1584306.152556665,\n", | |
| " -1587306.152556665],\n", | |
| " dtype='float64', name='y', length=1059))</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-879323af-eb9c-40bb-b5b3-ba08cc047bb8' class='xr-section-summary-in' type='checkbox' checked><label for='section-879323af-eb9c-40bb-b5b3-ba08cc047bb8' class='xr-section-summary' >Attributes: <span>(9)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><dl class='xr-attrs'><dt><span>dataset_id :</span></dt><dd>noaa-hrrr-analysis</dd><dt><span>dataset_version :</span></dt><dd>0.1.0</dd><dt><span>name :</span></dt><dd>NOAA HRRR analysis</dd><dt><span>description :</span></dt><dd>Analysis data from the High-Resolution Rapid Refresh (HRRR) model operated by NOAA NWS NCEP.</dd><dt><span>attribution :</span></dt><dd>NOAA NWS NCEP HRRR data processed by dynamical.org from NOAA Open Data Dissemination archives.</dd><dt><span>spatial_domain :</span></dt><dd>Continental United States</dd><dt><span>spatial_resolution :</span></dt><dd>3 km</dd><dt><span>time_domain :</span></dt><dd>2018-09-16 00:00:00 UTC to Present</dd><dt><span>time_resolution :</span></dt><dd>1 hour</dd></dl></div></li></ul></div></div>" | |
| ], | |
| "text/plain": [ | |
| "<xarray.Dataset> Size: 10TB\n", | |
| "Dimensions: (time: 64458, y: 1059, x: 1799)\n", | |
| "Coordinates:\n", | |
| " latitude (y, x) float32 8MB ...\n", | |
| " longitude (y, x) float32 8MB ...\n", | |
| " spatial_ref int64 8B ...\n", | |
| " * time (time) datetime64[ns] 516kB 2...\n", | |
| " * x (x) float64 14kB -2.698e+06 ....\n", | |
| " * y (y) float64 8kB 1.587e+06 ......\n", | |
| "Data variables: (12/20)\n", | |
| " categorical_freezing_rain_surface (time, y, x) float32 491GB ...\n", | |
| " categorical_ice_pellets_surface (time, y, x) float32 491GB ...\n", | |
| " categorical_snow_surface (time, y, x) float32 491GB ...\n", | |
| " geopotential_height_cloud_ceiling (time, y, x) float32 491GB ...\n", | |
| " categorical_rain_surface (time, y, x) float32 491GB ...\n", | |
| " downward_long_wave_radiation_flux_surface (time, y, x) float32 491GB ...\n", | |
| " ... ...\n", | |
| " precipitable_water_atmosphere (time, y, x) float32 491GB ...\n", | |
| " total_cloud_cover_atmosphere (time, y, x) float32 491GB ...\n", | |
| " wind_u_10m (time, y, x) float32 491GB ...\n", | |
| " wind_u_80m (time, y, x) float32 491GB ...\n", | |
| " wind_v_10m (time, y, x) float32 491GB ...\n", | |
| " wind_v_80m (time, y, x) float32 491GB ...\n", | |
| "Attributes:\n", | |
| " dataset_id: noaa-hrrr-analysis\n", | |
| " dataset_version: 0.1.0\n", | |
| " name: NOAA HRRR analysis\n", | |
| " description: Analysis data from the High-Resolution Rapid Refresh...\n", | |
| " attribution: NOAA NWS NCEP HRRR data processed by dynamical.org f...\n", | |
| " spatial_domain: Continental United States\n", | |
| " spatial_resolution: 3 km\n", | |
| " time_domain: 2018-09-16 00:00:00 UTC to Present\n", | |
| " time_resolution: 1 hour" | |
| ] | |
| }, | |
| "execution_count": 3, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "import icechunk\n", | |
| "import xarray as xr\n", | |
| "import hvplot.xarray\n", | |
| "\n", | |
| "storage = icechunk.s3_storage(bucket=\"dynamical-noaa-hrrr\", prefix=\"noaa-hrrr-analysis/v0.1.0.icechunk/\", region=\"us-west-2\", anonymous=True)\n", | |
| "repo = icechunk.Repository.open(storage)\n", | |
| "session = repo.readonly_session(\"main\")\n", | |
| "ds_hrrr = xr.open_zarr(session.store, chunks=None)\n", | |
| "ds_hrrr" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 4, | |
| "id": "4", | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "# HRRR data is distributed in a projected coordinate reference system and\n", | |
| "# we include its details in the dataset metadata (e.g. ds.rio.crs, ds.rio.transform()).\n", | |
| "\n", | |
| "# Use pyproj to transform the longitude and latitude of Chicago, IL into dataset x, y coordinates\n", | |
| "from pyproj import Transformer\n", | |
| "\n", | |
| "lon_lat_to_ds = Transformer.from_crs(\"EPSG:4326\", ds_hrrr.rio.crs, always_xy=True)\n", | |
| "x, y = lon_lat_to_ds.transform(lon_point, lat_point ) # 180 county rd, bourne, ma\n", | |
| "\n", | |
| "da_hrrr = ds_hrrr[\"wind_v_10m\"].sel(x=x, y=y, method=\"nearest\").sel(time=slice(start,stop )).load()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 5, | |
| "id": "163dd98f-850e-407d-9d7d-458f10833ff1", | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "hrrr_viz = da_hrrr.hvplot(x='time', grid=True, label='HRRR')" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 6, | |
| "id": "3df53f1f-6f1d-450f-8033-4396783ee9bb", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/html": [ | |
| "<div><svg style=\"position: absolute; width: 0; height: 0; overflow: hidden\">\n", | |
| "<defs>\n", | |
| "<symbol id=\"icon-database\" viewBox=\"0 0 32 32\">\n", | |
| "<path d=\"M16 0c-8.837 0-16 2.239-16 5v4c0 2.761 7.163 5 16 5s16-2.239 16-5v-4c0-2.761-7.163-5-16-5z\"></path>\n", | |
| "<path d=\"M16 17c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n", | |
| "<path d=\"M16 26c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n", | |
| "</symbol>\n", | |
| "<symbol id=\"icon-file-text2\" viewBox=\"0 0 32 32\">\n", | |
| "<path d=\"M28.681 7.159c-0.694-0.947-1.662-2.053-2.724-3.116s-2.169-2.030-3.116-2.724c-1.612-1.182-2.393-1.319-2.841-1.319h-15.5c-1.378 0-2.5 1.121-2.5 2.5v27c0 1.378 1.122 2.5 2.5 2.5h23c1.378 0 2.5-1.122 2.5-2.5v-19.5c0-0.448-0.137-1.23-1.319-2.841zM24.543 5.457c0.959 0.959 1.712 1.825 2.268 2.543h-4.811v-4.811c0.718 0.556 1.584 1.309 2.543 2.268zM28 29.5c0 0.271-0.229 0.5-0.5 0.5h-23c-0.271 0-0.5-0.229-0.5-0.5v-27c0-0.271 0.229-0.5 0.5-0.5 0 0 15.499-0 15.5 0v7c0 0.552 0.448 1 1 1h7v19.5z\"></path>\n", | |
| "<path d=\"M23 26h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n", | |
| "<path d=\"M23 22h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n", | |
| "<path d=\"M23 18h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n", | |
| "</symbol>\n", | |
| "</defs>\n", | |
| "</svg>\n", | |
| "<style>/* CSS stylesheet for displaying xarray objects in jupyterlab.\n", | |
| " *\n", | |
| " */\n", | |
| "\n", | |
| ":root {\n", | |
| " --xr-font-color0: var(\n", | |
| " --jp-content-font-color0,\n", | |
| " var(--pst-color-text-base rgba(0, 0, 0, 1))\n", | |
| " );\n", | |
| " --xr-font-color2: var(\n", | |
| " --jp-content-font-color2,\n", | |
| " var(--pst-color-text-base, rgba(0, 0, 0, 0.54))\n", | |
| " );\n", | |
| " --xr-font-color3: var(\n", | |
| " --jp-content-font-color3,\n", | |
| " var(--pst-color-text-base, rgba(0, 0, 0, 0.38))\n", | |
| " );\n", | |
| " --xr-border-color: var(\n", | |
| " --jp-border-color2,\n", | |
| " hsl(from var(--pst-color-on-background, white) h s calc(l - 10))\n", | |
| " );\n", | |
| " --xr-disabled-color: var(\n", | |
| " --jp-layout-color3,\n", | |
| " hsl(from var(--pst-color-on-background, white) h s calc(l - 40))\n", | |
| " );\n", | |
| " --xr-background-color: var(\n", | |
| " --jp-layout-color0,\n", | |
| " var(--pst-color-on-background, white)\n", | |
| " );\n", | |
| " --xr-background-color-row-even: var(\n", | |
| " --jp-layout-color1,\n", | |
| " hsl(from var(--pst-color-on-background, white) h s calc(l - 5))\n", | |
| " );\n", | |
| " --xr-background-color-row-odd: var(\n", | |
| " --jp-layout-color2,\n", | |
| " hsl(from var(--pst-color-on-background, white) h s calc(l - 15))\n", | |
| " );\n", | |
| "}\n", | |
| "\n", | |
| "html[theme=\"dark\"],\n", | |
| "html[data-theme=\"dark\"],\n", | |
| "body[data-theme=\"dark\"],\n", | |
| "body.vscode-dark {\n", | |
| " --xr-font-color0: var(\n", | |
| " --jp-content-font-color0,\n", | |
| " var(--pst-color-text-base, rgba(255, 255, 255, 1))\n", | |
| " );\n", | |
| " --xr-font-color2: var(\n", | |
| " --jp-content-font-color2,\n", | |
| " var(--pst-color-text-base, rgba(255, 255, 255, 0.54))\n", | |
| " );\n", | |
| " --xr-font-color3: var(\n", | |
| " --jp-content-font-color3,\n", | |
| " var(--pst-color-text-base, rgba(255, 255, 255, 0.38))\n", | |
| " );\n", | |
| " --xr-border-color: var(\n", | |
| " --jp-border-color2,\n", | |
| " hsl(from var(--pst-color-on-background, #111111) h s calc(l + 10))\n", | |
| " );\n", | |
| " --xr-disabled-color: var(\n", | |
| " --jp-layout-color3,\n", | |
| " hsl(from var(--pst-color-on-background, #111111) h s calc(l + 40))\n", | |
| " );\n", | |
| " --xr-background-color: var(\n", | |
| " --jp-layout-color0,\n", | |
| " var(--pst-color-on-background, #111111)\n", | |
| " );\n", | |
| " --xr-background-color-row-even: var(\n", | |
| " --jp-layout-color1,\n", | |
| " hsl(from var(--pst-color-on-background, #111111) h s calc(l + 5))\n", | |
| " );\n", | |
| " --xr-background-color-row-odd: var(\n", | |
| " --jp-layout-color2,\n", | |
| " hsl(from var(--pst-color-on-background, #111111) h s calc(l + 15))\n", | |
| " );\n", | |
| "}\n", | |
| "\n", | |
| ".xr-wrap {\n", | |
| " display: block !important;\n", | |
| " min-width: 300px;\n", | |
| " max-width: 700px;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-text-repr-fallback {\n", | |
| " /* fallback to plain text repr when CSS is not injected (untrusted notebook) */\n", | |
| " display: none;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-header {\n", | |
| " padding-top: 6px;\n", | |
| " padding-bottom: 6px;\n", | |
| " margin-bottom: 4px;\n", | |
| " border-bottom: solid 1px var(--xr-border-color);\n", | |
| "}\n", | |
| "\n", | |
| ".xr-header > div,\n", | |
| ".xr-header > ul {\n", | |
| " display: inline;\n", | |
| " margin-top: 0;\n", | |
| " margin-bottom: 0;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-obj-type,\n", | |
| ".xr-array-name {\n", | |
| " margin-left: 2px;\n", | |
| " margin-right: 10px;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-obj-type {\n", | |
| " color: var(--xr-font-color2);\n", | |
| "}\n", | |
| "\n", | |
| ".xr-sections {\n", | |
| " padding-left: 0 !important;\n", | |
| " display: grid;\n", | |
| " grid-template-columns: 150px auto auto 1fr 0 20px 0 20px;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-section-item {\n", | |
| " display: contents;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-section-item input {\n", | |
| " display: inline-block;\n", | |
| " opacity: 0;\n", | |
| " height: 0;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-section-item input + label {\n", | |
| " color: var(--xr-disabled-color);\n", | |
| " border: 2px solid transparent !important;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-section-item input:enabled + label {\n", | |
| " cursor: pointer;\n", | |
| " color: var(--xr-font-color2);\n", | |
| "}\n", | |
| "\n", | |
| ".xr-section-item input:focus + label {\n", | |
| " border: 2px solid var(--xr-font-color0) !important;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-section-item input:enabled + label:hover {\n", | |
| " color: var(--xr-font-color0);\n", | |
| "}\n", | |
| "\n", | |
| ".xr-section-summary {\n", | |
| " grid-column: 1;\n", | |
| " color: var(--xr-font-color2);\n", | |
| " font-weight: 500;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-section-summary > span {\n", | |
| " display: inline-block;\n", | |
| " padding-left: 0.5em;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-section-summary-in:disabled + label {\n", | |
| " color: var(--xr-font-color2);\n", | |
| "}\n", | |
| "\n", | |
| ".xr-section-summary-in + label:before {\n", | |
| " display: inline-block;\n", | |
| " content: \"►\";\n", | |
| " font-size: 11px;\n", | |
| " width: 15px;\n", | |
| " text-align: center;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-section-summary-in:disabled + label:before {\n", | |
| " color: var(--xr-disabled-color);\n", | |
| "}\n", | |
| "\n", | |
| ".xr-section-summary-in:checked + label:before {\n", | |
| " content: \"▼\";\n", | |
| "}\n", | |
| "\n", | |
| ".xr-section-summary-in:checked + label > span {\n", | |
| " display: none;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-section-summary,\n", | |
| ".xr-section-inline-details {\n", | |
| " padding-top: 4px;\n", | |
| " padding-bottom: 4px;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-section-inline-details {\n", | |
| " grid-column: 2 / -1;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-section-details {\n", | |
| " display: none;\n", | |
| " grid-column: 1 / -1;\n", | |
| " margin-bottom: 5px;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-section-summary-in:checked ~ .xr-section-details {\n", | |
| " display: contents;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-array-wrap {\n", | |
| " grid-column: 1 / -1;\n", | |
| " display: grid;\n", | |
| " grid-template-columns: 20px auto;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-array-wrap > label {\n", | |
| " grid-column: 1;\n", | |
| " vertical-align: top;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-preview {\n", | |
| " color: var(--xr-font-color3);\n", | |
| "}\n", | |
| "\n", | |
| ".xr-array-preview,\n", | |
| ".xr-array-data {\n", | |
| " padding: 0 5px !important;\n", | |
| " grid-column: 2;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-array-data,\n", | |
| ".xr-array-in:checked ~ .xr-array-preview {\n", | |
| " display: none;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-array-in:checked ~ .xr-array-data,\n", | |
| ".xr-array-preview {\n", | |
| " display: inline-block;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-dim-list {\n", | |
| " display: inline-block !important;\n", | |
| " list-style: none;\n", | |
| " padding: 0 !important;\n", | |
| " margin: 0;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-dim-list li {\n", | |
| " display: inline-block;\n", | |
| " padding: 0;\n", | |
| " margin: 0;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-dim-list:before {\n", | |
| " content: \"(\";\n", | |
| "}\n", | |
| "\n", | |
| ".xr-dim-list:after {\n", | |
| " content: \")\";\n", | |
| "}\n", | |
| "\n", | |
| ".xr-dim-list li:not(:last-child):after {\n", | |
| " content: \",\";\n", | |
| " padding-right: 5px;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-has-index {\n", | |
| " font-weight: bold;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-var-list,\n", | |
| ".xr-var-item {\n", | |
| " display: contents;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-var-item > div,\n", | |
| ".xr-var-item label,\n", | |
| ".xr-var-item > .xr-var-name span {\n", | |
| " background-color: var(--xr-background-color-row-even);\n", | |
| " border-color: var(--xr-background-color-row-odd);\n", | |
| " margin-bottom: 0;\n", | |
| " padding-top: 2px;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-var-item > .xr-var-name:hover span {\n", | |
| " padding-right: 5px;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-var-list > li:nth-child(odd) > div,\n", | |
| ".xr-var-list > li:nth-child(odd) > label,\n", | |
| ".xr-var-list > li:nth-child(odd) > .xr-var-name span {\n", | |
| " background-color: var(--xr-background-color-row-odd);\n", | |
| " border-color: var(--xr-background-color-row-even);\n", | |
| "}\n", | |
| "\n", | |
| ".xr-var-name {\n", | |
| " grid-column: 1;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-var-dims {\n", | |
| " grid-column: 2;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-var-dtype {\n", | |
| " grid-column: 3;\n", | |
| " text-align: right;\n", | |
| " color: var(--xr-font-color2);\n", | |
| "}\n", | |
| "\n", | |
| ".xr-var-preview {\n", | |
| " grid-column: 4;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-index-preview {\n", | |
| " grid-column: 2 / 5;\n", | |
| " color: var(--xr-font-color2);\n", | |
| "}\n", | |
| "\n", | |
| ".xr-var-name,\n", | |
| ".xr-var-dims,\n", | |
| ".xr-var-dtype,\n", | |
| ".xr-preview,\n", | |
| ".xr-attrs dt {\n", | |
| " white-space: nowrap;\n", | |
| " overflow: hidden;\n", | |
| " text-overflow: ellipsis;\n", | |
| " padding-right: 10px;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-var-name:hover,\n", | |
| ".xr-var-dims:hover,\n", | |
| ".xr-var-dtype:hover,\n", | |
| ".xr-attrs dt:hover {\n", | |
| " overflow: visible;\n", | |
| " width: auto;\n", | |
| " z-index: 1;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-var-attrs,\n", | |
| ".xr-var-data,\n", | |
| ".xr-index-data {\n", | |
| " display: none;\n", | |
| " border-top: 2px dotted var(--xr-background-color);\n", | |
| " padding-bottom: 20px !important;\n", | |
| " padding-top: 10px !important;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-var-attrs-in + label,\n", | |
| ".xr-var-data-in + label,\n", | |
| ".xr-index-data-in + label {\n", | |
| " padding: 0 1px;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-var-attrs-in:checked ~ .xr-var-attrs,\n", | |
| ".xr-var-data-in:checked ~ .xr-var-data,\n", | |
| ".xr-index-data-in:checked ~ .xr-index-data {\n", | |
| " display: block;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-var-data > table {\n", | |
| " float: right;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-var-data > pre,\n", | |
| ".xr-index-data > pre,\n", | |
| ".xr-var-data > table > tbody > tr {\n", | |
| " background-color: transparent !important;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-var-name span,\n", | |
| ".xr-var-data,\n", | |
| ".xr-index-name div,\n", | |
| ".xr-index-data,\n", | |
| ".xr-attrs {\n", | |
| " padding-left: 25px !important;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-attrs,\n", | |
| ".xr-var-attrs,\n", | |
| ".xr-var-data,\n", | |
| ".xr-index-data {\n", | |
| " grid-column: 1 / -1;\n", | |
| "}\n", | |
| "\n", | |
| "dl.xr-attrs {\n", | |
| " padding: 0;\n", | |
| " margin: 0;\n", | |
| " display: grid;\n", | |
| " grid-template-columns: 125px auto;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-attrs dt,\n", | |
| ".xr-attrs dd {\n", | |
| " padding: 0;\n", | |
| " margin: 0;\n", | |
| " float: left;\n", | |
| " padding-right: 10px;\n", | |
| " width: auto;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-attrs dt {\n", | |
| " font-weight: normal;\n", | |
| " grid-column: 1;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-attrs dt:hover span {\n", | |
| " display: inline-block;\n", | |
| " background: var(--xr-background-color);\n", | |
| " padding-right: 10px;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-attrs dd {\n", | |
| " grid-column: 2;\n", | |
| " white-space: pre-wrap;\n", | |
| " word-break: break-all;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-icon-database,\n", | |
| ".xr-icon-file-text2,\n", | |
| ".xr-no-icon {\n", | |
| " display: inline-block;\n", | |
| " vertical-align: middle;\n", | |
| " width: 1em;\n", | |
| " height: 1.5em !important;\n", | |
| " stroke-width: 0;\n", | |
| " stroke: currentColor;\n", | |
| " fill: currentColor;\n", | |
| "}\n", | |
| "\n", | |
| ".xr-var-attrs-in:checked + label > .xr-icon-file-text2,\n", | |
| ".xr-var-data-in:checked + label > .xr-icon-database,\n", | |
| ".xr-index-data-in:checked + label > .xr-icon-database {\n", | |
| " color: var(--xr-font-color0);\n", | |
| " filter: drop-shadow(1px 1px 5px var(--xr-font-color2));\n", | |
| " stroke-width: 0.8px;\n", | |
| "}\n", | |
| "</style><pre class='xr-text-repr-fallback'><xarray.Dataset> Size: 1TB\n", | |
| "Dimensions: (time: 82920, latitude: 721, longitude: 1440)\n", | |
| "Coordinates:\n", | |
| " * latitude (latitude) float64 6kB 90.0 89.75 ... -89.75 -90.0\n", | |
| " * longitude (longitude) float64 12kB -180.0 -179.8 ... 179.8\n", | |
| " spatial_ref int64 8B ...\n", | |
| " * time (time) datetime64[ns] 663kB 2015-01-15 ... 2024-06...\n", | |
| "Data variables:\n", | |
| " precipitation_surface (time, latitude, longitude) float32 344GB dask.array<chunksize=(160, 145, 144), meta=np.ndarray>\n", | |
| " temperature_2m (time, latitude, longitude) float32 344GB dask.array<chunksize=(160, 145, 144), meta=np.ndarray>\n", | |
| " wind_u_10m (time, latitude, longitude) float32 344GB dask.array<chunksize=(160, 145, 144), meta=np.ndarray>\n", | |
| " wind_v_10m (time, latitude, longitude) float32 344GB dask.array<chunksize=(160, 145, 144), meta=np.ndarray>\n", | |
| "Attributes:\n", | |
| " attribution: NOAA NCEP GFS data processed by dynamical.org from N...\n", | |
| " description: Historical weather data from the Global Forecast Sys...\n", | |
| " id: noaa-gfs-analysis-hourly\n", | |
| " name: NOAA GFS analysis, hourly\n", | |
| " spatial_domain: Global\n", | |
| " spatial_resolution: 0.25 degrees (~20km)\n", | |
| " time_domain: 2015-01-15 00:00:00 UTC to 2024-07-01 00:00:00 UTC\n", | |
| " time_resolution: 1 hour</pre><div class='xr-wrap' style='display:none'><div class='xr-header'><div class='xr-obj-type'>xarray.Dataset</div></div><ul class='xr-sections'><li class='xr-section-item'><input id='section-50c8ce2a-fbdf-417a-8de2-7bc823d0ac19' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-50c8ce2a-fbdf-417a-8de2-7bc823d0ac19' class='xr-section-summary' title='Expand/collapse section'>Dimensions:</label><div class='xr-section-inline-details'><ul class='xr-dim-list'><li><span class='xr-has-index'>time</span>: 82920</li><li><span class='xr-has-index'>latitude</span>: 721</li><li><span class='xr-has-index'>longitude</span>: 1440</li></ul></div><div class='xr-section-details'></div></li><li class='xr-section-item'><input id='section-5f3654cb-297e-4b17-8c18-96d90df0e474' class='xr-section-summary-in' type='checkbox' checked><label for='section-5f3654cb-297e-4b17-8c18-96d90df0e474' class='xr-section-summary' >Coordinates: <span>(4)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>latitude</span></div><div class='xr-var-dims'>(latitude)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>90.0 89.75 89.5 ... -89.75 -90.0</div><input id='attrs-b52a9e27-665c-4ff2-80c0-7f2347c64a8a' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-b52a9e27-665c-4ff2-80c0-7f2347c64a8a' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-3e479f52-7977-436f-9c30-f4483f10bae1' class='xr-var-data-in' type='checkbox'><label for='data-3e479f52-7977-436f-9c30-f4483f10bae1' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>long_name :</span></dt><dd>Latitude</dd><dt><span>statistics_approximate :</span></dt><dd>{'max': 90.0, 'mean': 0.0, 'min': -90.0}</dd><dt><span>units :</span></dt><dd>decimal degrees</dd></dl></div><div class='xr-var-data'><pre>array([ 90. , 89.75, 89.5 , ..., -89.5 , -89.75, -90. ], shape=(721,))</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>longitude</span></div><div class='xr-var-dims'>(longitude)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>-180.0 -179.8 ... 179.5 179.8</div><input id='attrs-9cf9cef5-e108-48a5-bd82-81669307d7f5' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-9cf9cef5-e108-48a5-bd82-81669307d7f5' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-4da622ed-856c-4bdd-b575-27e9819beb62' class='xr-var-data-in' type='checkbox'><label for='data-4da622ed-856c-4bdd-b575-27e9819beb62' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>long_name :</span></dt><dd>Longitude</dd><dt><span>statistics_approximate :</span></dt><dd>{'max': 179.75, 'mean': -0.125, 'min': -180.0}</dd><dt><span>units :</span></dt><dd>decimal degrees</dd></dl></div><div class='xr-var-data'><pre>array([-180. , -179.75, -179.5 , ..., 179.25, 179.5 , 179.75],\n", | |
| " shape=(1440,))</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>spatial_ref</span></div><div class='xr-var-dims'>()</div><div class='xr-var-dtype'>int64</div><div class='xr-var-preview xr-preview'>...</div><input id='attrs-b5bad1a6-f50a-40ab-b2db-36afbf502cc7' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-b5bad1a6-f50a-40ab-b2db-36afbf502cc7' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-42bab425-afbc-4af4-beb6-9cba75dd7e70' class='xr-var-data-in' type='checkbox'><label for='data-42bab425-afbc-4af4-beb6-9cba75dd7e70' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>crs_wkt :</span></dt><dd>GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AXIS["Latitude",NORTH],AXIS["Longitude",EAST],AUTHORITY["EPSG","4326"]]</dd><dt><span>geographic_crs_name :</span></dt><dd>WGS 84</dd><dt><span>grid_mapping_name :</span></dt><dd>latitude_longitude</dd><dt><span>horizontal_datum_name :</span></dt><dd>World Geodetic System 1984</dd><dt><span>inverse_flattening :</span></dt><dd>298.257223563</dd><dt><span>longitude_of_prime_meridian :</span></dt><dd>0.0</dd><dt><span>prime_meridian_name :</span></dt><dd>Greenwich</dd><dt><span>reference_ellipsoid_name :</span></dt><dd>WGS 84</dd><dt><span>semi_major_axis :</span></dt><dd>6378137.0</dd><dt><span>semi_minor_axis :</span></dt><dd>6356752.314245179</dd><dt><span>spatial_ref :</span></dt><dd>GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AXIS["Latitude",NORTH],AXIS["Longitude",EAST],AUTHORITY["EPSG","4326"]]</dd></dl></div><div class='xr-var-data'><pre>[1 values with dtype=int64]</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>time</span></div><div class='xr-var-dims'>(time)</div><div class='xr-var-dtype'>datetime64[ns]</div><div class='xr-var-preview xr-preview'>2015-01-15 ... 2024-06-30T23:00:00</div><input id='attrs-71955d28-00eb-41cf-a296-a8b414dd95cb' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-71955d28-00eb-41cf-a296-a8b414dd95cb' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-e55c95c5-13a6-42f7-b19e-83ca78488db2' class='xr-var-data-in' type='checkbox'><label for='data-e55c95c5-13a6-42f7-b19e-83ca78488db2' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>long_name :</span></dt><dd>Time</dd><dt><span>statistics_approximate :</span></dt><dd>{'max': '2024-06-30 23:00:00 UTC', 'mean': '2019-10-08 11:30:00 UTC', 'min': '2015-01-15 00:00:00 UTC'}</dd></dl></div><div class='xr-var-data'><pre>array(['2015-01-15T00:00:00.000000000', '2015-01-15T01:00:00.000000000',\n", | |
| " '2015-01-15T02:00:00.000000000', ..., '2024-06-30T21:00:00.000000000',\n", | |
| " '2024-06-30T22:00:00.000000000', '2024-06-30T23:00:00.000000000'],\n", | |
| " shape=(82920,), dtype='datetime64[ns]')</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-841e3212-678f-4b8f-815e-f1f6bc16a299' class='xr-section-summary-in' type='checkbox' checked><label for='section-841e3212-678f-4b8f-815e-f1f6bc16a299' class='xr-section-summary' >Data variables: <span>(4)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-var-name'><span>precipitation_surface</span></div><div class='xr-var-dims'>(time, latitude, longitude)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>dask.array<chunksize=(160, 145, 144), meta=np.ndarray></div><input id='attrs-516aae84-f993-4089-8bed-5d530ae1cb67' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-516aae84-f993-4089-8bed-5d530ae1cb67' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-1a24f0a6-97f7-4799-a4f7-8140434e4ee9' class='xr-var-data-in' type='checkbox'><label for='data-1a24f0a6-97f7-4799-a4f7-8140434e4ee9' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>grid_mapping :</span></dt><dd>spatial_ref</dd><dt><span>long_name :</span></dt><dd>Precipitation rate at earth surface</dd><dt><span>statistics_approximate :</span></dt><dd>{'max': 0.04474, 'mean': 2.911e-05, 'min': 0.0}</dd><dt><span>units :</span></dt><dd>kg/(m^2 s)</dd></dl></div><div class='xr-var-data'><table>\n", | |
| " <tr>\n", | |
| " <td>\n", | |
| " <table style=\"border-collapse: collapse;\">\n", | |
| " <thead>\n", | |
| " <tr>\n", | |
| " <td> </td>\n", | |
| " <th> Array </th>\n", | |
| " <th> Chunk </th>\n", | |
| " </tr>\n", | |
| " </thead>\n", | |
| " <tbody>\n", | |
| " \n", | |
| " <tr>\n", | |
| " <th> Bytes </th>\n", | |
| " <td> 320.71 GiB </td>\n", | |
| " <td> 12.74 MiB </td>\n", | |
| " </tr>\n", | |
| " \n", | |
| " <tr>\n", | |
| " <th> Shape </th>\n", | |
| " <td> (82920, 721, 1440) </td>\n", | |
| " <td> (160, 145, 144) </td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th> Dask graph </th>\n", | |
| " <td colspan=\"2\"> 25950 chunks in 2 graph layers </td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th> Data type </th>\n", | |
| " <td colspan=\"2\"> float32 numpy.ndarray </td>\n", | |
| " </tr>\n", | |
| " </tbody>\n", | |
| " </table>\n", | |
| " </td>\n", | |
| " <td>\n", | |
| " <svg width=\"158\" height=\"146\" style=\"stroke:rgb(0,0,0);stroke-width:1\" >\n", | |
| "\n", | |
| " <!-- Horizontal lines -->\n", | |
| " <line x1=\"10\" y1=\"0\" x2=\"80\" y2=\"70\" style=\"stroke-width:2\" />\n", | |
| " <line x1=\"10\" y1=\"5\" x2=\"80\" y2=\"75\" />\n", | |
| " <line x1=\"10\" y1=\"10\" x2=\"80\" y2=\"80\" />\n", | |
| " <line x1=\"10\" y1=\"15\" x2=\"80\" y2=\"85\" />\n", | |
| " <line x1=\"10\" y1=\"20\" x2=\"80\" y2=\"91\" />\n", | |
| " <line x1=\"10\" y1=\"25\" x2=\"80\" y2=\"96\" style=\"stroke-width:2\" />\n", | |
| "\n", | |
| " <!-- Vertical lines -->\n", | |
| " <line x1=\"10\" y1=\"0\" x2=\"10\" y2=\"25\" style=\"stroke-width:2\" />\n", | |
| " <line x1=\"13\" y1=\"3\" x2=\"13\" y2=\"29\" />\n", | |
| " <line x1=\"17\" y1=\"7\" x2=\"17\" y2=\"32\" />\n", | |
| " <line x1=\"21\" y1=\"11\" x2=\"21\" y2=\"36\" />\n", | |
| " <line x1=\"24\" y1=\"14\" x2=\"24\" y2=\"40\" />\n", | |
| " <line x1=\"28\" y1=\"18\" x2=\"28\" y2=\"43\" />\n", | |
| " <line x1=\"32\" y1=\"22\" x2=\"32\" y2=\"47\" />\n", | |
| " <line x1=\"36\" y1=\"26\" x2=\"36\" y2=\"51\" />\n", | |
| " <line x1=\"39\" y1=\"29\" x2=\"39\" y2=\"55\" />\n", | |
| " <line x1=\"43\" y1=\"33\" x2=\"43\" y2=\"58\" />\n", | |
| " <line x1=\"47\" y1=\"37\" x2=\"47\" y2=\"62\" />\n", | |
| " <line x1=\"50\" y1=\"40\" x2=\"50\" y2=\"66\" />\n", | |
| " <line x1=\"54\" y1=\"44\" x2=\"54\" y2=\"69\" />\n", | |
| " <line x1=\"58\" y1=\"48\" x2=\"58\" y2=\"73\" />\n", | |
| " <line x1=\"62\" y1=\"52\" x2=\"62\" y2=\"77\" />\n", | |
| " <line x1=\"65\" y1=\"55\" x2=\"65\" y2=\"81\" />\n", | |
| " <line x1=\"69\" y1=\"59\" x2=\"69\" y2=\"84\" />\n", | |
| " <line x1=\"73\" y1=\"63\" x2=\"73\" y2=\"88\" />\n", | |
| " <line x1=\"76\" y1=\"66\" x2=\"76\" y2=\"92\" />\n", | |
| " <line x1=\"80\" y1=\"70\" x2=\"80\" y2=\"96\" style=\"stroke-width:2\" />\n", | |
| "\n", | |
| " <!-- Colored Rectangle -->\n", | |
| " <polygon points=\"10.0,0.0 80.58823529411765,70.58823529411765 80.58823529411765,96.00085180870013 10.0,25.41261651458249\" style=\"fill:#8B4903A0;stroke-width:0\"/>\n", | |
| "\n", | |
| " <!-- Horizontal lines -->\n", | |
| " <line x1=\"10\" y1=\"0\" x2=\"38\" y2=\"0\" style=\"stroke-width:2\" />\n", | |
| " <line x1=\"13\" y1=\"3\" x2=\"41\" y2=\"3\" />\n", | |
| " <line x1=\"17\" y1=\"7\" x2=\"45\" y2=\"7\" />\n", | |
| " <line x1=\"21\" y1=\"11\" x2=\"49\" y2=\"11\" />\n", | |
| " <line x1=\"24\" y1=\"14\" x2=\"53\" y2=\"14\" />\n", | |
| " <line x1=\"28\" y1=\"18\" x2=\"56\" y2=\"18\" />\n", | |
| " <line x1=\"32\" y1=\"22\" x2=\"60\" y2=\"22\" />\n", | |
| " <line x1=\"36\" y1=\"26\" x2=\"64\" y2=\"26\" />\n", | |
| " <line x1=\"39\" y1=\"29\" x2=\"67\" y2=\"29\" />\n", | |
| " <line x1=\"43\" y1=\"33\" x2=\"71\" y2=\"33\" />\n", | |
| " <line x1=\"47\" y1=\"37\" x2=\"75\" y2=\"37\" />\n", | |
| " <line x1=\"50\" y1=\"40\" x2=\"79\" y2=\"40\" />\n", | |
| " <line x1=\"54\" y1=\"44\" x2=\"82\" y2=\"44\" />\n", | |
| " <line x1=\"58\" y1=\"48\" x2=\"86\" y2=\"48\" />\n", | |
| " <line x1=\"62\" y1=\"52\" x2=\"90\" y2=\"52\" />\n", | |
| " <line x1=\"65\" y1=\"55\" x2=\"93\" y2=\"55\" />\n", | |
| " <line x1=\"69\" y1=\"59\" x2=\"97\" y2=\"59\" />\n", | |
| " <line x1=\"73\" y1=\"63\" x2=\"101\" y2=\"63\" />\n", | |
| " <line x1=\"76\" y1=\"66\" x2=\"105\" y2=\"66\" />\n", | |
| " <line x1=\"80\" y1=\"70\" x2=\"108\" y2=\"70\" style=\"stroke-width:2\" />\n", | |
| "\n", | |
| " <!-- Vertical lines -->\n", | |
| " <line x1=\"10\" y1=\"0\" x2=\"80\" y2=\"70\" style=\"stroke-width:2\" />\n", | |
| " <line x1=\"12\" y1=\"0\" x2=\"83\" y2=\"70\" />\n", | |
| " <line x1=\"15\" y1=\"0\" x2=\"86\" y2=\"70\" />\n", | |
| " <line x1=\"18\" y1=\"0\" x2=\"89\" y2=\"70\" />\n", | |
| " <line x1=\"21\" y1=\"0\" x2=\"91\" y2=\"70\" />\n", | |
| " <line x1=\"24\" y1=\"0\" x2=\"94\" y2=\"70\" />\n", | |
| " <line x1=\"26\" y1=\"0\" x2=\"97\" y2=\"70\" />\n", | |
| " <line x1=\"29\" y1=\"0\" x2=\"100\" y2=\"70\" />\n", | |
| " <line x1=\"32\" y1=\"0\" x2=\"103\" y2=\"70\" />\n", | |
| " <line x1=\"35\" y1=\"0\" x2=\"106\" y2=\"70\" />\n", | |
| " <line x1=\"38\" y1=\"0\" x2=\"108\" y2=\"70\" style=\"stroke-width:2\" />\n", | |
| "\n", | |
| " <!-- Colored Rectangle -->\n", | |
| " <polygon points=\"10.0,0.0 38.24687787339978,0.0 108.83511316751743,70.58823529411765 80.58823529411765,70.58823529411765\" style=\"fill:#8B4903A0;stroke-width:0\"/>\n", | |
| "\n", | |
| " <!-- Horizontal lines -->\n", | |
| " <line x1=\"80\" y1=\"70\" x2=\"108\" y2=\"70\" style=\"stroke-width:2\" />\n", | |
| " <line x1=\"80\" y1=\"75\" x2=\"108\" y2=\"75\" />\n", | |
| " <line x1=\"80\" y1=\"80\" x2=\"108\" y2=\"80\" />\n", | |
| " <line x1=\"80\" y1=\"85\" x2=\"108\" y2=\"85\" />\n", | |
| " <line x1=\"80\" y1=\"91\" x2=\"108\" y2=\"91\" />\n", | |
| " <line x1=\"80\" y1=\"96\" x2=\"108\" y2=\"96\" style=\"stroke-width:2\" />\n", | |
| "\n", | |
| " <!-- Vertical lines -->\n", | |
| " <line x1=\"80\" y1=\"70\" x2=\"80\" y2=\"96\" style=\"stroke-width:2\" />\n", | |
| " <line x1=\"83\" y1=\"70\" x2=\"83\" y2=\"96\" />\n", | |
| " <line x1=\"86\" y1=\"70\" x2=\"86\" y2=\"96\" />\n", | |
| " <line x1=\"89\" y1=\"70\" x2=\"89\" y2=\"96\" />\n", | |
| " <line x1=\"91\" y1=\"70\" x2=\"91\" y2=\"96\" />\n", | |
| " <line x1=\"94\" y1=\"70\" x2=\"94\" y2=\"96\" />\n", | |
| " <line x1=\"97\" y1=\"70\" x2=\"97\" y2=\"96\" />\n", | |
| " <line x1=\"100\" y1=\"70\" x2=\"100\" y2=\"96\" />\n", | |
| " <line x1=\"103\" y1=\"70\" x2=\"103\" y2=\"96\" />\n", | |
| " <line x1=\"106\" y1=\"70\" x2=\"106\" y2=\"96\" />\n", | |
| " <line x1=\"108\" y1=\"70\" x2=\"108\" y2=\"96\" style=\"stroke-width:2\" />\n", | |
| "\n", | |
| " <!-- Colored Rectangle -->\n", | |
| " <polygon points=\"80.58823529411765,70.58823529411765 108.83511316751743,70.58823529411765 108.83511316751743,96.00085180870013 80.58823529411765,96.00085180870013\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n", | |
| "\n", | |
| " <!-- Text -->\n", | |
| " <text x=\"94.711674\" y=\"116.000852\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" >1440</text>\n", | |
| " <text x=\"128.835113\" y=\"83.294544\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(-90,128.835113,83.294544)\">721</text>\n", | |
| " <text x=\"35.294118\" y=\"80.706734\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(45,35.294118,80.706734)\">82920</text>\n", | |
| "</svg>\n", | |
| " </td>\n", | |
| " </tr>\n", | |
| "</table></div></li><li class='xr-var-item'><div class='xr-var-name'><span>temperature_2m</span></div><div class='xr-var-dims'>(time, latitude, longitude)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>dask.array<chunksize=(160, 145, 144), meta=np.ndarray></div><input id='attrs-5209fa82-eda7-4789-9bf8-53e9f2c2261b' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-5209fa82-eda7-4789-9bf8-53e9f2c2261b' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-818c34a2-e290-4685-8970-0a8eb9696145' class='xr-var-data-in' type='checkbox'><label for='data-818c34a2-e290-4685-8970-0a8eb9696145' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>grid_mapping :</span></dt><dd>spatial_ref</dd><dt><span>long_name :</span></dt><dd>Temperature 2 meters above earth surface</dd><dt><span>statistics_approximate :</span></dt><dd>{'max': 53.25, 'mean': 6.041, 'min': -79.5}</dd><dt><span>units :</span></dt><dd>C</dd></dl></div><div class='xr-var-data'><table>\n", | |
| " <tr>\n", | |
| " <td>\n", | |
| " <table style=\"border-collapse: collapse;\">\n", | |
| " <thead>\n", | |
| " <tr>\n", | |
| " <td> </td>\n", | |
| " <th> Array </th>\n", | |
| " <th> Chunk </th>\n", | |
| " </tr>\n", | |
| " </thead>\n", | |
| " <tbody>\n", | |
| " \n", | |
| " <tr>\n", | |
| " <th> Bytes </th>\n", | |
| " <td> 320.71 GiB </td>\n", | |
| " <td> 12.74 MiB </td>\n", | |
| " </tr>\n", | |
| " \n", | |
| " <tr>\n", | |
| " <th> Shape </th>\n", | |
| " <td> (82920, 721, 1440) </td>\n", | |
| " <td> (160, 145, 144) </td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th> Dask graph </th>\n", | |
| " <td colspan=\"2\"> 25950 chunks in 2 graph layers </td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th> Data type </th>\n", | |
| " <td colspan=\"2\"> float32 numpy.ndarray </td>\n", | |
| " </tr>\n", | |
| " </tbody>\n", | |
| " </table>\n", | |
| " </td>\n", | |
| " <td>\n", | |
| " <svg width=\"158\" height=\"146\" style=\"stroke:rgb(0,0,0);stroke-width:1\" >\n", | |
| "\n", | |
| " <!-- Horizontal lines -->\n", | |
| " <line x1=\"10\" y1=\"0\" x2=\"80\" y2=\"70\" style=\"stroke-width:2\" />\n", | |
| " <line x1=\"10\" y1=\"5\" x2=\"80\" y2=\"75\" />\n", | |
| " <line x1=\"10\" y1=\"10\" x2=\"80\" y2=\"80\" />\n", | |
| " <line x1=\"10\" y1=\"15\" x2=\"80\" y2=\"85\" />\n", | |
| " <line x1=\"10\" y1=\"20\" x2=\"80\" y2=\"91\" />\n", | |
| " <line x1=\"10\" y1=\"25\" x2=\"80\" y2=\"96\" style=\"stroke-width:2\" />\n", | |
| "\n", | |
| " <!-- Vertical lines -->\n", | |
| " <line x1=\"10\" y1=\"0\" x2=\"10\" y2=\"25\" style=\"stroke-width:2\" />\n", | |
| " <line x1=\"13\" y1=\"3\" x2=\"13\" y2=\"29\" />\n", | |
| " <line x1=\"17\" y1=\"7\" x2=\"17\" y2=\"32\" />\n", | |
| " <line x1=\"21\" y1=\"11\" x2=\"21\" y2=\"36\" />\n", | |
| " <line x1=\"24\" y1=\"14\" x2=\"24\" y2=\"40\" />\n", | |
| " <line x1=\"28\" y1=\"18\" x2=\"28\" y2=\"43\" />\n", | |
| " <line x1=\"32\" y1=\"22\" x2=\"32\" y2=\"47\" />\n", | |
| " <line x1=\"36\" y1=\"26\" x2=\"36\" y2=\"51\" />\n", | |
| " <line x1=\"39\" y1=\"29\" x2=\"39\" y2=\"55\" />\n", | |
| " <line x1=\"43\" y1=\"33\" x2=\"43\" y2=\"58\" />\n", | |
| " <line x1=\"47\" y1=\"37\" x2=\"47\" y2=\"62\" />\n", | |
| " <line x1=\"50\" y1=\"40\" x2=\"50\" y2=\"66\" />\n", | |
| " <line x1=\"54\" y1=\"44\" x2=\"54\" y2=\"69\" />\n", | |
| " <line x1=\"58\" y1=\"48\" x2=\"58\" y2=\"73\" />\n", | |
| " <line x1=\"62\" y1=\"52\" x2=\"62\" y2=\"77\" />\n", | |
| " <line x1=\"65\" y1=\"55\" x2=\"65\" y2=\"81\" />\n", | |
| " <line x1=\"69\" y1=\"59\" x2=\"69\" y2=\"84\" />\n", | |
| " <line x1=\"73\" y1=\"63\" x2=\"73\" y2=\"88\" />\n", | |
| " <line x1=\"76\" y1=\"66\" x2=\"76\" y2=\"92\" />\n", | |
| " <line x1=\"80\" y1=\"70\" x2=\"80\" y2=\"96\" style=\"stroke-width:2\" />\n", | |
| "\n", | |
| " <!-- Colored Rectangle -->\n", | |
| " <polygon points=\"10.0,0.0 80.58823529411765,70.58823529411765 80.58823529411765,96.00085180870013 10.0,25.41261651458249\" style=\"fill:#8B4903A0;stroke-width:0\"/>\n", | |
| "\n", | |
| " <!-- Horizontal lines -->\n", | |
| " <line x1=\"10\" y1=\"0\" x2=\"38\" y2=\"0\" style=\"stroke-width:2\" />\n", | |
| " <line x1=\"13\" y1=\"3\" x2=\"41\" y2=\"3\" />\n", | |
| " <line x1=\"17\" y1=\"7\" x2=\"45\" y2=\"7\" />\n", | |
| " <line x1=\"21\" y1=\"11\" x2=\"49\" y2=\"11\" />\n", | |
| " <line x1=\"24\" y1=\"14\" x2=\"53\" y2=\"14\" />\n", | |
| " <line x1=\"28\" y1=\"18\" x2=\"56\" y2=\"18\" />\n", | |
| " <line x1=\"32\" y1=\"22\" x2=\"60\" y2=\"22\" />\n", | |
| " <line x1=\"36\" y1=\"26\" x2=\"64\" y2=\"26\" />\n", | |
| " <line x1=\"39\" y1=\"29\" x2=\"67\" y2=\"29\" />\n", | |
| " <line x1=\"43\" y1=\"33\" x2=\"71\" y2=\"33\" />\n", | |
| " <line x1=\"47\" y1=\"37\" x2=\"75\" y2=\"37\" />\n", | |
| " <line x1=\"50\" y1=\"40\" x2=\"79\" y2=\"40\" />\n", | |
| " <line x1=\"54\" y1=\"44\" x2=\"82\" y2=\"44\" />\n", | |
| " <line x1=\"58\" y1=\"48\" x2=\"86\" y2=\"48\" />\n", | |
| " <line x1=\"62\" y1=\"52\" x2=\"90\" y2=\"52\" />\n", | |
| " <line x1=\"65\" y1=\"55\" x2=\"93\" y2=\"55\" />\n", | |
| " <line x1=\"69\" y1=\"59\" x2=\"97\" y2=\"59\" />\n", | |
| " <line x1=\"73\" y1=\"63\" x2=\"101\" y2=\"63\" />\n", | |
| " <line x1=\"76\" y1=\"66\" x2=\"105\" y2=\"66\" />\n", | |
| " <line x1=\"80\" y1=\"70\" x2=\"108\" y2=\"70\" style=\"stroke-width:2\" />\n", | |
| "\n", | |
| " <!-- Vertical lines -->\n", | |
| " <line x1=\"10\" y1=\"0\" x2=\"80\" y2=\"70\" style=\"stroke-width:2\" />\n", | |
| " <line x1=\"12\" y1=\"0\" x2=\"83\" y2=\"70\" />\n", | |
| " <line x1=\"15\" y1=\"0\" x2=\"86\" y2=\"70\" />\n", | |
| " <line x1=\"18\" y1=\"0\" x2=\"89\" y2=\"70\" />\n", | |
| " <line x1=\"21\" y1=\"0\" x2=\"91\" y2=\"70\" />\n", | |
| " <line x1=\"24\" y1=\"0\" x2=\"94\" y2=\"70\" />\n", | |
| " <line x1=\"26\" y1=\"0\" x2=\"97\" y2=\"70\" />\n", | |
| " <line x1=\"29\" y1=\"0\" x2=\"100\" y2=\"70\" />\n", | |
| " <line x1=\"32\" y1=\"0\" x2=\"103\" y2=\"70\" />\n", | |
| " <line x1=\"35\" y1=\"0\" x2=\"106\" y2=\"70\" />\n", | |
| " <line x1=\"38\" y1=\"0\" x2=\"108\" y2=\"70\" style=\"stroke-width:2\" />\n", | |
| "\n", | |
| " <!-- Colored Rectangle -->\n", | |
| " <polygon points=\"10.0,0.0 38.24687787339978,0.0 108.83511316751743,70.58823529411765 80.58823529411765,70.58823529411765\" style=\"fill:#8B4903A0;stroke-width:0\"/>\n", | |
| "\n", | |
| " <!-- Horizontal lines -->\n", | |
| " <line x1=\"80\" y1=\"70\" x2=\"108\" y2=\"70\" style=\"stroke-width:2\" />\n", | |
| " <line x1=\"80\" y1=\"75\" x2=\"108\" y2=\"75\" />\n", | |
| " <line x1=\"80\" y1=\"80\" x2=\"108\" y2=\"80\" />\n", | |
| " <line x1=\"80\" y1=\"85\" x2=\"108\" y2=\"85\" />\n", | |
| " <line x1=\"80\" y1=\"91\" x2=\"108\" y2=\"91\" />\n", | |
| " <line x1=\"80\" y1=\"96\" x2=\"108\" y2=\"96\" style=\"stroke-width:2\" />\n", | |
| "\n", | |
| " <!-- Vertical lines -->\n", | |
| " <line x1=\"80\" y1=\"70\" x2=\"80\" y2=\"96\" style=\"stroke-width:2\" />\n", | |
| " <line x1=\"83\" y1=\"70\" x2=\"83\" y2=\"96\" />\n", | |
| " <line x1=\"86\" y1=\"70\" x2=\"86\" y2=\"96\" />\n", | |
| " <line x1=\"89\" y1=\"70\" x2=\"89\" y2=\"96\" />\n", | |
| " <line x1=\"91\" y1=\"70\" x2=\"91\" y2=\"96\" />\n", | |
| " <line x1=\"94\" y1=\"70\" x2=\"94\" y2=\"96\" />\n", | |
| " <line x1=\"97\" y1=\"70\" x2=\"97\" y2=\"96\" />\n", | |
| " <line x1=\"100\" y1=\"70\" x2=\"100\" y2=\"96\" />\n", | |
| " <line x1=\"103\" y1=\"70\" x2=\"103\" y2=\"96\" />\n", | |
| " <line x1=\"106\" y1=\"70\" x2=\"106\" y2=\"96\" />\n", | |
| " <line x1=\"108\" y1=\"70\" x2=\"108\" y2=\"96\" style=\"stroke-width:2\" />\n", | |
| "\n", | |
| " <!-- Colored Rectangle -->\n", | |
| " <polygon points=\"80.58823529411765,70.58823529411765 108.83511316751743,70.58823529411765 108.83511316751743,96.00085180870013 80.58823529411765,96.00085180870013\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n", | |
| "\n", | |
| " <!-- Text -->\n", | |
| " <text x=\"94.711674\" y=\"116.000852\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" >1440</text>\n", | |
| " <text x=\"128.835113\" y=\"83.294544\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(-90,128.835113,83.294544)\">721</text>\n", | |
| " <text x=\"35.294118\" y=\"80.706734\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(45,35.294118,80.706734)\">82920</text>\n", | |
| "</svg>\n", | |
| " </td>\n", | |
| " </tr>\n", | |
| "</table></div></li><li class='xr-var-item'><div class='xr-var-name'><span>wind_u_10m</span></div><div class='xr-var-dims'>(time, latitude, longitude)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>dask.array<chunksize=(160, 145, 144), meta=np.ndarray></div><input id='attrs-2bf3e02d-bebf-4fea-a98c-973274d1fcba' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-2bf3e02d-bebf-4fea-a98c-973274d1fcba' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-26be91f5-1026-405f-94a1-a6a752eeb1e0' class='xr-var-data-in' type='checkbox'><label for='data-26be91f5-1026-405f-94a1-a6a752eeb1e0' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>grid_mapping :</span></dt><dd>spatial_ref</dd><dt><span>long_name :</span></dt><dd>Wind speed u-component 10 meters above earth surface</dd><dt><span>statistics_approximate :</span></dt><dd>{'max': 87.5, 'mean': -0.00644, 'min': -96.88}</dd><dt><span>units :</span></dt><dd>m/s</dd></dl></div><div class='xr-var-data'><table>\n", | |
| " <tr>\n", | |
| " <td>\n", | |
| " <table style=\"border-collapse: collapse;\">\n", | |
| " <thead>\n", | |
| " <tr>\n", | |
| " <td> </td>\n", | |
| " <th> Array </th>\n", | |
| " <th> Chunk </th>\n", | |
| " </tr>\n", | |
| " </thead>\n", | |
| " <tbody>\n", | |
| " \n", | |
| " <tr>\n", | |
| " <th> Bytes </th>\n", | |
| " <td> 320.71 GiB </td>\n", | |
| " <td> 12.74 MiB </td>\n", | |
| " </tr>\n", | |
| " \n", | |
| " <tr>\n", | |
| " <th> Shape </th>\n", | |
| " <td> (82920, 721, 1440) </td>\n", | |
| " <td> (160, 145, 144) </td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th> Dask graph </th>\n", | |
| " <td colspan=\"2\"> 25950 chunks in 2 graph layers </td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th> Data type </th>\n", | |
| " <td colspan=\"2\"> float32 numpy.ndarray </td>\n", | |
| " </tr>\n", | |
| " </tbody>\n", | |
| " </table>\n", | |
| " </td>\n", | |
| " <td>\n", | |
| " <svg width=\"158\" height=\"146\" style=\"stroke:rgb(0,0,0);stroke-width:1\" >\n", | |
| "\n", | |
| " <!-- Horizontal lines -->\n", | |
| " <line x1=\"10\" y1=\"0\" x2=\"80\" y2=\"70\" style=\"stroke-width:2\" />\n", | |
| " <line x1=\"10\" y1=\"5\" x2=\"80\" y2=\"75\" />\n", | |
| " <line x1=\"10\" y1=\"10\" x2=\"80\" y2=\"80\" />\n", | |
| " <line x1=\"10\" y1=\"15\" x2=\"80\" y2=\"85\" />\n", | |
| " <line x1=\"10\" y1=\"20\" x2=\"80\" y2=\"91\" />\n", | |
| " <line x1=\"10\" y1=\"25\" x2=\"80\" y2=\"96\" style=\"stroke-width:2\" />\n", | |
| "\n", | |
| " <!-- Vertical lines -->\n", | |
| " <line x1=\"10\" y1=\"0\" x2=\"10\" y2=\"25\" style=\"stroke-width:2\" />\n", | |
| " <line x1=\"13\" y1=\"3\" x2=\"13\" y2=\"29\" />\n", | |
| " <line x1=\"17\" y1=\"7\" x2=\"17\" y2=\"32\" />\n", | |
| " <line x1=\"21\" y1=\"11\" x2=\"21\" y2=\"36\" />\n", | |
| " <line x1=\"24\" y1=\"14\" x2=\"24\" y2=\"40\" />\n", | |
| " <line x1=\"28\" y1=\"18\" x2=\"28\" y2=\"43\" />\n", | |
| " <line x1=\"32\" y1=\"22\" x2=\"32\" y2=\"47\" />\n", | |
| " <line x1=\"36\" y1=\"26\" x2=\"36\" y2=\"51\" />\n", | |
| " <line x1=\"39\" y1=\"29\" x2=\"39\" y2=\"55\" />\n", | |
| " <line x1=\"43\" y1=\"33\" x2=\"43\" y2=\"58\" />\n", | |
| " <line x1=\"47\" y1=\"37\" x2=\"47\" y2=\"62\" />\n", | |
| " <line x1=\"50\" y1=\"40\" x2=\"50\" y2=\"66\" />\n", | |
| " <line x1=\"54\" y1=\"44\" x2=\"54\" y2=\"69\" />\n", | |
| " <line x1=\"58\" y1=\"48\" x2=\"58\" y2=\"73\" />\n", | |
| " <line x1=\"62\" y1=\"52\" x2=\"62\" y2=\"77\" />\n", | |
| " <line x1=\"65\" y1=\"55\" x2=\"65\" y2=\"81\" />\n", | |
| " <line x1=\"69\" y1=\"59\" x2=\"69\" y2=\"84\" />\n", | |
| " <line x1=\"73\" y1=\"63\" x2=\"73\" y2=\"88\" />\n", | |
| " <line x1=\"76\" y1=\"66\" x2=\"76\" y2=\"92\" />\n", | |
| " <line x1=\"80\" y1=\"70\" x2=\"80\" y2=\"96\" style=\"stroke-width:2\" />\n", | |
| "\n", | |
| " <!-- Colored Rectangle -->\n", | |
| " <polygon points=\"10.0,0.0 80.58823529411765,70.58823529411765 80.58823529411765,96.00085180870013 10.0,25.41261651458249\" style=\"fill:#8B4903A0;stroke-width:0\"/>\n", | |
| "\n", | |
| " <!-- Horizontal lines -->\n", | |
| " <line x1=\"10\" y1=\"0\" x2=\"38\" y2=\"0\" style=\"stroke-width:2\" />\n", | |
| " <line x1=\"13\" y1=\"3\" x2=\"41\" y2=\"3\" />\n", | |
| " <line x1=\"17\" y1=\"7\" x2=\"45\" y2=\"7\" />\n", | |
| " <line x1=\"21\" y1=\"11\" x2=\"49\" y2=\"11\" />\n", | |
| " <line x1=\"24\" y1=\"14\" x2=\"53\" y2=\"14\" />\n", | |
| " <line x1=\"28\" y1=\"18\" x2=\"56\" y2=\"18\" />\n", | |
| " <line x1=\"32\" y1=\"22\" x2=\"60\" y2=\"22\" />\n", | |
| " <line x1=\"36\" y1=\"26\" x2=\"64\" y2=\"26\" />\n", | |
| " <line x1=\"39\" y1=\"29\" x2=\"67\" y2=\"29\" />\n", | |
| " <line x1=\"43\" y1=\"33\" x2=\"71\" y2=\"33\" />\n", | |
| " <line x1=\"47\" y1=\"37\" x2=\"75\" y2=\"37\" />\n", | |
| " <line x1=\"50\" y1=\"40\" x2=\"79\" y2=\"40\" />\n", | |
| " <line x1=\"54\" y1=\"44\" x2=\"82\" y2=\"44\" />\n", | |
| " <line x1=\"58\" y1=\"48\" x2=\"86\" y2=\"48\" />\n", | |
| " <line x1=\"62\" y1=\"52\" x2=\"90\" y2=\"52\" />\n", | |
| " <line x1=\"65\" y1=\"55\" x2=\"93\" y2=\"55\" />\n", | |
| " <line x1=\"69\" y1=\"59\" x2=\"97\" y2=\"59\" />\n", | |
| " <line x1=\"73\" y1=\"63\" x2=\"101\" y2=\"63\" />\n", | |
| " <line x1=\"76\" y1=\"66\" x2=\"105\" y2=\"66\" />\n", | |
| " <line x1=\"80\" y1=\"70\" x2=\"108\" y2=\"70\" style=\"stroke-width:2\" />\n", | |
| "\n", | |
| " <!-- Vertical lines -->\n", | |
| " <line x1=\"10\" y1=\"0\" x2=\"80\" y2=\"70\" style=\"stroke-width:2\" />\n", | |
| " <line x1=\"12\" y1=\"0\" x2=\"83\" y2=\"70\" />\n", | |
| " <line x1=\"15\" y1=\"0\" x2=\"86\" y2=\"70\" />\n", | |
| " <line x1=\"18\" y1=\"0\" x2=\"89\" y2=\"70\" />\n", | |
| " <line x1=\"21\" y1=\"0\" x2=\"91\" y2=\"70\" />\n", | |
| " <line x1=\"24\" y1=\"0\" x2=\"94\" y2=\"70\" />\n", | |
| " <line x1=\"26\" y1=\"0\" x2=\"97\" y2=\"70\" />\n", | |
| " <line x1=\"29\" y1=\"0\" x2=\"100\" y2=\"70\" />\n", | |
| " <line x1=\"32\" y1=\"0\" x2=\"103\" y2=\"70\" />\n", | |
| " <line x1=\"35\" y1=\"0\" x2=\"106\" y2=\"70\" />\n", | |
| " <line x1=\"38\" y1=\"0\" x2=\"108\" y2=\"70\" style=\"stroke-width:2\" />\n", | |
| "\n", | |
| " <!-- Colored Rectangle -->\n", | |
| " <polygon points=\"10.0,0.0 38.24687787339978,0.0 108.83511316751743,70.58823529411765 80.58823529411765,70.58823529411765\" style=\"fill:#8B4903A0;stroke-width:0\"/>\n", | |
| "\n", | |
| " <!-- Horizontal lines -->\n", | |
| " <line x1=\"80\" y1=\"70\" x2=\"108\" y2=\"70\" style=\"stroke-width:2\" />\n", | |
| " <line x1=\"80\" y1=\"75\" x2=\"108\" y2=\"75\" />\n", | |
| " <line x1=\"80\" y1=\"80\" x2=\"108\" y2=\"80\" />\n", | |
| " <line x1=\"80\" y1=\"85\" x2=\"108\" y2=\"85\" />\n", | |
| " <line x1=\"80\" y1=\"91\" x2=\"108\" y2=\"91\" />\n", | |
| " <line x1=\"80\" y1=\"96\" x2=\"108\" y2=\"96\" style=\"stroke-width:2\" />\n", | |
| "\n", | |
| " <!-- Vertical lines -->\n", | |
| " <line x1=\"80\" y1=\"70\" x2=\"80\" y2=\"96\" style=\"stroke-width:2\" />\n", | |
| " <line x1=\"83\" y1=\"70\" x2=\"83\" y2=\"96\" />\n", | |
| " <line x1=\"86\" y1=\"70\" x2=\"86\" y2=\"96\" />\n", | |
| " <line x1=\"89\" y1=\"70\" x2=\"89\" y2=\"96\" />\n", | |
| " <line x1=\"91\" y1=\"70\" x2=\"91\" y2=\"96\" />\n", | |
| " <line x1=\"94\" y1=\"70\" x2=\"94\" y2=\"96\" />\n", | |
| " <line x1=\"97\" y1=\"70\" x2=\"97\" y2=\"96\" />\n", | |
| " <line x1=\"100\" y1=\"70\" x2=\"100\" y2=\"96\" />\n", | |
| " <line x1=\"103\" y1=\"70\" x2=\"103\" y2=\"96\" />\n", | |
| " <line x1=\"106\" y1=\"70\" x2=\"106\" y2=\"96\" />\n", | |
| " <line x1=\"108\" y1=\"70\" x2=\"108\" y2=\"96\" style=\"stroke-width:2\" />\n", | |
| "\n", | |
| " <!-- Colored Rectangle -->\n", | |
| " <polygon points=\"80.58823529411765,70.58823529411765 108.83511316751743,70.58823529411765 108.83511316751743,96.00085180870013 80.58823529411765,96.00085180870013\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n", | |
| "\n", | |
| " <!-- Text -->\n", | |
| " <text x=\"94.711674\" y=\"116.000852\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" >1440</text>\n", | |
| " <text x=\"128.835113\" y=\"83.294544\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(-90,128.835113,83.294544)\">721</text>\n", | |
| " <text x=\"35.294118\" y=\"80.706734\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(45,35.294118,80.706734)\">82920</text>\n", | |
| "</svg>\n", | |
| " </td>\n", | |
| " </tr>\n", | |
| "</table></div></li><li class='xr-var-item'><div class='xr-var-name'><span>wind_v_10m</span></div><div class='xr-var-dims'>(time, latitude, longitude)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>dask.array<chunksize=(160, 145, 144), meta=np.ndarray></div><input id='attrs-24586594-de31-4b13-aa7f-6f8039bcd308' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-24586594-de31-4b13-aa7f-6f8039bcd308' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-f2449ed3-3ab3-4f4a-9d53-1a04921240c0' class='xr-var-data-in' type='checkbox'><label for='data-f2449ed3-3ab3-4f4a-9d53-1a04921240c0' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>grid_mapping :</span></dt><dd>spatial_ref</dd><dt><span>long_name :</span></dt><dd>Wind speed v-component 10 meters above earth surface</dd><dt><span>statistics_approximate :</span></dt><dd>{'max': 89.0, 'mean': 0.1571, 'min': -87.88}</dd><dt><span>units :</span></dt><dd>m/s</dd></dl></div><div class='xr-var-data'><table>\n", | |
| " <tr>\n", | |
| " <td>\n", | |
| " <table style=\"border-collapse: collapse;\">\n", | |
| " <thead>\n", | |
| " <tr>\n", | |
| " <td> </td>\n", | |
| " <th> Array </th>\n", | |
| " <th> Chunk </th>\n", | |
| " </tr>\n", | |
| " </thead>\n", | |
| " <tbody>\n", | |
| " \n", | |
| " <tr>\n", | |
| " <th> Bytes </th>\n", | |
| " <td> 320.71 GiB </td>\n", | |
| " <td> 12.74 MiB </td>\n", | |
| " </tr>\n", | |
| " \n", | |
| " <tr>\n", | |
| " <th> Shape </th>\n", | |
| " <td> (82920, 721, 1440) </td>\n", | |
| " <td> (160, 145, 144) </td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th> Dask graph </th>\n", | |
| " <td colspan=\"2\"> 25950 chunks in 2 graph layers </td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th> Data type </th>\n", | |
| " <td colspan=\"2\"> float32 numpy.ndarray </td>\n", | |
| " </tr>\n", | |
| " </tbody>\n", | |
| " </table>\n", | |
| " </td>\n", | |
| " <td>\n", | |
| " <svg width=\"158\" height=\"146\" style=\"stroke:rgb(0,0,0);stroke-width:1\" >\n", | |
| "\n", | |
| " <!-- Horizontal lines -->\n", | |
| " <line x1=\"10\" y1=\"0\" x2=\"80\" y2=\"70\" style=\"stroke-width:2\" />\n", | |
| " <line x1=\"10\" y1=\"5\" x2=\"80\" y2=\"75\" />\n", | |
| " <line x1=\"10\" y1=\"10\" x2=\"80\" y2=\"80\" />\n", | |
| " <line x1=\"10\" y1=\"15\" x2=\"80\" y2=\"85\" />\n", | |
| " <line x1=\"10\" y1=\"20\" x2=\"80\" y2=\"91\" />\n", | |
| " <line x1=\"10\" y1=\"25\" x2=\"80\" y2=\"96\" style=\"stroke-width:2\" />\n", | |
| "\n", | |
| " <!-- Vertical lines -->\n", | |
| " <line x1=\"10\" y1=\"0\" x2=\"10\" y2=\"25\" style=\"stroke-width:2\" />\n", | |
| " <line x1=\"13\" y1=\"3\" x2=\"13\" y2=\"29\" />\n", | |
| " <line x1=\"17\" y1=\"7\" x2=\"17\" y2=\"32\" />\n", | |
| " <line x1=\"21\" y1=\"11\" x2=\"21\" y2=\"36\" />\n", | |
| " <line x1=\"24\" y1=\"14\" x2=\"24\" y2=\"40\" />\n", | |
| " <line x1=\"28\" y1=\"18\" x2=\"28\" y2=\"43\" />\n", | |
| " <line x1=\"32\" y1=\"22\" x2=\"32\" y2=\"47\" />\n", | |
| " <line x1=\"36\" y1=\"26\" x2=\"36\" y2=\"51\" />\n", | |
| " <line x1=\"39\" y1=\"29\" x2=\"39\" y2=\"55\" />\n", | |
| " <line x1=\"43\" y1=\"33\" x2=\"43\" y2=\"58\" />\n", | |
| " <line x1=\"47\" y1=\"37\" x2=\"47\" y2=\"62\" />\n", | |
| " <line x1=\"50\" y1=\"40\" x2=\"50\" y2=\"66\" />\n", | |
| " <line x1=\"54\" y1=\"44\" x2=\"54\" y2=\"69\" />\n", | |
| " <line x1=\"58\" y1=\"48\" x2=\"58\" y2=\"73\" />\n", | |
| " <line x1=\"62\" y1=\"52\" x2=\"62\" y2=\"77\" />\n", | |
| " <line x1=\"65\" y1=\"55\" x2=\"65\" y2=\"81\" />\n", | |
| " <line x1=\"69\" y1=\"59\" x2=\"69\" y2=\"84\" />\n", | |
| " <line x1=\"73\" y1=\"63\" x2=\"73\" y2=\"88\" />\n", | |
| " <line x1=\"76\" y1=\"66\" x2=\"76\" y2=\"92\" />\n", | |
| " <line x1=\"80\" y1=\"70\" x2=\"80\" y2=\"96\" style=\"stroke-width:2\" />\n", | |
| "\n", | |
| " <!-- Colored Rectangle -->\n", | |
| " <polygon points=\"10.0,0.0 80.58823529411765,70.58823529411765 80.58823529411765,96.00085180870013 10.0,25.41261651458249\" style=\"fill:#8B4903A0;stroke-width:0\"/>\n", | |
| "\n", | |
| " <!-- Horizontal lines -->\n", | |
| " <line x1=\"10\" y1=\"0\" x2=\"38\" y2=\"0\" style=\"stroke-width:2\" />\n", | |
| " <line x1=\"13\" y1=\"3\" x2=\"41\" y2=\"3\" />\n", | |
| " <line x1=\"17\" y1=\"7\" x2=\"45\" y2=\"7\" />\n", | |
| " <line x1=\"21\" y1=\"11\" x2=\"49\" y2=\"11\" />\n", | |
| " <line x1=\"24\" y1=\"14\" x2=\"53\" y2=\"14\" />\n", | |
| " <line x1=\"28\" y1=\"18\" x2=\"56\" y2=\"18\" />\n", | |
| " <line x1=\"32\" y1=\"22\" x2=\"60\" y2=\"22\" />\n", | |
| " <line x1=\"36\" y1=\"26\" x2=\"64\" y2=\"26\" />\n", | |
| " <line x1=\"39\" y1=\"29\" x2=\"67\" y2=\"29\" />\n", | |
| " <line x1=\"43\" y1=\"33\" x2=\"71\" y2=\"33\" />\n", | |
| " <line x1=\"47\" y1=\"37\" x2=\"75\" y2=\"37\" />\n", | |
| " <line x1=\"50\" y1=\"40\" x2=\"79\" y2=\"40\" />\n", | |
| " <line x1=\"54\" y1=\"44\" x2=\"82\" y2=\"44\" />\n", | |
| " <line x1=\"58\" y1=\"48\" x2=\"86\" y2=\"48\" />\n", | |
| " <line x1=\"62\" y1=\"52\" x2=\"90\" y2=\"52\" />\n", | |
| " <line x1=\"65\" y1=\"55\" x2=\"93\" y2=\"55\" />\n", | |
| " <line x1=\"69\" y1=\"59\" x2=\"97\" y2=\"59\" />\n", | |
| " <line x1=\"73\" y1=\"63\" x2=\"101\" y2=\"63\" />\n", | |
| " <line x1=\"76\" y1=\"66\" x2=\"105\" y2=\"66\" />\n", | |
| " <line x1=\"80\" y1=\"70\" x2=\"108\" y2=\"70\" style=\"stroke-width:2\" />\n", | |
| "\n", | |
| " <!-- Vertical lines -->\n", | |
| " <line x1=\"10\" y1=\"0\" x2=\"80\" y2=\"70\" style=\"stroke-width:2\" />\n", | |
| " <line x1=\"12\" y1=\"0\" x2=\"83\" y2=\"70\" />\n", | |
| " <line x1=\"15\" y1=\"0\" x2=\"86\" y2=\"70\" />\n", | |
| " <line x1=\"18\" y1=\"0\" x2=\"89\" y2=\"70\" />\n", | |
| " <line x1=\"21\" y1=\"0\" x2=\"91\" y2=\"70\" />\n", | |
| " <line x1=\"24\" y1=\"0\" x2=\"94\" y2=\"70\" />\n", | |
| " <line x1=\"26\" y1=\"0\" x2=\"97\" y2=\"70\" />\n", | |
| " <line x1=\"29\" y1=\"0\" x2=\"100\" y2=\"70\" />\n", | |
| " <line x1=\"32\" y1=\"0\" x2=\"103\" y2=\"70\" />\n", | |
| " <line x1=\"35\" y1=\"0\" x2=\"106\" y2=\"70\" />\n", | |
| " <line x1=\"38\" y1=\"0\" x2=\"108\" y2=\"70\" style=\"stroke-width:2\" />\n", | |
| "\n", | |
| " <!-- Colored Rectangle -->\n", | |
| " <polygon points=\"10.0,0.0 38.24687787339978,0.0 108.83511316751743,70.58823529411765 80.58823529411765,70.58823529411765\" style=\"fill:#8B4903A0;stroke-width:0\"/>\n", | |
| "\n", | |
| " <!-- Horizontal lines -->\n", | |
| " <line x1=\"80\" y1=\"70\" x2=\"108\" y2=\"70\" style=\"stroke-width:2\" />\n", | |
| " <line x1=\"80\" y1=\"75\" x2=\"108\" y2=\"75\" />\n", | |
| " <line x1=\"80\" y1=\"80\" x2=\"108\" y2=\"80\" />\n", | |
| " <line x1=\"80\" y1=\"85\" x2=\"108\" y2=\"85\" />\n", | |
| " <line x1=\"80\" y1=\"91\" x2=\"108\" y2=\"91\" />\n", | |
| " <line x1=\"80\" y1=\"96\" x2=\"108\" y2=\"96\" style=\"stroke-width:2\" />\n", | |
| "\n", | |
| " <!-- Vertical lines -->\n", | |
| " <line x1=\"80\" y1=\"70\" x2=\"80\" y2=\"96\" style=\"stroke-width:2\" />\n", | |
| " <line x1=\"83\" y1=\"70\" x2=\"83\" y2=\"96\" />\n", | |
| " <line x1=\"86\" y1=\"70\" x2=\"86\" y2=\"96\" />\n", | |
| " <line x1=\"89\" y1=\"70\" x2=\"89\" y2=\"96\" />\n", | |
| " <line x1=\"91\" y1=\"70\" x2=\"91\" y2=\"96\" />\n", | |
| " <line x1=\"94\" y1=\"70\" x2=\"94\" y2=\"96\" />\n", | |
| " <line x1=\"97\" y1=\"70\" x2=\"97\" y2=\"96\" />\n", | |
| " <line x1=\"100\" y1=\"70\" x2=\"100\" y2=\"96\" />\n", | |
| " <line x1=\"103\" y1=\"70\" x2=\"103\" y2=\"96\" />\n", | |
| " <line x1=\"106\" y1=\"70\" x2=\"106\" y2=\"96\" />\n", | |
| " <line x1=\"108\" y1=\"70\" x2=\"108\" y2=\"96\" style=\"stroke-width:2\" />\n", | |
| "\n", | |
| " <!-- Colored Rectangle -->\n", | |
| " <polygon points=\"80.58823529411765,70.58823529411765 108.83511316751743,70.58823529411765 108.83511316751743,96.00085180870013 80.58823529411765,96.00085180870013\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n", | |
| "\n", | |
| " <!-- Text -->\n", | |
| " <text x=\"94.711674\" y=\"116.000852\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" >1440</text>\n", | |
| " <text x=\"128.835113\" y=\"83.294544\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(-90,128.835113,83.294544)\">721</text>\n", | |
| " <text x=\"35.294118\" y=\"80.706734\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(45,35.294118,80.706734)\">82920</text>\n", | |
| "</svg>\n", | |
| " </td>\n", | |
| " </tr>\n", | |
| "</table></div></li></ul></div></li><li class='xr-section-item'><input id='section-804be9e0-8f57-4c98-b4de-487ec4c2c887' class='xr-section-summary-in' type='checkbox' ><label for='section-804be9e0-8f57-4c98-b4de-487ec4c2c887' class='xr-section-summary' >Indexes: <span>(3)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-index-name'><div>latitude</div></div><div class='xr-index-preview'>PandasIndex</div><input type='checkbox' disabled/><label></label><input id='index-3147c2b7-eef5-4efa-b679-d14fc4599581' class='xr-index-data-in' type='checkbox'/><label for='index-3147c2b7-eef5-4efa-b679-d14fc4599581' title='Show/Hide index repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-index-data'><pre>PandasIndex(Index([ 90.0, 89.75, 89.5, 89.25, 89.0, 88.75, 88.5, 88.25, 88.0,\n", | |
| " 87.75,\n", | |
| " ...\n", | |
| " -87.75, -88.0, -88.25, -88.5, -88.75, -89.0, -89.25, -89.5, -89.75,\n", | |
| " -90.0],\n", | |
| " dtype='float64', name='latitude', length=721))</pre></div></li><li class='xr-var-item'><div class='xr-index-name'><div>longitude</div></div><div class='xr-index-preview'>PandasIndex</div><input type='checkbox' disabled/><label></label><input id='index-24f783b4-f517-4b44-9dd8-a141371cb322' class='xr-index-data-in' type='checkbox'/><label for='index-24f783b4-f517-4b44-9dd8-a141371cb322' title='Show/Hide index repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-index-data'><pre>PandasIndex(Index([ -180.0, -179.75, -179.5, -179.25, -179.0, -178.75, -178.5, -178.25,\n", | |
| " -178.0, -177.75,\n", | |
| " ...\n", | |
| " 177.5, 177.75, 178.0, 178.25, 178.5, 178.75, 179.0, 179.25,\n", | |
| " 179.5, 179.75],\n", | |
| " dtype='float64', name='longitude', length=1440))</pre></div></li><li class='xr-var-item'><div class='xr-index-name'><div>time</div></div><div class='xr-index-preview'>PandasIndex</div><input type='checkbox' disabled/><label></label><input id='index-eb36cd58-a61e-4e36-aa3a-bbd884755cf8' class='xr-index-data-in' type='checkbox'/><label for='index-eb36cd58-a61e-4e36-aa3a-bbd884755cf8' title='Show/Hide index repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-index-data'><pre>PandasIndex(DatetimeIndex(['2015-01-15 00:00:00', '2015-01-15 01:00:00',\n", | |
| " '2015-01-15 02:00:00', '2015-01-15 03:00:00',\n", | |
| " '2015-01-15 04:00:00', '2015-01-15 05:00:00',\n", | |
| " '2015-01-15 06:00:00', '2015-01-15 07:00:00',\n", | |
| " '2015-01-15 08:00:00', '2015-01-15 09:00:00',\n", | |
| " ...\n", | |
| " '2024-06-30 14:00:00', '2024-06-30 15:00:00',\n", | |
| " '2024-06-30 16:00:00', '2024-06-30 17:00:00',\n", | |
| " '2024-06-30 18:00:00', '2024-06-30 19:00:00',\n", | |
| " '2024-06-30 20:00:00', '2024-06-30 21:00:00',\n", | |
| " '2024-06-30 22:00:00', '2024-06-30 23:00:00'],\n", | |
| " dtype='datetime64[ns]', name='time', length=82920, freq=None))</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-482dd04a-d4dc-4462-90fd-821be3ba9aea' class='xr-section-summary-in' type='checkbox' checked><label for='section-482dd04a-d4dc-4462-90fd-821be3ba9aea' class='xr-section-summary' >Attributes: <span>(8)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><dl class='xr-attrs'><dt><span>attribution :</span></dt><dd>NOAA NCEP GFS data processed by dynamical.org from NCAR and NOAA BDP AWS archives.</dd><dt><span>description :</span></dt><dd>Historical weather data from the Global Forecast System (GFS) model operated by NOAA NCEP.</dd><dt><span>id :</span></dt><dd>noaa-gfs-analysis-hourly</dd><dt><span>name :</span></dt><dd>NOAA GFS analysis, hourly</dd><dt><span>spatial_domain :</span></dt><dd>Global</dd><dt><span>spatial_resolution :</span></dt><dd>0.25 degrees (~20km)</dd><dt><span>time_domain :</span></dt><dd>2015-01-15 00:00:00 UTC to 2024-07-01 00:00:00 UTC</dd><dt><span>time_resolution :</span></dt><dd>1 hour</dd></dl></div></li></ul></div></div>" | |
| ], | |
| "text/plain": [ | |
| "<xarray.Dataset> Size: 1TB\n", | |
| "Dimensions: (time: 82920, latitude: 721, longitude: 1440)\n", | |
| "Coordinates:\n", | |
| " * latitude (latitude) float64 6kB 90.0 89.75 ... -89.75 -90.0\n", | |
| " * longitude (longitude) float64 12kB -180.0 -179.8 ... 179.8\n", | |
| " spatial_ref int64 8B ...\n", | |
| " * time (time) datetime64[ns] 663kB 2015-01-15 ... 2024-06...\n", | |
| "Data variables:\n", | |
| " precipitation_surface (time, latitude, longitude) float32 344GB dask.array<chunksize=(160, 145, 144), meta=np.ndarray>\n", | |
| " temperature_2m (time, latitude, longitude) float32 344GB dask.array<chunksize=(160, 145, 144), meta=np.ndarray>\n", | |
| " wind_u_10m (time, latitude, longitude) float32 344GB dask.array<chunksize=(160, 145, 144), meta=np.ndarray>\n", | |
| " wind_v_10m (time, latitude, longitude) float32 344GB dask.array<chunksize=(160, 145, 144), meta=np.ndarray>\n", | |
| "Attributes:\n", | |
| " attribution: NOAA NCEP GFS data processed by dynamical.org from N...\n", | |
| " description: Historical weather data from the Global Forecast Sys...\n", | |
| " id: noaa-gfs-analysis-hourly\n", | |
| " name: NOAA GFS analysis, hourly\n", | |
| " spatial_domain: Global\n", | |
| " spatial_resolution: 0.25 degrees (~20km)\n", | |
| " time_domain: 2015-01-15 00:00:00 UTC to 2024-07-01 00:00:00 UTC\n", | |
| " time_resolution: 1 hour" | |
| ] | |
| }, | |
| "execution_count": 6, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "ds_gfs = xr.open_zarr(\"https://data.dynamical.org/noaa/gfs/analysis-hourly/latest.zarr?email=optional@email.com\")\n", | |
| "ds_gfs" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 7, | |
| "id": "f06cb3d6-656e-4c48-85e0-0d089992bd11", | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "da_gfs = (ds_gfs[\"wind_u_10m\"].sel(latitude=lat_point, longitude=lon_point, method=\"nearest\")\n", | |
| " .sel(time=slice(start, stop))).load()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 8, | |
| "id": "001f4628-72cb-408f-8b70-5d59b711ab32", | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "gfs_viz = da_gfs.hvplot(x='time', grid=True, label='GFS')" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 9, | |
| "id": "76ebe731-5ff8-4980-8113-fccd218fd660", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": {}, | |
| "metadata": {}, | |
| "output_type": "display_data" | |
| }, | |
| { | |
| "data": { | |
| "application/vnd.holoviews_exec.v0+json": "", | |
| "text/html": [ | |
| "<div id='19ba2a2f-3c3e-476c-933d-371b471cd0da'>\n", | |
| " <div id=\"d8593cb7-9fe9-4632-bb11-4b73604a915c\" data-root-id=\"19ba2a2f-3c3e-476c-933d-371b471cd0da\" style=\"display: contents;\"></div>\n", | |
| "</div>\n", | |
| "<script type=\"application/javascript\">(function(root) {\n", | |
| " var docs_json = {\"e09077a0-ffd6-47e6-b31d-2f0e882d6425\":{\"version\":\"3.7.3\",\"title\":\"Bokeh Application\",\"roots\":[{\"type\":\"object\",\"name\":\"Row\",\"id\":\"19ba2a2f-3c3e-476c-933d-371b471cd0da\",\"attributes\":{\"name\":\"Row00353\",\"tags\":[\"embedded\"],\"stylesheets\":[\"\\n:host(.pn-loading):before, .pn-loading:before {\\n background-color: #c3c3c3;\\n mask-size: auto calc(min(50%, 400px));\\n -webkit-mask-size: auto calc(min(50%, 400px));\\n}\",{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"e5dfa4f6-331d-44dd-89c3-cf7bb1b6ce19\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.7.5/dist/css/loading.css\"}},{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"5e39f8b0-74ba-44c4-8757-f3c4e447475b\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.7.5/dist/css/listpanel.css\"}},{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"9f78d55e-a9aa-4755-ba77-f5414186d7c8\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.7.5/dist/bundled/theme/default.css\"}},{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"2b0c3570-5dfa-48b8-9b8a-6740e6eb2c9b\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.7.5/dist/bundled/theme/native.css\"}}],\"min_width\":700,\"margin\":0,\"sizing_mode\":\"stretch_width\",\"align\":\"start\",\"children\":[{\"type\":\"object\",\"name\":\"Spacer\",\"id\":\"4ddf289d-3824-4d9c-8a85-117cee767563\",\"attributes\":{\"name\":\"HSpacer00357\",\"stylesheets\":[\"\\n:host(.pn-loading):before, .pn-loading:before {\\n background-color: #c3c3c3;\\n mask-size: auto calc(min(50%, 400px));\\n -webkit-mask-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"e5dfa4f6-331d-44dd-89c3-cf7bb1b6ce19\"},{\"id\":\"9f78d55e-a9aa-4755-ba77-f5414186d7c8\"},{\"id\":\"2b0c3570-5dfa-48b8-9b8a-6740e6eb2c9b\"}],\"min_width\":0,\"margin\":0,\"sizing_mode\":\"stretch_width\",\"align\":\"start\"}},{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"0f9d6101-ed53-4ec0-83a4-c10906068273\",\"attributes\":{\"width\":700,\"height\":300,\"margin\":[5,10],\"sizing_mode\":\"fixed\",\"align\":\"start\",\"x_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"f702bb35-8627-42e0-b828-d891953ad340\",\"attributes\":{\"name\":\"time\",\"tags\":[[[\"Time\",null]],[]],\"start\":1596240000000.0,\"end\":1598828400000.0,\"reset_start\":1596240000000.0,\"reset_end\":1598828400000.0}},\"y_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"ebb68de4-f46f-40fd-8781-1b18016a4075\",\"attributes\":{\"name\":\"wind_v_10m\",\"tags\":[[[\"10 metre V wind component\",\"m s-1\"]],{\"type\":\"map\",\"entries\":[[\"invert_yaxis\",false],[\"autorange\",false]]}],\"start\":-7.5875,\"end\":9.9625,\"reset_start\":-7.5875,\"reset_end\":9.9625}},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"abae5bcd-0844-419a-bccc-037268214346\"},\"y_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"e8d3d680-2ae9-4bcc-a6aa-b437d9bd9608\"},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"8b802fef-f544-448d-8e0f-2a2141b4ce59\",\"attributes\":{\"text\":\"10m East Wind:(-70.603846, 41.729479))\",\"text_color\":\"black\",\"text_font_size\":\"12pt\"}},\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"a1369d4a-d3b5-4596-a48b-5dc7e1b8fe13\",\"attributes\":{\"name\":\"HRRR\",\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"61e98635-9464-4da3-959c-1c9322cd559c\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"18bae28f-3719-4b85-81cc-6156870bf053\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"92c6b8e1-6a70-4b55-aa30-2cc3c69fb73c\"},\"data\":{\"type\":\"map\",\"entries\":[[\"time\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[720],\"dtype\":\"float64\",\"order\":\"little\"}],[\"wind_v_10m\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[720],\"dtype\":\"float32\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"1dc0c4c4-c3c4-4704-aa20-8eca2991340f\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"3c92ecc8-afb7-4eaa-b769-78ba03a90311\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"193a2bed-aae6-41a7-90c4-649178409583\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"time\"},\"y\":{\"type\":\"field\",\"field\":\"wind_v_10m\"},\"line_color\":\"#30a2da\",\"line_width\":2}},\"selection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"ed7270f2-7739-4f57-84bc-fa26ab6e2862\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"time\"},\"y\":{\"type\":\"field\",\"field\":\"wind_v_10m\"},\"line_color\":\"#30a2da\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"bcb5de0f-e471-4508-886c-8354e78aa143\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"time\"},\"y\":{\"type\":\"field\",\"field\":\"wind_v_10m\"},\"line_color\":\"#30a2da\",\"line_alpha\":0.1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"236a458c-fd09-4add-948d-ae8f0b4aacc2\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"time\"},\"y\":{\"type\":\"field\",\"field\":\"wind_v_10m\"},\"line_color\":\"#30a2da\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"67a1c77f-1801-4050-b36e-dbb369880846\",\"attributes\":{\"name\":\"GFS\",\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"68e1a2f0-4a2b-415b-bc90-7157a9d3e6ec\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"1e5e85a2-edf8-4f0f-9977-134be46a4f16\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"66878ec9-4e9a-458a-97ac-1b0287c0e545\"},\"data\":{\"type\":\"map\",\"entries\":[[\"time\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[720],\"dtype\":\"float64\",\"order\":\"little\"}],[\"wind_u_10m\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[720],\"dtype\":\"float32\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"a1815112-eaa3-43a0-a12e-700a13852139\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"39fc0c08-dad7-40e6-bffe-28c6838ea5de\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"abdd4948-71b1-47a1-8bca-2ae524b4d994\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"time\"},\"y\":{\"type\":\"field\",\"field\":\"wind_u_10m\"},\"line_color\":\"#fc4f30\",\"line_width\":2}},\"selection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"16c36b07-6e56-4c11-9a34-94b9d9a6d8d4\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"time\"},\"y\":{\"type\":\"field\",\"field\":\"wind_u_10m\"},\"line_color\":\"#fc4f30\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"be099ca8-740e-4fc9-a983-e6f46e6ad27b\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"time\"},\"y\":{\"type\":\"field\",\"field\":\"wind_u_10m\"},\"line_color\":\"#fc4f30\",\"line_alpha\":0.1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"f8872c08-e6ab-40cc-8e85-43aec4f27ed0\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"time\"},\"y\":{\"type\":\"field\",\"field\":\"wind_u_10m\"},\"line_color\":\"#fc4f30\",\"line_alpha\":0.2,\"line_width\":2}}}}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"38ce5b15-cdd8-4d5e-a922-14de840e1833\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"WheelZoomTool\",\"id\":\"20d1e9a8-cec3-4368-ab40-bb13c3f48de5\",\"attributes\":{\"tags\":[\"hv_created\"],\"renderers\":\"auto\",\"zoom_together\":\"none\"}},{\"type\":\"object\",\"name\":\"HoverTool\",\"id\":\"9569682f-cc03-42fe-a0ef-aa68b4827400\",\"attributes\":{\"tags\":[\"hv_created\"],\"renderers\":[{\"id\":\"a1369d4a-d3b5-4596-a48b-5dc7e1b8fe13\"}],\"tooltips\":[[\"Time\",\"@{time}{%F %T}\"],[\"10 metre V wind component (m s-1)\",\"@{wind_v_10m}\"]],\"formatters\":{\"type\":\"map\",\"entries\":[[\"@{time}\",\"datetime\"]]}}},{\"type\":\"object\",\"name\":\"HoverTool\",\"id\":\"49482ffe-09df-4f81-a5ea-26db0bf8fe14\",\"attributes\":{\"tags\":[\"hv_created\"],\"renderers\":[{\"id\":\"67a1c77f-1801-4050-b36e-dbb369880846\"}],\"tooltips\":[[\"Time\",\"@{time}{%F %T}\"],[\"Wind speed u-component 10 meters above earth surface (m/s)\",\"@{wind_u_10m}\"]],\"formatters\":{\"type\":\"map\",\"entries\":[[\"@{time}\",\"datetime\"]]}}},{\"type\":\"object\",\"name\":\"SaveTool\",\"id\":\"15b3d83c-d9be-41e9-9e9f-8971c99fd2be\"},{\"type\":\"object\",\"name\":\"PanTool\",\"id\":\"f1bc6a89-cc17-47b6-9aff-4fe8fc67fc93\"},{\"type\":\"object\",\"name\":\"BoxZoomTool\",\"id\":\"9c488d8a-de3c-4ce4-90af-5f1540dc806f\",\"attributes\":{\"dimensions\":\"both\",\"overlay\":{\"type\":\"object\",\"name\":\"BoxAnnotation\",\"id\":\"e0aeb3e4-05e5-405b-9a2f-b33b74e43556\",\"attributes\":{\"syncable\":false,\"line_color\":\"black\",\"line_alpha\":1.0,\"line_width\":2,\"line_dash\":[4,4],\"fill_color\":\"lightgrey\",\"fill_alpha\":0.5,\"level\":\"overlay\",\"visible\":false,\"left\":{\"type\":\"number\",\"value\":\"nan\"},\"right\":{\"type\":\"number\",\"value\":\"nan\"},\"top\":{\"type\":\"number\",\"value\":\"nan\"},\"bottom\":{\"type\":\"number\",\"value\":\"nan\"},\"left_units\":\"canvas\",\"right_units\":\"canvas\",\"top_units\":\"canvas\",\"bottom_units\":\"canvas\",\"handles\":{\"type\":\"object\",\"name\":\"BoxInteractionHandles\",\"id\":\"78903def-a8b2-44d9-b47c-4691d054ee6a\",\"attributes\":{\"all\":{\"type\":\"object\",\"name\":\"AreaVisuals\",\"id\":\"c1129eec-5f7b-4030-b6d0-bd3521bc7f0d\",\"attributes\":{\"fill_color\":\"white\",\"hover_fill_color\":\"lightgray\"}}}}}}}},{\"type\":\"object\",\"name\":\"ResetTool\",\"id\":\"53637fdb-3c4d-4322-a0e9-9d0ceed9b038\"}],\"active_drag\":{\"id\":\"f1bc6a89-cc17-47b6-9aff-4fe8fc67fc93\"},\"active_scroll\":{\"id\":\"20d1e9a8-cec3-4368-ab40-bb13c3f48de5\"}}},\"left\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"d4b942f9-7219-404b-8296-5dd23f75a0bf\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"9ea630bd-3425-4a87-a3c4-f2d73359f319\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"6b820989-454b-48b7-9433-78fed0b681e2\"},\"axis_label\":\"10 metre V wind component (m s-1)\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"ca91efcc-452d-4d13-9356-084b25f1fa46\"}}}],\"below\":[{\"type\":\"object\",\"name\":\"DatetimeAxis\",\"id\":\"bd55a0b8-8bb8-4d01-8b71-4f23070e4cf4\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"DatetimeTicker\",\"id\":\"147e33c5-510b-4381-a542-8c242602422b\",\"attributes\":{\"num_minor_ticks\":5,\"tickers\":[{\"type\":\"object\",\"name\":\"AdaptiveTicker\",\"id\":\"927ba04b-9294-43be-a981-094891f4c438\",\"attributes\":{\"num_minor_ticks\":0,\"mantissas\":[1,2,5],\"max_interval\":500.0}},{\"type\":\"object\",\"name\":\"AdaptiveTicker\",\"id\":\"774ffb0b-5797-473b-b086-236ddb08ffb2\",\"attributes\":{\"num_minor_ticks\":0,\"base\":60,\"mantissas\":[1,2,5,10,15,20,30],\"min_interval\":1000.0,\"max_interval\":1800000.0}},{\"type\":\"object\",\"name\":\"AdaptiveTicker\",\"id\":\"a256dd66-e4bc-4c08-82c5-dd2cf6f959dc\",\"attributes\":{\"num_minor_ticks\":0,\"base\":24,\"mantissas\":[1,2,4,6,8,12],\"min_interval\":3600000.0,\"max_interval\":43200000.0}},{\"type\":\"object\",\"name\":\"DaysTicker\",\"id\":\"f0bcee71-b6db-4458-93b5-f214ddda1780\",\"attributes\":{\"days\":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]}},{\"type\":\"object\",\"name\":\"DaysTicker\",\"id\":\"e6b6b681-bf9c-4cbb-95b2-702b0b409e9a\",\"attributes\":{\"days\":[1,4,7,10,13,16,19,22,25,28]}},{\"type\":\"object\",\"name\":\"DaysTicker\",\"id\":\"46899294-02d1-4a29-8b2a-806533c4b857\",\"attributes\":{\"days\":[1,8,15,22]}},{\"type\":\"object\",\"name\":\"DaysTicker\",\"id\":\"c0a03796-433f-4d6d-94c7-0f6664d4f4a9\",\"attributes\":{\"days\":[1,15]}},{\"type\":\"object\",\"name\":\"MonthsTicker\",\"id\":\"4eb12721-a81c-40f6-9e4c-60c15186ca86\",\"attributes\":{\"months\":[0,1,2,3,4,5,6,7,8,9,10,11]}},{\"type\":\"object\",\"name\":\"MonthsTicker\",\"id\":\"2ef97f7f-8988-466b-bbfd-385b8f285b5d\",\"attributes\":{\"months\":[0,2,4,6,8,10]}},{\"type\":\"object\",\"name\":\"MonthsTicker\",\"id\":\"1f3801c8-9a54-4335-adb3-63d6b42d3d06\",\"attributes\":{\"months\":[0,4,8]}},{\"type\":\"object\",\"name\":\"MonthsTicker\",\"id\":\"c40a107b-52f7-47e7-bbc9-ad2fb22e8f68\",\"attributes\":{\"months\":[0,6]}},{\"type\":\"object\",\"name\":\"YearsTicker\",\"id\":\"818eb437-e4fe-4d79-8e6a-1436133852c5\"}]}},\"formatter\":{\"type\":\"object\",\"name\":\"DatetimeTickFormatter\",\"id\":\"f7226d90-14ac-41b6-8ff3-dd65c79d97df\",\"attributes\":{\"seconds\":\"%T\",\"minsec\":\"%T\",\"minutes\":\"%H:%M\",\"hours\":\"%H:%M\",\"days\":\"%b %d\",\"months\":\"%b %Y\",\"strip_leading_zeros\":[\"microseconds\",\"milliseconds\",\"seconds\"],\"boundary_scaling\":false,\"context\":{\"type\":\"object\",\"name\":\"DatetimeTickFormatter\",\"id\":\"d4a072cb-34c5-48a1-908c-ad259e9f9690\",\"attributes\":{\"microseconds\":\"%T\",\"milliseconds\":\"%T\",\"seconds\":\"%b %d, %Y\",\"minsec\":\"%b %d, %Y\",\"minutes\":\"%b %d, %Y\",\"hourmin\":\"%b %d, %Y\",\"hours\":\"%b %d, %Y\",\"days\":\"%Y\",\"months\":\"\",\"years\":\"\",\"boundary_scaling\":false,\"hide_repeats\":true,\"context\":{\"type\":\"object\",\"name\":\"DatetimeTickFormatter\",\"id\":\"0fffda84-4e1e-449a-a59b-c62b3c75583a\",\"attributes\":{\"microseconds\":\"%b %d, %Y\",\"milliseconds\":\"%b %d, %Y\",\"seconds\":\"\",\"minsec\":\"\",\"minutes\":\"\",\"hourmin\":\"\",\"hours\":\"\",\"days\":\"\",\"months\":\"\",\"years\":\"\",\"boundary_scaling\":false,\"hide_repeats\":true}},\"context_which\":\"all\"}},\"context_which\":\"all\"}},\"axis_label\":\"Time\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"132366b7-ad3f-431c-8508-23ca734c9730\"}}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"b5873f9f-a33e-4324-9326-4ad11218e946\",\"attributes\":{\"axis\":{\"id\":\"bd55a0b8-8bb8-4d01-8b71-4f23070e4cf4\"},\"ticker\":{\"id\":\"147e33c5-510b-4381-a542-8c242602422b\"}}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"a7d4442d-e0d8-4c37-8c5e-7c81e577413b\",\"attributes\":{\"dimension\":1,\"axis\":{\"id\":\"d4b942f9-7219-404b-8296-5dd23f75a0bf\"},\"ticker\":{\"id\":\"9ea630bd-3425-4a87-a3c4-f2d73359f319\"}}},{\"type\":\"object\",\"name\":\"Legend\",\"id\":\"bf1e78b0-2e20-4cb7-8654-f0cf69f32e07\",\"attributes\":{\"click_policy\":\"mute\",\"items\":[{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"0ee4ee92-9c27-4ab2-85f2-7e9fd84389cf\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"HRRR\"},\"renderers\":[{\"id\":\"a1369d4a-d3b5-4596-a48b-5dc7e1b8fe13\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"19eb5f46-f140-4691-b44f-e382b8b72eb8\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"GFS\"},\"renderers\":[{\"id\":\"67a1c77f-1801-4050-b36e-dbb369880846\"}]}}]}}],\"min_border_top\":10,\"min_border_bottom\":10,\"min_border_left\":10,\"min_border_right\":10,\"output_backend\":\"webgl\"}},{\"type\":\"object\",\"name\":\"Spacer\",\"id\":\"2893283e-e96b-4535-b540-6557acf36251\",\"attributes\":{\"name\":\"HSpacer00358\",\"stylesheets\":[\"\\n:host(.pn-loading):before, .pn-loading:before {\\n background-color: #c3c3c3;\\n mask-size: auto calc(min(50%, 400px));\\n -webkit-mask-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"e5dfa4f6-331d-44dd-89c3-cf7bb1b6ce19\"},{\"id\":\"9f78d55e-a9aa-4755-ba77-f5414186d7c8\"},{\"id\":\"2b0c3570-5dfa-48b8-9b8a-6740e6eb2c9b\"}],\"min_width\":0,\"margin\":0,\"sizing_mode\":\"stretch_width\",\"align\":\"start\"}}]}}],\"defs\":[{\"type\":\"model\",\"name\":\"ReactiveHTML1\"},{\"type\":\"model\",\"name\":\"FlexBox1\",\"properties\":[{\"name\":\"align_content\",\"kind\":\"Any\",\"default\":\"flex-start\"},{\"name\":\"align_items\",\"kind\":\"Any\",\"default\":\"flex-start\"},{\"name\":\"flex_direction\",\"kind\":\"Any\",\"default\":\"row\"},{\"name\":\"flex_wrap\",\"kind\":\"Any\",\"default\":\"wrap\"},{\"name\":\"gap\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"justify_content\",\"kind\":\"Any\",\"default\":\"flex-start\"}]},{\"type\":\"model\",\"name\":\"FloatPanel1\",\"properties\":[{\"name\":\"config\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"contained\",\"kind\":\"Any\",\"default\":true},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"right-top\"},{\"name\":\"offsetx\",\"kind\":\"Any\",\"default\":null},{\"name\":\"offsety\",\"kind\":\"Any\",\"default\":null},{\"name\":\"theme\",\"kind\":\"Any\",\"default\":\"primary\"},{\"name\":\"status\",\"kind\":\"Any\",\"default\":\"normalized\"}]},{\"type\":\"model\",\"name\":\"GridStack1\",\"properties\":[{\"name\":\"ncols\",\"kind\":\"Any\",\"default\":null},{\"name\":\"nrows\",\"kind\":\"Any\",\"default\":null},{\"name\":\"allow_resize\",\"kind\":\"Any\",\"default\":true},{\"name\":\"allow_drag\",\"kind\":\"Any\",\"default\":true},{\"name\":\"state\",\"kind\":\"Any\",\"default\":[]}]},{\"type\":\"model\",\"name\":\"drag1\",\"properties\":[{\"name\":\"slider_width\",\"kind\":\"Any\",\"default\":5},{\"name\":\"slider_color\",\"kind\":\"Any\",\"default\":\"black\"},{\"name\":\"value\",\"kind\":\"Any\",\"default\":50}]},{\"type\":\"model\",\"name\":\"click1\",\"properties\":[{\"name\":\"terminal_output\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"debug_name\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"clears\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"ReactiveESM1\",\"properties\":[{\"name\":\"esm_constants\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}}]},{\"type\":\"model\",\"name\":\"JSComponent1\",\"properties\":[{\"name\":\"esm_constants\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}}]},{\"type\":\"model\",\"name\":\"ReactComponent1\",\"properties\":[{\"name\":\"use_shadow_dom\",\"kind\":\"Any\",\"default\":true},{\"name\":\"esm_constants\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}}]},{\"type\":\"model\",\"name\":\"AnyWidgetComponent1\",\"properties\":[{\"name\":\"use_shadow_dom\",\"kind\":\"Any\",\"default\":true},{\"name\":\"esm_constants\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}}]},{\"type\":\"model\",\"name\":\"FastWrapper1\",\"properties\":[{\"name\":\"object\",\"kind\":\"Any\",\"default\":null},{\"name\":\"style\",\"kind\":\"Any\",\"default\":null}]},{\"type\":\"model\",\"name\":\"NotificationArea1\",\"properties\":[{\"name\":\"js_events\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"max_notifications\",\"kind\":\"Any\",\"default\":5},{\"name\":\"notifications\",\"kind\":\"Any\",\"default\":[]},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"bottom-right\"},{\"name\":\"_clear\",\"kind\":\"Any\",\"default\":0},{\"name\":\"types\",\"kind\":\"Any\",\"default\":[{\"type\":\"map\",\"entries\":[[\"type\",\"warning\"],[\"background\",\"#ffc107\"],[\"icon\",{\"type\":\"map\",\"entries\":[[\"className\",\"fas fa-exclamation-triangle\"],[\"tagName\",\"i\"],[\"color\",\"white\"]]}]]},{\"type\":\"map\",\"entries\":[[\"type\",\"info\"],[\"background\",\"#007bff\"],[\"icon\",{\"type\":\"map\",\"entries\":[[\"className\",\"fas fa-info-circle\"],[\"tagName\",\"i\"],[\"color\",\"white\"]]}]]}]}]},{\"type\":\"model\",\"name\":\"Notification\",\"properties\":[{\"name\":\"background\",\"kind\":\"Any\",\"default\":null},{\"name\":\"duration\",\"kind\":\"Any\",\"default\":3000},{\"name\":\"icon\",\"kind\":\"Any\",\"default\":null},{\"name\":\"message\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"notification_type\",\"kind\":\"Any\",\"default\":null},{\"name\":\"_rendered\",\"kind\":\"Any\",\"default\":false},{\"name\":\"_destroyed\",\"kind\":\"Any\",\"default\":false}]},{\"type\":\"model\",\"name\":\"TemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"BootstrapTemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"TemplateEditor1\",\"properties\":[{\"name\":\"layout\",\"kind\":\"Any\",\"default\":[]}]},{\"type\":\"model\",\"name\":\"MaterialTemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"request_value1\",\"properties\":[{\"name\":\"fill\",\"kind\":\"Any\",\"default\":\"none\"},{\"name\":\"_synced\",\"kind\":\"Any\",\"default\":null},{\"name\":\"_request_sync\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"holoviews.plotting.bokeh.raster.HoverModel\",\"properties\":[{\"name\":\"xy\",\"kind\":\"Any\",\"default\":null},{\"name\":\"data\",\"kind\":\"Any\",\"default\":null}]}]}};\n", | |
| " var render_items = [{\"docid\":\"e09077a0-ffd6-47e6-b31d-2f0e882d6425\",\"roots\":{\"19ba2a2f-3c3e-476c-933d-371b471cd0da\":\"d8593cb7-9fe9-4632-bb11-4b73604a915c\"},\"root_ids\":[\"19ba2a2f-3c3e-476c-933d-371b471cd0da\"]}];\n", | |
| " var docs = Object.values(docs_json)\n", | |
| " if (!docs) {\n", | |
| " return\n", | |
| " }\n", | |
| " const py_version = docs[0].version.replace('rc', '-rc.').replace('.dev', '-dev.')\n", | |
| " async function embed_document(root) {\n", | |
| " var Bokeh = get_bokeh(root)\n", | |
| " await Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", | |
| " for (const render_item of render_items) {\n", | |
| " for (const root_id of render_item.root_ids) {\n", | |
| "\tconst id_el = document.getElementById(root_id)\n", | |
| "\tif (id_el.children.length && id_el.children[0].hasAttribute('data-root-id')) {\n", | |
| "\t const root_el = id_el.children[0]\n", | |
| "\t root_el.id = root_el.id + '-rendered'\n", | |
| "\t for (const child of root_el.children) {\n", | |
| " // Ensure JupyterLab does not capture keyboard shortcuts\n", | |
| " // see: https://jupyterlab.readthedocs.io/en/4.1.x/extension/notebook.html#keyboard-interaction-model\n", | |
| "\t child.setAttribute('data-lm-suppress-shortcuts', 'true')\n", | |
| "\t }\n", | |
| "\t}\n", | |
| " }\n", | |
| " }\n", | |
| " }\n", | |
| " function get_bokeh(root) {\n", | |
| " if (root.Bokeh === undefined) {\n", | |
| " return null\n", | |
| " } else if (root.Bokeh.version !== py_version) {\n", | |
| " if (root.Bokeh.versions === undefined || !root.Bokeh.versions.has(py_version)) {\n", | |
| "\treturn null\n", | |
| " }\n", | |
| " return root.Bokeh.versions.get(py_version);\n", | |
| " } else if (root.Bokeh.version === py_version) {\n", | |
| " return root.Bokeh\n", | |
| " }\n", | |
| " return null\n", | |
| " }\n", | |
| " function is_loaded(root) {\n", | |
| " var Bokeh = get_bokeh(root)\n", | |
| " return (Bokeh != null && Bokeh.Panel !== undefined)\n", | |
| " }\n", | |
| " if (is_loaded(root)) {\n", | |
| " embed_document(root);\n", | |
| " } else {\n", | |
| " var attempts = 0;\n", | |
| " var timer = setInterval(function(root) {\n", | |
| " if (is_loaded(root)) {\n", | |
| " clearInterval(timer);\n", | |
| " embed_document(root);\n", | |
| " } else if (document.readyState == \"complete\") {\n", | |
| " attempts++;\n", | |
| " if (attempts > 200) {\n", | |
| " clearInterval(timer);\n", | |
| "\t var Bokeh = get_bokeh(root)\n", | |
| "\t if (Bokeh == null || Bokeh.Panel == null) {\n", | |
| " console.warn(\"Panel: ERROR: Unable to run Panel code because Bokeh or Panel library is missing\");\n", | |
| "\t } else {\n", | |
| "\t console.warn(\"Panel: WARNING: Attempting to render but not all required libraries could be resolved.\")\n", | |
| "\t embed_document(root)\n", | |
| "\t }\n", | |
| " }\n", | |
| " }\n", | |
| " }, 25, root)\n", | |
| " }\n", | |
| "})(window);</script>" | |
| ], | |
| "text/plain": [ | |
| ":Overlay\n", | |
| " .Curve.HRRR :Curve [time] (10 metre V wind component)\n", | |
| " .Curve.GFS :Curve [time] (Wind speed u-component 10 meters above earth surface)" | |
| ] | |
| }, | |
| "execution_count": 9, | |
| "metadata": { | |
| "application/vnd.holoviews_exec.v0+json": { | |
| "id": "19ba2a2f-3c3e-476c-933d-371b471cd0da" | |
| } | |
| }, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "(hrrr_viz * gfs_viz).opts(title=f'10m East Wind:({lon_point}, {lat_point}))')" | |
| ] | |
| } | |
| ], | |
| "metadata": { | |
| "kernelspec": { | |
| "display_name": "Python [conda env:pangeo_z3]", | |
| "language": "python", | |
| "name": "conda-env-pangeo_z3-py" | |
| }, | |
| "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.12.11" | |
| }, | |
| "widgets": { | |
| "application/vnd.jupyter.widget-state+json": { | |
| "state": {}, | |
| "version_major": 2, | |
| "version_minor": 0 | |
| } | |
| } | |
| }, | |
| "nbformat": 4, | |
| "nbformat_minor": 5 | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment