diff --git a/docs/source/how-tos/source/fdb.ipynb b/docs/source/how-tos/source/fdb.ipynb index 8e43b1e8..9132e690 100644 --- a/docs/source/how-tos/source/fdb.ipynb +++ b/docs/source/how-tos/source/fdb.ipynb @@ -56,7 +56,7 @@ " \"class\": \"od\",\n", " \"expver\": \"0001\",\n", " \"stream\": \"oper\",\n", - " \"date\": \"20240421\",\n", + " \"date\": \"20260423\",\n", " \"time\": [0, 12],\n", " \"domain\": \"g\",\n", " \"type\": \"an\",\n", @@ -135,12 +135,12 @@ "name": "stdout", "output_type": "stream", "text": [ - "GribField(msl,None,20240421,0,0,0)\n", - "GribField(2t,None,20240421,0,0,0)\n", - "GribField(2d,None,20240421,0,0,0)\n", - "GribField(msl,None,20240421,1200,0,0)\n", - "GribField(2t,None,20240421,1200,0,0)\n", - "GribField(2d,None,20240421,1200,0,0)\n" + "Field(msl, 2026-04-23 00:00:00, 2026-04-23 00:00:00, 0:00:00, 0, surface, 0, reduced_gg)\n", + "Field(2t, 2026-04-23 00:00:00, 2026-04-23 00:00:00, 0:00:00, 0, surface, 0, reduced_gg)\n", + "Field(2d, 2026-04-23 00:00:00, 2026-04-23 00:00:00, 0:00:00, 0, surface, 0, reduced_gg)\n", + "Field(msl, 2026-04-23 12:00:00, 2026-04-23 12:00:00, 0:00:00, 0, surface, 0, reduced_gg)\n", + "Field(2t, 2026-04-23 12:00:00, 2026-04-23 12:00:00, 0:00:00, 0, surface, 0, reduced_gg)\n", + "Field(2d, 2026-04-23 12:00:00, 2026-04-23 12:00:00, 0:00:00, 0, surface, 0, reduced_gg)\n" ] } ], @@ -201,8 +201,7 @@ "tags": [] }, "source": [ - "When we use the py:func:`~earthkit.data.indexing.stream.StreamFieldList.group_by`\n", - " method we can iterate through the stream in groups defined by metadata keys. Each iteration step results in a :py:class:~earthkit.data.indexing.simple.SimpleFieldList` object, which is built by consuming GRIB messages from the stream until the values of the metadata keys change. The generated FieldList keeps GRIB messages in memory then gets deleted when going out of scope." + "When we use the py:func:`~earthkit.data.indexing.stream.StreamFieldList.group_by` method we can iterate through the stream in groups defined by metadata keys. Each iteration step results in a :py:class:~earthkit.data.indexing.simple.SimpleFieldList` object, which is built by consuming GRIB messages from the stream until the values of the metadata keys change. The generated FieldList keeps GRIB messages in memory then gets deleted when going out of scope." ] }, { @@ -228,7 +227,7 @@ ], "source": [ "ds = earthkit.data.from_source(\"fdb\", request=request).to_fieldlist()\n", - "for f in ds.group_by(\"time\"):\n", + "for f in ds.group_by(\"metadata.time\"):\n", " print(f\"len={len(f)} {f.metadata(('param', 'level'))}\")" ] }, @@ -370,94 +369,80 @@ " \n", " \n", " \n", - " centre\n", - " shortName\n", - " typeOfLevel\n", - " level\n", - " dataDate\n", - " dataTime\n", - " stepRange\n", - " dataType\n", - " number\n", - " gridType\n", + " parameter.variable\n", + " time.valid_datetime\n", + " time.base_datetime\n", + " time.step\n", + " vertical.level\n", + " vertical.level_type\n", + " ensemble.member\n", + " geography.grid_type\n", " \n", " \n", " \n", " \n", " 0\n", - " ecmf\n", " msl\n", - " surface\n", - " 0\n", - " 20240421\n", + " 2026-04-23 00:00:00\n", + " 2026-04-23 00:00:00\n", + " 0 days\n", " 0\n", - " 0\n", - " an\n", + " surface\n", " 0\n", " reduced_gg\n", " \n", " \n", " 1\n", - " ecmf\n", " 2t\n", - " surface\n", - " 0\n", - " 20240421\n", + " 2026-04-23 00:00:00\n", + " 2026-04-23 00:00:00\n", + " 0 days\n", " 0\n", - " 0\n", - " an\n", + " surface\n", " 0\n", " reduced_gg\n", " \n", " \n", " 2\n", - " ecmf\n", " 2d\n", - " surface\n", - " 0\n", - " 20240421\n", + " 2026-04-23 00:00:00\n", + " 2026-04-23 00:00:00\n", + " 0 days\n", " 0\n", - " 0\n", - " an\n", + " surface\n", " 0\n", " reduced_gg\n", " \n", " \n", " 3\n", - " ecmf\n", " msl\n", - " surface\n", - " 0\n", - " 20240421\n", - " 1200\n", + " 2026-04-23 12:00:00\n", + " 2026-04-23 12:00:00\n", + " 0 days\n", " 0\n", - " an\n", + " surface\n", " 0\n", " reduced_gg\n", " \n", " \n", " 4\n", - " ecmf\n", " 2t\n", - " surface\n", - " 0\n", - " 20240421\n", - " 1200\n", + " 2026-04-23 12:00:00\n", + " 2026-04-23 12:00:00\n", + " 0 days\n", " 0\n", - " an\n", + " surface\n", " 0\n", " reduced_gg\n", " \n", " \n", " 5\n", - " ecmf\n", " 2d\n", - " surface\n", + " 2026-04-23 12:00:00\n", + " 2026-04-23 12:00:00\n", + " 0 days\n", " 0\n", - " 20240421\n", - " 1200\n", - " 0\n", - " an\n", + " surface\n", " 0\n", " reduced_gg\n", " \n", @@ -466,21 +451,21 @@ "" ], "text/plain": [ - " centre shortName typeOfLevel level dataDate dataTime stepRange dataType \\\n", - "0 ecmf msl surface 0 20240421 0 0 an \n", - "1 ecmf 2t surface 0 20240421 0 0 an \n", - "2 ecmf 2d surface 0 20240421 0 0 an \n", - "3 ecmf msl surface 0 20240421 1200 0 an \n", - "4 ecmf 2t surface 0 20240421 1200 0 an \n", - "5 ecmf 2d surface 0 20240421 1200 0 an \n", - "\n", - " number gridType \n", - "0 0 reduced_gg \n", - "1 0 reduced_gg \n", - "2 0 reduced_gg \n", - "3 0 reduced_gg \n", - "4 0 reduced_gg \n", - "5 0 reduced_gg " + " parameter.variable time.valid_datetime time.base_datetime time.step \\\n", + "0 msl 2026-04-23 00:00:00 2026-04-23 00:00:00 0 days \n", + "1 2t 2026-04-23 00:00:00 2026-04-23 00:00:00 0 days \n", + "2 2d 2026-04-23 00:00:00 2026-04-23 00:00:00 0 days \n", + "3 msl 2026-04-23 12:00:00 2026-04-23 12:00:00 0 days \n", + "4 2t 2026-04-23 12:00:00 2026-04-23 12:00:00 0 days \n", + "5 2d 2026-04-23 12:00:00 2026-04-23 12:00:00 0 days \n", + "\n", + " vertical.level vertical.level_type ensemble.member geography.grid_type \n", + "0 0 surface 0 reduced_gg \n", + "1 0 surface 0 reduced_gg \n", + "2 0 surface 0 reduced_gg \n", + "3 0 surface 0 reduced_gg \n", + "4 0 surface 0 reduced_gg \n", + "5 0 surface 0 reduced_gg " ] }, "execution_count": 9, @@ -519,42 +504,36 @@ " \n", " \n", " \n", - " centre\n", - " shortName\n", - " typeOfLevel\n", - " level\n", - " dataDate\n", - " dataTime\n", - " stepRange\n", - " dataType\n", - " number\n", - " gridType\n", + " parameter.variable\n", + " time.valid_datetime\n", + " time.base_datetime\n", + " time.step\n", + " vertical.level\n", + " vertical.level_type\n", + " ensemble.member\n", + " geography.grid_type\n", " \n", " \n", " \n", " \n", " 0\n", - " ecmf\n", " 2t\n", - " surface\n", + " 2026-04-23 00:00:00\n", + " 2026-04-23 00:00:00\n", + " 0 days\n", " 0\n", - " 20240421\n", - " 0\n", - " 0\n", - " an\n", + " surface\n", " 0\n", " reduced_gg\n", " \n", " \n", " 1\n", - " ecmf\n", " 2t\n", - " surface\n", + " 2026-04-23 12:00:00\n", + " 2026-04-23 12:00:00\n", + " 0 days\n", " 0\n", - " 20240421\n", - " 1200\n", - " 0\n", - " an\n", + " surface\n", " 0\n", " reduced_gg\n", " \n", @@ -563,13 +542,13 @@ "" ], "text/plain": [ - " centre shortName typeOfLevel level dataDate dataTime stepRange dataType \\\n", - "0 ecmf 2t surface 0 20240421 0 0 an \n", - "1 ecmf 2t surface 0 20240421 1200 0 an \n", + " parameter.variable time.valid_datetime time.base_datetime time.step \\\n", + "0 2t 2026-04-23 00:00:00 2026-04-23 00:00:00 0 days \n", + "1 2t 2026-04-23 12:00:00 2026-04-23 12:00:00 0 days \n", "\n", - " number gridType \n", - "0 0 reduced_gg \n", - "1 0 reduced_gg " + " vertical.level vertical.level_type ensemble.member geography.grid_type \n", + "0 0 surface 0 reduced_gg \n", + "1 0 surface 0 reduced_gg " ] }, "execution_count": 10, @@ -578,7 +557,7 @@ } ], "source": [ - "ds.sel(param=\"2t\").ls()" + "ds.sel({\"parameter.variable\": \"2t\"}).ls()" ] }, { @@ -611,38 +590,87 @@ "\n", "\n", "\n", - "
<xarray.Dataset>\n",
-       "Dimensions:     (number: 1, time: 2, step: 1, surface: 1, values: 6599680)\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",
+       "
<xarray.Dataset> Size: 422MB\n",
+       "Dimensions:                  (forecast_reference_time: 2, values: 6599680)\n",
        "Coordinates:\n",
-       "  * number      (number) int64 0\n",
-       "  * time        (time) datetime64[ns] 2024-04-21 2024-04-21T12:00:00\n",
-       "  * step        (step) timedelta64[ns] 00:00:00\n",
-       "  * surface     (surface) float64 0.0\n",
-       "    latitude    (values) float64 ...\n",
-       "    longitude   (values) float64 ...\n",
-       "    valid_time  (time, step) datetime64[ns] ...\n",
+       "  * forecast_reference_time  (forecast_reference_time) datetime64[ns] 16B 202...\n",
+       "    latitude                 (values) float64 53MB ...\n",
+       "    longitude                (values) float64 53MB ...\n",
        "Dimensions without coordinates: values\n",
        "Data variables:\n",
-       "    msl         (number, time, step, surface, values) float32 ...\n",
-       "    t2m         (number, time, step, surface, values) float32 ...\n",
-       "    d2m         (number, time, step, surface, values) float32 ...\n",
+       "    2d                       (forecast_reference_time, values) float64 106MB ...\n",
+       "    2t                       (forecast_reference_time, values) float64 106MB ...\n",
+       "    msl                      (forecast_reference_time, values) float64 106MB ...\n",
        "Attributes:\n",
-       "    GRIB_edition:            1\n",
-       "    GRIB_centre:             ecmf\n",
-       "    GRIB_centreDescription:  European Centre for Medium-Range Weather Forecasts\n",
-       "    GRIB_subCentre:          0\n",
-       "    Conventions:             CF-1.7\n",
-       "    institution:             European Centre for Medium-Range Weather Forecasts\n",
-       "    history:                 2024-04-22T11:01 GRIB to CDM+CF via cfgrib-0.9.1...
" + " Conventions: CF-1.8\n", + " institution: ECMWF
" ], "text/plain": [ - "\n", - "Dimensions: (number: 1, time: 2, step: 1, surface: 1, values: 6599680)\n", + " Size: 422MB\n", + "Dimensions: (forecast_reference_time: 2, values: 6599680)\n", "Coordinates:\n", - " * number (number) int64 0\n", - " * time (time) datetime64[ns] 2024-04-21 2024-04-21T12:00:00\n", - " * step (step) timedelta64[ns] 00:00:00\n", - " * surface (surface) float64 0.0\n", - " latitude (values) float64 ...\n", - " longitude (values) float64 ...\n", - " valid_time (time, step) datetime64[ns] ...\n", + " * forecast_reference_time (forecast_reference_time) datetime64[ns] 16B 202...\n", + " latitude (values) float64 53MB ...\n", + " longitude (values) float64 53MB ...\n", "Dimensions without coordinates: values\n", "Data variables:\n", - " msl (number, time, step, surface, values) float32 ...\n", - " t2m (number, time, step, surface, values) float32 ...\n", - " d2m (number, time, step, surface, values) float32 ...\n", + " 2d (forecast_reference_time, values) float64 106MB ...\n", + " 2t (forecast_reference_time, values) float64 106MB ...\n", + " msl (forecast_reference_time, values) float64 106MB ...\n", "Attributes:\n", - " GRIB_edition: 1\n", - " GRIB_centre: ecmf\n", - " GRIB_centreDescription: European Centre for Medium-Range Weather Forecasts\n", - " GRIB_subCentre: 0\n", - " Conventions: CF-1.7\n", - " institution: European Centre for Medium-Range Weather Forecasts\n", - " history: 2024-04-22T11:01 GRIB to CDM+CF via cfgrib-0.9.1..." + " Conventions: CF-1.8\n", + " institution: ECMWF" ] }, "execution_count": 11, @@ -1085,94 +1225,80 @@ " \n", " \n", " \n", - " centre\n", - " shortName\n", - " typeOfLevel\n", - " level\n", - " dataDate\n", - " dataTime\n", - " stepRange\n", - " dataType\n", - " number\n", - " gridType\n", + " parameter.variable\n", + " time.valid_datetime\n", + " time.base_datetime\n", + " time.step\n", + " vertical.level\n", + " vertical.level_type\n", + " ensemble.member\n", + " geography.grid_type\n", " \n", " \n", " \n", " \n", " 0\n", - " ecmf\n", " msl\n", - " surface\n", - " 0\n", - " 20240421\n", + " 2026-04-23 00:00:00\n", + " 2026-04-23 00:00:00\n", + " 0 days\n", " 0\n", - " 0\n", - " an\n", + " surface\n", " 0\n", " reduced_gg\n", " \n", " \n", " 1\n", - " ecmf\n", " 2t\n", - " surface\n", - " 0\n", - " 20240421\n", - " 0\n", + " 2026-04-23 00:00:00\n", + " 2026-04-23 00:00:00\n", + " 0 days\n", " 0\n", - " an\n", + " surface\n", " 0\n", " reduced_gg\n", " \n", " \n", " 2\n", - " ecmf\n", " 2d\n", - " surface\n", - " 0\n", - " 20240421\n", - " 0\n", + " 2026-04-23 00:00:00\n", + " 2026-04-23 00:00:00\n", + " 0 days\n", " 0\n", - " an\n", + " surface\n", " 0\n", " reduced_gg\n", " \n", " \n", " 3\n", - " ecmf\n", " msl\n", - " surface\n", - " 0\n", - " 20240421\n", - " 1200\n", + " 2026-04-23 12:00:00\n", + " 2026-04-23 12:00:00\n", + " 0 days\n", " 0\n", - " an\n", + " surface\n", " 0\n", " reduced_gg\n", " \n", " \n", " 4\n", - " ecmf\n", " 2t\n", - " surface\n", + " 2026-04-23 12:00:00\n", + " 2026-04-23 12:00:00\n", + " 0 days\n", " 0\n", - " 20240421\n", - " 1200\n", - " 0\n", - " an\n", + " surface\n", " 0\n", " reduced_gg\n", " \n", " \n", " 5\n", - " ecmf\n", " 2d\n", - " surface\n", - " 0\n", - " 20240421\n", - " 1200\n", + " 2026-04-23 12:00:00\n", + " 2026-04-23 12:00:00\n", + " 0 days\n", " 0\n", - " an\n", + " surface\n", " 0\n", " reduced_gg\n", " \n", @@ -1181,21 +1307,21 @@ "" ], "text/plain": [ - " centre shortName typeOfLevel level dataDate dataTime stepRange dataType \\\n", - "0 ecmf msl surface 0 20240421 0 0 an \n", - "1 ecmf 2t surface 0 20240421 0 0 an \n", - "2 ecmf 2d surface 0 20240421 0 0 an \n", - "3 ecmf msl surface 0 20240421 1200 0 an \n", - "4 ecmf 2t surface 0 20240421 1200 0 an \n", - "5 ecmf 2d surface 0 20240421 1200 0 an \n", - "\n", - " number gridType \n", - "0 0 reduced_gg \n", - "1 0 reduced_gg \n", - "2 0 reduced_gg \n", - "3 0 reduced_gg \n", - "4 0 reduced_gg \n", - "5 0 reduced_gg " + " parameter.variable time.valid_datetime time.base_datetime time.step \\\n", + "0 msl 2026-04-23 00:00:00 2026-04-23 00:00:00 0 days \n", + "1 2t 2026-04-23 00:00:00 2026-04-23 00:00:00 0 days \n", + "2 2d 2026-04-23 00:00:00 2026-04-23 00:00:00 0 days \n", + "3 msl 2026-04-23 12:00:00 2026-04-23 12:00:00 0 days \n", + "4 2t 2026-04-23 12:00:00 2026-04-23 12:00:00 0 days \n", + "5 2d 2026-04-23 12:00:00 2026-04-23 12:00:00 0 days \n", + "\n", + " vertical.level vertical.level_type ensemble.member geography.grid_type \n", + "0 0 surface 0 reduced_gg \n", + "1 0 surface 0 reduced_gg \n", + "2 0 surface 0 reduced_gg \n", + "3 0 surface 0 reduced_gg \n", + "4 0 surface 0 reduced_gg \n", + "5 0 surface 0 reduced_gg " ] }, "execution_count": 13, @@ -1219,7 +1345,7 @@ "tags": [] }, "source": [ - "The data is now :ref:`cached `. Subsequent retrievals will used the cached file directly." + "The data is now :ref:`cached `. Subsequent retrievals will use the cached file directly." ] }, { @@ -1239,9 +1365,9 @@ ], "metadata": { "kernelspec": { - "display_name": "dev", + "display_name": "ek1", "language": "python", - "name": "dev" + "name": "ek1" }, "language_info": { "codemirror_mode": { @@ -1253,7 +1379,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.13.1" + "version": "3.12.11" } }, "nbformat": 4,