Last active
April 4, 2025 18:57
-
-
Save cboettig/9689e7a4805c39f863efbb379be1ba54 to your computer and use it in GitHub Desktop.
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": "0fe188b5-3a99-4c34-bc2a-882f2ba7ac75", | |
"metadata": {}, | |
"source": [ | |
"# Zarr + Xarray vs. DuckDB and Parquet\n", | |
"\n", | |
"## Initialize Connections\n", | |
"\n", | |
"For these benchmarks, we exclude the initial scanning of the file, which has a one-time cost compared to subsequent queries.\n", | |
"The assumption here is that the same dataset object will be used repeatedly for multiple queries." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"id": "566e1a28-d28d-4e31-9c07-82470c4d159c", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"import xarray as xr\n", | |
"import icechunk as ic\n", | |
"import duckdb\n", | |
"import zarr\n", | |
"import os\n", | |
"\n", | |
"os.environ[\"AWS_ACCESS_KEY_ID\"] = \"\"\n", | |
"os.environ[\"AWS_SECRET_ACCESS_KEY\"] = \"\"\n", | |
"os.environ[\"AWS_S3_ENDPOINT\"] = \"\"\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"id": "ffc76af4-8342-4205-91f5-1d78e1c35bcd", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"duckdb.sql(\"INSTALL spatial; LOAD spatial;\")\n", | |
"duckdb.sql(\"INSTALL httpfs; LOAD httpfs;\")" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"id": "4da89a5d-e56b-4d13-a478-6023260c78d1", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"<donfig.config_obj.ConfigSet at 0x7aef66147320>" | |
] | |
}, | |
"execution_count": 3, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"# make sure Zarr uses all threads on this EC2 instance\n", | |
"# (DuckDB does this automatically)\n", | |
"zarr.config.set(\n", | |
" {\n", | |
" 'threading.max_workers': 16,\n", | |
" 'async.concurrency': 32\n", | |
" }\n", | |
")" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"id": "dc4260f1-a5dc-4a5d-83a5-00f1e9cce875", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"/opt/conda/lib/python3.12/site-packages/numcodecs/zarr3.py:169: UserWarning: Numcodecs codecs are not in the Zarr version 3 specification and may not be supported by other zarr implementations.\n", | |
" super().__init__(**codec_config)\n", | |
"/opt/conda/lib/python3.12/site-packages/numcodecs/zarr3.py:169: UserWarning: Numcodecs codecs are not in the Zarr version 3 specification and may not be supported by other zarr implementations.\n", | |
" super().__init__(**codec_config)\n", | |
"/opt/conda/lib/python3.12/site-packages/numcodecs/zarr3.py:169: UserWarning: Numcodecs codecs are not in the Zarr version 3 specification and may not be supported by other zarr implementations.\n", | |
" super().__init__(**codec_config)\n", | |
"/opt/conda/lib/python3.12/site-packages/numcodecs/zarr3.py:169: UserWarning: Numcodecs codecs are not in the Zarr version 3 specification and may not be supported by other zarr implementations.\n", | |
" super().__init__(**codec_config)\n", | |
"/opt/conda/lib/python3.12/site-packages/numcodecs/zarr3.py:169: UserWarning: Numcodecs codecs are not in the Zarr version 3 specification and may not be supported by other zarr implementations.\n", | |
" super().__init__(**codec_config)\n" | |
] | |
}, | |
{ | |
"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(--jp-content-font-color0, rgba(0, 0, 0, 1));\n", | |
" --xr-font-color2: var(--jp-content-font-color2, rgba(0, 0, 0, 0.54));\n", | |
" --xr-font-color3: var(--jp-content-font-color3, rgba(0, 0, 0, 0.38));\n", | |
" --xr-border-color: var(--jp-border-color2, #e0e0e0);\n", | |
" --xr-disabled-color: var(--jp-layout-color3, #bdbdbd);\n", | |
" --xr-background-color: var(--jp-layout-color0, white);\n", | |
" --xr-background-color-row-even: var(--jp-layout-color1, white);\n", | |
" --xr-background-color-row-odd: var(--jp-layout-color2, #eeeeee);\n", | |
"}\n", | |
"\n", | |
"html[theme=\"dark\"],\n", | |
"html[data-theme=\"dark\"],\n", | |
"body[data-theme=\"dark\"],\n", | |
"body.vscode-dark {\n", | |
" --xr-font-color0: rgba(255, 255, 255, 1);\n", | |
" --xr-font-color2: rgba(255, 255, 255, 0.54);\n", | |
" --xr-font-color3: rgba(255, 255, 255, 0.38);\n", | |
" --xr-border-color: #1f1f1f;\n", | |
" --xr-disabled-color: #515151;\n", | |
" --xr-background-color: #111111;\n", | |
" --xr-background-color-row-even: #111111;\n", | |
" --xr-background-color-row-odd: #313131;\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", | |
"}\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);\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", | |
" margin-bottom: 0;\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", | |
"}\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", | |
" background-color: var(--xr-background-color) !important;\n", | |
" padding-bottom: 5px !important;\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-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", | |
"</style><pre class='xr-text-repr-fallback'><xarray.Dataset> Size: 4GB\n", | |
"Dimensions: (longitude: 1440, latitude: 721, valid_time: 209)\n", | |
"Coordinates:\n", | |
" time datetime64[ns] 8B ...\n", | |
" * latitude (latitude) float64 6kB 90.0 89.75 89.5 ... -89.5 -89.75 -90.0\n", | |
" * longitude (longitude) float64 12kB 0.0 0.25 0.5 0.75 ... -0.75 -0.5 -0.25\n", | |
" * valid_time (valid_time) datetime64[ns] 2kB 2024-05-13 ... 2024-05-29\n", | |
"Data variables:\n", | |
" r2 (longitude, latitude, valid_time) float32 868MB ...\n", | |
" t2m (longitude, latitude, valid_time) float32 868MB ...\n", | |
" prate (longitude, latitude, valid_time) float32 868MB ...\n", | |
" gust (longitude, latitude, valid_time) float32 868MB ...\n", | |
" tcc (longitude, latitude, valid_time) float32 868MB ...\n", | |
"Attributes:\n", | |
" description: GFS data ingested for forecasting demo</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-ab03b846-f1e1-4d76-826a-4e35568f70e9' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-ab03b846-f1e1-4d76-826a-4e35568f70e9' 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'>longitude</span>: 1440</li><li><span class='xr-has-index'>latitude</span>: 721</li><li><span class='xr-has-index'>valid_time</span>: 209</li></ul></div><div class='xr-section-details'></div></li><li class='xr-section-item'><input id='section-9799e779-e60c-4383-89b6-51d76b7c1183' class='xr-section-summary-in' type='checkbox' checked><label for='section-9799e779-e60c-4383-89b6-51d76b7c1183' 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>time</span></div><div class='xr-var-dims'>()</div><div class='xr-var-dtype'>datetime64[ns]</div><div class='xr-var-preview xr-preview'>...</div><input id='attrs-bac6ea4d-ce41-4e9d-9ece-2dae79ad9855' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-bac6ea4d-ce41-4e9d-9ece-2dae79ad9855' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-a92582b5-f79c-4297-8e22-c03fb424c59a' class='xr-var-data-in' type='checkbox'><label for='data-a92582b5-f79c-4297-8e22-c03fb424c59a' 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>axis :</span></dt><dd>T</dd><dt><span>standard_name :</span></dt><dd>forecast_reference_time</dd></dl></div><div class='xr-var-data'><pre>[1 values with dtype=datetime64[ns]]</pre></div></li><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-780b33a0-7c36-4f97-b0c9-d2784401cfe1' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-780b33a0-7c36-4f97-b0c9-d2784401cfe1' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-91ffeabc-5a17-459d-a78f-023348fcdd9f' class='xr-var-data-in' type='checkbox'><label for='data-91ffeabc-5a17-459d-a78f-023348fcdd9f' 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>axis :</span></dt><dd>Y</dd><dt><span>standard_name :</span></dt><dd>latitude</dd><dt><span>units :</span></dt><dd>degrees_north</dd></dl></div><div class='xr-var-data'><pre>array([ 90. , 89.75, 89.5 , ..., -89.5 , -89.75, -90. ])</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'>0.0 0.25 0.5 ... -0.75 -0.5 -0.25</div><input id='attrs-dcda33cd-eca7-4007-9a5b-de2225c89cb6' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-dcda33cd-eca7-4007-9a5b-de2225c89cb6' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-9f1e1105-3ca5-4b4a-b220-db7bf26855aa' class='xr-var-data-in' type='checkbox'><label for='data-9f1e1105-3ca5-4b4a-b220-db7bf26855aa' 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'></dl></div><div class='xr-var-data'><pre>array([ 0. , 0.25, 0.5 , ..., -0.75, -0.5 , -0.25])</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>valid_time</span></div><div class='xr-var-dims'>(valid_time)</div><div class='xr-var-dtype'>datetime64[ns]</div><div class='xr-var-preview xr-preview'>2024-05-13 ... 2024-05-29</div><input id='attrs-461ce969-477f-4f6d-81d2-2b9791019af6' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-461ce969-477f-4f6d-81d2-2b9791019af6' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-76fbdd74-8f6c-4f6a-adf2-a6aeea195106' class='xr-var-data-in' type='checkbox'><label for='data-76fbdd74-8f6c-4f6a-adf2-a6aeea195106' 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'></dl></div><div class='xr-var-data'><pre>array(['2024-05-13T00:00:00.000000000', '2024-05-13T01:00:00.000000000',\n", | |
" '2024-05-13T02:00:00.000000000', ..., '2024-05-28T18:00:00.000000000',\n", | |
" '2024-05-28T21:00:00.000000000', '2024-05-29T00:00:00.000000000'],\n", | |
" dtype='datetime64[ns]')</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-093c1259-eb9a-4c9f-80c7-a0ef7de405f6' class='xr-section-summary-in' type='checkbox' checked><label for='section-093c1259-eb9a-4c9f-80c7-a0ef7de405f6' class='xr-section-summary' >Data variables: <span>(5)</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>r2</span></div><div class='xr-var-dims'>(longitude, latitude, valid_time)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>...</div><input id='attrs-255306e3-067f-4cd3-ae46-6e9c7e99c50f' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-255306e3-067f-4cd3-ae46-6e9c7e99c50f' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-9c120b74-7912-4995-a5f4-d9d985a8eea2' class='xr-var-data-in' type='checkbox'><label for='data-9c120b74-7912-4995-a5f4-d9d985a8eea2' 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>GRIB_NV :</span></dt><dd>0</dd><dt><span>GRIB_Nx :</span></dt><dd>1440</dd><dt><span>GRIB_Ny :</span></dt><dd>721</dd><dt><span>GRIB_cfName :</span></dt><dd>relative_humidity</dd><dt><span>GRIB_cfVarName :</span></dt><dd>r2</dd><dt><span>GRIB_dataType :</span></dt><dd>fc</dd><dt><span>GRIB_gridDefinitionDescription :</span></dt><dd>Latitude/longitude. Also called equidistant cylindrical, or Plate Carree</dd><dt><span>GRIB_gridType :</span></dt><dd>regular_ll</dd><dt><span>GRIB_iDirectionIncrementInDegrees :</span></dt><dd>0.25</dd><dt><span>GRIB_iScansNegatively :</span></dt><dd>0</dd><dt><span>GRIB_jDirectionIncrementInDegrees :</span></dt><dd>0.25</dd><dt><span>GRIB_jPointsAreConsecutive :</span></dt><dd>0</dd><dt><span>GRIB_jScansPositively :</span></dt><dd>0</dd><dt><span>GRIB_latitudeOfFirstGridPointInDegrees :</span></dt><dd>90.0</dd><dt><span>GRIB_latitudeOfLastGridPointInDegrees :</span></dt><dd>-90.0</dd><dt><span>GRIB_longitudeOfFirstGridPointInDegrees :</span></dt><dd>0.0</dd><dt><span>GRIB_longitudeOfLastGridPointInDegrees :</span></dt><dd>359.75</dd><dt><span>GRIB_missingValue :</span></dt><dd>3.4028234663852886e+38</dd><dt><span>GRIB_name :</span></dt><dd>2 metre relative humidity</dd><dt><span>GRIB_numberOfPoints :</span></dt><dd>1038240</dd><dt><span>GRIB_paramId :</span></dt><dd>260242</dd><dt><span>GRIB_parameterName :</span></dt><dd>Relative humidity</dd><dt><span>GRIB_parameterUnits :</span></dt><dd>%</dd><dt><span>GRIB_shortName :</span></dt><dd>2r</dd><dt><span>GRIB_stepRange :</span></dt><dd>0</dd><dt><span>GRIB_stepType :</span></dt><dd>instant</dd><dt><span>GRIB_stepUnits :</span></dt><dd>1</dd><dt><span>GRIB_typeOfLevel :</span></dt><dd>heightAboveGround</dd><dt><span>GRIB_units :</span></dt><dd>%</dd><dt><span>grid_mapping :</span></dt><dd>gribfile_projection</dd><dt><span>long_name :</span></dt><dd>2 metre relative humidity</dd><dt><span>standard_name :</span></dt><dd>relative_humidity</dd><dt><span>units :</span></dt><dd>%</dd></dl></div><div class='xr-var-data'><pre>[216992160 values with dtype=float32]</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>t2m</span></div><div class='xr-var-dims'>(longitude, latitude, valid_time)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>...</div><input id='attrs-3dfab6b1-0ac8-4d61-a0a2-30d0cdf21f93' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-3dfab6b1-0ac8-4d61-a0a2-30d0cdf21f93' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-77d1cd4c-7481-454a-a31d-3cedb9e6c9f2' class='xr-var-data-in' type='checkbox'><label for='data-77d1cd4c-7481-454a-a31d-3cedb9e6c9f2' 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>GRIB_NV :</span></dt><dd>0</dd><dt><span>GRIB_Nx :</span></dt><dd>1440</dd><dt><span>GRIB_Ny :</span></dt><dd>721</dd><dt><span>GRIB_cfName :</span></dt><dd>air_temperature</dd><dt><span>GRIB_cfVarName :</span></dt><dd>t2m</dd><dt><span>GRIB_dataType :</span></dt><dd>fc</dd><dt><span>GRIB_gridDefinitionDescription :</span></dt><dd>Latitude/longitude. Also called equidistant cylindrical, or Plate Carree</dd><dt><span>GRIB_gridType :</span></dt><dd>regular_ll</dd><dt><span>GRIB_iDirectionIncrementInDegrees :</span></dt><dd>0.25</dd><dt><span>GRIB_iScansNegatively :</span></dt><dd>0</dd><dt><span>GRIB_jDirectionIncrementInDegrees :</span></dt><dd>0.25</dd><dt><span>GRIB_jPointsAreConsecutive :</span></dt><dd>0</dd><dt><span>GRIB_jScansPositively :</span></dt><dd>0</dd><dt><span>GRIB_latitudeOfFirstGridPointInDegrees :</span></dt><dd>90.0</dd><dt><span>GRIB_latitudeOfLastGridPointInDegrees :</span></dt><dd>-90.0</dd><dt><span>GRIB_longitudeOfFirstGridPointInDegrees :</span></dt><dd>0.0</dd><dt><span>GRIB_longitudeOfLastGridPointInDegrees :</span></dt><dd>359.75</dd><dt><span>GRIB_missingValue :</span></dt><dd>3.4028234663852886e+38</dd><dt><span>GRIB_name :</span></dt><dd>2 metre temperature</dd><dt><span>GRIB_numberOfPoints :</span></dt><dd>1038240</dd><dt><span>GRIB_paramId :</span></dt><dd>167</dd><dt><span>GRIB_parameterName :</span></dt><dd>Temperature</dd><dt><span>GRIB_parameterUnits :</span></dt><dd>K</dd><dt><span>GRIB_shortName :</span></dt><dd>2t</dd><dt><span>GRIB_stepRange :</span></dt><dd>0</dd><dt><span>GRIB_stepType :</span></dt><dd>instant</dd><dt><span>GRIB_stepUnits :</span></dt><dd>1</dd><dt><span>GRIB_typeOfLevel :</span></dt><dd>heightAboveGround</dd><dt><span>GRIB_units :</span></dt><dd>K</dd><dt><span>grid_mapping :</span></dt><dd>gribfile_projection</dd><dt><span>long_name :</span></dt><dd>2 metre temperature</dd><dt><span>standard_name :</span></dt><dd>air_temperature</dd><dt><span>units :</span></dt><dd>K</dd></dl></div><div class='xr-var-data'><pre>[216992160 values with dtype=float32]</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>prate</span></div><div class='xr-var-dims'>(longitude, latitude, valid_time)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>...</div><input id='attrs-98825b77-5000-4843-a366-8cf4b7592349' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-98825b77-5000-4843-a366-8cf4b7592349' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-7a40f461-6ff9-44f7-ba3d-b44cd9c7ca2b' class='xr-var-data-in' type='checkbox'><label for='data-7a40f461-6ff9-44f7-ba3d-b44cd9c7ca2b' 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>GRIB_NV :</span></dt><dd>0</dd><dt><span>GRIB_Nx :</span></dt><dd>1440</dd><dt><span>GRIB_Ny :</span></dt><dd>721</dd><dt><span>GRIB_cfName :</span></dt><dd>unknown</dd><dt><span>GRIB_cfVarName :</span></dt><dd>prate</dd><dt><span>GRIB_dataType :</span></dt><dd>fc</dd><dt><span>GRIB_gridDefinitionDescription :</span></dt><dd>Latitude/longitude. Also called equidistant cylindrical, or Plate Carree</dd><dt><span>GRIB_gridType :</span></dt><dd>regular_ll</dd><dt><span>GRIB_iDirectionIncrementInDegrees :</span></dt><dd>0.25</dd><dt><span>GRIB_iScansNegatively :</span></dt><dd>0</dd><dt><span>GRIB_jDirectionIncrementInDegrees :</span></dt><dd>0.25</dd><dt><span>GRIB_jPointsAreConsecutive :</span></dt><dd>0</dd><dt><span>GRIB_jScansPositively :</span></dt><dd>0</dd><dt><span>GRIB_latitudeOfFirstGridPointInDegrees :</span></dt><dd>90.0</dd><dt><span>GRIB_latitudeOfLastGridPointInDegrees :</span></dt><dd>-90.0</dd><dt><span>GRIB_longitudeOfFirstGridPointInDegrees :</span></dt><dd>0.0</dd><dt><span>GRIB_longitudeOfLastGridPointInDegrees :</span></dt><dd>359.75</dd><dt><span>GRIB_missingValue :</span></dt><dd>3.4028234663852886e+38</dd><dt><span>GRIB_name :</span></dt><dd>Precipitation rate</dd><dt><span>GRIB_numberOfPoints :</span></dt><dd>1038240</dd><dt><span>GRIB_paramId :</span></dt><dd>3059</dd><dt><span>GRIB_parameterName :</span></dt><dd>Precipitation rate</dd><dt><span>GRIB_parameterUnits :</span></dt><dd>kg m-2 s-1</dd><dt><span>GRIB_shortName :</span></dt><dd>prate</dd><dt><span>GRIB_stepRange :</span></dt><dd>0</dd><dt><span>GRIB_stepType :</span></dt><dd>instant</dd><dt><span>GRIB_stepUnits :</span></dt><dd>1</dd><dt><span>GRIB_typeOfLevel :</span></dt><dd>surface</dd><dt><span>GRIB_units :</span></dt><dd>kg m**-2 s**-1</dd><dt><span>grid_mapping :</span></dt><dd>gribfile_projection</dd><dt><span>long_name :</span></dt><dd>Precipitation rate</dd><dt><span>standard_name :</span></dt><dd>unknown</dd><dt><span>units :</span></dt><dd>kg m**-2 s**-1</dd></dl></div><div class='xr-var-data'><pre>[216992160 values with dtype=float32]</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>gust</span></div><div class='xr-var-dims'>(longitude, latitude, valid_time)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>...</div><input id='attrs-1b8cfb71-801a-437f-a8e9-e667b870bd77' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-1b8cfb71-801a-437f-a8e9-e667b870bd77' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-a8f6a70e-1eb9-44b7-9a84-d059869a431b' class='xr-var-data-in' type='checkbox'><label for='data-a8f6a70e-1eb9-44b7-9a84-d059869a431b' 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>GRIB_NV :</span></dt><dd>0</dd><dt><span>GRIB_Nx :</span></dt><dd>1440</dd><dt><span>GRIB_Ny :</span></dt><dd>721</dd><dt><span>GRIB_cfName :</span></dt><dd>unknown</dd><dt><span>GRIB_cfVarName :</span></dt><dd>gust</dd><dt><span>GRIB_dataType :</span></dt><dd>fc</dd><dt><span>GRIB_gridDefinitionDescription :</span></dt><dd>Latitude/longitude. Also called equidistant cylindrical, or Plate Carree</dd><dt><span>GRIB_gridType :</span></dt><dd>regular_ll</dd><dt><span>GRIB_iDirectionIncrementInDegrees :</span></dt><dd>0.25</dd><dt><span>GRIB_iScansNegatively :</span></dt><dd>0</dd><dt><span>GRIB_jDirectionIncrementInDegrees :</span></dt><dd>0.25</dd><dt><span>GRIB_jPointsAreConsecutive :</span></dt><dd>0</dd><dt><span>GRIB_jScansPositively :</span></dt><dd>0</dd><dt><span>GRIB_latitudeOfFirstGridPointInDegrees :</span></dt><dd>90.0</dd><dt><span>GRIB_latitudeOfLastGridPointInDegrees :</span></dt><dd>-90.0</dd><dt><span>GRIB_longitudeOfFirstGridPointInDegrees :</span></dt><dd>0.0</dd><dt><span>GRIB_longitudeOfLastGridPointInDegrees :</span></dt><dd>359.75</dd><dt><span>GRIB_missingValue :</span></dt><dd>3.4028234663852886e+38</dd><dt><span>GRIB_name :</span></dt><dd>Wind speed (gust)</dd><dt><span>GRIB_numberOfPoints :</span></dt><dd>1038240</dd><dt><span>GRIB_paramId :</span></dt><dd>260065</dd><dt><span>GRIB_parameterName :</span></dt><dd>Wind speed (gust)</dd><dt><span>GRIB_parameterUnits :</span></dt><dd>m s-1</dd><dt><span>GRIB_shortName :</span></dt><dd>gust</dd><dt><span>GRIB_stepRange :</span></dt><dd>0</dd><dt><span>GRIB_stepType :</span></dt><dd>instant</dd><dt><span>GRIB_stepUnits :</span></dt><dd>1</dd><dt><span>GRIB_typeOfLevel :</span></dt><dd>surface</dd><dt><span>GRIB_units :</span></dt><dd>m s**-1</dd><dt><span>grid_mapping :</span></dt><dd>gribfile_projection</dd><dt><span>long_name :</span></dt><dd>Wind speed (gust)</dd><dt><span>standard_name :</span></dt><dd>unknown</dd><dt><span>units :</span></dt><dd>m s**-1</dd></dl></div><div class='xr-var-data'><pre>[216992160 values with dtype=float32]</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>tcc</span></div><div class='xr-var-dims'>(longitude, latitude, valid_time)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>...</div><input id='attrs-588a558b-496e-4909-8ff5-9b7f2c322bcc' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-588a558b-496e-4909-8ff5-9b7f2c322bcc' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-d28c6f69-feb4-4e96-a5db-bae0b497aa73' class='xr-var-data-in' type='checkbox'><label for='data-d28c6f69-feb4-4e96-a5db-bae0b497aa73' 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>GRIB_NV :</span></dt><dd>0</dd><dt><span>GRIB_Nx :</span></dt><dd>1440</dd><dt><span>GRIB_Ny :</span></dt><dd>721</dd><dt><span>GRIB_cfName :</span></dt><dd>unknown</dd><dt><span>GRIB_cfVarName :</span></dt><dd>unknown</dd><dt><span>GRIB_dataType :</span></dt><dd>fc</dd><dt><span>GRIB_gridDefinitionDescription :</span></dt><dd>Latitude/longitude. Also called equidistant cylindrical, or Plate Carree</dd><dt><span>GRIB_gridType :</span></dt><dd>regular_ll</dd><dt><span>GRIB_iDirectionIncrementInDegrees :</span></dt><dd>0.25</dd><dt><span>GRIB_iScansNegatively :</span></dt><dd>0</dd><dt><span>GRIB_jDirectionIncrementInDegrees :</span></dt><dd>0.25</dd><dt><span>GRIB_jPointsAreConsecutive :</span></dt><dd>0</dd><dt><span>GRIB_jScansPositively :</span></dt><dd>0</dd><dt><span>GRIB_latitudeOfFirstGridPointInDegrees :</span></dt><dd>90.0</dd><dt><span>GRIB_latitudeOfLastGridPointInDegrees :</span></dt><dd>-90.0</dd><dt><span>GRIB_longitudeOfFirstGridPointInDegrees :</span></dt><dd>0.0</dd><dt><span>GRIB_longitudeOfLastGridPointInDegrees :</span></dt><dd>359.75</dd><dt><span>GRIB_missingValue :</span></dt><dd>3.4028234663852886e+38</dd><dt><span>GRIB_name :</span></dt><dd>Total Cloud Cover</dd><dt><span>GRIB_numberOfPoints :</span></dt><dd>1038240</dd><dt><span>GRIB_paramId :</span></dt><dd>228164</dd><dt><span>GRIB_parameterName :</span></dt><dd>Total cloud cover</dd><dt><span>GRIB_parameterUnits :</span></dt><dd>%</dd><dt><span>GRIB_shortName :</span></dt><dd>tcc</dd><dt><span>GRIB_stepRange :</span></dt><dd>0</dd><dt><span>GRIB_stepType :</span></dt><dd>instant</dd><dt><span>GRIB_stepUnits :</span></dt><dd>1</dd><dt><span>GRIB_typeOfLevel :</span></dt><dd>atmosphere</dd><dt><span>GRIB_units :</span></dt><dd>%</dd><dt><span>grid_mapping :</span></dt><dd>gribfile_projection</dd><dt><span>long_name :</span></dt><dd>Total Cloud Cover</dd><dt><span>standard_name :</span></dt><dd>unknown</dd><dt><span>units :</span></dt><dd>%</dd></dl></div><div class='xr-var-data'><pre>[216992160 values with dtype=float32]</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-fa565a62-79dd-4473-8cb6-137a9a8c2ba5' class='xr-section-summary-in' type='checkbox' ><label for='section-fa565a62-79dd-4473-8cb6-137a9a8c2ba5' 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-bb681115-cebb-4f32-8a1a-c2357290a59d' class='xr-index-data-in' type='checkbox'/><label for='index-bb681115-cebb-4f32-8a1a-c2357290a59d' 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-fb37f2d3-1ae4-45e3-9889-2efab15af30b' class='xr-index-data-in' type='checkbox'/><label for='index-fb37f2d3-1ae4-45e3-9889-2efab15af30b' 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([ 0.0, 0.25, 0.5, 0.75, 1.0, 1.25, 1.5, 1.75, 2.0, 2.25,\n", | |
" ...\n", | |
" -2.5, -2.25, -2.0, -1.75, -1.5, -1.25, -1.0, -0.75, -0.5, -0.25],\n", | |
" dtype='float64', name='longitude', length=1440))</pre></div></li><li class='xr-var-item'><div class='xr-index-name'><div>valid_time</div></div><div class='xr-index-preview'>PandasIndex</div><input type='checkbox' disabled/><label></label><input id='index-a34f86ed-385b-4df2-81ea-d948963ef49c' class='xr-index-data-in' type='checkbox'/><label for='index-a34f86ed-385b-4df2-81ea-d948963ef49c' 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(['2024-05-13 00:00:00', '2024-05-13 01:00:00',\n", | |
" '2024-05-13 02:00:00', '2024-05-13 03:00:00',\n", | |
" '2024-05-13 04:00:00', '2024-05-13 05:00:00',\n", | |
" '2024-05-13 06:00:00', '2024-05-13 07:00:00',\n", | |
" '2024-05-13 08:00:00', '2024-05-13 09:00:00',\n", | |
" ...\n", | |
" '2024-05-27 21:00:00', '2024-05-28 00:00:00',\n", | |
" '2024-05-28 03:00:00', '2024-05-28 06:00:00',\n", | |
" '2024-05-28 09:00:00', '2024-05-28 12:00:00',\n", | |
" '2024-05-28 15:00:00', '2024-05-28 18:00:00',\n", | |
" '2024-05-28 21:00:00', '2024-05-29 00:00:00'],\n", | |
" dtype='datetime64[ns]', name='valid_time', length=209, freq=None))</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-40875c3e-d64a-4fa6-bd84-40c3336bcfe0' class='xr-section-summary-in' type='checkbox' checked><label for='section-40875c3e-d64a-4fa6-bd84-40c3336bcfe0' class='xr-section-summary' >Attributes: <span>(1)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><dl class='xr-attrs'><dt><span>description :</span></dt><dd>GFS data ingested for forecasting demo</dd></dl></div></li></ul></div></div>" | |
], | |
"text/plain": [ | |
"<xarray.Dataset> Size: 4GB\n", | |
"Dimensions: (longitude: 1440, latitude: 721, valid_time: 209)\n", | |
"Coordinates:\n", | |
" time datetime64[ns] 8B ...\n", | |
" * latitude (latitude) float64 6kB 90.0 89.75 89.5 ... -89.5 -89.75 -90.0\n", | |
" * longitude (longitude) float64 12kB 0.0 0.25 0.5 0.75 ... -0.75 -0.5 -0.25\n", | |
" * valid_time (valid_time) datetime64[ns] 2kB 2024-05-13 ... 2024-05-29\n", | |
"Data variables:\n", | |
" r2 (longitude, latitude, valid_time) float32 868MB ...\n", | |
" t2m (longitude, latitude, valid_time) float32 868MB ...\n", | |
" prate (longitude, latitude, valid_time) float32 868MB ...\n", | |
" gust (longitude, latitude, valid_time) float32 868MB ...\n", | |
" tcc (longitude, latitude, valid_time) float32 868MB ...\n", | |
"Attributes:\n", | |
" description: GFS data ingested for forecasting demo" | |
] | |
}, | |
"execution_count": 4, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"storage = ic.s3_storage(\n", | |
" bucket=\"earthmover-sample-data\",\n", | |
" prefix=\"icechunk/gfs/solar/2024-05-13T00:00:00-pcodec\",\n", | |
" anonymous=True,\n", | |
" region=\"us-east-1\"\n", | |
")\n", | |
"repo = ic.Repository.open(storage)\n", | |
"session = repo.readonly_session(\"main\")\n", | |
"store = session.store\n", | |
"ds_ic = xr.open_dataset(session.store, engine=xr.backends.ZarrBackendEntrypoint, zarr_format=3, consolidated=False, chunks=None);\n", | |
"ds_ic" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"id": "a8042ebc-5677-4001-a28f-f39431c596e8", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"┌─────────────────────┬───────────┬───────────┬───────┬───────────┬───────┬─────────────────────┬─────────────────┐\n", | |
"│ valid_time │ gust │ prate │ r2 │ t2m │ tcc │ time │ geometry │\n", | |
"│ timestamp_ns │ float │ float │ float │ float │ float │ timestamp_ns │ geometry │\n", | |
"├─────────────────────┼───────────┼───────────┼───────┼───────────┼───────┼─────────────────────┼─────────────────┤\n", | |
"│ 2024-05-12 18:00:00 │ 6.2033625 │ 1.04e-05 │ 86.0 │ 269.8426 │ 100.0 │ 2024-05-12 18:00:00 │ POINT (0 90) │\n", | |
"│ 2024-05-12 19:00:00 │ 6.300296 │ 7.2e-06 │ 86.3 │ 269.8121 │ 100.0 │ 2024-05-12 18:00:00 │ POINT (0 90) │\n", | |
"│ 2024-05-12 20:00:00 │ 6.4174957 │ 4e-06 │ 83.8 │ 269.86224 │ 100.0 │ 2024-05-12 18:00:00 │ POINT (0 90) │\n", | |
"│ 2024-05-12 21:00:00 │ 6.4212985 │ 4e-06 │ 81.2 │ 270.0631 │ 98.0 │ 2024-05-12 18:00:00 │ POINT (0 90) │\n", | |
"│ 2024-05-12 22:00:00 │ 7.029407 │ 1.6e-06 │ 84.3 │ 269.76135 │ 49.0 │ 2024-05-12 18:00:00 │ POINT (0 90) │\n", | |
"│ 2024-05-12 23:00:00 │ 7.701468 │ 0.0 │ 90.6 │ 268.10004 │ 5.0 │ 2024-05-12 18:00:00 │ POINT (0 90) │\n", | |
"│ 2024-05-13 00:00:00 │ 7.325299 │ 0.0 │ 92.8 │ 266.83868 │ 5.8 │ 2024-05-12 18:00:00 │ POINT (0 90) │\n", | |
"│ 2024-05-13 01:00:00 │ 7.016412 │ 0.0 │ 94.2 │ 266.1 │ 6.5 │ 2024-05-12 18:00:00 │ POINT (0 90) │\n", | |
"│ 2024-05-13 02:00:00 │ 6.9108753 │ 0.0 │ 94.6 │ 265.53864 │ 6.4 │ 2024-05-12 18:00:00 │ POINT (0 90) │\n", | |
"│ 2024-05-13 03:00:00 │ 6.7239223 │ 0.0 │ 94.3 │ 265.25797 │ 61.9 │ 2024-05-12 18:00:00 │ POINT (0 90) │\n", | |
"│ · │ · │ · │ · │ · │ · │ · │ · │\n", | |
"│ · │ · │ · │ · │ · │ · │ · │ · │\n", | |
"│ · │ · │ · │ · │ · │ · │ · │ · │\n", | |
"│ 2024-05-23 15:00:00 │ 1.6156534 │ 0.0 │ 72.0 │ 274.242 │ 95.3 │ 2024-05-12 18:00:00 │ POINT (0 78.25) │\n", | |
"│ 2024-05-23 18:00:00 │ 1.810498 │ 0.0 │ 70.9 │ 274.34473 │ 81.7 │ 2024-05-12 18:00:00 │ POINT (0 78.25) │\n", | |
"│ 2024-05-23 21:00:00 │ 1.817041 │ 0.0 │ 75.2 │ 274.463 │ 100.0 │ 2024-05-12 18:00:00 │ POINT (0 78.25) │\n", | |
"│ 2024-05-24 00:00:00 │ 3.6031995 │ 0.0 │ 80.3 │ 274.15198 │ 100.0 │ 2024-05-12 18:00:00 │ POINT (0 78.25) │\n", | |
"│ 2024-05-24 03:00:00 │ 4.6 │ 4.16e-05 │ 94.3 │ 273.60516 │ 100.0 │ 2024-05-12 18:00:00 │ POINT (0 78.25) │\n", | |
"│ 2024-05-24 06:00:00 │ 6.7025695 │ 5.6e-06 │ 98.5 │ 274.14844 │ 100.0 │ 2024-05-12 18:00:00 │ POINT (0 78.25) │\n", | |
"│ 2024-05-24 09:00:00 │ 9.019824 │ 0.000108 │ 98.7 │ 274.59375 │ 100.0 │ 2024-05-12 18:00:00 │ POINT (0 78.25) │\n", | |
"│ 2024-05-24 12:00:00 │ 9.310799 │ 0.0001112 │ 98.9 │ 274.8121 │ 100.0 │ 2024-05-12 18:00:00 │ POINT (0 78.25) │\n", | |
"│ 2024-05-24 15:00:00 │ 6.5135336 │ 6.4e-06 │ 98.9 │ 274.46054 │ 100.0 │ 2024-05-12 18:00:00 │ POINT (0 78.25) │\n", | |
"│ 2024-05-24 18:00:00 │ 7.72677 │ 2.56e-05 │ 98.8 │ 274.40518 │ 100.0 │ 2024-05-12 18:00:00 │ POINT (0 78.25) │\n", | |
"├─────────────────────┴───────────┴───────────┴───────┴───────────┴───────┴─────────────────────┴─────────────────┤\n", | |
"│ ? rows (>9999 rows, 20 shown) 8 columns │\n", | |
"└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘" | |
] | |
}, | |
"execution_count": 5, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"pq_fname = \"s3://earthmover-sample-data/parquet/gfs/solar/2024-05-12T18:00:00.geoparquet\"\n", | |
"rel = duckdb.read_parquet(pq_fname) \n", | |
"rel" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 6, | |
"id": "536f8aa1-ad2a-416e-a321-b3fbbf3e04d4", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"rel2 = duckdb.read_parquet(\"s3://earthmover-sample-data/parquet/gfs/solar/2024-05-13T00:00:00.geoparquet\")" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 7, | |
"id": "63c0da63-0e5b-461b-9a36-a495777ac3d1", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">DatabaseTable: ibis_read_parquet_4ankggropfdhtcmksdtvsuu3sq\n", | |
" longitude float64\n", | |
" latitude float64\n", | |
" valid_time timestamp(9)\n", | |
" gust float32\n", | |
" t2m float32\n", | |
" r2 float32\n", | |
" prate float32\n", | |
" tcc float32\n", | |
" time timestamp(9)\n", | |
" geometry binary\n", | |
"</pre>\n" | |
], | |
"text/plain": [ | |
"DatabaseTable: ibis_read_parquet_4ankggropfdhtcmksdtvsuu3sq\n", | |
" longitude float64\n", | |
" latitude float64\n", | |
" valid_time timestamp(9)\n", | |
" gust float32\n", | |
" t2m float32\n", | |
" r2 float32\n", | |
" prate float32\n", | |
" tcc float32\n", | |
" time timestamp(9)\n", | |
" geometry binary" | |
] | |
}, | |
"execution_count": 7, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"import ibis\n", | |
"con = ibis.duckdb.connect()\n", | |
"\n", | |
"con.read_parquet(\"s3://earthmover-sample-data/parquet/gfs/solar/2024-05-13T00:00:00.geoparquet\")" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "b2a2f8b0-4e8d-448d-9ad6-85ff9a6e4cef", | |
"metadata": {}, | |
"source": [ | |
"## Temporal Query" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 8, | |
"id": "318c6212-9289-4d8c-af1c-95af5c834606", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"CPU times: user 36.2 ms, sys: 17.1 ms, total: 53.4 ms\n", | |
"Wall time: 1.83 s\n" | |
] | |
} | |
], | |
"source": [ | |
"%%time\n", | |
"df = rel.query(\"forecast_data\",\n", | |
" \"\"\"\n", | |
" SELECT valid_time, t2m\n", | |
" FROM forecast_data\n", | |
" WHERE geometry=ST_Point(-105, 40)\n", | |
" \"\"\"\n", | |
")" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 9, | |
"id": "59b18de7-5955-4de0-8529-1442af8550c8", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"CPU times: user 1.06 s, sys: 108 ms, total: 1.17 s\n", | |
"Wall time: 3.54 s\n" | |
] | |
} | |
], | |
"source": [ | |
"%%time\n", | |
"df = rel2.query(\"forecast_data\",\n", | |
" \"\"\"\n", | |
" SELECT valid_time, t2m\n", | |
" FROM forecast_data\n", | |
" WHERE longitude = -105 AND latitude = 40\n", | |
" \"\"\"\n", | |
").df()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 10, | |
"id": "65b62df7-7079-4ca8-99c0-450cd0aea2cc", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"CPU times: user 2.64 s, sys: 237 ms, total: 2.88 s\n", | |
"Wall time: 4.27 s\n" | |
] | |
} | |
], | |
"source": [ | |
"%%time\n", | |
"df = rel2.query(\"forecast_data\",\n", | |
" \"\"\"\n", | |
" SELECT valid_time, t2m\n", | |
" FROM forecast_data\n", | |
" WHERE longitude BETWEEN -80 AND -60 AND latitude BETWEEN 30 AND 40 \n", | |
" \"\"\"\n", | |
").df()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 11, | |
"id": "ae3b3d00-85a0-4183-a329-c566ecd56fa8", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"CPU times: user 1.21 s, sys: 486 ms, total: 1.69 s\n", | |
"Wall time: 3.66 s\n" | |
] | |
}, | |
{ | |
"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(--jp-content-font-color0, rgba(0, 0, 0, 1));\n", | |
" --xr-font-color2: var(--jp-content-font-color2, rgba(0, 0, 0, 0.54));\n", | |
" --xr-font-color3: var(--jp-content-font-color3, rgba(0, 0, 0, 0.38));\n", | |
" --xr-border-color: var(--jp-border-color2, #e0e0e0);\n", | |
" --xr-disabled-color: var(--jp-layout-color3, #bdbdbd);\n", | |
" --xr-background-color: var(--jp-layout-color0, white);\n", | |
" --xr-background-color-row-even: var(--jp-layout-color1, white);\n", | |
" --xr-background-color-row-odd: var(--jp-layout-color2, #eeeeee);\n", | |
"}\n", | |
"\n", | |
"html[theme=\"dark\"],\n", | |
"html[data-theme=\"dark\"],\n", | |
"body[data-theme=\"dark\"],\n", | |
"body.vscode-dark {\n", | |
" --xr-font-color0: rgba(255, 255, 255, 1);\n", | |
" --xr-font-color2: rgba(255, 255, 255, 0.54);\n", | |
" --xr-font-color3: rgba(255, 255, 255, 0.38);\n", | |
" --xr-border-color: #1f1f1f;\n", | |
" --xr-disabled-color: #515151;\n", | |
" --xr-background-color: #111111;\n", | |
" --xr-background-color-row-even: #111111;\n", | |
" --xr-background-color-row-odd: #313131;\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", | |
"}\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);\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", | |
" margin-bottom: 0;\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", | |
"}\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", | |
" background-color: var(--xr-background-color) !important;\n", | |
" padding-bottom: 5px !important;\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-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", | |
"</style><pre class='xr-text-repr-fallback'><xarray.Dataset> Size: 14MB\n", | |
"Dimensions: (longitude: 81, latitude: 41, valid_time: 209)\n", | |
"Coordinates:\n", | |
" time datetime64[ns] 8B 2024-05-13\n", | |
" * latitude (latitude) float64 328B 40.0 39.75 39.5 ... 30.5 30.25 30.0\n", | |
" * longitude (longitude) float64 648B -120.0 -119.8 -119.5 ... -100.2 -100.0\n", | |
" * valid_time (valid_time) datetime64[ns] 2kB 2024-05-13 ... 2024-05-29\n", | |
"Data variables:\n", | |
" r2 (longitude, latitude, valid_time) float32 3MB 25.1 22.5 ... 25.2\n", | |
" t2m (longitude, latitude, valid_time) float32 3MB 295.4 ... 306.1\n", | |
" prate (longitude, latitude, valid_time) float32 3MB 0.0 0.0 ... 0.0\n", | |
" gust (longitude, latitude, valid_time) float32 3MB 5.005 ... 10.1\n", | |
" tcc (longitude, latitude, valid_time) float32 3MB 15.2 ... 61.4\n", | |
"Attributes:\n", | |
" description: GFS data ingested for forecasting demo</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-e3b339ff-96f0-4f21-bc77-5ef52c844f52' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-e3b339ff-96f0-4f21-bc77-5ef52c844f52' 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'>longitude</span>: 81</li><li><span class='xr-has-index'>latitude</span>: 41</li><li><span class='xr-has-index'>valid_time</span>: 209</li></ul></div><div class='xr-section-details'></div></li><li class='xr-section-item'><input id='section-28066850-ff17-4559-998f-780794323746' class='xr-section-summary-in' type='checkbox' checked><label for='section-28066850-ff17-4559-998f-780794323746' 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>time</span></div><div class='xr-var-dims'>()</div><div class='xr-var-dtype'>datetime64[ns]</div><div class='xr-var-preview xr-preview'>2024-05-13</div><input id='attrs-6bb72f30-c7fc-413b-877b-269ee380d810' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-6bb72f30-c7fc-413b-877b-269ee380d810' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-12751630-ae14-4270-a1df-e7c06df34d04' class='xr-var-data-in' type='checkbox'><label for='data-12751630-ae14-4270-a1df-e7c06df34d04' 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>axis :</span></dt><dd>T</dd><dt><span>standard_name :</span></dt><dd>forecast_reference_time</dd></dl></div><div class='xr-var-data'><pre>array('2024-05-13T00:00:00.000000000', dtype='datetime64[ns]')</pre></div></li><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'>40.0 39.75 39.5 ... 30.5 30.25 30.0</div><input id='attrs-dd10638b-c4a1-41b3-b6b8-7880c3f8e34e' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-dd10638b-c4a1-41b3-b6b8-7880c3f8e34e' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-ea0b6e36-b13a-451b-af0a-5e9a606ee32b' class='xr-var-data-in' type='checkbox'><label for='data-ea0b6e36-b13a-451b-af0a-5e9a606ee32b' 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>axis :</span></dt><dd>Y</dd><dt><span>standard_name :</span></dt><dd>latitude</dd><dt><span>units :</span></dt><dd>degrees_north</dd></dl></div><div class='xr-var-data'><pre>array([40. , 39.75, 39.5 , 39.25, 39. , 38.75, 38.5 , 38.25, 38. , 37.75,\n", | |
" 37.5 , 37.25, 37. , 36.75, 36.5 , 36.25, 36. , 35.75, 35.5 , 35.25,\n", | |
" 35. , 34.75, 34.5 , 34.25, 34. , 33.75, 33.5 , 33.25, 33. , 32.75,\n", | |
" 32.5 , 32.25, 32. , 31.75, 31.5 , 31.25, 31. , 30.75, 30.5 , 30.25,\n", | |
" 30. ])</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'>-120.0 -119.8 ... -100.2 -100.0</div><input id='attrs-ffd4e1fc-ab0a-4ce1-bd20-8249feeb51b8' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-ffd4e1fc-ab0a-4ce1-bd20-8249feeb51b8' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-dbd9f719-93e8-4bff-bfb5-0810e3eb8bb8' class='xr-var-data-in' type='checkbox'><label for='data-dbd9f719-93e8-4bff-bfb5-0810e3eb8bb8' 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'></dl></div><div class='xr-var-data'><pre>array([-120. , -119.75, -119.5 , -119.25, -119. , -118.75, -118.5 , -118.25,\n", | |
" -118. , -117.75, -117.5 , -117.25, -117. , -116.75, -116.5 , -116.25,\n", | |
" -116. , -115.75, -115.5 , -115.25, -115. , -114.75, -114.5 , -114.25,\n", | |
" -114. , -113.75, -113.5 , -113.25, -113. , -112.75, -112.5 , -112.25,\n", | |
" -112. , -111.75, -111.5 , -111.25, -111. , -110.75, -110.5 , -110.25,\n", | |
" -110. , -109.75, -109.5 , -109.25, -109. , -108.75, -108.5 , -108.25,\n", | |
" -108. , -107.75, -107.5 , -107.25, -107. , -106.75, -106.5 , -106.25,\n", | |
" -106. , -105.75, -105.5 , -105.25, -105. , -104.75, -104.5 , -104.25,\n", | |
" -104. , -103.75, -103.5 , -103.25, -103. , -102.75, -102.5 , -102.25,\n", | |
" -102. , -101.75, -101.5 , -101.25, -101. , -100.75, -100.5 , -100.25,\n", | |
" -100. ])</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>valid_time</span></div><div class='xr-var-dims'>(valid_time)</div><div class='xr-var-dtype'>datetime64[ns]</div><div class='xr-var-preview xr-preview'>2024-05-13 ... 2024-05-29</div><input id='attrs-06dd647f-63a1-40e4-86cd-02297c9d69e9' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-06dd647f-63a1-40e4-86cd-02297c9d69e9' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-1c70b596-1153-47a2-86a5-305de59420f7' class='xr-var-data-in' type='checkbox'><label for='data-1c70b596-1153-47a2-86a5-305de59420f7' 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'></dl></div><div class='xr-var-data'><pre>array(['2024-05-13T00:00:00.000000000', '2024-05-13T01:00:00.000000000',\n", | |
" '2024-05-13T02:00:00.000000000', ..., '2024-05-28T18:00:00.000000000',\n", | |
" '2024-05-28T21:00:00.000000000', '2024-05-29T00:00:00.000000000'],\n", | |
" dtype='datetime64[ns]')</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-8daf981b-6005-44be-a63a-bab075504f23' class='xr-section-summary-in' type='checkbox' checked><label for='section-8daf981b-6005-44be-a63a-bab075504f23' class='xr-section-summary' >Data variables: <span>(5)</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>r2</span></div><div class='xr-var-dims'>(longitude, latitude, valid_time)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>25.1 22.5 27.7 ... 34.9 26.8 25.2</div><input id='attrs-4fc2c2f6-dce2-4db5-a8b5-878ad23802d1' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-4fc2c2f6-dce2-4db5-a8b5-878ad23802d1' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-c0179fe9-e456-402c-a9f8-87150cac29b2' class='xr-var-data-in' type='checkbox'><label for='data-c0179fe9-e456-402c-a9f8-87150cac29b2' 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>GRIB_NV :</span></dt><dd>0</dd><dt><span>GRIB_Nx :</span></dt><dd>1440</dd><dt><span>GRIB_Ny :</span></dt><dd>721</dd><dt><span>GRIB_cfName :</span></dt><dd>relative_humidity</dd><dt><span>GRIB_cfVarName :</span></dt><dd>r2</dd><dt><span>GRIB_dataType :</span></dt><dd>fc</dd><dt><span>GRIB_gridDefinitionDescription :</span></dt><dd>Latitude/longitude. Also called equidistant cylindrical, or Plate Carree</dd><dt><span>GRIB_gridType :</span></dt><dd>regular_ll</dd><dt><span>GRIB_iDirectionIncrementInDegrees :</span></dt><dd>0.25</dd><dt><span>GRIB_iScansNegatively :</span></dt><dd>0</dd><dt><span>GRIB_jDirectionIncrementInDegrees :</span></dt><dd>0.25</dd><dt><span>GRIB_jPointsAreConsecutive :</span></dt><dd>0</dd><dt><span>GRIB_jScansPositively :</span></dt><dd>0</dd><dt><span>GRIB_latitudeOfFirstGridPointInDegrees :</span></dt><dd>90.0</dd><dt><span>GRIB_latitudeOfLastGridPointInDegrees :</span></dt><dd>-90.0</dd><dt><span>GRIB_longitudeOfFirstGridPointInDegrees :</span></dt><dd>0.0</dd><dt><span>GRIB_longitudeOfLastGridPointInDegrees :</span></dt><dd>359.75</dd><dt><span>GRIB_missingValue :</span></dt><dd>3.4028234663852886e+38</dd><dt><span>GRIB_name :</span></dt><dd>2 metre relative humidity</dd><dt><span>GRIB_numberOfPoints :</span></dt><dd>1038240</dd><dt><span>GRIB_paramId :</span></dt><dd>260242</dd><dt><span>GRIB_parameterName :</span></dt><dd>Relative humidity</dd><dt><span>GRIB_parameterUnits :</span></dt><dd>%</dd><dt><span>GRIB_shortName :</span></dt><dd>2r</dd><dt><span>GRIB_stepRange :</span></dt><dd>0</dd><dt><span>GRIB_stepType :</span></dt><dd>instant</dd><dt><span>GRIB_stepUnits :</span></dt><dd>1</dd><dt><span>GRIB_typeOfLevel :</span></dt><dd>heightAboveGround</dd><dt><span>GRIB_units :</span></dt><dd>%</dd><dt><span>grid_mapping :</span></dt><dd>gribfile_projection</dd><dt><span>long_name :</span></dt><dd>2 metre relative humidity</dd><dt><span>standard_name :</span></dt><dd>relative_humidity</dd><dt><span>units :</span></dt><dd>%</dd></dl></div><div class='xr-var-data'><pre>array([[[25.1, 22.5, 27.7, ..., 40.9, 18. , 31.6],\n", | |
" [25. , 32.5, 36.1, ..., 32.3, 16.6, 24.9],\n", | |
" [28.1, 37. , 42.3, ..., 21.1, 16. , 18. ],\n", | |
" ...,\n", | |
" [86.4, 86.6, 87. , ..., 83.9, 84.1, 84.2],\n", | |
" [85.9, 86.2, 86.6, ..., 83.1, 83.9, 84. ],\n", | |
" [85.3, 85.7, 86.2, ..., 82.7, 83.5, 84. ]],\n", | |
"\n", | |
" [[22.8, 24.5, 26.5, ..., 40.6, 22.3, 27. ],\n", | |
" [22. , 28.1, 37.4, ..., 33.9, 18.9, 20.8],\n", | |
" [21.5, 22.2, 31.1, ..., 29.8, 15. , 12.7],\n", | |
" ...,\n", | |
" [86.4, 86.9, 87.1, ..., 84.1, 84.2, 84.5],\n", | |
" [86. , 86.2, 86.7, ..., 83.5, 83.9, 84.2],\n", | |
" [85.6, 85.9, 87.1, ..., 83.1, 83.6, 84.2]],\n", | |
"\n", | |
" [[37.5, 37.4, 31.3, ..., 60.4, 51. , 36.9],\n", | |
" [18.8, 22.1, 35.7, ..., 39.6, 20.4, 15. ],\n", | |
" [17. , 20.5, 32.5, ..., 34.9, 15.2, 13.4],\n", | |
" ...,\n", | |
"...\n", | |
" ...,\n", | |
" [52.4, 61.2, 68.4, ..., 35.5, 27.8, 27.2],\n", | |
" [45.5, 56.5, 66.5, ..., 38.1, 28.2, 27.2],\n", | |
" [46.7, 58.1, 66.6, ..., 40.6, 28.7, 26.5]],\n", | |
"\n", | |
" [[81.2, 84.7, 91.7, ..., 31.2, 30.2, 30.2],\n", | |
" [76.8, 82.1, 90.2, ..., 30.4, 29.5, 29.6],\n", | |
" [78.2, 81.3, 87.1, ..., 29.5, 26.9, 29.5],\n", | |
" ...,\n", | |
" [55.8, 66.4, 73.8, ..., 32.1, 26.1, 26.5],\n", | |
" [52.4, 63.5, 68. , ..., 34.9, 27.2, 26.5],\n", | |
" [48.7, 61.2, 65.4, ..., 38.1, 28.1, 26. ]],\n", | |
"\n", | |
" [[85. , 86.4, 93.5, ..., 31.6, 30.9, 31. ],\n", | |
" [82.6, 86.6, 93.8, ..., 30.5, 29.7, 31.3],\n", | |
" [76.5, 84.9, 89.1, ..., 29.1, 26. , 29.7],\n", | |
" ...,\n", | |
" [59.3, 69.7, 74.3, ..., 28.7, 24.1, 25.3],\n", | |
" [54.2, 66.9, 67.8, ..., 31.1, 25.2, 25. ],\n", | |
" [54.2, 64.8, 69.5, ..., 34.9, 26.8, 25.2]]], dtype=float32)</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>t2m</span></div><div class='xr-var-dims'>(longitude, latitude, valid_time)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>295.4 295.7 294.3 ... 306.7 306.1</div><input id='attrs-5dc9cf9a-a74c-4ff2-adf7-03e5e07952c1' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-5dc9cf9a-a74c-4ff2-adf7-03e5e07952c1' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-65ffb8a1-2309-4676-b122-df9faa8ddb6a' class='xr-var-data-in' type='checkbox'><label for='data-65ffb8a1-2309-4676-b122-df9faa8ddb6a' 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>GRIB_NV :</span></dt><dd>0</dd><dt><span>GRIB_Nx :</span></dt><dd>1440</dd><dt><span>GRIB_Ny :</span></dt><dd>721</dd><dt><span>GRIB_cfName :</span></dt><dd>air_temperature</dd><dt><span>GRIB_cfVarName :</span></dt><dd>t2m</dd><dt><span>GRIB_dataType :</span></dt><dd>fc</dd><dt><span>GRIB_gridDefinitionDescription :</span></dt><dd>Latitude/longitude. Also called equidistant cylindrical, or Plate Carree</dd><dt><span>GRIB_gridType :</span></dt><dd>regular_ll</dd><dt><span>GRIB_iDirectionIncrementInDegrees :</span></dt><dd>0.25</dd><dt><span>GRIB_iScansNegatively :</span></dt><dd>0</dd><dt><span>GRIB_jDirectionIncrementInDegrees :</span></dt><dd>0.25</dd><dt><span>GRIB_jPointsAreConsecutive :</span></dt><dd>0</dd><dt><span>GRIB_jScansPositively :</span></dt><dd>0</dd><dt><span>GRIB_latitudeOfFirstGridPointInDegrees :</span></dt><dd>90.0</dd><dt><span>GRIB_latitudeOfLastGridPointInDegrees :</span></dt><dd>-90.0</dd><dt><span>GRIB_longitudeOfFirstGridPointInDegrees :</span></dt><dd>0.0</dd><dt><span>GRIB_longitudeOfLastGridPointInDegrees :</span></dt><dd>359.75</dd><dt><span>GRIB_missingValue :</span></dt><dd>3.4028234663852886e+38</dd><dt><span>GRIB_name :</span></dt><dd>2 metre temperature</dd><dt><span>GRIB_numberOfPoints :</span></dt><dd>1038240</dd><dt><span>GRIB_paramId :</span></dt><dd>167</dd><dt><span>GRIB_parameterName :</span></dt><dd>Temperature</dd><dt><span>GRIB_parameterUnits :</span></dt><dd>K</dd><dt><span>GRIB_shortName :</span></dt><dd>2t</dd><dt><span>GRIB_stepRange :</span></dt><dd>0</dd><dt><span>GRIB_stepType :</span></dt><dd>instant</dd><dt><span>GRIB_stepUnits :</span></dt><dd>1</dd><dt><span>GRIB_typeOfLevel :</span></dt><dd>heightAboveGround</dd><dt><span>GRIB_units :</span></dt><dd>K</dd><dt><span>grid_mapping :</span></dt><dd>gribfile_projection</dd><dt><span>long_name :</span></dt><dd>2 metre temperature</dd><dt><span>standard_name :</span></dt><dd>air_temperature</dd><dt><span>units :</span></dt><dd>K</dd></dl></div><div class='xr-var-data'><pre>array([[[295.35797, 295.6773 , 294.29666, ..., 290.17905, 294.64767,\n", | |
" 293.09076],\n", | |
" [294.85797, 292.87732, 292.19666, ..., 290.67905, 294.54767,\n", | |
" 294.19077],\n", | |
" [293.158 , 291.47733, 289.99664, ..., 291.27905, 294.04767,\n", | |
" 293.59076],\n", | |
" ...,\n", | |
" [289.35797, 289.2773 , 289.19666, ..., 288.77905, 289.04767,\n", | |
" 288.89075],\n", | |
" [289.45798, 289.37732, 289.29666, ..., 288.87903, 289.14767,\n", | |
" 289.09076],\n", | |
" [289.45798, 289.47733, 289.39667, ..., 288.87903, 289.14767,\n", | |
" 289.39075]],\n", | |
"\n", | |
" [[295.35797, 294.57733, 294.09665, ..., 290.27905, 293.54767,\n", | |
" 294.19077],\n", | |
" [295.95798, 294.57733, 291.99664, ..., 291.87903, 295.3477 ,\n", | |
" 295.99075],\n", | |
" [296.05798, 295.97733, 293.79666, ..., 292.17905, 296.3477 ,\n", | |
" 297.59076],\n", | |
"...\n", | |
" [299.658 , 297.37732, 295.19666, ..., 303.67905, 306.9477 ,\n", | |
" 305.79077],\n", | |
" [299.85797, 297.2773 , 295.49664, ..., 302.97903, 306.54767,\n", | |
" 305.69077],\n", | |
" [300.05798, 297.2773 , 295.79666, ..., 302.37903, 306.24768,\n", | |
" 305.59076]],\n", | |
"\n", | |
" [[288.658 , 288.47733, 286.19666, ..., 298.17905, 299.8477 ,\n", | |
" 299.59076],\n", | |
" [288.55798, 287.87732, 285.89667, ..., 298.47903, 299.74768,\n", | |
" 299.69077],\n", | |
" [289.85797, 287.6773 , 286.89667, ..., 298.97903, 300.3477 ,\n", | |
" 299.89075],\n", | |
" ...,\n", | |
" [299.158 , 296.7773 , 295.09665, ..., 304.57904, 307.74768,\n", | |
" 306.49075],\n", | |
" [299.658 , 296.57733, 295.39667, ..., 303.87903, 307.3477 ,\n", | |
" 306.29077],\n", | |
" [299.45798, 296.6773 , 294.69666, ..., 303.07904, 306.74768,\n", | |
" 306.09076]]], dtype=float32)</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>prate</span></div><div class='xr-var-dims'>(longitude, latitude, valid_time)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0</div><input id='attrs-62ef82f6-7ac3-463f-8975-0835f41b1cd7' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-62ef82f6-7ac3-463f-8975-0835f41b1cd7' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-b4a55007-a97c-431e-89f4-e2f117d6a868' class='xr-var-data-in' type='checkbox'><label for='data-b4a55007-a97c-431e-89f4-e2f117d6a868' 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>GRIB_NV :</span></dt><dd>0</dd><dt><span>GRIB_Nx :</span></dt><dd>1440</dd><dt><span>GRIB_Ny :</span></dt><dd>721</dd><dt><span>GRIB_cfName :</span></dt><dd>unknown</dd><dt><span>GRIB_cfVarName :</span></dt><dd>prate</dd><dt><span>GRIB_dataType :</span></dt><dd>fc</dd><dt><span>GRIB_gridDefinitionDescription :</span></dt><dd>Latitude/longitude. Also called equidistant cylindrical, or Plate Carree</dd><dt><span>GRIB_gridType :</span></dt><dd>regular_ll</dd><dt><span>GRIB_iDirectionIncrementInDegrees :</span></dt><dd>0.25</dd><dt><span>GRIB_iScansNegatively :</span></dt><dd>0</dd><dt><span>GRIB_jDirectionIncrementInDegrees :</span></dt><dd>0.25</dd><dt><span>GRIB_jPointsAreConsecutive :</span></dt><dd>0</dd><dt><span>GRIB_jScansPositively :</span></dt><dd>0</dd><dt><span>GRIB_latitudeOfFirstGridPointInDegrees :</span></dt><dd>90.0</dd><dt><span>GRIB_latitudeOfLastGridPointInDegrees :</span></dt><dd>-90.0</dd><dt><span>GRIB_longitudeOfFirstGridPointInDegrees :</span></dt><dd>0.0</dd><dt><span>GRIB_longitudeOfLastGridPointInDegrees :</span></dt><dd>359.75</dd><dt><span>GRIB_missingValue :</span></dt><dd>3.4028234663852886e+38</dd><dt><span>GRIB_name :</span></dt><dd>Precipitation rate</dd><dt><span>GRIB_numberOfPoints :</span></dt><dd>1038240</dd><dt><span>GRIB_paramId :</span></dt><dd>3059</dd><dt><span>GRIB_parameterName :</span></dt><dd>Precipitation rate</dd><dt><span>GRIB_parameterUnits :</span></dt><dd>kg m-2 s-1</dd><dt><span>GRIB_shortName :</span></dt><dd>prate</dd><dt><span>GRIB_stepRange :</span></dt><dd>0</dd><dt><span>GRIB_stepType :</span></dt><dd>instant</dd><dt><span>GRIB_stepUnits :</span></dt><dd>1</dd><dt><span>GRIB_typeOfLevel :</span></dt><dd>surface</dd><dt><span>GRIB_units :</span></dt><dd>kg m**-2 s**-1</dd><dt><span>grid_mapping :</span></dt><dd>gribfile_projection</dd><dt><span>long_name :</span></dt><dd>Precipitation rate</dd><dt><span>standard_name :</span></dt><dd>unknown</dd><dt><span>units :</span></dt><dd>kg m**-2 s**-1</dd></dl></div><div class='xr-var-data'><pre>array([[[0.000e+00, 0.000e+00, 0.000e+00, ..., 0.000e+00, 0.000e+00,\n", | |
" 0.000e+00],\n", | |
" [0.000e+00, 7.200e-06, 0.000e+00, ..., 0.000e+00, 0.000e+00,\n", | |
" 0.000e+00],\n", | |
" [0.000e+00, 0.000e+00, 0.000e+00, ..., 0.000e+00, 0.000e+00,\n", | |
" 0.000e+00],\n", | |
" ...,\n", | |
" [0.000e+00, 0.000e+00, 0.000e+00, ..., 0.000e+00, 0.000e+00,\n", | |
" 0.000e+00],\n", | |
" [0.000e+00, 0.000e+00, 0.000e+00, ..., 0.000e+00, 0.000e+00,\n", | |
" 0.000e+00],\n", | |
" [0.000e+00, 0.000e+00, 0.000e+00, ..., 0.000e+00, 0.000e+00,\n", | |
" 0.000e+00]],\n", | |
"\n", | |
" [[0.000e+00, 2.400e-06, 0.000e+00, ..., 0.000e+00, 0.000e+00,\n", | |
" 0.000e+00],\n", | |
" [0.000e+00, 6.320e-05, 0.000e+00, ..., 0.000e+00, 0.000e+00,\n", | |
" 0.000e+00],\n", | |
" [0.000e+00, 0.000e+00, 0.000e+00, ..., 0.000e+00, 0.000e+00,\n", | |
" 0.000e+00],\n", | |
"...\n", | |
" [0.000e+00, 0.000e+00, 0.000e+00, ..., 0.000e+00, 0.000e+00,\n", | |
" 0.000e+00],\n", | |
" [0.000e+00, 0.000e+00, 0.000e+00, ..., 0.000e+00, 0.000e+00,\n", | |
" 0.000e+00],\n", | |
" [0.000e+00, 0.000e+00, 0.000e+00, ..., 0.000e+00, 0.000e+00,\n", | |
" 0.000e+00]],\n", | |
"\n", | |
" [[0.000e+00, 8.000e-07, 2.936e-04, ..., 0.000e+00, 0.000e+00,\n", | |
" 0.000e+00],\n", | |
" [0.000e+00, 4.696e-04, 2.840e-04, ..., 0.000e+00, 0.000e+00,\n", | |
" 0.000e+00],\n", | |
" [3.200e-06, 1.384e-04, 5.552e-04, ..., 0.000e+00, 0.000e+00,\n", | |
" 0.000e+00],\n", | |
" ...,\n", | |
" [0.000e+00, 0.000e+00, 0.000e+00, ..., 0.000e+00, 0.000e+00,\n", | |
" 0.000e+00],\n", | |
" [0.000e+00, 0.000e+00, 0.000e+00, ..., 0.000e+00, 0.000e+00,\n", | |
" 0.000e+00],\n", | |
" [0.000e+00, 0.000e+00, 0.000e+00, ..., 0.000e+00, 0.000e+00,\n", | |
" 0.000e+00]]], dtype=float32)</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>gust</span></div><div class='xr-var-dims'>(longitude, latitude, valid_time)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>5.005 3.703 7.021 ... 9.601 10.1</div><input id='attrs-71685def-176a-4f62-acec-ae76f0c927d8' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-71685def-176a-4f62-acec-ae76f0c927d8' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-e7de27da-0e5d-46e7-a5c0-55b4aef01891' class='xr-var-data-in' type='checkbox'><label for='data-e7de27da-0e5d-46e7-a5c0-55b4aef01891' 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>GRIB_NV :</span></dt><dd>0</dd><dt><span>GRIB_Nx :</span></dt><dd>1440</dd><dt><span>GRIB_Ny :</span></dt><dd>721</dd><dt><span>GRIB_cfName :</span></dt><dd>unknown</dd><dt><span>GRIB_cfVarName :</span></dt><dd>gust</dd><dt><span>GRIB_dataType :</span></dt><dd>fc</dd><dt><span>GRIB_gridDefinitionDescription :</span></dt><dd>Latitude/longitude. Also called equidistant cylindrical, or Plate Carree</dd><dt><span>GRIB_gridType :</span></dt><dd>regular_ll</dd><dt><span>GRIB_iDirectionIncrementInDegrees :</span></dt><dd>0.25</dd><dt><span>GRIB_iScansNegatively :</span></dt><dd>0</dd><dt><span>GRIB_jDirectionIncrementInDegrees :</span></dt><dd>0.25</dd><dt><span>GRIB_jPointsAreConsecutive :</span></dt><dd>0</dd><dt><span>GRIB_jScansPositively :</span></dt><dd>0</dd><dt><span>GRIB_latitudeOfFirstGridPointInDegrees :</span></dt><dd>90.0</dd><dt><span>GRIB_latitudeOfLastGridPointInDegrees :</span></dt><dd>-90.0</dd><dt><span>GRIB_longitudeOfFirstGridPointInDegrees :</span></dt><dd>0.0</dd><dt><span>GRIB_longitudeOfLastGridPointInDegrees :</span></dt><dd>359.75</dd><dt><span>GRIB_missingValue :</span></dt><dd>3.4028234663852886e+38</dd><dt><span>GRIB_name :</span></dt><dd>Wind speed (gust)</dd><dt><span>GRIB_numberOfPoints :</span></dt><dd>1038240</dd><dt><span>GRIB_paramId :</span></dt><dd>260065</dd><dt><span>GRIB_parameterName :</span></dt><dd>Wind speed (gust)</dd><dt><span>GRIB_parameterUnits :</span></dt><dd>m s-1</dd><dt><span>GRIB_shortName :</span></dt><dd>gust</dd><dt><span>GRIB_stepRange :</span></dt><dd>0</dd><dt><span>GRIB_stepType :</span></dt><dd>instant</dd><dt><span>GRIB_stepUnits :</span></dt><dd>1</dd><dt><span>GRIB_typeOfLevel :</span></dt><dd>surface</dd><dt><span>GRIB_units :</span></dt><dd>m s**-1</dd><dt><span>grid_mapping :</span></dt><dd>gribfile_projection</dd><dt><span>long_name :</span></dt><dd>Wind speed (gust)</dd><dt><span>standard_name :</span></dt><dd>unknown</dd><dt><span>units :</span></dt><dd>m s**-1</dd></dl></div><div class='xr-var-data'><pre>array([[[ 5.004875 , 3.702984 , 7.0213413, ..., 1.8055443,\n", | |
" 4.3008685, 3.801896 ],\n", | |
" [ 4.604875 , 6.502984 , 5.121341 , ..., 3.0055444,\n", | |
" 5.3008685, 7.301896 ],\n", | |
" [ 2.104875 , 4.102984 , 3.7213414, ..., 3.3055444,\n", | |
" 3.4008687, 3.7018962],\n", | |
" ...,\n", | |
" [ 7.104875 , 7.102984 , 7.3213415, ..., 8.105544 ,\n", | |
" 7.7008686, 8.001896 ],\n", | |
" [ 6.9048753, 7.002984 , 7.121341 , ..., 7.505544 ,\n", | |
" 7.400869 , 7.901896 ],\n", | |
" [ 6.8048754, 6.902984 , 6.721341 , ..., 7.4055443,\n", | |
" 7.2008686, 7.6018963]],\n", | |
"\n", | |
" [[ 2.7048752, 3.102984 , 4.121341 , ..., 2.2055442,\n", | |
" 3.9008687, 5.801896 ],\n", | |
" [ 3.7048752, 4.402984 , 4.5213413, ..., 1.7055444,\n", | |
" 4.8008685, 6.6018963],\n", | |
" [ 2.7048752, 3.4029841, 7.8213415, ..., 2.5055444,\n", | |
" 5.000869 , 5.201896 ],\n", | |
"...\n", | |
" [ 2.7048752, 2.302984 , 3.4213412, ..., 10.505545 ,\n", | |
" 9.300869 , 10.001896 ],\n", | |
" [ 1.8048751, 2.202984 , 3.8213413, ..., 11.205544 ,\n", | |
" 9.700869 , 10.401896 ],\n", | |
" [ 1.5048752, 1.902984 , 3.2213414, ..., 11.405544 ,\n", | |
" 10.200869 , 10.601896 ]],\n", | |
"\n", | |
" [[ 5.604875 , 4.602984 , 3.2213414, ..., 9.405544 ,\n", | |
" 6.400869 , 5.001896 ],\n", | |
" [ 7.104875 , 5.902984 , 3.3213413, ..., 8.605544 ,\n", | |
" 6.500869 , 4.701896 ],\n", | |
" [ 7.8048754, 7.802984 , 2.5213413, ..., 8.005545 ,\n", | |
" 6.8008685, 4.701896 ],\n", | |
" ...,\n", | |
" [ 1.5048752, 1.802984 , 2.6213412, ..., 10.205544 ,\n", | |
" 9.000869 , 9.601896 ],\n", | |
" [ 1.8048751, 1.2029841, 2.6213412, ..., 11.005545 ,\n", | |
" 9.400868 , 10.101896 ],\n", | |
" [ 1.6048752, 1.002984 , 1.8213413, ..., 11.005545 ,\n", | |
" 9.600869 , 10.101896 ]]], dtype=float32)</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>tcc</span></div><div class='xr-var-dims'>(longitude, latitude, valid_time)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>15.2 100.0 96.5 ... 0.0 4.4 61.4</div><input id='attrs-f21d88da-e6be-49c6-b1bb-0d86ca2981bc' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-f21d88da-e6be-49c6-b1bb-0d86ca2981bc' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-ff75a717-0ce1-4948-82e6-b8aff7764067' class='xr-var-data-in' type='checkbox'><label for='data-ff75a717-0ce1-4948-82e6-b8aff7764067' 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>GRIB_NV :</span></dt><dd>0</dd><dt><span>GRIB_Nx :</span></dt><dd>1440</dd><dt><span>GRIB_Ny :</span></dt><dd>721</dd><dt><span>GRIB_cfName :</span></dt><dd>unknown</dd><dt><span>GRIB_cfVarName :</span></dt><dd>unknown</dd><dt><span>GRIB_dataType :</span></dt><dd>fc</dd><dt><span>GRIB_gridDefinitionDescription :</span></dt><dd>Latitude/longitude. Also called equidistant cylindrical, or Plate Carree</dd><dt><span>GRIB_gridType :</span></dt><dd>regular_ll</dd><dt><span>GRIB_iDirectionIncrementInDegrees :</span></dt><dd>0.25</dd><dt><span>GRIB_iScansNegatively :</span></dt><dd>0</dd><dt><span>GRIB_jDirectionIncrementInDegrees :</span></dt><dd>0.25</dd><dt><span>GRIB_jPointsAreConsecutive :</span></dt><dd>0</dd><dt><span>GRIB_jScansPositively :</span></dt><dd>0</dd><dt><span>GRIB_latitudeOfFirstGridPointInDegrees :</span></dt><dd>90.0</dd><dt><span>GRIB_latitudeOfLastGridPointInDegrees :</span></dt><dd>-90.0</dd><dt><span>GRIB_longitudeOfFirstGridPointInDegrees :</span></dt><dd>0.0</dd><dt><span>GRIB_longitudeOfLastGridPointInDegrees :</span></dt><dd>359.75</dd><dt><span>GRIB_missingValue :</span></dt><dd>3.4028234663852886e+38</dd><dt><span>GRIB_name :</span></dt><dd>Total Cloud Cover</dd><dt><span>GRIB_numberOfPoints :</span></dt><dd>1038240</dd><dt><span>GRIB_paramId :</span></dt><dd>228164</dd><dt><span>GRIB_parameterName :</span></dt><dd>Total cloud cover</dd><dt><span>GRIB_parameterUnits :</span></dt><dd>%</dd><dt><span>GRIB_shortName :</span></dt><dd>tcc</dd><dt><span>GRIB_stepRange :</span></dt><dd>0</dd><dt><span>GRIB_stepType :</span></dt><dd>instant</dd><dt><span>GRIB_stepUnits :</span></dt><dd>1</dd><dt><span>GRIB_typeOfLevel :</span></dt><dd>atmosphere</dd><dt><span>GRIB_units :</span></dt><dd>%</dd><dt><span>grid_mapping :</span></dt><dd>gribfile_projection</dd><dt><span>long_name :</span></dt><dd>Total Cloud Cover</dd><dt><span>standard_name :</span></dt><dd>unknown</dd><dt><span>units :</span></dt><dd>%</dd></dl></div><div class='xr-var-data'><pre>array([[[ 15.2, 100. , 96.5, ..., 0. , 8.5, 75.6],\n", | |
" [100. , 96.6, 8.2, ..., 0. , 1.7, 3.2],\n", | |
" [ 66.8, 76. , 45.5, ..., 0. , 24.6, 28.3],\n", | |
" ...,\n", | |
" [ 0. , 0. , 0. , ..., 3.3, 21.8, 19.9],\n", | |
" [ 0. , 0. , 0. , ..., 0. , 18.6, 16.9],\n", | |
" [ 0. , 0. , 0. , ..., 0.3, 17.8, 16.1]],\n", | |
"\n", | |
" [[ 91.4, 99. , 98.4, ..., 0. , 1.8, 72.6],\n", | |
" [ 98.7, 99.5, 82.5, ..., 0. , 5. , 4.4],\n", | |
" [ 73.5, 33.8, 3.4, ..., 0. , 5. , 53.6],\n", | |
" ...,\n", | |
" [ 0. , 0. , 0. , ..., 12.2, 23.3, 28.2],\n", | |
" [ 0. , 0. , 0. , ..., 2.1, 18.8, 18.9],\n", | |
" [ 0. , 0. , 0. , ..., 0. , 11.7, 21. ]],\n", | |
"\n", | |
" [[ 4.4, 51.3, 39.3, ..., 0. , 0. , 3. ],\n", | |
" [ 96.9, 79.1, 76.6, ..., 0.1, 5.8, 4.2],\n", | |
" [ 57.7, 23.6, 20.4, ..., 0. , 7.6, 72.8],\n", | |
" ...,\n", | |
"...\n", | |
" ...,\n", | |
" [100. , 4. , 0.3, ..., 0. , 0.6, 6.7],\n", | |
" [ 98.6, 3. , 30.2, ..., 0. , 7.6, 97.3],\n", | |
" [100. , 5.4, 64. , ..., 0. , 47.5, 100. ]],\n", | |
"\n", | |
" [[ 82.5, 60.5, 100. , ..., 0. , 25.6, 12.9],\n", | |
" [ 41.5, 40.8, 100. , ..., 0. , 5. , 4.1],\n", | |
" [100. , 95. , 100. , ..., 2.4, 3.3, 5. ],\n", | |
" ...,\n", | |
" [ 45.3, 5. , 15.4, ..., 0. , 0.1, 23.7],\n", | |
" [ 59.5, 5.2, 100. , ..., 0. , 5.2, 100. ],\n", | |
" [100. , 21. , 100. , ..., 0. , 6.3, 99.3]],\n", | |
"\n", | |
" [[ 94.9, 58.8, 99.9, ..., 0. , 15.9, 16.7],\n", | |
" [ 38. , 26.4, 100. , ..., 0. , 4.7, 48.5],\n", | |
" [ 14.8, 99.9, 100. , ..., 1.4, 4.5, 18.3],\n", | |
" ...,\n", | |
" [ 30.4, 12.8, 38.5, ..., 0. , 0. , 28.3],\n", | |
" [ 91.1, 63.5, 100. , ..., 0. , 2.2, 98.8],\n", | |
" [100. , 80.7, 100. , ..., 0. , 4.4, 61.4]]], dtype=float32)</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-53c44815-8146-442d-9777-6bc0db765669' class='xr-section-summary-in' type='checkbox' ><label for='section-53c44815-8146-442d-9777-6bc0db765669' 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-dc462617-3576-477e-9ef3-c1c4ad3ad655' class='xr-index-data-in' type='checkbox'/><label for='index-dc462617-3576-477e-9ef3-c1c4ad3ad655' 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([ 40.0, 39.75, 39.5, 39.25, 39.0, 38.75, 38.5, 38.25, 38.0, 37.75,\n", | |
" 37.5, 37.25, 37.0, 36.75, 36.5, 36.25, 36.0, 35.75, 35.5, 35.25,\n", | |
" 35.0, 34.75, 34.5, 34.25, 34.0, 33.75, 33.5, 33.25, 33.0, 32.75,\n", | |
" 32.5, 32.25, 32.0, 31.75, 31.5, 31.25, 31.0, 30.75, 30.5, 30.25,\n", | |
" 30.0],\n", | |
" dtype='float64', name='latitude'))</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-98517861-26da-495c-bbe8-11d333cc5617' class='xr-index-data-in' type='checkbox'/><label for='index-98517861-26da-495c-bbe8-11d333cc5617' 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([ -120.0, -119.75, -119.5, -119.25, -119.0, -118.75, -118.5, -118.25,\n", | |
" -118.0, -117.75, -117.5, -117.25, -117.0, -116.75, -116.5, -116.25,\n", | |
" -116.0, -115.75, -115.5, -115.25, -115.0, -114.75, -114.5, -114.25,\n", | |
" -114.0, -113.75, -113.5, -113.25, -113.0, -112.75, -112.5, -112.25,\n", | |
" -112.0, -111.75, -111.5, -111.25, -111.0, -110.75, -110.5, -110.25,\n", | |
" -110.0, -109.75, -109.5, -109.25, -109.0, -108.75, -108.5, -108.25,\n", | |
" -108.0, -107.75, -107.5, -107.25, -107.0, -106.75, -106.5, -106.25,\n", | |
" -106.0, -105.75, -105.5, -105.25, -105.0, -104.75, -104.5, -104.25,\n", | |
" -104.0, -103.75, -103.5, -103.25, -103.0, -102.75, -102.5, -102.25,\n", | |
" -102.0, -101.75, -101.5, -101.25, -101.0, -100.75, -100.5, -100.25,\n", | |
" -100.0],\n", | |
" dtype='float64', name='longitude'))</pre></div></li><li class='xr-var-item'><div class='xr-index-name'><div>valid_time</div></div><div class='xr-index-preview'>PandasIndex</div><input type='checkbox' disabled/><label></label><input id='index-7ebea0cb-7fe2-41c8-9f05-25f41ff40ae5' class='xr-index-data-in' type='checkbox'/><label for='index-7ebea0cb-7fe2-41c8-9f05-25f41ff40ae5' 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(['2024-05-13 00:00:00', '2024-05-13 01:00:00',\n", | |
" '2024-05-13 02:00:00', '2024-05-13 03:00:00',\n", | |
" '2024-05-13 04:00:00', '2024-05-13 05:00:00',\n", | |
" '2024-05-13 06:00:00', '2024-05-13 07:00:00',\n", | |
" '2024-05-13 08:00:00', '2024-05-13 09:00:00',\n", | |
" ...\n", | |
" '2024-05-27 21:00:00', '2024-05-28 00:00:00',\n", | |
" '2024-05-28 03:00:00', '2024-05-28 06:00:00',\n", | |
" '2024-05-28 09:00:00', '2024-05-28 12:00:00',\n", | |
" '2024-05-28 15:00:00', '2024-05-28 18:00:00',\n", | |
" '2024-05-28 21:00:00', '2024-05-29 00:00:00'],\n", | |
" dtype='datetime64[ns]', name='valid_time', length=209, freq=None))</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-4da26639-fde4-4093-a25d-8dc7c22a5d4d' class='xr-section-summary-in' type='checkbox' checked><label for='section-4da26639-fde4-4093-a25d-8dc7c22a5d4d' class='xr-section-summary' >Attributes: <span>(1)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><dl class='xr-attrs'><dt><span>description :</span></dt><dd>GFS data ingested for forecasting demo</dd></dl></div></li></ul></div></div>" | |
], | |
"text/plain": [ | |
"<xarray.Dataset> Size: 14MB\n", | |
"Dimensions: (longitude: 81, latitude: 41, valid_time: 209)\n", | |
"Coordinates:\n", | |
" time datetime64[ns] 8B 2024-05-13\n", | |
" * latitude (latitude) float64 328B 40.0 39.75 39.5 ... 30.5 30.25 30.0\n", | |
" * longitude (longitude) float64 648B -120.0 -119.8 -119.5 ... -100.2 -100.0\n", | |
" * valid_time (valid_time) datetime64[ns] 2kB 2024-05-13 ... 2024-05-29\n", | |
"Data variables:\n", | |
" r2 (longitude, latitude, valid_time) float32 3MB 25.1 22.5 ... 25.2\n", | |
" t2m (longitude, latitude, valid_time) float32 3MB 295.4 ... 306.1\n", | |
" prate (longitude, latitude, valid_time) float32 3MB 0.0 0.0 ... 0.0\n", | |
" gust (longitude, latitude, valid_time) float32 3MB 5.005 ... 10.1\n", | |
" tcc (longitude, latitude, valid_time) float32 3MB 15.2 ... 61.4\n", | |
"Attributes:\n", | |
" description: GFS data ingested for forecasting demo" | |
] | |
}, | |
"execution_count": 11, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"%time ds_ic.sel(longitude=slice(-120, -100), latitude=slice(40, 30)).compute()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 12, | |
"id": "f6d0ce2b-f80b-4908-b732-1911d4e5317f", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"#%time ds_ic.isel(longitude=slice(-120, -100), latitude=slice(40, 30)).compute()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 13, | |
"id": "061f9e8f-dd4f-4c7d-a683-15d1c12586f6", | |
"metadata": { | |
"scrolled": true | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"CPU times: user 162 ms, sys: 81.4 ms, total: 244 ms\n", | |
"Wall time: 853 ms\n" | |
] | |
} | |
], | |
"source": [ | |
"%time ds_ic.t2m.isel(longitude = -120, latitude=40).compute();" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "02b3cf15-3a59-4add-97d3-62ac6b9122d0", | |
"metadata": {}, | |
"source": [ | |
"## Spatial Query" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 14, | |
"id": "cb399344-23ec-4901-82f3-28a7b1e6a5ba", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"CPU times: user 48.3 ms, sys: 31.1 ms, total: 79.4 ms\n", | |
"Wall time: 2.13 s\n" | |
] | |
} | |
], | |
"source": [ | |
"%%time\n", | |
"df = rel2.query(\"forecast_data\",\n", | |
" \"\"\"\n", | |
" SELECT valid_time, latitude, longitude, t2m\n", | |
" FROM forecast_data\n", | |
" WHERE valid_time BETWEEN TIMESTAMP '2024-05-13 02:00:00' AND TIMESTAMP '2024-05-14 00:00:00'\n", | |
" \"\"\"\n", | |
")" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 15, | |
"id": "902f7416-f601-4c2e-a4fe-c5286f63d59a", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"CPU times: user 875 ms, sys: 451 ms, total: 1.33 s\n", | |
"Wall time: 2.1 s\n" | |
] | |
} | |
], | |
"source": [ | |
"%time ds_ic.t2m.sel(valid_time=slice(\"2024-05-13T02:00:00\", \"2024-05-14T00:00:00\")).compute();" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "eab5972f-1a0b-42a1-a485-5ee912087421", | |
"metadata": {}, | |
"source": [ | |
"## Temporal Mean\n", | |
"\n", | |
"For the aggregation queries, we switch to different variables to avoid biasing the results from Icechunk's aggresive caching." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 16, | |
"id": "fd299291-9d0e-4f87-a063-7ccb9976e428", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"CPU times: user 42.2 ms, sys: 30.4 ms, total: 72.7 ms\n", | |
"Wall time: 1.95 s\n" | |
] | |
} | |
], | |
"source": [ | |
"%%time\n", | |
"df = rel2.query(\"forecast_data\",\n", | |
" \"\"\"\n", | |
" SELECT AVG(r2), latitude, longitude\n", | |
" FROM forecast_data\n", | |
" GROUP BY latitude, longitude\n", | |
" \"\"\"\n", | |
")" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 17, | |
"id": "dba927f7-3a5c-4dd1-88ac-daf46f70e1bc", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"CPU times: user 3.8 s, sys: 1.18 s, total: 4.98 s\n", | |
"Wall time: 3.52 s\n" | |
] | |
} | |
], | |
"source": [ | |
"%time ds_ic.r2.mean((\"valid_time\")).compute();" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "acefd50e-3e0c-4a67-a71e-f830a2642217", | |
"metadata": {}, | |
"source": [ | |
"## Spatial Mean" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 18, | |
"id": "0187a4c6-980a-4d82-9535-4741a4ef4434", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"CPU times: user 49 ms, sys: 34.2 ms, total: 83.2 ms\n", | |
"Wall time: 1.95 s\n" | |
] | |
} | |
], | |
"source": [ | |
"%%time\n", | |
"df = rel2.query(\"forecast_data\",\n", | |
" \"\"\"\n", | |
" SELECT AVG(tcc), valid_time\n", | |
" FROM forecast_data\n", | |
" GROUP BY valid_time\n", | |
" \"\"\"\n", | |
")" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 19, | |
"id": "8349f164-67f6-47b0-9dd9-02725edb785a", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"CPU times: user 3.75 s, sys: 1.26 s, total: 5.02 s\n", | |
"Wall time: 3.32 s\n" | |
] | |
} | |
], | |
"source": [ | |
"%time ds_ic.tcc.mean((\"longitude\", \"latitude\")).compute();" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "93612cfe-9f93-4e81-aec3-efe23b8c67a1", | |
"metadata": {}, | |
"outputs": [], | |
"source": [] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python 3 (ipykernel)", | |
"language": "python", | |
"name": "python3" | |
}, | |
"language_info": { | |
"codemirror_mode": { | |
"name": "ipython", | |
"version": 3 | |
}, | |
"file_extension": ".py", | |
"mimetype": "text/x-python", | |
"name": "python", | |
"nbconvert_exporter": "python", | |
"pygments_lexer": "ipython3", | |
"version": "3.12.8" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 5 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment