{ "cells": [ { "cell_type": "markdown", "id": "69237222-3be8-4f6b-985c-0a8181730dfb", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "## Build fieldlist from dicts in a loop" ] }, { "cell_type": "markdown", "id": "0e02de29-ccd2-4f2c-85c5-b5218179f56f", "metadata": {}, "source": [ "#### Distinct latitudes/longitudes" ] }, { "cell_type": "markdown", "id": "dd0ba727-0fcc-4c4d-a288-73f01da2921e", "metadata": {}, "source": [ "In this example each field is defined by a dict using generic metadata keys. The latitudes and longitudes specified as disctinct values, the 2D field geometry will be automatically built from them." ] }, { "cell_type": "code", "execution_count": 1, "id": "a17559f9-cba1-4dd4-bc30-14a9be9891ae", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [], "source": [ "prototype = {\n", " \"latitudes\": [10.0, 0.0, -10.0],\n", " \"longitudes\": [20, 40.0],\n", " \"values\": [1, 2, 3, 4, 5, 6],\n", " \"valid_datetime\": \"2018-08-01T09:00:00Z\",\n", " }\n", "\n", "d = [\n", " {\"param\": \"t\", \"level\": 500, **prototype},\n", " {\"param\": \"t\", \"level\": 850, **prototype},\n", " {\"param\": \"u\", \"level\": 500, **prototype},\n", " {\"param\": \"u\", \"level\": 850, **prototype},\n", " {\"param\": \"d\", \"level\": 850, **prototype},\n", " {\"param\": \"d\", \"level\": 600, **prototype},\n", " ]" ] }, { "cell_type": "markdown", "id": "2e6a5236-09d4-4b61-be4a-e4d860c52d41", "metadata": {}, "source": [ "Create a fieldlist from the data above in a loop." ] }, { "cell_type": "code", "execution_count": 2, "id": "1f902ec4-1eac-4f81-8fff-926a5640363c", "metadata": {}, "outputs": [], "source": [ "from earthkit.data import ArrayField\n", "from earthkit.data import SimpleFieldList\n", "\n", "ds = SimpleFieldList()\n", "for f in d:\n", " ds.append(ArrayField(f[\"values\"], f))" ] }, { "cell_type": "code", "execution_count": 3, "id": "54099091-f8c6-49d0-997e-eb2c69137dfc", "metadata": {}, "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", " \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", "
paramlevelbase_datetimevalid_datetimestepnumber
0t500None2018-08-01T09:00:00+00:00NoneNone
1t850None2018-08-01T09:00:00+00:00NoneNone
2u500None2018-08-01T09:00:00+00:00NoneNone
3u850None2018-08-01T09:00:00+00:00NoneNone
4d850None2018-08-01T09:00:00+00:00NoneNone
5d600None2018-08-01T09:00:00+00:00NoneNone
\n", "
" ], "text/plain": [ " param level base_datetime valid_datetime step number\n", "0 t 500 None 2018-08-01T09:00:00+00:00 None None\n", "1 t 850 None 2018-08-01T09:00:00+00:00 None None\n", "2 u 500 None 2018-08-01T09:00:00+00:00 None None\n", "3 u 850 None 2018-08-01T09:00:00+00:00 None None\n", "4 d 850 None 2018-08-01T09:00:00+00:00 None None\n", "5 d 600 None 2018-08-01T09:00:00+00:00 None None" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ds.ls()" ] }, { "cell_type": "code", "execution_count": 4, "id": "1b841c36-1f50-4851-b69f-53e5e0e1f130", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'lat': array([[ 10., 10.],\n", " [ 0., 0.],\n", " [-10., -10.]]),\n", " 'lon': array([[20., 40.],\n", " [20., 40.],\n", " [20., 40.]])}" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ds[0].to_latlon()" ] }, { "cell_type": "code", "execution_count": 5, "id": "db1a5acf-6755-42cb-b0e9-21d7335c0c97", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(array([ 10., 10., 0., 0., -10., -10.]),\n", " array([20., 40., 20., 40., 20., 40.]))" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ds[0].grid_points()" ] }, { "cell_type": "code", "execution_count": 6, "id": "e771527b-0b8f-4ac2-b446-ab539614b48b", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[[1, 2],\n", " [3, 4],\n", " [5, 6]],\n", "\n", " [[1, 2],\n", " [3, 4],\n", " [5, 6]],\n", "\n", " [[1, 2],\n", " [3, 4],\n", " [5, 6]],\n", "\n", " [[1, 2],\n", " [3, 4],\n", " [5, 6]],\n", "\n", " [[1, 2],\n", " [3, 4],\n", " [5, 6]],\n", "\n", " [[1, 2],\n", " [3, 4],\n", " [5, 6]]])" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ds.to_numpy()" ] }, { "cell_type": "code", "execution_count": 7, "id": "3f11ca68-d566-44d9-9ac2-5c33a5a0abab", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[500, 850, 500, 850, 850, 600]" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ds.metadata(\"level\")" ] }, { "cell_type": "code", "execution_count": 8, "id": "e85b74cc-7524-49ea-9c94-9cdbec2e80dc", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "datetime.datetime(2018, 8, 1, 9, 0, tzinfo=tzutc())" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ds[0].metadata().valid_datetime()" ] }, { "cell_type": "code", "execution_count": 9, "id": "f59740a9-e6ce-40bd-a65b-f21a272c51c3", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[20.0, 10.0]" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ds[0].mars_grid" ] }, { "cell_type": "code", "execution_count": 10, "id": "526a4533-a274-4549-bc08-441ae19ecb5a", "metadata": {}, "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", "
paramlevelbase_datetimevalid_datetimestepnumber
0t500None2018-08-01T09:00:00+00:00NoneNone
1t850None2018-08-01T09:00:00+00:00NoneNone
\n", "
" ], "text/plain": [ " param level base_datetime valid_datetime step number\n", "0 t 500 None 2018-08-01T09:00:00+00:00 None None\n", "1 t 850 None 2018-08-01T09:00:00+00:00 None None" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ds.sel(param=\"t\").ls()" ] }, { "cell_type": "code", "execution_count": 11, "id": "1b69116f-7852-4ef9-85b6-51d1c4227da2", "metadata": {}, "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", " \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", "
paramlevelbase_datetimevalid_datetimestepnumber
0t500None2018-08-01T09:00:00+00:00NoneNone
1u500None2018-08-01T09:00:00+00:00NoneNone
2d600None2018-08-01T09:00:00+00:00NoneNone
3t850None2018-08-01T09:00:00+00:00NoneNone
4u850None2018-08-01T09:00:00+00:00NoneNone
5d850None2018-08-01T09:00:00+00:00NoneNone
\n", "
" ], "text/plain": [ " param level base_datetime valid_datetime step number\n", "0 t 500 None 2018-08-01T09:00:00+00:00 None None\n", "1 u 500 None 2018-08-01T09:00:00+00:00 None None\n", "2 d 600 None 2018-08-01T09:00:00+00:00 None None\n", "3 t 850 None 2018-08-01T09:00:00+00:00 None None\n", "4 u 850 None 2018-08-01T09:00:00+00:00 None None\n", "5 d 850 None 2018-08-01T09:00:00+00:00 None None" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ds.order_by(\"level\").ls()" ] }, { "cell_type": "code", "execution_count": null, "id": "d971846b-4834-4b06-98f3-bacb3925891d", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [], "source": [] } ], "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 }