{
"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",
" param | \n",
" level | \n",
" base_datetime | \n",
" valid_datetime | \n",
" step | \n",
" number | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" t | \n",
" 500 | \n",
" None | \n",
" 2018-08-01T09:00:00+00:00 | \n",
" None | \n",
" None | \n",
"
\n",
" \n",
" | 1 | \n",
" t | \n",
" 850 | \n",
" None | \n",
" 2018-08-01T09:00:00+00:00 | \n",
" None | \n",
" None | \n",
"
\n",
" \n",
" | 2 | \n",
" u | \n",
" 500 | \n",
" None | \n",
" 2018-08-01T09:00:00+00:00 | \n",
" None | \n",
" None | \n",
"
\n",
" \n",
" | 3 | \n",
" u | \n",
" 850 | \n",
" None | \n",
" 2018-08-01T09:00:00+00:00 | \n",
" None | \n",
" None | \n",
"
\n",
" \n",
" | 4 | \n",
" d | \n",
" 850 | \n",
" None | \n",
" 2018-08-01T09:00:00+00:00 | \n",
" None | \n",
" None | \n",
"
\n",
" \n",
" | 5 | \n",
" d | \n",
" 600 | \n",
" None | \n",
" 2018-08-01T09:00:00+00:00 | \n",
" None | \n",
" None | \n",
"
\n",
" \n",
"
\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",
" param | \n",
" level | \n",
" base_datetime | \n",
" valid_datetime | \n",
" step | \n",
" number | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" t | \n",
" 500 | \n",
" None | \n",
" 2018-08-01T09:00:00+00:00 | \n",
" None | \n",
" None | \n",
"
\n",
" \n",
" | 1 | \n",
" t | \n",
" 850 | \n",
" None | \n",
" 2018-08-01T09:00:00+00:00 | \n",
" None | \n",
" None | \n",
"
\n",
" \n",
"
\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",
" param | \n",
" level | \n",
" base_datetime | \n",
" valid_datetime | \n",
" step | \n",
" number | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" t | \n",
" 500 | \n",
" None | \n",
" 2018-08-01T09:00:00+00:00 | \n",
" None | \n",
" None | \n",
"
\n",
" \n",
" | 1 | \n",
" u | \n",
" 500 | \n",
" None | \n",
" 2018-08-01T09:00:00+00:00 | \n",
" None | \n",
" None | \n",
"
\n",
" \n",
" | 2 | \n",
" d | \n",
" 600 | \n",
" None | \n",
" 2018-08-01T09:00:00+00:00 | \n",
" None | \n",
" None | \n",
"
\n",
" \n",
" | 3 | \n",
" t | \n",
" 850 | \n",
" None | \n",
" 2018-08-01T09:00:00+00:00 | \n",
" None | \n",
" None | \n",
"
\n",
" \n",
" | 4 | \n",
" u | \n",
" 850 | \n",
" None | \n",
" 2018-08-01T09:00:00+00:00 | \n",
" None | \n",
" None | \n",
"
\n",
" \n",
" | 5 | \n",
" d | \n",
" 850 | \n",
" None | \n",
" 2018-08-01T09:00:00+00:00 | \n",
" None | \n",
" None | \n",
"
\n",
" \n",
"
\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
}