Created
October 16, 2025 20:24
-
-
Save rsignell/0d15a989eb5ea2a54fb8efbf3a70a879 to your computer and use it in GitHub Desktop.
Revisions
-
rsignell created this gist
Oct 16, 2025 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,805 @@ { "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": "1de3bfc8-2eb4-440b-be3e-3f34cbc6389f", "metadata": {}, "outputs": [], "source": [ "data_bucket = \"s3://nsf-ncar-era5\"" ] }, { "cell_type": "code", "execution_count": 3, "id": "e5478c68-745e-423c-ac1e-eedf997bc992", "metadata": {}, "outputs": [], "source": [ "import fsspec\n", "fs = fsspec.filesystem('s3', anon=True)" ] }, { "cell_type": "code", "execution_count": 4, "id": "c652eea8-93ca-4791-9a1c-2a331f3091c1", "metadata": {}, "outputs": [], "source": [ "flist = fs.glob(f'{data_bucket}/e5.oper.fc.sfc.accumu/196001/*128_182_e*.nc')" ] }, { "cell_type": "code", "execution_count": 5, "id": "08e66934-0405-4fa7-9a04-a6528c6d8577", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['nsf-ncar-era5/e5.oper.fc.sfc.accumu/196001/e5.oper.fc.sfc.accumu.128_182_e.ll025sc.1960010106_1960011606.nc',\n", " 'nsf-ncar-era5/e5.oper.fc.sfc.accumu/196001/e5.oper.fc.sfc.accumu.128_182_e.ll025sc.1960011606_1960020106.nc']" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "flist" ] }, { "cell_type": "code", "execution_count": 6, "id": "47383323-52d7-4ae5-bf31-cc74f547f79d", "metadata": {}, "outputs": [], "source": [ "flist = [f's3://{f}' for f in flist]" ] }, { "cell_type": "code", "execution_count": 7, "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": 8, "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": 9, "id": "c7d02c8f-0e04-4d51-a80b-83e229e14dd9", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 1.26 s, sys: 370 ms, total: 1.63 s\n", "Wall time: 31.9 s\n" ] } ], "source": [ "%%time\n", "ds_list = [\n", " open_virtual_dataset(\n", " url=f,\n", " parser=parser,\n", " registry=registry, \n", " loadable_variables=[\"forecast_initial_time\"],\n", " )\n", " for f in flist\n", "]" ] }, { "cell_type": "code", "execution_count": 10, "id": "6919a6d6-2c4b-4c0e-a974-8557bad7beb7", "metadata": { "scrolled": true }, "outputs": [ { "ename": "ValueError", "evalue": "Cannot concatenate arrays with partial chunks because only regular chunk grids are currently supported. Concat input 0 has array length 30 along the concatenation axis which is not evenly divisible by chunk length 1024.", "output_type": "error", "traceback": [ "\u001b[31m---------------------------------------------------------------------------\u001b[39m", "\u001b[31mValueError\u001b[39m Traceback (most recent call last)", "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[10]\u001b[39m\u001b[32m, line 1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m1\u001b[39m ds = \u001b[43mxr\u001b[49m\u001b[43m.\u001b[49m\u001b[43mconcat\u001b[49m\u001b[43m(\u001b[49m\n\u001b[32m 2\u001b[39m \u001b[43m \u001b[49m\u001b[43mds_list\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 3\u001b[39m \u001b[43m \u001b[49m\u001b[43mdim\u001b[49m\u001b[43m=\u001b[49m\u001b[33;43m\"\u001b[39;49m\u001b[33;43mforecast_initial_time\u001b[39;49m\u001b[33;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[32m 4\u001b[39m \u001b[43m \u001b[49m\u001b[43mcoords\u001b[49m\u001b[43m=\u001b[49m\u001b[33;43m\"\u001b[39;49m\u001b[33;43mminimal\u001b[39;49m\u001b[33;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[32m 5\u001b[39m \u001b[43m \u001b[49m\u001b[43mcompat\u001b[49m\u001b[43m=\u001b[49m\u001b[33;43m\"\u001b[39;49m\u001b[33;43moverride\u001b[39;49m\u001b[33;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[32m 6\u001b[39m \u001b[43m \u001b[49m\u001b[43mcombine_attrs\u001b[49m\u001b[43m=\u001b[49m\u001b[33;43m\"\u001b[39;49m\u001b[33;43moverride\u001b[39;49m\u001b[33;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[32m 7\u001b[39m \u001b[43m)\u001b[49m\n", "\u001b[36mFile \u001b[39m\u001b[32m/srv/conda/envs/notebook/lib/python3.13/site-packages/xarray/structure/concat.py:295\u001b[39m, in \u001b[36mconcat\u001b[39m\u001b[34m(objs, dim, data_vars, coords, compat, positions, fill_value, join, combine_attrs, create_index_for_new_dim)\u001b[39m\n\u001b[32m 282\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m _dataarray_concat(\n\u001b[32m 283\u001b[39m objs,\n\u001b[32m 284\u001b[39m dim=dim,\n\u001b[32m (...)\u001b[39m\u001b[32m 292\u001b[39m create_index_for_new_dim=create_index_for_new_dim,\n\u001b[32m 293\u001b[39m )\n\u001b[32m 294\u001b[39m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(first_obj, Dataset):\n\u001b[32m--> \u001b[39m\u001b[32m295\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43m_dataset_concat\u001b[49m\u001b[43m(\u001b[49m\n\u001b[32m 296\u001b[39m \u001b[43m \u001b[49m\u001b[43mobjs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 297\u001b[39m \u001b[43m \u001b[49m\u001b[43mdim\u001b[49m\u001b[43m=\u001b[49m\u001b[43mdim\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 298\u001b[39m \u001b[43m \u001b[49m\u001b[43mdata_vars\u001b[49m\u001b[43m=\u001b[49m\u001b[43mdata_vars\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 299\u001b[39m \u001b[43m \u001b[49m\u001b[43mcoords\u001b[49m\u001b[43m=\u001b[49m\u001b[43mcoords\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 300\u001b[39m \u001b[43m \u001b[49m\u001b[43mcompat\u001b[49m\u001b[43m=\u001b[49m\u001b[43mcompat\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 301\u001b[39m \u001b[43m \u001b[49m\u001b[43mpositions\u001b[49m\u001b[43m=\u001b[49m\u001b[43mpositions\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 302\u001b[39m \u001b[43m \u001b[49m\u001b[43mfill_value\u001b[49m\u001b[43m=\u001b[49m\u001b[43mfill_value\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 303\u001b[39m \u001b[43m \u001b[49m\u001b[43mjoin\u001b[49m\u001b[43m=\u001b[49m\u001b[43mjoin\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 304\u001b[39m \u001b[43m \u001b[49m\u001b[43mcombine_attrs\u001b[49m\u001b[43m=\u001b[49m\u001b[43mcombine_attrs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 305\u001b[39m \u001b[43m \u001b[49m\u001b[43mcreate_index_for_new_dim\u001b[49m\u001b[43m=\u001b[49m\u001b[43mcreate_index_for_new_dim\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 306\u001b[39m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 307\u001b[39m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[32m 308\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mTypeError\u001b[39;00m(\n\u001b[32m 309\u001b[39m \u001b[33m\"\u001b[39m\u001b[33mcan only concatenate xarray Dataset and DataArray \u001b[39m\u001b[33m\"\u001b[39m\n\u001b[32m 310\u001b[39m \u001b[33mf\u001b[39m\u001b[33m\"\u001b[39m\u001b[33mobjects, got \u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mtype\u001b[39m(first_obj)\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m\"\u001b[39m\n\u001b[32m 311\u001b[39m )\n", "\u001b[36mFile \u001b[39m\u001b[32m/srv/conda/envs/notebook/lib/python3.13/site-packages/xarray/structure/concat.py:770\u001b[39m, in \u001b[36m_dataset_concat\u001b[39m\u001b[34m(datasets, dim, data_vars, coords, compat, positions, fill_value, join, combine_attrs, create_index_for_new_dim)\u001b[39m\n\u001b[32m 768\u001b[39m result_vars[k] = v\n\u001b[32m 769\u001b[39m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[32m--> \u001b[39m\u001b[32m770\u001b[39m combined_var = \u001b[43mconcat_vars\u001b[49m\u001b[43m(\u001b[49m\n\u001b[32m 771\u001b[39m \u001b[43m \u001b[49m\u001b[38;5;28;43mvars\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdim_name\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mpositions\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcombine_attrs\u001b[49m\u001b[43m=\u001b[49m\u001b[43mcombine_attrs\u001b[49m\n\u001b[32m 772\u001b[39m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 773\u001b[39m \u001b[38;5;66;03m# reindex if variable is not present in all datasets\u001b[39;00m\n\u001b[32m 774\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(variable_index) < concat_index_size:\n", "\u001b[36mFile \u001b[39m\u001b[32m/srv/conda/envs/notebook/lib/python3.13/site-packages/xarray/core/variable.py:3110\u001b[39m, in \u001b[36mconcat\u001b[39m\u001b[34m(variables, dim, positions, shortcut, combine_attrs)\u001b[39m\n\u001b[32m 3108\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m IndexVariable.concat(variables, dim, positions, shortcut, combine_attrs)\n\u001b[32m 3109\u001b[39m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[32m-> \u001b[39m\u001b[32m3110\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mVariable\u001b[49m\u001b[43m.\u001b[49m\u001b[43mconcat\u001b[49m\u001b[43m(\u001b[49m\u001b[43mvariables\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdim\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mpositions\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mshortcut\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcombine_attrs\u001b[49m\u001b[43m)\u001b[49m\n", "\u001b[36mFile \u001b[39m\u001b[32m/srv/conda/envs/notebook/lib/python3.13/site-packages/xarray/core/variable.py:1841\u001b[39m, in \u001b[36mVariable.concat\u001b[39m\u001b[34m(cls, variables, dim, positions, shortcut, combine_attrs)\u001b[39m\n\u001b[32m 1839\u001b[39m axis = first_var.get_axis_num(dim)\n\u001b[32m 1840\u001b[39m dims = first_var_dims\n\u001b[32m-> \u001b[39m\u001b[32m1841\u001b[39m data = \u001b[43mduck_array_ops\u001b[49m\u001b[43m.\u001b[49m\u001b[43mconcatenate\u001b[49m\u001b[43m(\u001b[49m\u001b[43marrays\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43maxis\u001b[49m\u001b[43m=\u001b[49m\u001b[43maxis\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 1842\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m positions \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[32m 1843\u001b[39m \u001b[38;5;66;03m# TODO: deprecate this option -- we don't need it for groupby\u001b[39;00m\n\u001b[32m 1844\u001b[39m \u001b[38;5;66;03m# any more.\u001b[39;00m\n\u001b[32m 1845\u001b[39m indices = nputils.inverse_permutation(np.concatenate(positions))\n", "\u001b[36mFile \u001b[39m\u001b[32m/srv/conda/envs/notebook/lib/python3.13/site-packages/xarray/core/duck_array_ops.py:441\u001b[39m, in \u001b[36mconcatenate\u001b[39m\u001b[34m(arrays, axis)\u001b[39m\n\u001b[32m 439\u001b[39m xp = get_array_namespace(*arrays)\n\u001b[32m 440\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mhasattr\u001b[39m(xp, \u001b[33m\"\u001b[39m\u001b[33mconcat\u001b[39m\u001b[33m\"\u001b[39m):\n\u001b[32m--> \u001b[39m\u001b[32m441\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mxp\u001b[49m\u001b[43m.\u001b[49m\u001b[43mconcat\u001b[49m\u001b[43m(\u001b[49m\u001b[43mas_shared_dtype\u001b[49m\u001b[43m(\u001b[49m\u001b[43marrays\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mxp\u001b[49m\u001b[43m=\u001b[49m\u001b[43mxp\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43maxis\u001b[49m\u001b[43m=\u001b[49m\u001b[43maxis\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 442\u001b[39m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[32m 443\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m xp.concatenate(as_shared_dtype(arrays, xp=xp), axis=axis)\n", "\u001b[36mFile \u001b[39m\u001b[32m/srv/conda/envs/notebook/lib/python3.13/site-packages/virtualizarr/manifests/array.py:141\u001b[39m, in \u001b[36mManifestArray.__array_function__\u001b[39m\u001b[34m(self, func, types, args, kwargs)\u001b[39m\n\u001b[32m 138\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mall\u001b[39m(\u001b[38;5;28missubclass\u001b[39m(t, ManifestArray) \u001b[38;5;28;01mfor\u001b[39;00m t \u001b[38;5;129;01min\u001b[39;00m types):\n\u001b[32m 139\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mNotImplemented\u001b[39m\n\u001b[32m--> \u001b[39m\u001b[32m141\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mMANIFESTARRAY_HANDLED_ARRAY_FUNCTIONS\u001b[49m\u001b[43m[\u001b[49m\u001b[43mfunc\u001b[49m\u001b[43m]\u001b[49m\u001b[43m(\u001b[49m\u001b[43m*\u001b[49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", "\u001b[36mFile \u001b[39m\u001b[32m/srv/conda/envs/notebook/lib/python3.13/site-packages/virtualizarr/manifests/array_api.py:91\u001b[39m, in \u001b[36mconcatenate\u001b[39m\u001b[34m(arrays, axis)\u001b[39m\n\u001b[32m 89\u001b[39m arr_chunks = [arr.chunks \u001b[38;5;28;01mfor\u001b[39;00m arr \u001b[38;5;129;01min\u001b[39;00m arrays]\n\u001b[32m 90\u001b[39m check_same_shapes_except_on_concat_axis(arr_shapes, axis)\n\u001b[32m---> \u001b[39m\u001b[32m91\u001b[39m \u001b[43mcheck_no_partial_chunks_on_concat_axis\u001b[49m\u001b[43m(\u001b[49m\u001b[43marr_shapes\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43marr_chunks\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43maxis\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 93\u001b[39m \u001b[38;5;66;03m# find what new array shape must be\u001b[39;00m\n\u001b[32m 94\u001b[39m new_length_along_concat_axis = \u001b[38;5;28msum\u001b[39m([shape[axis] \u001b[38;5;28;01mfor\u001b[39;00m shape \u001b[38;5;129;01min\u001b[39;00m arr_shapes])\n", "\u001b[36mFile \u001b[39m\u001b[32m/srv/conda/envs/notebook/lib/python3.13/site-packages/virtualizarr/manifests/utils.py:173\u001b[39m, in \u001b[36mcheck_no_partial_chunks_on_concat_axis\u001b[39m\u001b[34m(shapes, chunks, axis)\u001b[39m\n\u001b[32m 171\u001b[39m \u001b[38;5;28;01mfor\u001b[39;00m i, (shape, chunk_shape) \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28menumerate\u001b[39m(\u001b[38;5;28mzip\u001b[39m(shapes, chunks)):\n\u001b[32m 172\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m shape[axis] % chunk_shape[axis] > \u001b[32m0\u001b[39m:\n\u001b[32m--> \u001b[39m\u001b[32m173\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\n\u001b[32m 174\u001b[39m \u001b[33m\"\u001b[39m\u001b[33mCannot concatenate arrays with partial chunks because only regular chunk grids are currently supported. \u001b[39m\u001b[33m\"\u001b[39m\n\u001b[32m 175\u001b[39m \u001b[33mf\u001b[39m\u001b[33m\"\u001b[39m\u001b[33mConcat input \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mi\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m has array length \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mshape[axis]\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m along the concatenation axis which is not \u001b[39m\u001b[33m\"\u001b[39m\n\u001b[32m 176\u001b[39m \u001b[33mf\u001b[39m\u001b[33m\"\u001b[39m\u001b[33mevenly divisible by chunk length \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mchunk_shape[axis]\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m.\u001b[39m\u001b[33m\"\u001b[39m\n\u001b[32m 177\u001b[39m )\n", "\u001b[31mValueError\u001b[39m: Cannot concatenate arrays with partial chunks because only regular chunk grids are currently supported. Concat input 0 has array length 30 along the concatenation axis which is not evenly divisible by chunk length 1024." ] } ], "source": [ "ds = xr.concat(\n", " ds_list,\n", " dim=\"forecast_initial_time\",\n", " coords=\"minimal\",\n", " compat=\"override\",\n", " combine_attrs=\"override\",\n", ")" ] }, { "cell_type": "code", "execution_count": 14, "id": "e304421a-b519-4875-b2d3-272df25023b7", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(30, 12, 721, 1440)\n", "(32, 12, 721, 1440)\n" ] } ], "source": [ "_ = [print(ds.E.shape) for ds in ds_list]" ] }, { "cell_type": "code", "execution_count": 12, "id": "9ecd0a3f-4d29-409a-afad-13513537a5bb", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(1, 12, 721, 1440)\n", "(1, 12, 721, 1440)\n" ] } ], "source": [ "_ = [print(ds.E.chunks) for ds in ds_list]" ] }, { "cell_type": "code", "execution_count": 13, "id": "77badac4-362e-4501-b669-24c6d986bb69", "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: 1GB\n", "Dimensions: (forecast_initial_time: 30, forecast_hour: 12,\n", " latitude: 721, longitude: 1440)\n", "Coordinates:\n", " * forecast_initial_time (forecast_initial_time) datetime64[ns] 240B 1960-0...\n", " forecast_hour (forecast_hour) int32 48B ManifestArray<shape=(12,...\n", " latitude (latitude) float64 6kB ManifestArray<shape=(721,),...\n", " longitude (longitude) float64 12kB ManifestArray<shape=(1440...\n", "Data variables:\n", " E (forecast_initial_time, forecast_hour, latitude, longitude) float32 1GB ManifestArray<shape=(30, 12, 721, 1440), dtype=float32, chun...\n", " utc_date (forecast_initial_time) int32 120B ManifestArray<s...\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 r8i3n21 4.12.14-95.51-default #1 SMP Fri Apr ...\n", " CONVERSION_DATE: Mon Jun 27 14:39:26 MDT 2022\n", " Conventions: CF-1.6\n", " NETCDF_COMPRESSION: NCO: Precision-preserving compression to netCDF4/HD...\n", " history: Mon Jun 27 14:39:34 2022: 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-f1665fe4-9b6e-4420-8607-e89279a7c9c6' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-f1665fe4-9b6e-4420-8607-e89279a7c9c6' 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>: 30</li><li><span>forecast_hour</span>: 12</li><li><span>latitude</span>: 721</li><li><span>longitude</span>: 1440</li></ul></div><div class='xr-section-details'></div></li><li class='xr-section-item'><input id='section-5e8796b2-05cb-4924-90be-78a311ef74cb' class='xr-section-summary-in' type='checkbox' checked><label for='section-5e8796b2-05cb-4924-90be-78a311ef74cb' 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'>1960-01-01T06:00:00 ... 1960-01-...</div><input id='attrs-038fe4c1-91fb-4741-ab81-faf409760fc4' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-038fe4c1-91fb-4741-ab81-faf409760fc4' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-0a3630f5-5dfb-47d7-9786-4b7596bbe669' class='xr-var-data-in' type='checkbox'><label for='data-0a3630f5-5dfb-47d7-9786-4b7596bbe669' 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(['1960-01-01T06:00:00.000000000', '1960-01-01T18:00:00.000000000',\n", " '1960-01-02T06:00:00.000000000', '1960-01-02T18:00:00.000000000',\n", " '1960-01-03T06:00:00.000000000', '1960-01-03T18:00:00.000000000',\n", " '1960-01-04T06:00:00.000000000', '1960-01-04T18:00:00.000000000',\n", " '1960-01-05T06:00:00.000000000', '1960-01-05T18:00:00.000000000',\n", " '1960-01-06T06:00:00.000000000', '1960-01-06T18:00:00.000000000',\n", " '1960-01-07T06:00:00.000000000', '1960-01-07T18:00:00.000000000',\n", " '1960-01-08T06:00:00.000000000', '1960-01-08T18:00:00.000000000',\n", " '1960-01-09T06:00:00.000000000', '1960-01-09T18:00:00.000000000',\n", " '1960-01-10T06:00:00.000000000', '1960-01-10T18:00:00.000000000',\n", " '1960-01-11T06:00:00.000000000', '1960-01-11T18:00:00.000000000',\n", " '1960-01-12T06:00:00.000000000', '1960-01-12T18:00:00.000000000',\n", " '1960-01-13T06:00:00.000000000', '1960-01-13T18:00:00.000000000',\n", " '1960-01-14T06:00:00.000000000', '1960-01-14T18:00:00.000000000',\n", " '1960-01-15T06:00:00.000000000', '1960-01-15T18:00:00.000000000'],\n", " dtype='datetime64[ns]')</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>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'>ManifestArray<shape=(12,), dtype...</div><input id='attrs-7f267d99-be41-4276-b0fc-9c2cd6fc5e37' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-7f267d99-be41-4276-b0fc-9c2cd6fc5e37' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-4345e204-b36f-4d7c-8b84-fee9ca056c45' class='xr-var-data-in' type='checkbox'><label for='data-4345e204-b36f-4d7c-8b84-fee9ca056c45' 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>ManifestArray<shape=(12,), dtype=int32, chunks=(12,)></pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>latitude</span></div><div class='xr-var-dims'>(latitude)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>ManifestArray<shape=(721,), dtyp...</div><input id='attrs-2c2c6b35-0095-4637-a5d7-1c316c3990e8' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-2c2c6b35-0095-4637-a5d7-1c316c3990e8' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-cf7a78c0-8445-4373-9230-eb0547729ac0' class='xr-var-data-in' type='checkbox'><label for='data-cf7a78c0-8445-4373-9230-eb0547729ac0' 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>ManifestArray<shape=(721,), dtype=float64, chunks=(721,)></pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>longitude</span></div><div class='xr-var-dims'>(longitude)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>ManifestArray<shape=(1440,), dty...</div><input id='attrs-75e3a880-d14e-41fa-a8f1-a99c95694509' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-75e3a880-d14e-41fa-a8f1-a99c95694509' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-da527bdb-6e9e-4345-8c4a-f5d91865fe52' class='xr-var-data-in' type='checkbox'><label for='data-da527bdb-6e9e-4345-8c4a-f5d91865fe52' 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>ManifestArray<shape=(1440,), dtype=float64, chunks=(1440,)></pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-24b2057b-3481-4e88-a7e7-a21f3332724e' class='xr-section-summary-in' type='checkbox' checked><label for='section-24b2057b-3481-4e88-a7e7-a21f3332724e' class='xr-section-summary' >Data variables: <span>(2)</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'>ManifestArray<shape=(30, 12, 721...</div><input id='attrs-a8043eb5-0ecd-467c-ada2-1b7c8c43110e' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-a8043eb5-0ecd-467c-ada2-1b7c8c43110e' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-b300f36e-690b-46f6-847c-c149f36de914' class='xr-var-data-in' type='checkbox'><label for='data-b300f36e-690b-46f6-847c-c149f36de914' 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>_FillValue :</span></dt><dd>AAAAQDMaS0Q=</dd><dt><span>missing_value :</span></dt><dd>9.999000260554009e+20</dd><dt><span>minimum_value :</span></dt><dd>-0.001647725235670805</dd><dt><span>maximum_value :</span></dt><dd>0.0003123336937278509</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'><pre>ManifestArray<shape=(30, 12, 721, 1440), dtype=float32, chunks=(1, 12, 721, 1440)></pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>utc_date</span></div><div class='xr-var-dims'>(forecast_initial_time)</div><div class='xr-var-dtype'>int32</div><div class='xr-var-preview xr-preview'>ManifestArray<shape=(30,), dtype...</div><input id='attrs-0e6ee8e8-9d90-4ed8-994a-7702ce726577' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-0e6ee8e8-9d90-4ed8-994a-7702ce726577' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-e55fd8de-4216-4ce5-93a8-8e77da054abe' class='xr-var-data-in' type='checkbox'><label for='data-e55fd8de-4216-4ce5-93a8-8e77da054abe' 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>UTC date yyyy-mm-dd hh:00:00 as yyyymmddhh</dd><dt><span>units :</span></dt><dd>Gregorian_year month day hour</dd></dl></div><div class='xr-var-data'><pre>ManifestArray<shape=(30,), dtype=int32, chunks=(1024,)></pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-b32925ca-1233-4bce-97ee-b5ebffdd94a4' class='xr-section-summary-in' type='checkbox' checked><label for='section-b32925ca-1233-4bce-97ee-b5ebffdd94a4' 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 r8i3n21 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>Mon Jun 27 14:39:26 MDT 2022</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>Mon Jun 27 14:39:34 2022: ncks -4 --ppc default=7 e5.oper.fc.sfc.accumu.128_182_e.ll025sc.1960010106_1960011606.unc.nc e5.oper.fc.sfc.accumu.128_182_e.ll025sc.1960010106_1960011606.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: 1GB\n", "Dimensions: (forecast_initial_time: 30, forecast_hour: 12,\n", " latitude: 721, longitude: 1440)\n", "Coordinates:\n", " * forecast_initial_time (forecast_initial_time) datetime64[ns] 240B 1960-0...\n", " forecast_hour (forecast_hour) int32 48B ManifestArray<shape=(12,...\n", " latitude (latitude) float64 6kB ManifestArray<shape=(721,),...\n", " longitude (longitude) float64 12kB ManifestArray<shape=(1440...\n", "Data variables:\n", " E (forecast_initial_time, forecast_hour, latitude, longitude) float32 1GB ManifestArray<shape=(30, 12, 721, 1440), dtype=float32, chun...\n", " utc_date (forecast_initial_time) int32 120B ManifestArray<s...\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 r8i3n21 4.12.14-95.51-default #1 SMP Fri Apr ...\n", " CONVERSION_DATE: Mon Jun 27 14:39:26 MDT 2022\n", " Conventions: CF-1.6\n", " NETCDF_COMPRESSION: NCO: Precision-preserving compression to netCDF4/HD...\n", " history: Mon Jun 27 14:39:34 2022: ncks -4 --ppc default=7 e...\n", " NCO: netCDF Operators version 5.0.3 (Homepage = http://n..." ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ds_list[0]" ] }, { "cell_type": "code", "execution_count": null, "id": "439a1e3c-6428-4eb1-9a98-7850c599b69a", "metadata": {}, "outputs": [], "source": [ "ds_list[1]" ] } ], "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 }