Created
October 17, 2025 20:41
-
-
Save rsignell/dbd3e09dc026a9ba72f26ef8e64aedc9 to your computer and use it in GitHub Desktop.
Revisions
-
rsignell created this gist
Oct 17, 2025 .There are no files selected for viewing
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 charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,1086 @@ { "cells": [ { "cell_type": "markdown", "id": "d9a0259d-b56b-429c-9a76-7316829b8b63", "metadata": {}, "source": [ "# ERA5 EVAP from AWS: Virtualizarr & Icechunk" ] }, { "cell_type": "code", "execution_count": 1, "id": "096be375-3c98-429f-843e-b53f94049da6", "metadata": {}, "outputs": [], "source": [ "import warnings\n", "warnings.filterwarnings(\"ignore\", category=UserWarning)" ] }, { "cell_type": "code", "execution_count": 2, "id": "03fae159-4235-4312-bc31-00a1df894a39", "metadata": {}, "outputs": [], "source": [ "import icechunk" ] }, { "cell_type": "code", "execution_count": 3, "id": "fa06c4b3-7c50-4b65-b8bc-caca5522cb7f", "metadata": {}, "outputs": [], "source": [ "import xarray as xr\n", "from obstore.store import from_url\n", "\n", "from virtualizarr import open_virtual_dataset\n", "from virtualizarr.parsers import HDFParser\n", "from virtualizarr.registry import ObjectStoreRegistry" ] }, { "cell_type": "code", "execution_count": 4, "id": "5c93f342-4239-4557-ba48-f12eff688a1f", "metadata": {}, "outputs": [], "source": [ "data_bucket = \"s3://nsf-ncar-era5\"" ] }, { "cell_type": "code", "execution_count": 5, "id": "43d26f75-92ab-4313-baad-fc49c1874fb3", "metadata": {}, "outputs": [], "source": [ "import os\n", "from dotenv import load_dotenv\n", "_ = load_dotenv(f'{os.environ['HOME']}/dotenv/rsignell4.env')\n", "\n", "# Define Icechunk storage\n", "storage_endpoint = 'https://pangeo-eosc-minioapi.vm.fedcloud.eu'\n", "storage_bucket = 'rsignell4-protocoast'\n", "storage_name = 'era5-evap-icechunk'" ] }, { "cell_type": "code", "execution_count": 6, "id": "86456d60-5658-47e6-ba9d-ad6cf794add2", "metadata": {}, "outputs": [], "source": [ "storage = icechunk.s3_storage(\n", " bucket=storage_bucket,\n", " prefix=f\"icechunk/{storage_name}\",\n", " from_env=True,\n", " endpoint_url=storage_endpoint,\n", " region='not-used', # N/A for Pangeo-EOSC bucket, but required param\n", " force_path_style=True)" ] }, { "cell_type": "code", "execution_count": 7, "id": "16df58d3-97cb-4a84-b079-6e8d2164c271", "metadata": {}, "outputs": [], "source": [ "config = icechunk.RepositoryConfig.default()\n", "config.set_virtual_chunk_container(\n", " icechunk.VirtualChunkContainer(\n", " url_prefix=f\"{data_bucket}/\",\n", " store=icechunk.s3_store(region=\"us-west-2\", anonymous=True, s3_compatible=True, \n", " force_path_style=True),\n", " ),\n", ")" ] }, { "cell_type": "code", "execution_count": 8, "id": "e5478c68-745e-423c-ac1e-eedf997bc992", "metadata": {}, "outputs": [], "source": [ "import fsspec\n", "fs = fsspec.filesystem('s3', anon=True)\n", "fs_write = fsspec.filesystem('s3', anon=False, endpoint_url=storage_endpoint)" ] }, { "cell_type": "code", "execution_count": 9, "id": "cafaa143-8260-4fd2-90cf-d9c0a4bfae31", "metadata": {}, "outputs": [], "source": [ "mon_list = fs.ls(f'{data_bucket}/e5.oper.fc.sfc.accumu/')[1:]" ] }, { "cell_type": "code", "execution_count": 10, "id": "6aba3edb-f5df-48d3-ad30-5bf7eccbcfd6", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "nsf-ncar-era5/e5.oper.fc.sfc.accumu/194001\n", "nsf-ncar-era5/e5.oper.fc.sfc.accumu/202506\n" ] } ], "source": [ "print(mon_list[0])\n", "print(mon_list[-1])" ] }, { "cell_type": "code", "execution_count": 11, "id": "865edd39-32f4-4dcc-b556-44c0789d0846", "metadata": {}, "outputs": [], "source": [ "store = from_url(data_bucket, region=\"us-west-2\", skip_signature=True)\n", "registry = ObjectStoreRegistry({data_bucket: store})\n", "parser = HDFParser()" ] }, { "cell_type": "code", "execution_count": 12, "id": "3a9a2b79-6806-40c9-8455-e0d5f275a6b3", "metadata": {}, "outputs": [], "source": [ "credentials = icechunk.containers_credentials({f\"s3://{data_bucket}/\": icechunk.s3_credentials(anonymous=True)})" ] }, { "cell_type": "code", "execution_count": 13, "id": "77badac4-362e-4501-b669-24c6d986bb69", "metadata": {}, "outputs": [], "source": [ "def fix_ds(ds):\n", " return ds.drop_vars(['utc_date']) # <<= This 'utc_date' was making xr.concat bomb out, so we drop it" ] }, { "cell_type": "code", "execution_count": 14, "id": "76d8f197-9e6e-430f-a1a4-9ce04666b778", "metadata": {}, "outputs": [], "source": [ "def create_or_append(flist, create=False):\n", " flist = [f's3://{f}' for f in flist]\n", " if create:\n", " # remove old existing icechunk storage with this name\n", " try:\n", " # Use the same prefix as the storage\n", " fs_write.rm(f's3://{storage_bucket}/icechunk/{storage_name}', recursive=True)\n", " print('removing old icechunk storage')\n", " except:\n", " pass\n", "\n", " ds_list = [\n", " open_virtual_dataset(\n", " url=f,\n", " parser=parser,\n", " registry=registry, \n", " loadable_variables=[\"forecast_initial_time\"]) for f in flist]\n", "\n", " ds_list = [fix_ds(ds) for ds in ds_list]\n", "\n", " ds = xr.concat(\n", " ds_list,\n", " dim=\"forecast_initial_time\",\n", " coords=\"minimal\",\n", " compat=\"override\",\n", " combine_attrs=\"override\",\n", " )\n", " if create:\n", " repo = icechunk.Repository.create(storage, config)\n", " session = repo.writable_session(\"main\")\n", " ds.virtualize.to_icechunk(session.store)\n", " session.commit(\"Initial ERA5 Evap creation\")\n", " else:\n", " repo = icechunk.Repository.open(storage, config, authorize_virtual_chunk_access=credentials)\n", " append_session = repo.writable_session(\"main\")\n", " ds.virtualize.to_icechunk(append_session.store, append_dim=\"forecast_initial_time\")\n", " append_session.commit(\"Append more ERA5 Evap Files\")" ] }, { "cell_type": "markdown", "id": "6409a6e0-4fbc-4d8d-a08b-ad32256df705", "metadata": {}, "source": [ "## Create the icechunk using mon_list[0]" ] }, { "cell_type": "code", "execution_count": 15, "id": "51b7bfb5-9b86-49cc-8f38-235f6ce96454", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['nsf-ncar-era5/e5.oper.fc.sfc.accumu/194001/e5.oper.fc.sfc.accumu.128_182_e.ll025sc.1940010106_1940011606.nc',\n", " 'nsf-ncar-era5/e5.oper.fc.sfc.accumu/194001/e5.oper.fc.sfc.accumu.128_182_e.ll025sc.1940011606_1940020106.nc']" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "flist = fs.glob(f'{mon_list[0]}/*128_182_e*.nc')\n", "create_or_append(flist, create=True)" ] }, { "cell_type": "markdown", "id": "94aa8d1e-8f40-41b9-9dab-0c72e6e22cc3", "metadata": {}, "source": [ "## Append all the other months" ] }, { "cell_type": "code", "execution_count": null, "id": "d11bfa53-442f-447f-9c37-ce93842834c3", "metadata": {}, "outputs": [], "source": [ "%%time\n", "for mon in mon_list[1:]: # <== starting at mon_list[1] because we used mon_list[0] to create\n", " print(mon)\n", " flist = fs.glob(f'{mon}/*128_182_e*.nc')\n", " create_or_append(flist, create=False)" ] }, { "cell_type": "markdown", "id": "5c951f69-7734-4983-aadf-39f8e4322124", "metadata": {}, "source": [ "## Check that it worked" ] }, { "cell_type": "code", "execution_count": 18, "id": "72b63d0e-0311-4686-b315-292126ccbc14", "metadata": {}, "outputs": [ { "data": { "text/html": [ "<div><svg style=\"position: absolute; width: 0; height: 0; overflow: hidden\">\n", "<defs>\n", "<symbol id=\"icon-database\" viewBox=\"0 0 32 32\">\n", "<path d=\"M16 0c-8.837 0-16 2.239-16 5v4c0 2.761 7.163 5 16 5s16-2.239 16-5v-4c0-2.761-7.163-5-16-5z\"></path>\n", "<path d=\"M16 17c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n", "<path d=\"M16 26c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n", "</symbol>\n", "<symbol id=\"icon-file-text2\" viewBox=\"0 0 32 32\">\n", "<path d=\"M28.681 7.159c-0.694-0.947-1.662-2.053-2.724-3.116s-2.169-2.030-3.116-2.724c-1.612-1.182-2.393-1.319-2.841-1.319h-15.5c-1.378 0-2.5 1.121-2.5 2.5v27c0 1.378 1.122 2.5 2.5 2.5h23c1.378 0 2.5-1.122 2.5-2.5v-19.5c0-0.448-0.137-1.23-1.319-2.841zM24.543 5.457c0.959 0.959 1.712 1.825 2.268 2.543h-4.811v-4.811c0.718 0.556 1.584 1.309 2.543 2.268zM28 29.5c0 0.271-0.229 0.5-0.5 0.5h-23c-0.271 0-0.5-0.229-0.5-0.5v-27c0-0.271 0.229-0.5 0.5-0.5 0 0 15.499-0 15.5 0v7c0 0.552 0.448 1 1 1h7v19.5z\"></path>\n", "<path d=\"M23 26h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n", "<path d=\"M23 22h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n", "<path d=\"M23 18h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n", "</symbol>\n", "</defs>\n", "</svg>\n", "<style>/* CSS stylesheet for displaying xarray objects in notebooks */\n", "\n", ":root {\n", " --xr-font-color0: var(\n", " --jp-content-font-color0,\n", " var(--pst-color-text-base rgba(0, 0, 0, 1))\n", " );\n", " --xr-font-color2: var(\n", " --jp-content-font-color2,\n", " var(--pst-color-text-base, rgba(0, 0, 0, 0.54))\n", " );\n", " --xr-font-color3: var(\n", " --jp-content-font-color3,\n", " var(--pst-color-text-base, rgba(0, 0, 0, 0.38))\n", " );\n", " --xr-border-color: var(\n", " --jp-border-color2,\n", " hsl(from var(--pst-color-on-background, white) h s calc(l - 10))\n", " );\n", " --xr-disabled-color: var(\n", " --jp-layout-color3,\n", " hsl(from var(--pst-color-on-background, white) h s calc(l - 40))\n", " );\n", " --xr-background-color: var(\n", " --jp-layout-color0,\n", " var(--pst-color-on-background, white)\n", " );\n", " --xr-background-color-row-even: var(\n", " --jp-layout-color1,\n", " hsl(from var(--pst-color-on-background, white) h s calc(l - 5))\n", " );\n", " --xr-background-color-row-odd: var(\n", " --jp-layout-color2,\n", " hsl(from var(--pst-color-on-background, white) h s calc(l - 15))\n", " );\n", "}\n", "\n", "html[theme=\"dark\"],\n", "html[data-theme=\"dark\"],\n", "body[data-theme=\"dark\"],\n", "body.vscode-dark {\n", " --xr-font-color0: var(\n", " --jp-content-font-color0,\n", " var(--pst-color-text-base, rgba(255, 255, 255, 1))\n", " );\n", " --xr-font-color2: var(\n", " --jp-content-font-color2,\n", " var(--pst-color-text-base, rgba(255, 255, 255, 0.54))\n", " );\n", " --xr-font-color3: var(\n", " --jp-content-font-color3,\n", " var(--pst-color-text-base, rgba(255, 255, 255, 0.38))\n", " );\n", " --xr-border-color: var(\n", " --jp-border-color2,\n", " hsl(from var(--pst-color-on-background, #111111) h s calc(l + 10))\n", " );\n", " --xr-disabled-color: var(\n", " --jp-layout-color3,\n", " hsl(from var(--pst-color-on-background, #111111) h s calc(l + 40))\n", " );\n", " --xr-background-color: var(\n", " --jp-layout-color0,\n", " var(--pst-color-on-background, #111111)\n", " );\n", " --xr-background-color-row-even: var(\n", " --jp-layout-color1,\n", " hsl(from var(--pst-color-on-background, #111111) h s calc(l + 5))\n", " );\n", " --xr-background-color-row-odd: var(\n", " --jp-layout-color2,\n", " hsl(from var(--pst-color-on-background, #111111) h s calc(l + 15))\n", " );\n", "}\n", "\n", ".xr-wrap {\n", " display: block !important;\n", " min-width: 300px;\n", " max-width: 700px;\n", " line-height: 1.6;\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-obj-name,\n", ".xr-group-name {\n", " margin-left: 2px;\n", " margin-right: 10px;\n", "}\n", "\n", ".xr-group-name::before {\n", " content: \"📁\";\n", " padding-right: 0.3em;\n", "}\n", "\n", ".xr-group-name,\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", " margin-block-start: 0;\n", " margin-block-end: 0;\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", " margin: 0;\n", "}\n", "\n", ".xr-section-item input + label {\n", " color: var(--xr-disabled-color);\n", " border: 2px solid transparent !important;\n", "}\n", "\n", ".xr-section-item input:enabled + label {\n", " cursor: pointer;\n", " color: var(--xr-font-color2);\n", "}\n", "\n", ".xr-section-item input:focus + label {\n", " border: 2px solid var(--xr-font-color0) !important;\n", "}\n", "\n", ".xr-section-item input:enabled + label:hover {\n", " color: var(--xr-font-color0);\n", "}\n", "\n", ".xr-section-summary {\n", " grid-column: 1;\n", " color: var(--xr-font-color2);\n", " font-weight: 500;\n", "}\n", "\n", ".xr-section-summary > span {\n", " display: inline-block;\n", " padding-left: 0.5em;\n", "}\n", "\n", ".xr-section-summary-in:disabled + label {\n", " color: var(--xr-font-color2);\n", "}\n", "\n", ".xr-section-summary-in + label:before {\n", " display: inline-block;\n", " content: \"►\";\n", " font-size: 11px;\n", " width: 15px;\n", " text-align: center;\n", "}\n", "\n", ".xr-section-summary-in:disabled + label:before {\n", " color: var(--xr-disabled-color);\n", "}\n", "\n", ".xr-section-summary-in:checked + label:before {\n", " content: \"▼\";\n", "}\n", "\n", ".xr-section-summary-in:checked + label > span {\n", " display: none;\n", "}\n", "\n", ".xr-section-summary,\n", ".xr-section-inline-details {\n", " padding-top: 4px;\n", "}\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-top: 4px;\n", " margin-bottom: 5px;\n", "}\n", "\n", ".xr-section-summary-in:checked ~ .xr-section-details {\n", " display: contents;\n", "}\n", "\n", ".xr-group-box {\n", " display: inline-grid;\n", " grid-template-columns: 0px 20px auto;\n", " width: 100%;\n", "}\n", "\n", ".xr-group-box-vline {\n", " grid-column-start: 1;\n", " border-right: 0.2em solid;\n", " border-color: var(--xr-border-color);\n", " width: 0px;\n", "}\n", "\n", ".xr-group-box-hline {\n", " grid-column-start: 2;\n", " grid-row-start: 1;\n", " height: 1em;\n", " width: 20px;\n", " border-bottom: 0.2em solid;\n", " border-color: var(--xr-border-color);\n", "}\n", "\n", ".xr-group-box-contents {\n", " grid-column-start: 3;\n", "}\n", "\n", ".xr-array-wrap {\n", " grid-column: 1 / -1;\n", " display: grid;\n", " grid-template-columns: 20px auto;\n", "}\n", "\n", ".xr-array-wrap > label {\n", " grid-column: 1;\n", " vertical-align: top;\n", "}\n", "\n", ".xr-preview {\n", " color: var(--xr-font-color3);\n", "}\n", "\n", ".xr-array-preview,\n", ".xr-array-data {\n", " padding: 0 5px !important;\n", " grid-column: 2;\n", "}\n", "\n", ".xr-array-data,\n", ".xr-array-in:checked ~ .xr-array-preview {\n", " display: none;\n", "}\n", "\n", ".xr-array-in:checked ~ .xr-array-data,\n", ".xr-array-preview {\n", " display: inline-block;\n", "}\n", "\n", ".xr-dim-list {\n", " display: inline-block !important;\n", " list-style: none;\n", " padding: 0 !important;\n", " margin: 0;\n", "}\n", "\n", ".xr-dim-list li {\n", " display: inline-block;\n", " padding: 0;\n", " margin: 0;\n", "}\n", "\n", ".xr-dim-list:before {\n", " content: \"(\";\n", "}\n", "\n", ".xr-dim-list:after {\n", " content: \")\";\n", "}\n", "\n", ".xr-dim-list li:not(:last-child):after {\n", " content: \",\";\n", " padding-right: 5px;\n", "}\n", "\n", ".xr-has-index {\n", " font-weight: bold;\n", "}\n", "\n", ".xr-var-list,\n", ".xr-var-item {\n", " display: contents;\n", "}\n", "\n", ".xr-var-item > div,\n", ".xr-var-item label,\n", ".xr-var-item > .xr-var-name span {\n", " background-color: var(--xr-background-color-row-even);\n", " border-color: var(--xr-background-color-row-odd);\n", " margin-bottom: 0;\n", " padding-top: 2px;\n", "}\n", "\n", ".xr-var-item > .xr-var-name:hover span {\n", " padding-right: 5px;\n", "}\n", "\n", ".xr-var-list > li:nth-child(odd) > div,\n", ".xr-var-list > li:nth-child(odd) > label,\n", ".xr-var-list > li:nth-child(odd) > .xr-var-name span {\n", " background-color: var(--xr-background-color-row-odd);\n", " border-color: var(--xr-background-color-row-even);\n", "}\n", "\n", ".xr-var-name {\n", " grid-column: 1;\n", "}\n", "\n", ".xr-var-dims {\n", " grid-column: 2;\n", "}\n", "\n", ".xr-var-dtype {\n", " grid-column: 3;\n", " text-align: right;\n", " color: var(--xr-font-color2);\n", "}\n", "\n", ".xr-var-preview {\n", " grid-column: 4;\n", "}\n", "\n", ".xr-index-preview {\n", " grid-column: 2 / 5;\n", " color: var(--xr-font-color2);\n", "}\n", "\n", ".xr-var-name,\n", ".xr-var-dims,\n", ".xr-var-dtype,\n", ".xr-preview,\n", ".xr-attrs dt {\n", " white-space: nowrap;\n", " overflow: hidden;\n", " text-overflow: ellipsis;\n", " padding-right: 10px;\n", "}\n", "\n", ".xr-var-name:hover,\n", ".xr-var-dims:hover,\n", ".xr-var-dtype:hover,\n", ".xr-attrs dt:hover {\n", " overflow: visible;\n", " width: auto;\n", " z-index: 1;\n", "}\n", "\n", ".xr-var-attrs,\n", ".xr-var-data,\n", ".xr-index-data {\n", " display: none;\n", " border-top: 2px dotted var(--xr-background-color);\n", " padding-bottom: 20px !important;\n", " padding-top: 10px !important;\n", "}\n", "\n", ".xr-var-attrs-in + label,\n", ".xr-var-data-in + label,\n", ".xr-index-data-in + label {\n", " padding: 0 1px;\n", "}\n", "\n", ".xr-var-attrs-in:checked ~ .xr-var-attrs,\n", ".xr-var-data-in:checked ~ .xr-var-data,\n", ".xr-index-data-in:checked ~ .xr-index-data {\n", " display: block;\n", "}\n", "\n", ".xr-var-data > table {\n", " float: right;\n", "}\n", "\n", ".xr-var-data > pre,\n", ".xr-index-data > pre,\n", ".xr-var-data > table > tbody > tr {\n", " background-color: transparent !important;\n", "}\n", "\n", ".xr-var-name span,\n", ".xr-var-data,\n", ".xr-index-name div,\n", ".xr-index-data,\n", ".xr-attrs {\n", " padding-left: 25px !important;\n", "}\n", "\n", ".xr-attrs,\n", ".xr-var-attrs,\n", ".xr-var-data,\n", ".xr-index-data {\n", " grid-column: 1 / -1;\n", "}\n", "\n", "dl.xr-attrs {\n", " padding: 0;\n", " margin: 0;\n", " display: grid;\n", " grid-template-columns: 125px auto;\n", "}\n", "\n", ".xr-attrs dt,\n", ".xr-attrs dd {\n", " padding: 0;\n", " margin: 0;\n", " float: left;\n", " padding-right: 10px;\n", " width: auto;\n", "}\n", "\n", ".xr-attrs dt {\n", " font-weight: normal;\n", " grid-column: 1;\n", "}\n", "\n", ".xr-attrs dt:hover span {\n", " display: inline-block;\n", " background: var(--xr-background-color);\n", " padding-right: 10px;\n", "}\n", "\n", ".xr-attrs dd {\n", " grid-column: 2;\n", " white-space: pre-wrap;\n", " word-break: break-all;\n", "}\n", "\n", ".xr-icon-database,\n", ".xr-icon-file-text2,\n", ".xr-no-icon {\n", " display: inline-block;\n", " vertical-align: middle;\n", " width: 1em;\n", " height: 1.5em !important;\n", " stroke-width: 0;\n", " stroke: currentColor;\n", " fill: currentColor;\n", "}\n", "\n", ".xr-var-attrs-in:checked + label > .xr-icon-file-text2,\n", ".xr-var-data-in:checked + label > .xr-icon-database,\n", ".xr-index-data-in:checked + label > .xr-icon-database {\n", " color: var(--xr-font-color0);\n", " filter: drop-shadow(1px 1px 5px var(--xr-font-color2));\n", " stroke-width: 0.8px;\n", "}\n", "</style><pre class='xr-text-repr-fallback'><xarray.Dataset> Size: 9GB\n", "Dimensions: (forecast_initial_time: 182, forecast_hour: 12,\n", " latitude: 721, longitude: 1440)\n", "Coordinates:\n", " * forecast_initial_time (forecast_initial_time) datetime64[ns] 1kB 1940-01...\n", " * forecast_hour (forecast_hour) int32 48B 1 2 3 4 5 6 7 8 9 10 11 12\n", " * latitude (latitude) float64 6kB 90.0 89.75 ... -89.75 -90.0\n", " * longitude (longitude) float64 12kB 0.0 0.25 0.5 ... 359.5 359.8\n", "Data variables:\n", " E (forecast_initial_time, forecast_hour, latitude, longitude) float32 9GB dask.array<chunksize=(5, 12, 721, 1440), meta=np.ndarray>\n", "Attributes:\n", " DATA_SOURCE: ECMWF: https://cds.climate.copernicus.eu, Copernicu...\n", " NETCDF_CONVERSION: CISL RDA: Conversion from ECMWF GRIB1 data to netCDF4.\n", " NETCDF_VERSION: 4.8.1\n", " CONVERSION_PLATFORM: Linux r4i0n8 4.12.14-95.51-default #1 SMP Fri Apr 1...\n", " CONVERSION_DATE: Fri Mar 17 12:52:09 MDT 2023\n", " Conventions: CF-1.6\n", " NETCDF_COMPRESSION: NCO: Precision-preserving compression to netCDF4/HD...\n", " history: Fri Mar 17 12:52:18 2023: ncks -4 --ppc default=7 e...\n", " NCO: netCDF Operators version 5.0.3 (Homepage = http://n...</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-1e054b23-46b1-46a0-8958-6a3925ce17e8' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-1e054b23-46b1-46a0-8958-6a3925ce17e8' 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'>forecast_initial_time</span>: 182</li><li><span class='xr-has-index'>forecast_hour</span>: 12</li><li><span class='xr-has-index'>latitude</span>: 721</li><li><span class='xr-has-index'>longitude</span>: 1440</li></ul></div><div class='xr-section-details'></div></li><li class='xr-section-item'><input id='section-d87e4344-3ed3-4109-8290-b6cbdc8072fc' class='xr-section-summary-in' type='checkbox' checked><label for='section-d87e4344-3ed3-4109-8290-b6cbdc8072fc' class='xr-section-summary' >Coordinates: <span>(4)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>forecast_initial_time</span></div><div class='xr-var-dims'>(forecast_initial_time)</div><div class='xr-var-dtype'>datetime64[ns]</div><div class='xr-var-preview xr-preview'>1940-01-01T06:00:00 ... 1940-03-...</div><input id='attrs-4be80870-cbaa-4492-bc9e-223bf1522a19' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-4be80870-cbaa-4492-bc9e-223bf1522a19' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-a5fd1216-3c88-4871-af7c-230435085722' class='xr-var-data-in' type='checkbox'><label for='data-a5fd1216-3c88-4871-af7c-230435085722' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>long_name :</span></dt><dd>forecast initial time</dd><dt><span>short_name :</span></dt><dd>fitime</dd><dt><span>standard_name :</span></dt><dd>forecast_reference_time</dd></dl></div><div class='xr-var-data'><pre>array(['1940-01-01T06:00:00.000000000', '1940-01-01T18:00:00.000000000',\n", " '1940-01-02T06:00:00.000000000', '1940-01-02T18:00:00.000000000',\n", " '1940-01-03T06:00:00.000000000', '1940-01-03T18:00:00.000000000',\n", " '1940-01-04T06:00:00.000000000', '1940-01-04T18:00:00.000000000',\n", " '1940-01-05T06:00:00.000000000', '1940-01-05T18:00:00.000000000',\n", " '1940-01-06T06:00:00.000000000', '1940-01-06T18:00:00.000000000',\n", " '1940-01-07T06:00:00.000000000', '1940-01-07T18:00:00.000000000',\n", " '1940-01-08T06:00:00.000000000', '1940-01-08T18:00:00.000000000',\n", " '1940-01-09T06:00:00.000000000', '1940-01-09T18:00:00.000000000',\n", " '1940-01-10T06:00:00.000000000', '1940-01-10T18:00:00.000000000',\n", " '1940-01-11T06:00:00.000000000', '1940-01-11T18:00:00.000000000',\n", " '1940-01-12T06:00:00.000000000', '1940-01-12T18:00:00.000000000',\n", " '1940-01-13T06:00:00.000000000', '1940-01-13T18:00:00.000000000',\n", " '1940-01-14T06:00:00.000000000', '1940-01-14T18:00:00.000000000',\n", " '1940-01-15T06:00:00.000000000', '1940-01-15T18:00:00.000000000',\n", " '1940-01-16T06:00:00.000000000', '1940-01-16T18:00:00.000000000',\n", " '1940-01-17T06:00:00.000000000', '1940-01-17T18:00:00.000000000',\n", " '1940-01-18T06:00:00.000000000', '1940-01-18T18:00:00.000000000',\n", " '1940-01-19T06:00:00.000000000', '1940-01-19T18:00:00.000000000',\n", " '1940-01-20T06:00:00.000000000', '1940-01-20T18:00:00.000000000',\n", " '1940-01-21T06:00:00.000000000', '1940-01-21T18:00:00.000000000',\n", " '1940-01-22T06:00:00.000000000', '1940-01-22T18:00:00.000000000',\n", " '1940-01-23T06:00:00.000000000', '1940-01-23T18:00:00.000000000',\n", " '1940-01-24T06:00:00.000000000', '1940-01-24T18:00:00.000000000',\n", " '1940-01-25T06:00:00.000000000', '1940-01-25T18:00:00.000000000',\n", " '1940-01-26T06:00:00.000000000', '1940-01-26T18:00:00.000000000',\n", " '1940-01-27T06:00:00.000000000', '1940-01-27T18:00:00.000000000',\n", " '1940-01-28T06:00:00.000000000', '1940-01-28T18:00:00.000000000',\n", " '1940-01-29T06:00:00.000000000', '1940-01-29T18:00:00.000000000',\n", " '1940-01-30T06:00:00.000000000', '1940-01-30T18:00:00.000000000',\n", " '1940-01-31T06:00:00.000000000', '1940-01-31T18:00:00.000000000',\n", " '1940-02-01T06:00:00.000000000', '1940-02-01T18:00:00.000000000',\n", " '1940-02-02T06:00:00.000000000', '1940-02-02T18:00:00.000000000',\n", " '1940-02-03T06:00:00.000000000', '1940-02-03T18:00:00.000000000',\n", " '1940-02-04T06:00:00.000000000', '1940-02-04T18:00:00.000000000',\n", " '1940-02-05T06:00:00.000000000', '1940-02-05T18:00:00.000000000',\n", " '1940-02-06T06:00:00.000000000', '1940-02-06T18:00:00.000000000',\n", " '1940-02-07T06:00:00.000000000', '1940-02-07T18:00:00.000000000',\n", " '1940-02-08T06:00:00.000000000', '1940-02-08T18:00:00.000000000',\n", " '1940-02-09T06:00:00.000000000', '1940-02-09T18:00:00.000000000',\n", " '1940-02-10T06:00:00.000000000', '1940-02-10T18:00:00.000000000',\n", " '1940-02-11T06:00:00.000000000', '1940-02-11T18:00:00.000000000',\n", " '1940-02-12T06:00:00.000000000', '1940-02-12T18:00:00.000000000',\n", " '1940-02-13T06:00:00.000000000', '1940-02-13T18:00:00.000000000',\n", " '1940-02-14T06:00:00.000000000', '1940-02-14T18:00:00.000000000',\n", " '1940-02-15T06:00:00.000000000', '1940-02-15T18:00:00.000000000',\n", " '1940-02-16T06:00:00.000000000', '1940-02-16T18:00:00.000000000',\n", " '1940-02-17T06:00:00.000000000', '1940-02-17T18:00:00.000000000',\n", " '1940-02-18T06:00:00.000000000', '1940-02-18T18:00:00.000000000',\n", " '1940-02-19T06:00:00.000000000', '1940-02-19T18:00:00.000000000',\n", " '1940-02-20T06:00:00.000000000', '1940-02-20T18:00:00.000000000',\n", " '1940-02-21T06:00:00.000000000', '1940-02-21T18:00:00.000000000',\n", " '1940-02-22T06:00:00.000000000', '1940-02-22T18:00:00.000000000',\n", " '1940-02-23T06:00:00.000000000', '1940-02-23T18:00:00.000000000',\n", " '1940-02-24T06:00:00.000000000', '1940-02-24T18:00:00.000000000',\n", " '1940-02-25T06:00:00.000000000', '1940-02-25T18:00:00.000000000',\n", " '1940-02-26T06:00:00.000000000', '1940-02-26T18:00:00.000000000',\n", " '1940-02-27T06:00:00.000000000', '1940-02-27T18:00:00.000000000',\n", " '1940-02-28T06:00:00.000000000', '1940-02-28T18:00:00.000000000',\n", " '1940-02-29T06:00:00.000000000', '1940-02-29T18:00:00.000000000',\n", " '1940-03-01T06:00:00.000000000', '1940-03-01T18:00:00.000000000',\n", " '1940-03-02T06:00:00.000000000', '1940-03-02T18:00:00.000000000',\n", " '1940-03-03T06:00:00.000000000', '1940-03-03T18:00:00.000000000',\n", " '1940-03-04T06:00:00.000000000', '1940-03-04T18:00:00.000000000',\n", " '1940-03-05T06:00:00.000000000', '1940-03-05T18:00:00.000000000',\n", " '1940-03-06T06:00:00.000000000', '1940-03-06T18:00:00.000000000',\n", " '1940-03-07T06:00:00.000000000', '1940-03-07T18:00:00.000000000',\n", " '1940-03-08T06:00:00.000000000', '1940-03-08T18:00:00.000000000',\n", " '1940-03-09T06:00:00.000000000', '1940-03-09T18:00:00.000000000',\n", " '1940-03-10T06:00:00.000000000', '1940-03-10T18:00:00.000000000',\n", " '1940-03-11T06:00:00.000000000', '1940-03-11T18:00:00.000000000',\n", " '1940-03-12T06:00:00.000000000', '1940-03-12T18:00:00.000000000',\n", " '1940-03-13T06:00:00.000000000', '1940-03-13T18:00:00.000000000',\n", " '1940-03-14T06:00:00.000000000', '1940-03-14T18:00:00.000000000',\n", " '1940-03-15T06:00:00.000000000', '1940-03-15T18:00:00.000000000',\n", " '1940-03-16T06:00:00.000000000', '1940-03-16T18:00:00.000000000',\n", " '1940-03-17T06:00:00.000000000', '1940-03-17T18:00:00.000000000',\n", " '1940-03-18T06:00:00.000000000', '1940-03-18T18:00:00.000000000',\n", " '1940-03-19T06:00:00.000000000', '1940-03-19T18:00:00.000000000',\n", " '1940-03-20T06:00:00.000000000', '1940-03-20T18:00:00.000000000',\n", " '1940-03-21T06:00:00.000000000', '1940-03-21T18:00:00.000000000',\n", " '1940-03-22T06:00:00.000000000', '1940-03-22T18:00:00.000000000',\n", " '1940-03-23T06:00:00.000000000', '1940-03-23T18:00:00.000000000',\n", " '1940-03-24T06:00:00.000000000', '1940-03-24T18:00:00.000000000',\n", " '1940-03-25T06:00:00.000000000', '1940-03-25T18:00:00.000000000',\n", " '1940-03-26T06:00:00.000000000', '1940-03-26T18:00:00.000000000',\n", " '1940-03-27T06:00:00.000000000', '1940-03-27T18:00:00.000000000',\n", " '1940-03-28T06:00:00.000000000', '1940-03-28T18:00:00.000000000',\n", " '1940-03-29T06:00:00.000000000', '1940-03-29T18:00:00.000000000',\n", " '1940-03-30T06:00:00.000000000', '1940-03-30T18:00:00.000000000',\n", " '1940-03-31T06:00:00.000000000', '1940-03-31T18:00:00.000000000'],\n", " dtype='datetime64[ns]')</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>forecast_hour</span></div><div class='xr-var-dims'>(forecast_hour)</div><div class='xr-var-dtype'>int32</div><div class='xr-var-preview xr-preview'>1 2 3 4 5 6 7 8 9 10 11 12</div><input id='attrs-678aca9a-a9bd-463e-9b32-b0020e4fc789' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-678aca9a-a9bd-463e-9b32-b0020e4fc789' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-a8c79d45-384b-4bcb-b622-875e58adfa25' class='xr-var-data-in' type='checkbox'><label for='data-a8c79d45-384b-4bcb-b622-875e58adfa25' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>long_name :</span></dt><dd>forecast hour</dd><dt><span>short_name :</span></dt><dd>fhr</dd><dt><span>standard_name :</span></dt><dd>forecast_period</dd><dt><span>units :</span></dt><dd>hour</dd><dt><span>units_qualifier :</span></dt><dd>hours since forecast_initial_time</dd></dl></div><div class='xr-var-data'><pre>array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], dtype=int32)</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-20a1f19c-3ee5-40fc-951f-f3d023a53cb7' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-20a1f19c-3ee5-40fc-951f-f3d023a53cb7' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-363c7340-879c-4d8a-aafd-af23d22026fb' class='xr-var-data-in' type='checkbox'><label for='data-363c7340-879c-4d8a-aafd-af23d22026fb' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>long_name :</span></dt><dd>latitude</dd><dt><span>short_name :</span></dt><dd>lat</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. ], shape=(721,))</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>longitude</span></div><div class='xr-var-dims'>(longitude)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>0.0 0.25 0.5 ... 359.2 359.5 359.8</div><input id='attrs-e87c0998-58ee-48d0-8a84-a43075a8540b' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-e87c0998-58ee-48d0-8a84-a43075a8540b' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-e1f7e15a-7ff4-4f8b-97e5-421a03529163' class='xr-var-data-in' type='checkbox'><label for='data-e1f7e15a-7ff4-4f8b-97e5-421a03529163' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>long_name :</span></dt><dd>longitude</dd><dt><span>short_name :</span></dt><dd>lon</dd><dt><span>units :</span></dt><dd>degrees_east</dd></dl></div><div class='xr-var-data'><pre>array([0.0000e+00, 2.5000e-01, 5.0000e-01, ..., 3.5925e+02, 3.5950e+02,\n", " 3.5975e+02], shape=(1440,))</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-f356edc6-0116-4061-bf64-5be0f41daf36' class='xr-section-summary-in' type='checkbox' checked><label for='section-f356edc6-0116-4061-bf64-5be0f41daf36' class='xr-section-summary' >Data variables: <span>(1)</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>E</span></div><div class='xr-var-dims'>(forecast_initial_time, forecast_hour, latitude, longitude)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>dask.array<chunksize=(5, 12, 721, 1440), meta=np.ndarray></div><input id='attrs-5f028af2-d2c7-4cb5-b5d0-518102949c2a' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-5f028af2-d2c7-4cb5-b5d0-518102949c2a' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-7d7d5b05-1d21-4b88-810e-144cd5a1f1a5' class='xr-var-data-in' type='checkbox'><label for='data-7d7d5b05-1d21-4b88-810e-144cd5a1f1a5' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>long_name :</span></dt><dd>Evaporation</dd><dt><span>short_name :</span></dt><dd>e</dd><dt><span>units :</span></dt><dd>m of water equivalent</dd><dt><span>original_format :</span></dt><dd>WMO GRIB 1 with ECMWF local table</dd><dt><span>ecmwf_local_table :</span></dt><dd>128</dd><dt><span>ecmwf_parameter :</span></dt><dd>182</dd><dt><span>minimum_value :</span></dt><dd>-0.001556698465719819</dd><dt><span>maximum_value :</span></dt><dd>0.00033947709016501904</dd><dt><span>grid_specification :</span></dt><dd>0.25 degree x 0.25 degree from 90N to 90S and 0E to 359.75E (721 x 1440 Latitude/Longitude)</dd><dt><span>rda_dataset :</span></dt><dd>ds633.0</dd><dt><span>rda_dataset_url :</span></dt><dd>https:/rda.ucar.edu/datasets/ds633.0/</dd><dt><span>rda_dataset_doi :</span></dt><dd>DOI: 10.5065/BH6N-5N20</dd><dt><span>rda_dataset_group :</span></dt><dd>ERA5 atmospheric surface forecast (accumulated) [netCDF4]</dd><dt><span>QuantizeGranularBitGroomNumberOfSignificantDigits :</span></dt><dd>7</dd></dl></div><div class='xr-var-data'><table>\n", " <tr>\n", " <td>\n", " <table style=\"border-collapse: collapse;\">\n", " <thead>\n", " <tr>\n", " <td> </td>\n", " <th> Array </th>\n", " <th> Chunk </th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " \n", " <tr>\n", " <th> Bytes </th>\n", " <td> 8.45 GiB </td>\n", " <td> 237.63 MiB </td>\n", " </tr>\n", " \n", " <tr>\n", " <th> Shape </th>\n", " <td> (182, 12, 721, 1440) </td>\n", " <td> (5, 12, 721, 1440) </td>\n", " </tr>\n", " <tr>\n", " <th> Dask graph </th>\n", " <td colspan=\"2\"> 37 chunks in 2 graph layers </td>\n", " </tr>\n", " <tr>\n", " <th> Data type </th>\n", " <td colspan=\"2\"> float32 numpy.ndarray </td>\n", " </tr>\n", " </tbody>\n", " </table>\n", " </td>\n", " <td>\n", " <svg width=\"402\" height=\"125\" style=\"stroke:rgb(0,0,0);stroke-width:1\" >\n", "\n", " <!-- Horizontal lines -->\n", " <line x1=\"0\" y1=\"0\" x2=\"39\" y2=\"0\" style=\"stroke-width:2\" />\n", " <line x1=\"0\" y1=\"25\" x2=\"39\" y2=\"25\" style=\"stroke-width:2\" />\n", "\n", " <!-- Vertical lines -->\n", " <line x1=\"0\" y1=\"0\" x2=\"0\" y2=\"25\" style=\"stroke-width:2\" />\n", " <line x1=\"1\" y1=\"0\" x2=\"1\" y2=\"25\" />\n", " <line x1=\"2\" y1=\"0\" x2=\"2\" y2=\"25\" />\n", " <line x1=\"3\" y1=\"0\" x2=\"3\" y2=\"25\" />\n", " <line x1=\"4\" y1=\"0\" x2=\"4\" y2=\"25\" />\n", " <line x1=\"5\" y1=\"0\" x2=\"5\" y2=\"25\" />\n", " <line x1=\"6\" y1=\"0\" x2=\"6\" y2=\"25\" />\n", " <line x1=\"8\" y1=\"0\" x2=\"8\" y2=\"25\" />\n", " <line x1=\"9\" y1=\"0\" x2=\"9\" y2=\"25\" />\n", " <line x1=\"10\" y1=\"0\" x2=\"10\" y2=\"25\" />\n", " <line x1=\"12\" y1=\"0\" x2=\"12\" y2=\"25\" />\n", " <line x1=\"13\" y1=\"0\" x2=\"13\" y2=\"25\" />\n", " <line x1=\"14\" y1=\"0\" x2=\"14\" y2=\"25\" />\n", " <line x1=\"16\" y1=\"0\" x2=\"16\" y2=\"25\" />\n", " <line x1=\"17\" y1=\"0\" x2=\"17\" y2=\"25\" />\n", " <line x1=\"18\" y1=\"0\" x2=\"18\" y2=\"25\" />\n", " <line x1=\"19\" y1=\"0\" x2=\"19\" y2=\"25\" />\n", " <line x1=\"20\" y1=\"0\" x2=\"20\" y2=\"25\" />\n", " <line x1=\"21\" y1=\"0\" x2=\"21\" y2=\"25\" />\n", " <line x1=\"22\" y1=\"0\" x2=\"22\" y2=\"25\" />\n", " <line x1=\"25\" y1=\"0\" x2=\"25\" y2=\"25\" />\n", " <line x1=\"26\" y1=\"0\" x2=\"26\" y2=\"25\" />\n", " <line x1=\"27\" y1=\"0\" x2=\"27\" y2=\"25\" />\n", " <line x1=\"28\" y1=\"0\" x2=\"28\" y2=\"25\" />\n", " <line x1=\"29\" y1=\"0\" x2=\"29\" y2=\"25\" />\n", " <line x1=\"30\" y1=\"0\" x2=\"30\" y2=\"25\" />\n", " <line x1=\"32\" y1=\"0\" x2=\"32\" y2=\"25\" />\n", " <line x1=\"33\" y1=\"0\" x2=\"33\" y2=\"25\" />\n", " <line x1=\"35\" y1=\"0\" x2=\"35\" y2=\"25\" />\n", " <line x1=\"36\" y1=\"0\" x2=\"36\" y2=\"25\" />\n", " <line x1=\"37\" y1=\"0\" x2=\"37\" y2=\"25\" />\n", " <line x1=\"38\" y1=\"0\" x2=\"38\" y2=\"25\" />\n", " <line x1=\"39\" y1=\"0\" x2=\"39\" y2=\"25\" style=\"stroke-width:2\" />\n", "\n", " <!-- Colored Rectangle -->\n", " <polygon points=\"0.0,0.0 39.851008073325715,0.0 39.851008073325715,25.412616514582485 0.0,25.412616514582485\" style=\"fill:#8B4903A0;stroke-width:0\"/>\n", "\n", " <!-- Text -->\n", " <text x=\"19.925504\" y=\"45.412617\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" >182</text>\n", " <text x=\"59.851008\" y=\"12.706308\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(0,59.851008,12.706308)\">1</text>\n", "\n", "\n", " <!-- Horizontal lines -->\n", " <line x1=\"109\" y1=\"0\" x2=\"123\" y2=\"14\" style=\"stroke-width:2\" />\n", " <line x1=\"109\" y1=\"60\" x2=\"123\" y2=\"75\" style=\"stroke-width:2\" />\n", "\n", " <!-- Vertical lines -->\n", " <line x1=\"109\" y1=\"0\" x2=\"109\" y2=\"60\" style=\"stroke-width:2\" />\n", " <line x1=\"123\" y1=\"14\" x2=\"123\" y2=\"75\" style=\"stroke-width:2\" />\n", "\n", " <!-- Colored Rectangle -->\n", " <polygon points=\"109.0,0.0 123.9485979497544,14.948597949754403 123.9485979497544,75.03193128308774 109.0,60.083333333333336\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n", "\n", " <!-- Horizontal lines -->\n", " <line x1=\"109\" y1=\"0\" x2=\"229\" y2=\"0\" style=\"stroke-width:2\" />\n", " <line x1=\"123\" y1=\"14\" x2=\"243\" y2=\"14\" style=\"stroke-width:2\" />\n", "\n", " <!-- Vertical lines -->\n", " <line x1=\"109\" y1=\"0\" x2=\"123\" y2=\"14\" style=\"stroke-width:2\" />\n", " <line x1=\"229\" y1=\"0\" x2=\"243\" y2=\"14\" style=\"stroke-width:2\" />\n", "\n", " <!-- Colored Rectangle -->\n", " <polygon points=\"109.0,0.0 229.0,0.0 243.9485979497544,14.948597949754403 123.9485979497544,14.948597949754403\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n", "\n", " <!-- Horizontal lines -->\n", " <line x1=\"123\" y1=\"14\" x2=\"243\" y2=\"14\" style=\"stroke-width:2\" />\n", " <line x1=\"123\" y1=\"75\" x2=\"243\" y2=\"75\" style=\"stroke-width:2\" />\n", "\n", " <!-- Vertical lines -->\n", " <line x1=\"123\" y1=\"14\" x2=\"123\" y2=\"75\" style=\"stroke-width:2\" />\n", " <line x1=\"243\" y1=\"14\" x2=\"243\" y2=\"75\" style=\"stroke-width:2\" />\n", "\n", " <!-- Colored Rectangle -->\n", " <polygon points=\"123.9485979497544,14.948597949754403 243.9485979497544,14.948597949754403 243.9485979497544,75.03193128308774 123.9485979497544,75.03193128308774\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n", "\n", " <!-- Text -->\n", " <text x=\"183.948598\" y=\"95.031931\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" >1440</text>\n", " <text x=\"263.948598\" y=\"44.990265\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(-90,263.948598,44.990265)\">721</text>\n", " <text x=\"106.474299\" y=\"87.557632\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(45,106.474299,87.557632)\">12</text>\n", "</svg>\n", " </td>\n", " </tr>\n", "</table></div></li></ul></div></li><li class='xr-section-item'><input id='section-fb6c2ec4-1ea0-4549-993f-4174468ff0a2' class='xr-section-summary-in' type='checkbox' checked><label for='section-fb6c2ec4-1ea0-4549-993f-4174468ff0a2' class='xr-section-summary' >Attributes: <span>(9)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><dl class='xr-attrs'><dt><span>DATA_SOURCE :</span></dt><dd>ECMWF: https://cds.climate.copernicus.eu, Copernicus Climate Data Store</dd><dt><span>NETCDF_CONVERSION :</span></dt><dd>CISL RDA: Conversion from ECMWF GRIB1 data to netCDF4.</dd><dt><span>NETCDF_VERSION :</span></dt><dd>4.8.1</dd><dt><span>CONVERSION_PLATFORM :</span></dt><dd>Linux r4i0n8 4.12.14-95.51-default #1 SMP Fri Apr 17 08:14:12 UTC 2020 (c6bab98) x86_64 x86_64 x86_64 GNU/Linux</dd><dt><span>CONVERSION_DATE :</span></dt><dd>Fri Mar 17 12:52:09 MDT 2023</dd><dt><span>Conventions :</span></dt><dd>CF-1.6</dd><dt><span>NETCDF_COMPRESSION :</span></dt><dd>NCO: Precision-preserving compression to netCDF4/HDF5 (see "history" and "NCO" global attributes below for specifics).</dd><dt><span>history :</span></dt><dd>Fri Mar 17 12:52:18 2023: ncks -4 --ppc default=7 e5.oper.fc.sfc.accumu.128_182_e.ll025sc.1940030106_1940031606.unc.nc e5.oper.fc.sfc.accumu.128_182_e.ll025sc.1940030106_1940031606.nc</dd><dt><span>NCO :</span></dt><dd>netCDF Operators version 5.0.3 (Homepage = http://nco.sf.net, Code = http://github.com/nco/nco)</dd></dl></div></li></ul></div></div>" ], "text/plain": [ "<xarray.Dataset> Size: 9GB\n", "Dimensions: (forecast_initial_time: 182, forecast_hour: 12,\n", " latitude: 721, longitude: 1440)\n", "Coordinates:\n", " * forecast_initial_time (forecast_initial_time) datetime64[ns] 1kB 1940-01...\n", " * forecast_hour (forecast_hour) int32 48B 1 2 3 4 5 6 7 8 9 10 11 12\n", " * latitude (latitude) float64 6kB 90.0 89.75 ... -89.75 -90.0\n", " * longitude (longitude) float64 12kB 0.0 0.25 0.5 ... 359.5 359.8\n", "Data variables:\n", " E (forecast_initial_time, forecast_hour, latitude, longitude) float32 9GB dask.array<chunksize=(5, 12, 721, 1440), meta=np.ndarray>\n", "Attributes:\n", " DATA_SOURCE: ECMWF: https://cds.climate.copernicus.eu, Copernicu...\n", " NETCDF_CONVERSION: CISL RDA: Conversion from ECMWF GRIB1 data to netCDF4.\n", " NETCDF_VERSION: 4.8.1\n", " CONVERSION_PLATFORM: Linux r4i0n8 4.12.14-95.51-default #1 SMP Fri Apr 1...\n", " CONVERSION_DATE: Fri Mar 17 12:52:09 MDT 2023\n", " Conventions: CF-1.6\n", " NETCDF_COMPRESSION: NCO: Precision-preserving compression to netCDF4/HD...\n", " history: Fri Mar 17 12:52:18 2023: ncks -4 --ppc default=7 e...\n", " NCO: netCDF Operators version 5.0.3 (Homepage = http://n..." ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "credentials = icechunk.containers_credentials(\n", " {f\"{data_bucket}/\": icechunk.s3_credentials(anonymous=True)})\n", "\n", "read_repo = icechunk.Repository.open(\n", " storage, config, authorize_virtual_chunk_access=credentials)\n", "\n", "read_session = read_repo.readonly_session(\"main\")\n", "\n", "ds = xr.open_zarr(read_session.store, consolidated=False, zarr_format=3, chunks={'forecast_initial_time':5})\n", "\n", "ds" ] }, { "cell_type": "code", "execution_count": null, "id": "06dfd939-9e9a-464b-939f-6ccf79915fe5", "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.13.8" } }, "nbformat": 4, "nbformat_minor": 5 }