{ "cells": [ { "cell_type": "markdown", "id": "6094679c-dc47-4822-bae4-150f6b541bd4", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "## Writing GRIB to file-pattern target" ] }, { "cell_type": "code", "execution_count": 1, "id": "b7db8543-3a37-4eaf-8729-261f46e3ca18", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "", "version_major": 2, "version_minor": 0 }, "text/plain": [ "tuv_pl.grib: 0%| | 0.00/4.22k [00:00\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
centreshortNametypeOfLevelleveldataDatedataTimestepRangedataTypenumbergridType
0ecmftisobaricInhPa8502018080112000an0regular_ll
\n", "" ], "text/plain": [ " centre shortName typeOfLevel level dataDate dataTime stepRange \\\n", "0 ecmf t isobaricInhPa 850 20180801 1200 0 \n", "\n", " dataType number gridType \n", "0 an 0 regular_ll " ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# writing only temperature fields\n", "ds.sel(param=\"t\").to_target(\"file-pattern\", out_pattern)\n", "\n", "# writing a whole fieldlist\n", "ds.to_target(\"file-pattern\", out_pattern)\n", "\n", "# checking one output file\n", "ekd.from_source(\"file\", \"_res_pattern_t_850.grib\").ls()" ] }, { "cell_type": "code", "execution_count": 4, "id": "00bf762d-c937-4967-bf75-30d277c93182", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
centreshortNametypeOfLevelleveldataDatedataTimestepRangedataTypenumbergridTypebitsPerValue
0ecmftisobaricInhPa8502025010812000an0regular_ll8
\n", "
" ], "text/plain": [ " centre shortName typeOfLevel level dataDate dataTime stepRange \\\n", "0 ecmf t isobaricInhPa 850 20250108 1200 0 \n", "\n", " dataType number gridType bitsPerValue \n", "0 an 0 regular_ll 8 " ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# setting GRIB keys for the output\n", "ds.to_target(\"file-pattern\", out_pattern, metadata={\"date\": 20250108}, bitsPerValue=8)\n", "\n", "# checking one output file\n", "ekd.from_source(\"file\", \"_res_pattern_t_850.grib\").ls(extra_keys=[\"bitsPerValue\"])" ] }, { "cell_type": "markdown", "id": "211ac929-3464-4165-a2a3-d8fb4903a7e3", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "#### Using a Target object" ] }, { "cell_type": "raw", "id": "c6fbbe17-99c6-49ce-9820-8fbd6391448d", "metadata": { "editable": true, "raw_mimetype": "text/restructuredtext", "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "We can create a target object with :func:`get_target` and use :meth:`write` to write/add data to it." ] }, { "cell_type": "code", "execution_count": 5, "id": "47cef925-6caf-4cee-bec0-e4467db510f0", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [], "source": [ "# basic usage\n", "target = ekd.create_target(\"file-pattern\", out_pattern)\n", "target.write(ds)\n", "target.close()\n", "\n", "# can be used as a context manager, no need to call close() in the end\n", "with ekd.create_target(\"file-pattern\", out_pattern) as target:\n", " target.write(ds)\n", "\n", "# a fieldlist can be written field by field into the target\n", "with ekd.create_target(\"file-pattern\", out_pattern) as target:\n", " for f in ds:\n", " target.write(f)" ] }, { "cell_type": "markdown", "id": "5c4ce913-461a-4d3b-89ae-7feace1157a9", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "#### Using encoders" ] }, { "cell_type": "markdown", "id": "2aa6644d-1c90-4550-a88f-af2ee0d6b909", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "These calls are equivalent." ] }, { "cell_type": "code", "execution_count": 6, "id": "a86840f7-4b99-4ab6-911d-60726d771a31", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [], "source": [ "# setting metadata and other GRIB keys for the output\n", "ds.to_target(\"file-pattern\", out_pattern, metadata={\"date\": 20250108}, bitsPerValue=8)\n", "\n", "# explicitly specifying the encoder\n", "ds.to_target(\"file-pattern\", out_pattern, encoder=\"grib\", metadata={\"date\": 20250108}, bitsPerValue=8)\n", "\n", "# using an encoder object\n", "encoder = ekd.create_encoder(\"grib\", metadata={\"date\": 20250108})\n", "ds.to_target(\"file-pattern\", out_pattern, encoder=encoder, bitsPerValue=8)" ] }, { "cell_type": "markdown", "id": "176b71c1-9830-4f4e-af75-6857467308bb", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "The same can be done with a target object." ] }, { "cell_type": "code", "execution_count": 7, "id": "310476ce-9d73-4624-a933-2df468586a23", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [], "source": [ "encoder = ekd.create_encoder(\"grib\", metadata={\"date\": 20250108})\n", "with ekd.create_target(\"file-pattern\", out_pattern) as target:\n", " target.write(ds, encoder=encoder, bitsPerValue=8)" ] } ], "metadata": { "kernelspec": { "display_name": "dev_ecc", "language": "python", "name": "dev_ecc" }, "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.10.13" } }, "nbformat": 4, "nbformat_minor": 5 }