Created
October 17, 2025 20:41
-
-
Save rsignell/dbd3e09dc026a9ba72f26ef8e64aedc9 to your computer and use it in GitHub Desktop.
era5_evap_create.ipynb
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "cells": [ | |
| { | |
| "cell_type": "markdown", | |
| "id": "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 | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment