{ "cells": [ { "cell_type": "markdown", "id": "8e308cd3-7f5a-4b62-bd2d-027850282c00", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "## Writing GRIB data to Zarr" ] }, { "cell_type": "code", "execution_count": 1, "id": "62b00621-67cd-46b0-81ef-16278a6eee18", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "8d75e667605a4e4eb22967f6a3d6e9c6", "version_major": 2, "version_minor": 0 }, "text/plain": [ "pl.grib: 0%| | 0.00/48.8k [00:00, ?B/s]" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# get input GRIB data\n", "import earthkit.data as ekd\n", "ds = ekd.from_source(\"sample\", \"pl.grib\")" ] }, { "cell_type": "raw", "id": "39d0eb80-c812-455e-ae3d-c7bdb6ad1685", "metadata": { "editable": true, "raw_mimetype": "text/restructuredtext", "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "This data contains 32 fields: several forecasts on pressure levels for 2 parameters. We can check its content with :py:func:`describe`." ] }, { "cell_type": "code", "execution_count": 2, "id": "167942b1-8a07-4418-b134-d070cba24523", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [ { "data": { "text/html": [ "\n", "
| \n", " | \n", " | level | \n", "date | \n", "time | \n", "step | \n", "paramId | \n", "class | \n", "stream | \n", "type | \n", "experimentVersionNumber | \n", "
|---|---|---|---|---|---|---|---|---|---|---|
| shortName | \n", "typeOfLevel | \n", "\n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " |
| r | \n", "isobaricInhPa | \n", "700,500 | \n", "20240603,20240604 | \n", "0,1200 | \n", "0,6 | \n", "157 | \n", "od | \n", "oper | \n", "fc | \n", "0001 | \n", "
| t | \n", "isobaricInhPa | \n", "700,500 | \n", "20240603,20240604 | \n", "0,1200 | \n", "0,6 | \n", "130 | \n", "od | \n", "oper | \n", "fc | \n", "0001 | \n", "
/\n", "├── forecast_reference_time (4,) int64\n", "├── latitude (19,) float64\n", "├── level (2,) int64\n", "├── longitude (36,) float64\n", "├── r (4, 2, 2, 19, 36) float64\n", "├── step (2,) int64\n", "└── t (4, 2, 2, 19, 36) float64\n", "\n" ], "text/plain": [ "\u001b[1m/\u001b[0m\n", "├── \u001b[1mforecast_reference_time\u001b[0m (4,) int64\n", "├── \u001b[1mlatitude\u001b[0m (19,) float64\n", "├── \u001b[1mlevel\u001b[0m (2,) int64\n", "├── \u001b[1mlongitude\u001b[0m (36,) float64\n", "├── \u001b[1mr\u001b[0m (4, 2, 2, 19, 36) float64\n", "├── \u001b[1mstep\u001b[0m (2,) int64\n", "└── \u001b[1mt\u001b[0m (4, 2, 2, 19, 36) float64\n" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import zarr \n", "root = zarr.group(\"_pl.zarr\")\n", "root.tree()" ] }, { "cell_type": "code", "execution_count": 5, "id": "515bc071-d45f-48aa-abea-0cc688f4eebc", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [ { "data": { "text/plain": [ "Type : Array\n", "Zarr format : 3\n", "Data type : DataType.float64\n", "Shape : (4, 2, 2, 19, 36)\n", "Chunk shape : (1, 1, 1, 19, 36)\n", "Order : C\n", "Read-only : False\n", "Store type : LocalStore\n", "Filters : ()\n", "Serializer : BytesCodec(endian=
<xarray.Dataset> Size: 176kB\n",
"Dimensions: (step: 2, longitude: 36,\n",
" forecast_reference_time: 4, latitude: 19, level: 2)\n",
"Coordinates:\n",
" * step (step) timedelta64[ns] 16B 00:00:00 06:00:00\n",
" * longitude (longitude) float64 288B 0.0 10.0 ... 340.0 350.0\n",
" * forecast_reference_time (forecast_reference_time) datetime64[ns] 32B 202...\n",
" * latitude (latitude) float64 152B 90.0 80.0 ... -80.0 -90.0\n",
" * level (level) int64 16B 500 700\n",
"Data variables:\n",
" r (forecast_reference_time, step, level, latitude, longitude) float64 88kB ...\n",
" t (forecast_reference_time, step, level, latitude, longitude) float64 88kB ...\n",
"Attributes:\n",
" class: od\n",
" stream: oper\n",
" levtype: pl\n",
" type: fc\n",
" expver: 0001\n",
" date: 20240603\n",
" time: 0\n",
" domain: g\n",
" number: 0\n",
" Conventions: CF-1.8\n",
" institution: ECMWF