Skip to content

Instantly share code, notes, and snippets.

@rsignell
Created October 17, 2025 20:41
Show Gist options
  • Save rsignell/dbd3e09dc026a9ba72f26ef8e64aedc9 to your computer and use it in GitHub Desktop.
Save rsignell/dbd3e09dc026a9ba72f26ef8e64aedc9 to your computer and use it in GitHub Desktop.
era5_evap_create.ipynb
Display the source blob
Display the rendered blob
Raw
{
"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'>&lt;xarray.Dataset&gt; 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&lt;chunksize=(5, 12, 721, 1440), meta=np.ndarray&gt;\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([&#x27;1940-01-01T06:00:00.000000000&#x27;, &#x27;1940-01-01T18:00:00.000000000&#x27;,\n",
" &#x27;1940-01-02T06:00:00.000000000&#x27;, &#x27;1940-01-02T18:00:00.000000000&#x27;,\n",
" &#x27;1940-01-03T06:00:00.000000000&#x27;, &#x27;1940-01-03T18:00:00.000000000&#x27;,\n",
" &#x27;1940-01-04T06:00:00.000000000&#x27;, &#x27;1940-01-04T18:00:00.000000000&#x27;,\n",
" &#x27;1940-01-05T06:00:00.000000000&#x27;, &#x27;1940-01-05T18:00:00.000000000&#x27;,\n",
" &#x27;1940-01-06T06:00:00.000000000&#x27;, &#x27;1940-01-06T18:00:00.000000000&#x27;,\n",
" &#x27;1940-01-07T06:00:00.000000000&#x27;, &#x27;1940-01-07T18:00:00.000000000&#x27;,\n",
" &#x27;1940-01-08T06:00:00.000000000&#x27;, &#x27;1940-01-08T18:00:00.000000000&#x27;,\n",
" &#x27;1940-01-09T06:00:00.000000000&#x27;, &#x27;1940-01-09T18:00:00.000000000&#x27;,\n",
" &#x27;1940-01-10T06:00:00.000000000&#x27;, &#x27;1940-01-10T18:00:00.000000000&#x27;,\n",
" &#x27;1940-01-11T06:00:00.000000000&#x27;, &#x27;1940-01-11T18:00:00.000000000&#x27;,\n",
" &#x27;1940-01-12T06:00:00.000000000&#x27;, &#x27;1940-01-12T18:00:00.000000000&#x27;,\n",
" &#x27;1940-01-13T06:00:00.000000000&#x27;, &#x27;1940-01-13T18:00:00.000000000&#x27;,\n",
" &#x27;1940-01-14T06:00:00.000000000&#x27;, &#x27;1940-01-14T18:00:00.000000000&#x27;,\n",
" &#x27;1940-01-15T06:00:00.000000000&#x27;, &#x27;1940-01-15T18:00:00.000000000&#x27;,\n",
" &#x27;1940-01-16T06:00:00.000000000&#x27;, &#x27;1940-01-16T18:00:00.000000000&#x27;,\n",
" &#x27;1940-01-17T06:00:00.000000000&#x27;, &#x27;1940-01-17T18:00:00.000000000&#x27;,\n",
" &#x27;1940-01-18T06:00:00.000000000&#x27;, &#x27;1940-01-18T18:00:00.000000000&#x27;,\n",
" &#x27;1940-01-19T06:00:00.000000000&#x27;, &#x27;1940-01-19T18:00:00.000000000&#x27;,\n",
" &#x27;1940-01-20T06:00:00.000000000&#x27;, &#x27;1940-01-20T18:00:00.000000000&#x27;,\n",
" &#x27;1940-01-21T06:00:00.000000000&#x27;, &#x27;1940-01-21T18:00:00.000000000&#x27;,\n",
" &#x27;1940-01-22T06:00:00.000000000&#x27;, &#x27;1940-01-22T18:00:00.000000000&#x27;,\n",
" &#x27;1940-01-23T06:00:00.000000000&#x27;, &#x27;1940-01-23T18:00:00.000000000&#x27;,\n",
" &#x27;1940-01-24T06:00:00.000000000&#x27;, &#x27;1940-01-24T18:00:00.000000000&#x27;,\n",
" &#x27;1940-01-25T06:00:00.000000000&#x27;, &#x27;1940-01-25T18:00:00.000000000&#x27;,\n",
" &#x27;1940-01-26T06:00:00.000000000&#x27;, &#x27;1940-01-26T18:00:00.000000000&#x27;,\n",
" &#x27;1940-01-27T06:00:00.000000000&#x27;, &#x27;1940-01-27T18:00:00.000000000&#x27;,\n",
" &#x27;1940-01-28T06:00:00.000000000&#x27;, &#x27;1940-01-28T18:00:00.000000000&#x27;,\n",
" &#x27;1940-01-29T06:00:00.000000000&#x27;, &#x27;1940-01-29T18:00:00.000000000&#x27;,\n",
" &#x27;1940-01-30T06:00:00.000000000&#x27;, &#x27;1940-01-30T18:00:00.000000000&#x27;,\n",
" &#x27;1940-01-31T06:00:00.000000000&#x27;, &#x27;1940-01-31T18:00:00.000000000&#x27;,\n",
" &#x27;1940-02-01T06:00:00.000000000&#x27;, &#x27;1940-02-01T18:00:00.000000000&#x27;,\n",
" &#x27;1940-02-02T06:00:00.000000000&#x27;, &#x27;1940-02-02T18:00:00.000000000&#x27;,\n",
" &#x27;1940-02-03T06:00:00.000000000&#x27;, &#x27;1940-02-03T18:00:00.000000000&#x27;,\n",
" &#x27;1940-02-04T06:00:00.000000000&#x27;, &#x27;1940-02-04T18:00:00.000000000&#x27;,\n",
" &#x27;1940-02-05T06:00:00.000000000&#x27;, &#x27;1940-02-05T18:00:00.000000000&#x27;,\n",
" &#x27;1940-02-06T06:00:00.000000000&#x27;, &#x27;1940-02-06T18:00:00.000000000&#x27;,\n",
" &#x27;1940-02-07T06:00:00.000000000&#x27;, &#x27;1940-02-07T18:00:00.000000000&#x27;,\n",
" &#x27;1940-02-08T06:00:00.000000000&#x27;, &#x27;1940-02-08T18:00:00.000000000&#x27;,\n",
" &#x27;1940-02-09T06:00:00.000000000&#x27;, &#x27;1940-02-09T18:00:00.000000000&#x27;,\n",
" &#x27;1940-02-10T06:00:00.000000000&#x27;, &#x27;1940-02-10T18:00:00.000000000&#x27;,\n",
" &#x27;1940-02-11T06:00:00.000000000&#x27;, &#x27;1940-02-11T18:00:00.000000000&#x27;,\n",
" &#x27;1940-02-12T06:00:00.000000000&#x27;, &#x27;1940-02-12T18:00:00.000000000&#x27;,\n",
" &#x27;1940-02-13T06:00:00.000000000&#x27;, &#x27;1940-02-13T18:00:00.000000000&#x27;,\n",
" &#x27;1940-02-14T06:00:00.000000000&#x27;, &#x27;1940-02-14T18:00:00.000000000&#x27;,\n",
" &#x27;1940-02-15T06:00:00.000000000&#x27;, &#x27;1940-02-15T18:00:00.000000000&#x27;,\n",
" &#x27;1940-02-16T06:00:00.000000000&#x27;, &#x27;1940-02-16T18:00:00.000000000&#x27;,\n",
" &#x27;1940-02-17T06:00:00.000000000&#x27;, &#x27;1940-02-17T18:00:00.000000000&#x27;,\n",
" &#x27;1940-02-18T06:00:00.000000000&#x27;, &#x27;1940-02-18T18:00:00.000000000&#x27;,\n",
" &#x27;1940-02-19T06:00:00.000000000&#x27;, &#x27;1940-02-19T18:00:00.000000000&#x27;,\n",
" &#x27;1940-02-20T06:00:00.000000000&#x27;, &#x27;1940-02-20T18:00:00.000000000&#x27;,\n",
" &#x27;1940-02-21T06:00:00.000000000&#x27;, &#x27;1940-02-21T18:00:00.000000000&#x27;,\n",
" &#x27;1940-02-22T06:00:00.000000000&#x27;, &#x27;1940-02-22T18:00:00.000000000&#x27;,\n",
" &#x27;1940-02-23T06:00:00.000000000&#x27;, &#x27;1940-02-23T18:00:00.000000000&#x27;,\n",
" &#x27;1940-02-24T06:00:00.000000000&#x27;, &#x27;1940-02-24T18:00:00.000000000&#x27;,\n",
" &#x27;1940-02-25T06:00:00.000000000&#x27;, &#x27;1940-02-25T18:00:00.000000000&#x27;,\n",
" &#x27;1940-02-26T06:00:00.000000000&#x27;, &#x27;1940-02-26T18:00:00.000000000&#x27;,\n",
" &#x27;1940-02-27T06:00:00.000000000&#x27;, &#x27;1940-02-27T18:00:00.000000000&#x27;,\n",
" &#x27;1940-02-28T06:00:00.000000000&#x27;, &#x27;1940-02-28T18:00:00.000000000&#x27;,\n",
" &#x27;1940-02-29T06:00:00.000000000&#x27;, &#x27;1940-02-29T18:00:00.000000000&#x27;,\n",
" &#x27;1940-03-01T06:00:00.000000000&#x27;, &#x27;1940-03-01T18:00:00.000000000&#x27;,\n",
" &#x27;1940-03-02T06:00:00.000000000&#x27;, &#x27;1940-03-02T18:00:00.000000000&#x27;,\n",
" &#x27;1940-03-03T06:00:00.000000000&#x27;, &#x27;1940-03-03T18:00:00.000000000&#x27;,\n",
" &#x27;1940-03-04T06:00:00.000000000&#x27;, &#x27;1940-03-04T18:00:00.000000000&#x27;,\n",
" &#x27;1940-03-05T06:00:00.000000000&#x27;, &#x27;1940-03-05T18:00:00.000000000&#x27;,\n",
" &#x27;1940-03-06T06:00:00.000000000&#x27;, &#x27;1940-03-06T18:00:00.000000000&#x27;,\n",
" &#x27;1940-03-07T06:00:00.000000000&#x27;, &#x27;1940-03-07T18:00:00.000000000&#x27;,\n",
" &#x27;1940-03-08T06:00:00.000000000&#x27;, &#x27;1940-03-08T18:00:00.000000000&#x27;,\n",
" &#x27;1940-03-09T06:00:00.000000000&#x27;, &#x27;1940-03-09T18:00:00.000000000&#x27;,\n",
" &#x27;1940-03-10T06:00:00.000000000&#x27;, &#x27;1940-03-10T18:00:00.000000000&#x27;,\n",
" &#x27;1940-03-11T06:00:00.000000000&#x27;, &#x27;1940-03-11T18:00:00.000000000&#x27;,\n",
" &#x27;1940-03-12T06:00:00.000000000&#x27;, &#x27;1940-03-12T18:00:00.000000000&#x27;,\n",
" &#x27;1940-03-13T06:00:00.000000000&#x27;, &#x27;1940-03-13T18:00:00.000000000&#x27;,\n",
" &#x27;1940-03-14T06:00:00.000000000&#x27;, &#x27;1940-03-14T18:00:00.000000000&#x27;,\n",
" &#x27;1940-03-15T06:00:00.000000000&#x27;, &#x27;1940-03-15T18:00:00.000000000&#x27;,\n",
" &#x27;1940-03-16T06:00:00.000000000&#x27;, &#x27;1940-03-16T18:00:00.000000000&#x27;,\n",
" &#x27;1940-03-17T06:00:00.000000000&#x27;, &#x27;1940-03-17T18:00:00.000000000&#x27;,\n",
" &#x27;1940-03-18T06:00:00.000000000&#x27;, &#x27;1940-03-18T18:00:00.000000000&#x27;,\n",
" &#x27;1940-03-19T06:00:00.000000000&#x27;, &#x27;1940-03-19T18:00:00.000000000&#x27;,\n",
" &#x27;1940-03-20T06:00:00.000000000&#x27;, &#x27;1940-03-20T18:00:00.000000000&#x27;,\n",
" &#x27;1940-03-21T06:00:00.000000000&#x27;, &#x27;1940-03-21T18:00:00.000000000&#x27;,\n",
" &#x27;1940-03-22T06:00:00.000000000&#x27;, &#x27;1940-03-22T18:00:00.000000000&#x27;,\n",
" &#x27;1940-03-23T06:00:00.000000000&#x27;, &#x27;1940-03-23T18:00:00.000000000&#x27;,\n",
" &#x27;1940-03-24T06:00:00.000000000&#x27;, &#x27;1940-03-24T18:00:00.000000000&#x27;,\n",
" &#x27;1940-03-25T06:00:00.000000000&#x27;, &#x27;1940-03-25T18:00:00.000000000&#x27;,\n",
" &#x27;1940-03-26T06:00:00.000000000&#x27;, &#x27;1940-03-26T18:00:00.000000000&#x27;,\n",
" &#x27;1940-03-27T06:00:00.000000000&#x27;, &#x27;1940-03-27T18:00:00.000000000&#x27;,\n",
" &#x27;1940-03-28T06:00:00.000000000&#x27;, &#x27;1940-03-28T18:00:00.000000000&#x27;,\n",
" &#x27;1940-03-29T06:00:00.000000000&#x27;, &#x27;1940-03-29T18:00:00.000000000&#x27;,\n",
" &#x27;1940-03-30T06:00:00.000000000&#x27;, &#x27;1940-03-30T18:00:00.000000000&#x27;,\n",
" &#x27;1940-03-31T06:00:00.000000000&#x27;, &#x27;1940-03-31T18:00:00.000000000&#x27;],\n",
" dtype=&#x27;datetime64[ns]&#x27;)</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&lt;chunksize=(5, 12, 721, 1440), meta=np.ndarray&gt;</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 &quot;history&quot; and &quot;NCO&quot; 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
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment