diff --git a/docs/examples/cds.ipynb b/docs/examples/cds.ipynb index 2a275a41..77ee428e 100644 --- a/docs/examples/cds.ipynb +++ b/docs/examples/cds.ipynb @@ -101,42 +101,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", - " 0\n", - " 20120510\n", - " 1200\n", + " 2012-05-10 12:00:00\n", + " 2012-05-10 12:00:00\n", + " 0 days\n", " 0\n", - " an\n", + " surface\n", " 0\n", " regular_ll\n", " \n", " \n", " 1\n", - " ecmf\n", " msl\n", - " surface\n", - " 0\n", - " 20120510\n", - " 1200\n", + " 2012-05-10 12:00:00\n", + " 2012-05-10 12:00:00\n", + " 0 days\n", " 0\n", - " an\n", + " surface\n", " 0\n", " regular_ll\n", " \n", @@ -145,13 +139,13 @@ "" ], "text/plain": [ - " centre shortName typeOfLevel level dataDate dataTime stepRange dataType \\\n", - "0 ecmf 2t surface 0 20120510 1200 0 an \n", - "1 ecmf msl surface 0 20120510 1200 0 an \n", + " parameter.variable time.valid_datetime time.base_datetime time.step \\\n", + "0 2t 2012-05-10 12:00:00 2012-05-10 12:00:00 0 days \n", + "1 msl 2012-05-10 12:00:00 2012-05-10 12:00:00 0 days \n", "\n", - " number gridType \n", - "0 0 regular_ll \n", - "1 0 regular_ll " + " vertical.level vertical.level_type ensemble.member geography.grid_type \n", + "0 0 surface 0 regular_ll \n", + "1 0 surface 0 regular_ll " ] }, "execution_count": 3, @@ -160,7 +154,7 @@ } ], "source": [ - "ds.ls()" + "ds.to_fieldlist().ls()" ] }, { @@ -220,35 +214,51 @@ " \n", " \n", " \n", - " variable\n", - " level\n", - " valid_datetime\n", - " units\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", " t2m\n", + " 2012-05-10 12:00:00\n", + " 2012-05-10 12:00:00\n", + " 0 days\n", + " None\n", + " unknown\n", + " 0\n", " None\n", - " 2012-05-10T12:00:00\n", - " K\n", " \n", " \n", " 1\n", " msl\n", + " 2012-05-10 12:00:00\n", + " 2012-05-10 12:00:00\n", + " 0 days\n", + " None\n", + " unknown\n", + " 0\n", " None\n", - " 2012-05-10T12:00:00\n", - " Pa\n", " \n", " \n", "\n", "" ], "text/plain": [ - " variable level valid_datetime units\n", - "0 t2m None 2012-05-10T12:00:00 K\n", - "1 msl None 2012-05-10T12:00:00 Pa" + " parameter.variable time.valid_datetime time.base_datetime time.step \\\n", + "0 t2m 2012-05-10 12:00:00 2012-05-10 12:00:00 0 days \n", + "1 msl 2012-05-10 12:00:00 2012-05-10 12:00:00 0 days \n", + "\n", + " vertical.level vertical.level_type ensemble.member geography.grid_type \n", + "0 None unknown 0 None \n", + "1 None unknown 0 None " ] }, "execution_count": 5, @@ -257,7 +267,7 @@ } ], "source": [ - "ds1.ls()" + "ds1.to_fieldlist().ls()" ] }, { @@ -285,7 +295,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.12" + "version": "3.13.1" } }, "nbformat": 4, diff --git a/docs/examples/data_from_stream.ipynb b/docs/examples/data_from_stream.ipynb index d2934662..0ecb7f13 100644 --- a/docs/examples/data_from_stream.ipynb +++ b/docs/examples/data_from_stream.ipynb @@ -112,7 +112,7 @@ }, "outputs": [], "source": [ - "ds = ekd.from_source(\"stream\", stream)" + "ds = ekd.from_source(\"stream\", stream).to_fieldlist()" ] }, { @@ -127,7 +127,7 @@ "tags": [] }, "source": [ - "Using this object we can iterate through the stream. As we progressing with the iteration :py:class:`~data.readers.grib.codes.GribField` objects are created then get deleted when going out of scope. As a result, only one GRIB message is kept in memory at a time." + "Using this object we can iterate through the stream. As we progressing with the iteration :py:class:`~data.core.field.Field` objects are created then get deleted when going out of scope. As a result, only one GRIB message is kept in memory at a time." ] }, { @@ -146,18 +146,18 @@ "name": "stdout", "output_type": "stream", "text": [ - "GribField(t,1000,20180801,1200,0,0)\n", - "GribField(u,1000,20180801,1200,0,0)\n", - "GribField(v,1000,20180801,1200,0,0)\n", - "GribField(t,850,20180801,1200,0,0)\n", - "GribField(u,850,20180801,1200,0,0)\n", - "GribField(v,850,20180801,1200,0,0)\n" + "Field(t, 2018-08-01 12:00:00, 2018-08-01 12:00:00, 0:00:00, 1000, pressure, 0, regular_ll)\n", + "Field(u, 2018-08-01 12:00:00, 2018-08-01 12:00:00, 0:00:00, 1000, pressure, 0, regular_ll)\n", + "Field(v, 2018-08-01 12:00:00, 2018-08-01 12:00:00, 0:00:00, 1000, pressure, 0, regular_ll)\n", + "Field(t, 2018-08-01 12:00:00, 2018-08-01 12:00:00, 0:00:00, 850, pressure, 0, regular_ll)\n", + "Field(u, 2018-08-01 12:00:00, 2018-08-01 12:00:00, 0:00:00, 850, pressure, 0, regular_ll)\n", + "Field(v, 2018-08-01 12:00:00, 2018-08-01 12:00:00, 0:00:00, 850, pressure, 0, regular_ll)\n" ] } ], "source": [ "for f in ds:\n", - " # f is GribField object. It gets deleted when going out of scope\n", + " # f is Field object. It gets deleted when going out of scope\n", " print(f)" ] }, @@ -224,19 +224,19 @@ "name": "stdout", "output_type": "stream", "text": [ - "len=2 [('t', 1000), ('u', 1000)]\n", - "len=2 [('v', 1000), ('t', 850)]\n", - "len=2 [('u', 850), ('v', 850)]\n" + "len=2 [['t', 1000], ['u', 1000]]\n", + "len=2 [['v', 1000], ['t', 850]]\n", + "len=2 [['u', 850], ['v', 850]]\n" ] } ], "source": [ "stream = open(\"test6.grib\", \"rb\")\n", - "ds = ekd.from_source(\"stream\", stream)\n", + "ds = ekd.from_source(\"stream\", stream).to_fieldlist()\n", "\n", "# f is a fieldlist\n", "for f in ds.batched(2):\n", - " print(f\"len={len(f)} {f.metadata(('param', 'level'))}\")" + " print(f\"len={len(f)} {f.get(['parameter.variable', 'vertical.level'])}\")" ] }, { @@ -288,18 +288,18 @@ "name": "stdout", "output_type": "stream", "text": [ - "len=4 [('t', 1000), ('u', 1000), ('v', 1000), ('t', 850)]\n", - "len=2 [('u', 850), ('v', 850)]\n" + "len=4 [['t', 1000], ['u', 1000], ['v', 1000], ['t', 850]]\n", + "len=2 [['u', 850], ['v', 850]]\n" ] } ], "source": [ "stream = open(\"test6.grib\", \"rb\")\n", - "ds = ekd.from_source(\"stream\", stream)\n", + "ds = ekd.from_source(\"stream\", stream).to_fieldlist()\n", "\n", "# f is a fieldlist\n", "for f in ds.batched(4):\n", - " print(f\"len={len(f)} {f.metadata(('param', 'level'))}\")" + " print(f\"len={len(f)} {f.get(['parameter.variable', 'vertical.level'])}\")" ] }, { @@ -341,18 +341,17 @@ "name": "stdout", "output_type": "stream", "text": [ - "len=3 [('t', 1000), ('u', 1000), ('v', 1000)]\n", - "len=3 [('t', 850), ('u', 850), ('v', 850)]\n" + "len=6 [['t', 1000], ['u', 1000], ['v', 1000], ['t', 850], ['u', 850], ['v', 850]]\n" ] } ], "source": [ "stream = open(\"test6.grib\", \"rb\")\n", - "ds = ekd.from_source(\"stream\", stream)\n", + "ds = ekd.from_source(\"stream\", stream).to_fieldlist()\n", "\n", "# f is a fieldlist\n", "for f in ds.group_by(\"level\"):\n", - " print(f\"len={len(f)} {f.metadata(('param', 'level'))}\")" + " print(f\"len={len(f)} {f.get(['parameter.variable', 'vertical.level'])}\")" ] }, { @@ -410,7 +409,7 @@ "outputs": [], "source": [ "stream = open(\"test6.grib\", \"rb\")\n", - "ds = ekd.from_source(\"stream\", stream, read_all=True)" + "ds = ekd.from_source(\"stream\", stream).to_fieldlist(read_all=True)" ] }, { @@ -467,94 +466,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", " t\n", - " isobaricInhPa\n", + " 2018-08-01 12:00:00\n", + " 2018-08-01 12:00:00\n", + " 0 days\n", " 1000\n", - " 20180801\n", - " 1200\n", - " 0\n", - " an\n", + " pressure\n", " 0\n", " regular_ll\n", " \n", " \n", " 1\n", - " ecmf\n", " u\n", - " isobaricInhPa\n", + " 2018-08-01 12:00:00\n", + " 2018-08-01 12:00:00\n", + " 0 days\n", " 1000\n", - " 20180801\n", - " 1200\n", - " 0\n", - " an\n", + " pressure\n", " 0\n", " regular_ll\n", " \n", " \n", " 2\n", - " ecmf\n", " v\n", - " isobaricInhPa\n", + " 2018-08-01 12:00:00\n", + " 2018-08-01 12:00:00\n", + " 0 days\n", " 1000\n", - " 20180801\n", - " 1200\n", - " 0\n", - " an\n", + " pressure\n", " 0\n", " regular_ll\n", " \n", " \n", " 3\n", - " ecmf\n", " t\n", - " isobaricInhPa\n", + " 2018-08-01 12:00:00\n", + " 2018-08-01 12:00:00\n", + " 0 days\n", " 850\n", - " 20180801\n", - " 1200\n", - " 0\n", - " an\n", + " pressure\n", " 0\n", " regular_ll\n", " \n", " \n", " 4\n", - " ecmf\n", " u\n", - " isobaricInhPa\n", + " 2018-08-01 12:00:00\n", + " 2018-08-01 12:00:00\n", + " 0 days\n", " 850\n", - " 20180801\n", - " 1200\n", - " 0\n", - " an\n", + " pressure\n", " 0\n", " regular_ll\n", " \n", " \n", " 5\n", - " ecmf\n", " v\n", - " isobaricInhPa\n", + " 2018-08-01 12:00:00\n", + " 2018-08-01 12:00:00\n", + " 0 days\n", " 850\n", - " 20180801\n", - " 1200\n", - " 0\n", - " an\n", + " pressure\n", " 0\n", " regular_ll\n", " \n", @@ -563,21 +548,21 @@ "" ], "text/plain": [ - " centre shortName typeOfLevel level dataDate dataTime stepRange \\\n", - "0 ecmf t isobaricInhPa 1000 20180801 1200 0 \n", - "1 ecmf u isobaricInhPa 1000 20180801 1200 0 \n", - "2 ecmf v isobaricInhPa 1000 20180801 1200 0 \n", - "3 ecmf t isobaricInhPa 850 20180801 1200 0 \n", - "4 ecmf u isobaricInhPa 850 20180801 1200 0 \n", - "5 ecmf v isobaricInhPa 850 20180801 1200 0 \n", - "\n", - " dataType number gridType \n", - "0 an 0 regular_ll \n", - "1 an 0 regular_ll \n", - "2 an 0 regular_ll \n", - "3 an 0 regular_ll \n", - "4 an 0 regular_ll \n", - "5 an 0 regular_ll " + " parameter.variable time.valid_datetime time.base_datetime time.step \\\n", + "0 t 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", + "1 u 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", + "2 v 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", + "3 t 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", + "4 u 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", + "5 v 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", + "\n", + " vertical.level vertical.level_type ensemble.member geography.grid_type \n", + "0 1000 pressure 0 regular_ll \n", + "1 1000 pressure 0 regular_ll \n", + "2 1000 pressure 0 regular_ll \n", + "3 850 pressure 0 regular_ll \n", + "4 850 pressure 0 regular_ll \n", + "5 850 pressure 0 regular_ll " ] }, "execution_count": 14, @@ -616,42 +601,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", " t\n", - " isobaricInhPa\n", + " 2018-08-01 12:00:00\n", + " 2018-08-01 12:00:00\n", + " 0 days\n", " 1000\n", - " 20180801\n", - " 1200\n", - " 0\n", - " an\n", + " pressure\n", " 0\n", " regular_ll\n", " \n", " \n", " 1\n", - " ecmf\n", " t\n", - " isobaricInhPa\n", + " 2018-08-01 12:00:00\n", + " 2018-08-01 12:00:00\n", + " 0 days\n", " 850\n", - " 20180801\n", - " 1200\n", - " 0\n", - " an\n", + " pressure\n", " 0\n", " regular_ll\n", " \n", @@ -660,13 +639,13 @@ "" ], "text/plain": [ - " centre shortName typeOfLevel level dataDate dataTime stepRange \\\n", - "0 ecmf t isobaricInhPa 1000 20180801 1200 0 \n", - "1 ecmf t isobaricInhPa 850 20180801 1200 0 \n", + " parameter.variable time.valid_datetime time.base_datetime time.step \\\n", + "0 t 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", + "1 t 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", "\n", - " dataType number gridType \n", - "0 an 0 regular_ll \n", - "1 an 0 regular_ll " + " vertical.level vertical.level_type ensemble.member geography.grid_type \n", + "0 1000 pressure 0 regular_ll \n", + "1 850 pressure 0 regular_ll " ] }, "execution_count": 15, @@ -675,7 +654,7 @@ } ], "source": [ - "a = ds.sel(param=\"t\")\n", + "a = ds.sel({\"parameter.variable\": \"t\"})\n", "a.ls()" ] }, @@ -703,39 +682,86 @@ "\n", "\n", "\n", - "
<xarray.Dataset> Size: 2kB\n",
-       "Dimensions:    (levelist: 2, latitude: 7, longitude: 12)\n",
+       "Dimensions:    (level: 2, latitude: 7, longitude: 12)\n",
        "Coordinates:\n",
-       "  * levelist   (levelist) int64 16B 850 1000\n",
+       "  * level      (level) int64 16B 850 1000\n",
        "  * latitude   (latitude) float64 56B 90.0 60.0 30.0 0.0 -30.0 -60.0 -90.0\n",
        "  * longitude  (longitude) float64 96B 0.0 30.0 60.0 90.0 ... 270.0 300.0 330.0\n",
        "Data variables:\n",
-       "    t          (levelist, latitude, longitude) float64 1kB ...\n",
-       "Attributes: (12/13)\n",
-       "    param:        t\n",
-       "    paramId:      130\n",
-       "    class:        od\n",
-       "    stream:       oper\n",
-       "    levtype:      pl\n",
-       "    type:         an\n",
-       "    ...           ...\n",
-       "    date:         20180801\n",
-       "    time:         1200\n",
-       "    domain:       g\n",
-       "    number:       0\n",
+       "    t          (level, latitude, longitude) float64 1kB ...\n",
+       "Attributes:\n",
        "    Conventions:  CF-1.8\n",
-       "    institution:  ECMWF
" + " institution: ECMWF" ], "text/plain": [ " Size: 2kB\n", - "Dimensions: (levelist: 2, latitude: 7, longitude: 12)\n", + "Dimensions: (level: 2, latitude: 7, longitude: 12)\n", "Coordinates:\n", - " * levelist (levelist) int64 16B 850 1000\n", + " * level (level) int64 16B 850 1000\n", " * latitude (latitude) float64 56B 90.0 60.0 30.0 0.0 -30.0 -60.0 -90.0\n", " * longitude (longitude) float64 96B 0.0 30.0 60.0 90.0 ... 270.0 300.0 330.0\n", "Data variables:\n", - " t (levelist, latitude, longitude) float64 1kB ...\n", - "Attributes: (12/13)\n", - " param: t\n", - " paramId: 130\n", - " class: od\n", - " stream: oper\n", - " levtype: pl\n", - " type: an\n", - " ... ...\n", - " date: 20180801\n", - " time: 1200\n", - " domain: g\n", - " number: 0\n", + " t (level, latitude, longitude) float64 1kB ...\n", + "Attributes:\n", " Conventions: CF-1.8\n", " institution: ECMWF" ] @@ -1144,9 +1208,9 @@ ], "metadata": { "kernelspec": { - "display_name": "dev_ecc", + "display_name": "dev", "language": "python", - "name": "dev_ecc" + "name": "dev" }, "language_info": { "codemirror_mode": { @@ -1158,7 +1222,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.13" + "version": "3.13.1" } }, "nbformat": 4, diff --git a/docs/examples/demo_sources_plugin.ipynb b/docs/examples/demo_sources_plugin.ipynb index c1ccb851..f0d3e4ac 100644 --- a/docs/examples/demo_sources_plugin.ipynb +++ b/docs/examples/demo_sources_plugin.ipynb @@ -199,9 +199,9 @@ ], "metadata": { "kernelspec": { - "display_name": "dev_ecc", + "display_name": "dev", "language": "python", - "name": "dev_ecc" + "name": "dev" }, "language_info": { "codemirror_mode": { @@ -213,7 +213,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.13" + "version": "3.13.1" } }, "nbformat": 4, diff --git a/docs/examples/fdb.ipynb b/docs/examples/fdb.ipynb index 2c66db12..7b24459d 100644 --- a/docs/examples/fdb.ipynb +++ b/docs/examples/fdb.ipynb @@ -1246,7 +1246,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.12" + "version": "3.13.1" } }, "nbformat": 4, diff --git a/docs/examples/file_stream.ipynb b/docs/examples/file_stream.ipynb index 95b4f853..06549ed2 100644 --- a/docs/examples/file_stream.ipynb +++ b/docs/examples/file_stream.ipynb @@ -77,7 +77,7 @@ }, "outputs": [], "source": [ - "ds = ekd.from_source(\"file\", \"test6.grib\", stream=True)" + "ds = ekd.from_source(\"file\", \"test6.grib\", stream=True).to_fieldlist()" ] }, { @@ -111,12 +111,12 @@ "name": "stdout", "output_type": "stream", "text": [ - "GribField(t,1000,20180801,1200,0,0)\n", - "GribField(u,1000,20180801,1200,0,0)\n", - "GribField(v,1000,20180801,1200,0,0)\n", - "GribField(t,850,20180801,1200,0,0)\n", - "GribField(u,850,20180801,1200,0,0)\n", - "GribField(v,850,20180801,1200,0,0)\n" + "Field(t, 2018-08-01 12:00:00, 2018-08-01 12:00:00, 0:00:00, 1000, pressure, 0, regular_ll)\n", + "Field(u, 2018-08-01 12:00:00, 2018-08-01 12:00:00, 0:00:00, 1000, pressure, 0, regular_ll)\n", + "Field(v, 2018-08-01 12:00:00, 2018-08-01 12:00:00, 0:00:00, 1000, pressure, 0, regular_ll)\n", + "Field(t, 2018-08-01 12:00:00, 2018-08-01 12:00:00, 0:00:00, 850, pressure, 0, regular_ll)\n", + "Field(u, 2018-08-01 12:00:00, 2018-08-01 12:00:00, 0:00:00, 850, pressure, 0, regular_ll)\n", + "Field(v, 2018-08-01 12:00:00, 2018-08-01 12:00:00, 0:00:00, 850, pressure, 0, regular_ll)\n" ] } ], @@ -212,18 +212,18 @@ "name": "stdout", "output_type": "stream", "text": [ - "len=2 [('t', 1000), ('u', 1000)]\n", - "len=2 [('v', 1000), ('t', 850)]\n", - "len=2 [('u', 850), ('v', 850)]\n" + "len=2 [['t', 1000], ['u', 1000]]\n", + "len=2 [['v', 1000], ['t', 850]]\n", + "len=2 [['u', 850], ['v', 850]]\n" ] } ], "source": [ - "ds = ekd.from_source(\"file\", \"test6.grib\", stream=True)\n", + "ds = ekd.from_source(\"file\", \"test6.grib\", stream=True).to_fieldlist()\n", "\n", "# f is a fieldlist\n", "for f in ds.batched(2):\n", - " print(f\"len={len(f)} {f.metadata(('param', 'level'))}\")" + " print(f\"len={len(f)} {f.get(['parameter.variable', 'vertical.level'])}\")" ] }, { @@ -257,17 +257,17 @@ "name": "stdout", "output_type": "stream", "text": [ - "len=4 [('t', 1000), ('u', 1000), ('v', 1000), ('t', 850)]\n", - "len=2 [('u', 850), ('v', 850)]\n" + "len=4 [['t', 1000], ['u', 1000], ['v', 1000], ['t', 850]]\n", + "len=2 [['u', 850], ['v', 850]]\n" ] } ], "source": [ - "ds = ekd.from_source(\"file\", \"test6.grib\", stream=True)\n", + "ds = ekd.from_source(\"file\", \"test6.grib\", stream=True).to_fieldlist()\n", "\n", "# f is a fieldlist\n", "for f in ds.batched(4):\n", - " print(f\"len={len(f)} {f.metadata(('param', 'level'))}\")" + " print(f\"len={len(f)} {f.get(['parameter.variable', 'vertical.level'])}\")" ] }, { @@ -309,17 +309,16 @@ "name": "stdout", "output_type": "stream", "text": [ - "len=3 [('t', 1000), ('u', 1000), ('v', 1000)]\n", - "len=3 [('t', 850), ('u', 850), ('v', 850)]\n" + "len=6 [['t', 1000], ['u', 1000], ['v', 1000], ['t', 850], ['u', 850], ['v', 850]]\n" ] } ], "source": [ - "ds = ekd.from_source(\"file\", \"test6.grib\", stream=True)\n", + "ds = ekd.from_source(\"file\", \"test6.grib\", stream=True).to_fieldlist()\n", "\n", "# f is a fieldlist\n", "for f in ds.group_by(\"level\"):\n", - " print(f\"len={len(f)} {f.metadata(('param', 'level'))}\")" + " print(f\"len={len(f)} {f.get(['parameter.variable', 'vertical.level'])}\")" ] }, { @@ -364,7 +363,7 @@ }, "outputs": [], "source": [ - "ds = ekd.from_source(\"file\", \"test6.grib\", stream=True, read_all=True)" + "ds = ekd.from_source(\"file\", \"test6.grib\", stream=True).to_fieldlist(read_all=True)" ] }, { @@ -421,94 +420,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", " t\n", - " isobaricInhPa\n", + " 2018-08-01 12:00:00\n", + " 2018-08-01 12:00:00\n", + " 0 days\n", " 1000\n", - " 20180801\n", - " 1200\n", - " 0\n", - " an\n", + " pressure\n", " 0\n", " regular_ll\n", " \n", " \n", " 1\n", - " ecmf\n", " u\n", - " isobaricInhPa\n", + " 2018-08-01 12:00:00\n", + " 2018-08-01 12:00:00\n", + " 0 days\n", " 1000\n", - " 20180801\n", - " 1200\n", - " 0\n", - " an\n", + " pressure\n", " 0\n", " regular_ll\n", " \n", " \n", " 2\n", - " ecmf\n", " v\n", - " isobaricInhPa\n", + " 2018-08-01 12:00:00\n", + " 2018-08-01 12:00:00\n", + " 0 days\n", " 1000\n", - " 20180801\n", - " 1200\n", - " 0\n", - " an\n", + " pressure\n", " 0\n", " regular_ll\n", " \n", " \n", " 3\n", - " ecmf\n", " t\n", - " isobaricInhPa\n", + " 2018-08-01 12:00:00\n", + " 2018-08-01 12:00:00\n", + " 0 days\n", " 850\n", - " 20180801\n", - " 1200\n", - " 0\n", - " an\n", + " pressure\n", " 0\n", " regular_ll\n", " \n", " \n", " 4\n", - " ecmf\n", " u\n", - " isobaricInhPa\n", + " 2018-08-01 12:00:00\n", + " 2018-08-01 12:00:00\n", + " 0 days\n", " 850\n", - " 20180801\n", - " 1200\n", - " 0\n", - " an\n", + " pressure\n", " 0\n", " regular_ll\n", " \n", " \n", " 5\n", - " ecmf\n", " v\n", - " isobaricInhPa\n", + " 2018-08-01 12:00:00\n", + " 2018-08-01 12:00:00\n", + " 0 days\n", " 850\n", - " 20180801\n", - " 1200\n", - " 0\n", - " an\n", + " pressure\n", " 0\n", " regular_ll\n", " \n", @@ -517,21 +502,21 @@ "" ], "text/plain": [ - " centre shortName typeOfLevel level dataDate dataTime stepRange \\\n", - "0 ecmf t isobaricInhPa 1000 20180801 1200 0 \n", - "1 ecmf u isobaricInhPa 1000 20180801 1200 0 \n", - "2 ecmf v isobaricInhPa 1000 20180801 1200 0 \n", - "3 ecmf t isobaricInhPa 850 20180801 1200 0 \n", - "4 ecmf u isobaricInhPa 850 20180801 1200 0 \n", - "5 ecmf v isobaricInhPa 850 20180801 1200 0 \n", - "\n", - " dataType number gridType \n", - "0 an 0 regular_ll \n", - "1 an 0 regular_ll \n", - "2 an 0 regular_ll \n", - "3 an 0 regular_ll \n", - "4 an 0 regular_ll \n", - "5 an 0 regular_ll " + " parameter.variable time.valid_datetime time.base_datetime time.step \\\n", + "0 t 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", + "1 u 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", + "2 v 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", + "3 t 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", + "4 u 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", + "5 v 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", + "\n", + " vertical.level vertical.level_type ensemble.member geography.grid_type \n", + "0 1000 pressure 0 regular_ll \n", + "1 1000 pressure 0 regular_ll \n", + "2 1000 pressure 0 regular_ll \n", + "3 850 pressure 0 regular_ll \n", + "4 850 pressure 0 regular_ll \n", + "5 850 pressure 0 regular_ll " ] }, "execution_count": 10, @@ -570,42 +555,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", " t\n", - " isobaricInhPa\n", + " 2018-08-01 12:00:00\n", + " 2018-08-01 12:00:00\n", + " 0 days\n", " 1000\n", - " 20180801\n", - " 1200\n", - " 0\n", - " an\n", + " pressure\n", " 0\n", " regular_ll\n", " \n", " \n", " 1\n", - " ecmf\n", " t\n", - " isobaricInhPa\n", + " 2018-08-01 12:00:00\n", + " 2018-08-01 12:00:00\n", + " 0 days\n", " 850\n", - " 20180801\n", - " 1200\n", - " 0\n", - " an\n", + " pressure\n", " 0\n", " regular_ll\n", " \n", @@ -614,13 +593,13 @@ "" ], "text/plain": [ - " centre shortName typeOfLevel level dataDate dataTime stepRange \\\n", - "0 ecmf t isobaricInhPa 1000 20180801 1200 0 \n", - "1 ecmf t isobaricInhPa 850 20180801 1200 0 \n", + " parameter.variable time.valid_datetime time.base_datetime time.step \\\n", + "0 t 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", + "1 t 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", "\n", - " dataType number gridType \n", - "0 an 0 regular_ll \n", - "1 an 0 regular_ll " + " vertical.level vertical.level_type ensemble.member geography.grid_type \n", + "0 1000 pressure 0 regular_ll \n", + "1 850 pressure 0 regular_ll " ] }, "execution_count": 11, @@ -629,7 +608,7 @@ } ], "source": [ - "a = ds.sel(param=\"t\")\n", + "a = ds.sel({\"parameter.variable\": \"t\"})\n", "a.ls()" ] }, @@ -663,38 +642,86 @@ "\n", "\n", "\n", - "
<xarray.Dataset>\n",
-       "Dimensions:    (levelist: 2, latitude: 7, longitude: 12)\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: 2kB\n",
+       "Dimensions:    (level: 2, latitude: 7, longitude: 12)\n",
        "Coordinates:\n",
-       "  * levelist   (levelist) int64 850 1000\n",
-       "  * latitude   (latitude) float64 90.0 60.0 30.0 0.0 -30.0 -60.0 -90.0\n",
-       "  * longitude  (longitude) float64 0.0 30.0 60.0 90.0 ... 270.0 300.0 330.0\n",
+       "  * level      (level) int64 16B 850 1000\n",
+       "  * latitude   (latitude) float64 56B 90.0 60.0 30.0 0.0 -30.0 -60.0 -90.0\n",
+       "  * longitude  (longitude) float64 96B 0.0 30.0 60.0 90.0 ... 270.0 300.0 330.0\n",
        "Data variables:\n",
-       "    t          (levelist, latitude, longitude) float64 ...\n",
+       "    t          (level, latitude, longitude) float64 1kB ...\n",
        "Attributes:\n",
-       "    param:        t\n",
-       "    class:        od\n",
-       "    stream:       oper\n",
-       "    levtype:      pl\n",
-       "    type:         an\n",
-       "    expver:       0001\n",
-       "    date:         20180801\n",
-       "    time:         1200\n",
-       "    domain:       g\n",
-       "    number:       0\n",
        "    Conventions:  CF-1.8\n",
-       "    institution:  ECMWF
" + " institution: ECMWF
" ], "text/plain": [ - "\n", - "Dimensions: (levelist: 2, latitude: 7, longitude: 12)\n", + " Size: 2kB\n", + "Dimensions: (level: 2, latitude: 7, longitude: 12)\n", "Coordinates:\n", - " * levelist (levelist) int64 850 1000\n", - " * latitude (latitude) float64 90.0 60.0 30.0 0.0 -30.0 -60.0 -90.0\n", - " * longitude (longitude) float64 0.0 30.0 60.0 90.0 ... 270.0 300.0 330.0\n", + " * level (level) int64 16B 850 1000\n", + " * latitude (latitude) float64 56B 90.0 60.0 30.0 0.0 -30.0 -60.0 -90.0\n", + " * longitude (longitude) float64 96B 0.0 30.0 60.0 90.0 ... 270.0 300.0 330.0\n", "Data variables:\n", - " t (levelist, latitude, longitude) float64 ...\n", + " t (level, latitude, longitude) float64 1kB ...\n", "Attributes:\n", - " param: t\n", - " class: od\n", - " stream: oper\n", - " levtype: pl\n", - " type: an\n", - " expver: 0001\n", - " date: 20180801\n", - " time: 1200\n", - " domain: g\n", - " number: 0\n", " Conventions: CF-1.8\n", " institution: ECMWF" ] @@ -1072,9 +1144,9 @@ ], "metadata": { "kernelspec": { - "display_name": "dev_ecc", + "display_name": "dev", "language": "python", - "name": "dev_ecc" + "name": "dev" }, "language_info": { "codemirror_mode": { @@ -1086,7 +1158,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.13" + "version": "3.13.1" } }, "nbformat": 4, diff --git a/docs/examples/file_target.ipynb b/docs/examples/file_target.ipynb index 26bf8a26..79fbaa65 100644 --- a/docs/examples/file_target.ipynb +++ b/docs/examples/file_target.ipynb @@ -17,7 +17,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "", + "model_id": "f90c44f11ae04463be6b82691a636954", "version_major": 2, "version_minor": 0 }, @@ -33,7 +33,7 @@ "# get input GRIB data\n", "import os\n", "import earthkit.data as ekd\n", - "ds = ekd.from_source(\"sample\", \"test.grib\")" + "ds = ekd.from_source(\"sample\", \"test.grib\").to_fieldlist()" ] }, { @@ -202,7 +202,7 @@ " os.remove(out_file)\n", " \n", "ds[0].to_target(\"file\", out_file, append=True)\n", - "len(ekd.from_source(\"file\", out_file))" + "len(ekd.from_source(\"file\", out_file).to_fieldlist())" ] }, { @@ -224,7 +224,7 @@ ], "source": [ "ds[1].to_target(\"file\", out_file, append=True)\n", - "len(ekd.from_source(\"file\", out_file))" + "len(ekd.from_source(\"file\", out_file).to_fieldlist())" ] }, { @@ -238,9 +238,9 @@ ], "metadata": { "kernelspec": { - "display_name": "dev_ecc", + "display_name": "dev", "language": "python", - "name": "dev_ecc" + "name": "dev" }, "language_info": { "codemirror_mode": { @@ -252,7 +252,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.13" + "version": "3.13.1" } }, "nbformat": 4, diff --git a/docs/examples/from_object.ipynb b/docs/examples/from_object.ipynb index 9f8a05c6..61d8e2bc 100644 --- a/docs/examples/from_object.ipynb +++ b/docs/examples/from_object.ipynb @@ -60,39 +60,86 @@ "\n", "\n", "\n", - "
<xarray.Dataset> Size: 800B\n",
        "Dimensions:      (latitude: 10, longitude: 10)\n",
        "Dimensions without coordinates: latitude, longitude\n",
        "Data variables:\n",
-       "    temperature  (latitude, longitude) float64 800B 9.924 6.907 ... 9.595 7.987\n",
+       "    temperature  (latitude, longitude) float64 800B 2.842 9.335 ... 8.636 2.629\n",
        "Attributes:\n",
        "    purpose:  Demonstration\n",
-       "    source:   EarthkitExamples
" + " source: EarthkitExamples" ], "text/plain": [ " Size: 800B\n", "Dimensions: (latitude: 10, longitude: 10)\n", "Dimensions without coordinates: latitude, longitude\n", "Data variables:\n", - " temperature (latitude, longitude) float64 800B 9.924 6.907 ... 9.595 7.987\n", + " temperature (latitude, longitude) float64 800B 2.842 9.335 ... 8.636 2.629\n", "Attributes:\n", " purpose: Demonstration\n", " source: EarthkitExamples" @@ -476,26 +585,26 @@ { "data": { "text/plain": [ - "array([[9.92431552, 6.90655349, 5.7868388 , 8.41121321, 1.69326597,\n", - " 5.8638489 , 7.88491778, 5.32100601, 2.51267228, 6.40874136],\n", - " [7.20922708, 4.84160044, 3.19112609, 9.86412211, 1.93044519,\n", - " 3.21458366, 6.8855625 , 0.89282633, 9.18236597, 9.39104825],\n", - " [8.3800421 , 5.35997137, 9.3995762 , 6.78596141, 0.27519014,\n", - " 4.44691476, 4.17433485, 3.90901429, 0.45603054, 8.67484758],\n", - " [0.61742956, 8.75248349, 7.88558635, 9.58852544, 7.3215772 ,\n", - " 5.61184126, 9.82122202, 7.91967289, 0.49805722, 2.7364674 ],\n", - " [2.55413561, 6.54633036, 6.05313804, 0.15144518, 1.93220753,\n", - " 2.3002996 , 1.44260029, 7.37107842, 7.46102275, 9.88265362],\n", - " [7.97129689, 6.79109449, 5.18966605, 3.93028723, 9.46987938,\n", - " 1.29953927, 4.96990227, 0.84910365, 7.41595432, 7.16546269],\n", - " [0.9570322 , 5.11237267, 3.14709369, 9.48180342, 8.72560246,\n", - " 3.79490185, 8.82257466, 0.68210994, 0.65729065, 1.13449939],\n", - " [0.81227942, 6.27177992, 9.11285075, 8.06514698, 1.7646168 ,\n", - " 4.39226812, 7.39714433, 5.35081803, 9.11160899, 1.12502894],\n", - " [7.62276549, 2.6358015 , 9.85262721, 9.52385975, 5.46631338,\n", - " 3.68646726, 8.33371783, 7.36604175, 1.53462783, 0.54594352],\n", - " [3.89025704, 7.51555425, 0.46221449, 3.89854723, 2.44635243,\n", - " 0.08044784, 3.79812982, 6.92937516, 9.59464767, 7.98681252]])" + "array([[2.84166695, 9.33536102, 9.89642339, 2.6270859 , 8.48990799,\n", + " 7.26491482, 8.04717677, 0.88086053, 9.15001419, 9.11918713],\n", + " [5.95637307, 0.99342671, 3.36424371, 4.12647013, 2.91330759,\n", + " 7.69611375, 0.86313991, 8.53523552, 7.74454754, 6.40762743],\n", + " [2.0930653 , 9.07469986, 1.89753237, 8.76839945, 3.10963908,\n", + " 3.51962529, 7.44892355, 8.6962615 , 4.45429799, 3.70689399],\n", + " [8.51173373, 9.71330098, 0.66754761, 9.35201523, 6.4197131 ,\n", + " 2.57457141, 9.06393373, 8.13740792, 6.29884532, 6.83748267],\n", + " [1.92312384, 6.86896247, 1.31308448, 9.71517125, 6.10380899,\n", + " 8.69027922, 8.87550679, 9.54490803, 2.7651136 , 0.21012747],\n", + " [6.33252307, 3.26345193, 0.5624723 , 8.13097045, 0.32727309,\n", + " 6.33340375, 6.43281711, 7.08033503, 7.93303826, 9.48912574],\n", + " [8.96075398, 3.65606434, 5.13658636, 5.76677972, 9.48038899,\n", + " 9.59100093, 5.0829951 , 0.03339608, 7.45619778, 7.47936165],\n", + " [0.98974923, 5.41995759, 7.8891442 , 8.63233891, 1.56722919,\n", + " 3.49653169, 5.22357 , 8.37571764, 3.72660086, 5.45440387],\n", + " [2.97868482, 3.3038442 , 0.13717355, 8.71637329, 0.64545315,\n", + " 7.11183295, 4.84401703, 8.48792752, 8.89722967, 1.64760812],\n", + " [7.70833552, 6.6173857 , 4.10199867, 3.17982421, 3.51557832,\n", + " 2.80264514, 4.99338519, 3.29805102, 8.63580364, 2.62885865]])" ] }, "execution_count": 4, @@ -547,23 +656,23 @@ " \n", " 0\n", " 0\n", - " 9.924316\n", + " 2.841667\n", " \n", " \n", " 1\n", - " 6.906553\n", + " 9.335361\n", " \n", " \n", " 2\n", - " 5.786839\n", + " 9.896423\n", " \n", " \n", " 3\n", - " 8.411213\n", + " 2.627086\n", " \n", " \n", " 4\n", - " 1.693266\n", + " 8.489908\n", " \n", " \n", " ...\n", @@ -573,23 +682,23 @@ " \n", " 9\n", " 5\n", - " 0.080448\n", + " 2.802645\n", " \n", " \n", " 6\n", - " 3.798130\n", + " 4.993385\n", " \n", " \n", " 7\n", - " 6.929375\n", + " 3.298051\n", " \n", " \n", " 8\n", - " 9.594648\n", + " 8.635804\n", " \n", " \n", " 9\n", - " 7.986813\n", + " 2.628859\n", " \n", " \n", "\n", @@ -599,17 +708,17 @@ "text/plain": [ " temperature\n", "latitude longitude \n", - "0 0 9.924316\n", - " 1 6.906553\n", - " 2 5.786839\n", - " 3 8.411213\n", - " 4 1.693266\n", + "0 0 2.841667\n", + " 1 9.335361\n", + " 2 9.896423\n", + " 3 2.627086\n", + " 4 8.489908\n", "... ...\n", - "9 5 0.080448\n", - " 6 3.798130\n", - " 7 6.929375\n", - " 8 9.594648\n", - " 9 7.986813\n", + "9 5 2.802645\n", + " 6 4.993385\n", + " 7 3.298051\n", + " 8 8.635804\n", + " 9 2.628859\n", "\n", "[100 rows x 1 columns]" ] @@ -663,23 +772,23 @@ " \n", " 0\n", " 0\n", - " 9.924316\n", + " 2.841667\n", " \n", " \n", " 1\n", - " 6.906553\n", + " 9.335361\n", " \n", " \n", " 2\n", - " 5.786839\n", + " 9.896423\n", " \n", " \n", " 3\n", - " 8.411213\n", + " 2.627086\n", " \n", " \n", " 4\n", - " 1.693266\n", + " 8.489908\n", " \n", " \n", " ...\n", @@ -689,23 +798,23 @@ " \n", " 9\n", " 5\n", - " 0.080448\n", + " 2.802645\n", " \n", " \n", " 6\n", - " 3.798130\n", + " 4.993385\n", " \n", " \n", " 7\n", - " 6.929375\n", + " 3.298051\n", " \n", " \n", " 8\n", - " 9.594648\n", + " 8.635804\n", " \n", " \n", " 9\n", - " 7.986813\n", + " 2.628859\n", " \n", " \n", "\n", @@ -715,17 +824,17 @@ "text/plain": [ " temperature\n", "latitude longitude \n", - "0 0 9.924316\n", - " 1 6.906553\n", - " 2 5.786839\n", - " 3 8.411213\n", - " 4 1.693266\n", + "0 0 2.841667\n", + " 1 9.335361\n", + " 2 9.896423\n", + " 3 2.627086\n", + " 4 8.489908\n", "... ...\n", - "9 5 0.080448\n", - " 6 3.798130\n", - " 7 6.929375\n", - " 8 9.594648\n", - " 9 7.986813\n", + "9 5 2.802645\n", + " 6 4.993385\n", + " 7 3.298051\n", + " 8 8.635804\n", + " 9 2.628859\n", "\n", "[100 rows x 1 columns]" ] @@ -750,9 +859,9 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "dev", "language": "python", - "name": "python3" + "name": "dev" }, "language_info": { "codemirror_mode": { @@ -764,7 +873,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.13" + "version": "3.13.1" } }, "nbformat": 4, diff --git a/docs/examples/geojson_geopandas.ipynb b/docs/examples/geojson_geopandas.ipynb index cbb30aab..6d2c83ae 100644 --- a/docs/examples/geojson_geopandas.ipynb +++ b/docs/examples/geojson_geopandas.ipynb @@ -51,200 +51,8 @@ "outputs": [ { "data": { - "text/html": [ - "

GeojsonReader(represented as a geopandas object):

\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", - " \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", - " \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", - "
idNUTS_IDLEVL_CODECNTR_CODENAME_LATNNUTS_NAMEMOUNT_TYPEURBN_TYPECOAST_TYPEFIDgeometry
0FRFR0FRFranceFrance0.000FRMULTIPOLYGON (((9954236.116 -3059379.316, 9961...
1HRHR0HRHrvatskaHrvatska0.000HRMULTIPOLYGON (((4827385.889 2618351.326, 48483...
2HUHU0HUMagyarországMagyarország0.000HUPOLYGON ((5214660.069 2880853.832, 5216710.220...
3ALAL0ALShqipëriaShqipëria0.000ALPOLYGON ((5129579.170 2204098.752, 5148385.473...
4ATAT0ATÖsterreichÖsterreich0.000ATPOLYGON ((4742889.368 2876362.725, 4783217.798...
....................................
2005TRC21TRC213TRŞanlıurfaŞanlıurfa4.023TRC21POLYGON ((6904684.585 2120354.802, 6938677.828...
2006TRC22TRC223TRDiyarbakırDiyarbakır4.023TRC22POLYGON ((6989716.599 2273670.524, 6982786.486...
2007NO0B2NO0B23NOSvalbardSvalbard3.031NO0B2MULTIPOLYGON (((4754167.335 6382461.409, 47465...
2008NO0BNO0B2NOJan Mayen and SvalbardJan Mayen and SvalbardNaN00NO0BMULTIPOLYGON (((4754167.335 6382461.409, 47465...
2009NO0B1NO0B13NOJan MayenJan Mayen3.031NO0B1POLYGON ((3642785.362 5404637.884, 3624291.510...
\n", - "

2010 rows × 11 columns

\n", - "
" - ], "text/plain": [ - "GeojsonReader(NUTS_RG_20M_2021_3035.geojson)" + "" ] }, "execution_count": 2, @@ -255,8 +63,8 @@ "source": [ "# Test the geojson reader\n", "ekd.download_example_file(\"NUTS_RG_20M_2021_3035.geojson\")\n", - "geojson_source = ekd.from_source(\"file\", \"NUTS_RG_20M_2021_3035.geojson\")\n", - "geojson_source" + "ds = ekd.from_source(\"file\", \"NUTS_RG_20M_2021_3035.geojson\")\n", + "ds" ] }, { @@ -269,43 +77,23 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "id FR\n", - "NUTS_ID FR\n", - "LEVL_CODE 0\n", - "CNTR_CODE FR\n", - "NAME_LATN France\n", - "NUTS_NAME France\n", - "MOUNT_TYPE 0.0\n", - "URBN_TYPE 0\n", - "COAST_TYPE 0\n", - "FID FR\n", - "geometry MULTIPOLYGON (((9954236.1162 -3059379.3164, 99...\n", - "Name: 0, dtype: object\n", - "id HR\n", - "NUTS_ID HR\n", - "LEVL_CODE 0\n", - "CNTR_CODE HR\n", - "NAME_LATN Hrvatska\n", - "NUTS_NAME Hrvatska\n", - "MOUNT_TYPE 0.0\n", - "URBN_TYPE 0\n", - "COAST_TYPE 0\n", - "FID HR\n", - "geometry MULTIPOLYGON (((4827385.8894 2618351.326199999...\n", - "Name: 1, dtype: object\n" + "Converting GeoJSON to list of features \n", + "\n" ] } ], "source": [ - "for thing in geojson_source[:2]:\n", - " print(thing)" + "fl = ds.to_featurelist()\n", + "print(fl)\n", + "# for f in fl[:2]:\n", + "# print(f)" ] }, { @@ -341,220 +129,83 @@ " \n", " \n", " \n", - " id\n", - " NUTS_ID\n", " LEVL_CODE\n", - " CNTR_CODE\n", - " NAME_LATN\n", - " NUTS_NAME\n", " MOUNT_TYPE\n", " URBN_TYPE\n", " COAST_TYPE\n", - " FID\n", - " geometry\n", " \n", " \n", " \n", " \n", - " 0\n", - " FR\n", - " FR\n", - " 0\n", - " FR\n", - " France\n", - " France\n", - " 0.0\n", - " 0\n", - " 0\n", - " FR\n", - " MULTIPOLYGON (((9954236.116 -3059379.316, 9961...\n", - " \n", - " \n", - " 1\n", - " HR\n", - " HR\n", - " 0\n", - " HR\n", - " Hrvatska\n", - " Hrvatska\n", - " 0.0\n", - " 0\n", - " 0\n", - " HR\n", - " MULTIPOLYGON (((4827385.889 2618351.326, 48483...\n", + " count\n", + " 2010.000000\n", + " 2009.000000\n", + " 2010.000000\n", + " 2010.000000\n", " \n", " \n", - " 2\n", - " HU\n", - " HU\n", - " 0\n", - " HU\n", - " Magyarország\n", - " Magyarország\n", - " 0.0\n", - " 0\n", - " 0\n", - " HU\n", - " POLYGON ((5214660.069 2880853.832, 5216710.220...\n", + " mean\n", + " 2.654229\n", + " 2.709308\n", + " 1.536318\n", + " 1.768159\n", " \n", " \n", - " 3\n", - " AL\n", - " AL\n", - " 0\n", - " AL\n", - " Shqipëria\n", - " Shqipëria\n", - " 0.0\n", - " 0\n", - " 0\n", - " AL\n", - " POLYGON ((5129579.170 2204098.752, 5148385.473...\n", + " std\n", + " 0.679168\n", + " 1.664941\n", + " 1.094774\n", + " 1.280081\n", " \n", " \n", - " 4\n", - " AT\n", - " AT\n", - " 0\n", - " AT\n", - " Österreich\n", - " Österreich\n", - " 0.0\n", - " 0\n", - " 0\n", - " AT\n", - " POLYGON ((4742889.368 2876362.725, 4783217.798...\n", + " min\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", " \n", " \n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", + " 25%\n", + " 3.000000\n", + " 2.000000\n", + " 1.000000\n", + " 1.000000\n", " \n", " \n", - " 2005\n", - " TRC21\n", - " TRC21\n", - " 3\n", - " TR\n", - " Şanlıurfa\n", - " Şanlıurfa\n", - " 4.0\n", - " 2\n", - " 3\n", - " TRC21\n", - " POLYGON ((6904684.585 2120354.802, 6938677.828...\n", + " 50%\n", + " 3.000000\n", + " 4.000000\n", + " 2.000000\n", + " 2.000000\n", " \n", " \n", - " 2006\n", - " TRC22\n", - " TRC22\n", - " 3\n", - " TR\n", - " Diyarbakır\n", - " Diyarbakır\n", - " 4.0\n", - " 2\n", - " 3\n", - " TRC22\n", - " POLYGON ((6989716.599 2273670.524, 6982786.486...\n", + " 75%\n", + " 3.000000\n", + " 4.000000\n", + " 2.000000\n", + " 3.000000\n", " \n", " \n", - " 2007\n", - " NO0B2\n", - " NO0B2\n", - " 3\n", - " NO\n", - " Svalbard\n", - " Svalbard\n", - " 3.0\n", - " 3\n", - " 1\n", - " NO0B2\n", - " MULTIPOLYGON (((4754167.335 6382461.409, 47465...\n", - " \n", - " \n", - " 2008\n", - " NO0B\n", - " NO0B\n", - " 2\n", - " NO\n", - " Jan Mayen and Svalbard\n", - " Jan Mayen and Svalbard\n", - " NaN\n", - " 0\n", - " 0\n", - " NO0B\n", - " MULTIPOLYGON (((4754167.335 6382461.409, 47465...\n", - " \n", - " \n", - " 2009\n", - " NO0B1\n", - " NO0B1\n", - " 3\n", - " NO\n", - " Jan Mayen\n", - " Jan Mayen\n", - " 3.0\n", - " 3\n", - " 1\n", - " NO0B1\n", - " POLYGON ((3642785.362 5404637.884, 3624291.510...\n", + " max\n", + " 3.000000\n", + " 4.000000\n", + " 3.000000\n", + " 3.000000\n", " \n", " \n", "\n", - "

2010 rows × 11 columns

\n", "" ], "text/plain": [ - " id NUTS_ID LEVL_CODE CNTR_CODE NAME_LATN \\\n", - "0 FR FR 0 FR France \n", - "1 HR HR 0 HR Hrvatska \n", - "2 HU HU 0 HU Magyarország \n", - "3 AL AL 0 AL Shqipëria \n", - "4 AT AT 0 AT Österreich \n", - "... ... ... ... ... ... \n", - "2005 TRC21 TRC21 3 TR Şanlıurfa \n", - "2006 TRC22 TRC22 3 TR Diyarbakır \n", - "2007 NO0B2 NO0B2 3 NO Svalbard \n", - "2008 NO0B NO0B 2 NO Jan Mayen and Svalbard \n", - "2009 NO0B1 NO0B1 3 NO Jan Mayen \n", - "\n", - " NUTS_NAME MOUNT_TYPE URBN_TYPE COAST_TYPE FID \\\n", - "0 France 0.0 0 0 FR \n", - "1 Hrvatska 0.0 0 0 HR \n", - "2 Magyarország 0.0 0 0 HU \n", - "3 Shqipëria 0.0 0 0 AL \n", - "4 Österreich 0.0 0 0 AT \n", - "... ... ... ... ... ... \n", - "2005 Şanlıurfa 4.0 2 3 TRC21 \n", - "2006 Diyarbakır 4.0 2 3 TRC22 \n", - "2007 Svalbard 3.0 3 1 NO0B2 \n", - "2008 Jan Mayen and Svalbard NaN 0 0 NO0B \n", - "2009 Jan Mayen 3.0 3 1 NO0B1 \n", - "\n", - " geometry \n", - "0 MULTIPOLYGON (((9954236.116 -3059379.316, 9961... \n", - "1 MULTIPOLYGON (((4827385.889 2618351.326, 48483... \n", - "2 POLYGON ((5214660.069 2880853.832, 5216710.220... \n", - "3 POLYGON ((5129579.170 2204098.752, 5148385.473... \n", - "4 POLYGON ((4742889.368 2876362.725, 4783217.798... \n", - "... ... \n", - "2005 POLYGON ((6904684.585 2120354.802, 6938677.828... \n", - "2006 POLYGON ((6989716.599 2273670.524, 6982786.486... \n", - "2007 MULTIPOLYGON (((4754167.335 6382461.409, 47465... \n", - "2008 MULTIPOLYGON (((4754167.335 6382461.409, 47465... \n", - "2009 POLYGON ((3642785.362 5404637.884, 3624291.510... \n", - "\n", - "[2010 rows x 11 columns]" + " LEVL_CODE MOUNT_TYPE URBN_TYPE COAST_TYPE\n", + "count 2010.000000 2009.000000 2010.000000 2010.000000\n", + "mean 2.654229 2.709308 1.536318 1.768159\n", + "std 0.679168 1.664941 1.094774 1.280081\n", + "min 0.000000 0.000000 0.000000 0.000000\n", + "25% 3.000000 2.000000 1.000000 1.000000\n", + "50% 3.000000 4.000000 2.000000 2.000000\n", + "75% 3.000000 4.000000 2.000000 3.000000\n", + "max 3.000000 4.000000 3.000000 3.000000" ] }, "execution_count": 4, @@ -563,8 +214,8 @@ } ], "source": [ - "gpd_df = gpd.read_file(geojson_source.path)\n", - "ek_gpd_df = ekd.from_object(gpd_df)\n", + "gpd_df = gpd.read_file(\"NUTS_RG_20M_2021_3035.geojson\")\n", + "ek_gpd_df = ekd.from_object(gpd_df).to_pandas()\n", "ek_gpd_df.describe()" ] }, @@ -579,30 +230,17 @@ "text": [ "Number of polygons in geopandas: 2010\n", "Iterate of polygons:\n", - "id FR\n", - "NUTS_ID FR\n", - "LEVL_CODE 0\n", - "CNTR_CODE FR\n", - "NAME_LATN France\n", - "NUTS_NAME France\n", - "MOUNT_TYPE 0.0\n", - "URBN_TYPE 0\n", - "COAST_TYPE 0\n", - "FID FR\n", - "geometry MULTIPOLYGON (((9954236.1162 -3059379.3164, 99...\n", - "Name: 0, dtype: object\n", - "id HR\n", - "NUTS_ID HR\n", - "LEVL_CODE 0\n", - "CNTR_CODE HR\n", - "NAME_LATN Hrvatska\n", - "NUTS_NAME Hrvatska\n", - "MOUNT_TYPE 0.0\n", - "URBN_TYPE 0\n", - "COAST_TYPE 0\n", - "FID HR\n", - "geometry MULTIPOLYGON (((4827385.8894 2618351.326199999...\n", - "Name: 1, dtype: object\n" + "id\n", + "NUTS_ID\n", + "LEVL_CODE\n", + "CNTR_CODE\n", + "NAME_LATN\n", + "NUTS_NAME\n", + "MOUNT_TYPE\n", + "URBN_TYPE\n", + "COAST_TYPE\n", + "FID\n", + "geometry\n" ] } ], @@ -624,9 +262,9 @@ ], "metadata": { "kernelspec": { - "display_name": "dev_ecc", + "display_name": "dev", "language": "python", - "name": "dev_ecc" + "name": "dev" }, "language_info": { "codemirror_mode": { @@ -638,7 +276,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.13" + "version": "3.13.1" } }, "nbformat": 4, diff --git a/docs/examples/geotiff.ipynb b/docs/examples/geotiff.ipynb index fc97b101..905bdbd0 100644 --- a/docs/examples/geotiff.ipynb +++ b/docs/examples/geotiff.ipynb @@ -565,9 +565,9 @@ " TIFFTAG_XRESOLUTION: 96\n", " TIFFTAG_YRESOLUTION: 96\n", " TIFFTAG_RESOLUTIONUNIT: 2 (pixels/inch)\n", - " AREA_OR_POINT: Area" + " AREA_OR_POINT: Area" ], "text/plain": [ " Size: 1MB\n", diff --git a/docs/examples/grib_contents.ipynb b/docs/examples/grib_contents.ipynb index 3cc79f51..74d9788c 100644 --- a/docs/examples/grib_contents.ipynb +++ b/docs/examples/grib_contents.ipynb @@ -41,7 +41,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "e137ba83058b4efba40e8de0baae025e", + "model_id": "2ce22658e41540acb5e011d5ec3d53ce", "version_major": 2, "version_minor": 0 }, @@ -55,7 +55,7 @@ ], "source": [ "import earthkit.data as ekd\n", - "ds = ekd.from_source(\"sample\", \"test6.grib\")" + "ds = ekd.from_source(\"sample\", \"test6.grib\").to_fieldlist()" ] }, { @@ -154,7 +154,7 @@ " time.base_datetime\n", " time.step\n", " vertical.level\n", - " vertical.type\n", + " vertical.level_type\n", " ensemble.member\n", " geography.grid_type\n", " \n", @@ -167,7 +167,7 @@ " 2018-08-01 12:00:00\n", " 0 days\n", " 1000\n", - " None\n", + " pressure\n", " 0\n", " regular_ll\n", " \n", @@ -178,7 +178,7 @@ " 2018-08-01 12:00:00\n", " 0 days\n", " 1000\n", - " None\n", + " pressure\n", " 0\n", " regular_ll\n", " \n", @@ -189,7 +189,7 @@ " 2018-08-01 12:00:00\n", " 0 days\n", " 1000\n", - " None\n", + " pressure\n", " 0\n", " regular_ll\n", " \n", @@ -200,7 +200,7 @@ " 2018-08-01 12:00:00\n", " 0 days\n", " 850\n", - " None\n", + " pressure\n", " 0\n", " regular_ll\n", " \n", @@ -211,7 +211,7 @@ " 2018-08-01 12:00:00\n", " 0 days\n", " 850\n", - " None\n", + " pressure\n", " 0\n", " regular_ll\n", " \n", @@ -222,7 +222,7 @@ " 2018-08-01 12:00:00\n", " 0 days\n", " 850\n", - " None\n", + " pressure\n", " 0\n", " regular_ll\n", " \n", @@ -239,13 +239,13 @@ "4 u 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", "5 v 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", "\n", - " vertical.level vertical.type ensemble.member geography.grid_type \n", - "0 1000 None 0 regular_ll \n", - "1 1000 None 0 regular_ll \n", - "2 1000 None 0 regular_ll \n", - "3 850 None 0 regular_ll \n", - "4 850 None 0 regular_ll \n", - "5 850 None 0 regular_ll " + " vertical.level vertical.level_type ensemble.member geography.grid_type \n", + "0 1000 pressure 0 regular_ll \n", + "1 1000 pressure 0 regular_ll \n", + "2 1000 pressure 0 regular_ll \n", + "3 850 pressure 0 regular_ll \n", + "4 850 pressure 0 regular_ll \n", + "5 850 pressure 0 regular_ll " ] }, "execution_count": 2, @@ -297,7 +297,7 @@ " time.base_datetime\n", " time.step\n", " vertical.level\n", - " vertical.type\n", + " vertical.level_type\n", " ensemble.member\n", " geography.grid_type\n", " \n", @@ -310,7 +310,7 @@ " 2018-08-01 12:00:00\n", " 0 days\n", " 1000\n", - " None\n", + " pressure\n", " 0\n", " regular_ll\n", " \n", @@ -321,7 +321,7 @@ " 2018-08-01 12:00:00\n", " 0 days\n", " 1000\n", - " None\n", + " pressure\n", " 0\n", " regular_ll\n", " \n", @@ -334,9 +334,9 @@ "0 t 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", "1 u 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", "\n", - " vertical.level vertical.type ensemble.member geography.grid_type \n", - "0 1000 None 0 regular_ll \n", - "1 1000 None 0 regular_ll " + " vertical.level vertical.level_type ensemble.member geography.grid_type \n", + "0 1000 pressure 0 regular_ll \n", + "1 1000 pressure 0 regular_ll " ] }, "execution_count": 3, @@ -381,7 +381,7 @@ " time.base_datetime\n", " time.step\n", " vertical.level\n", - " vertical.type\n", + " vertical.level_type\n", " ensemble.member\n", " geography.grid_type\n", " \n", @@ -394,7 +394,7 @@ " 2018-08-01 12:00:00\n", " 0 days\n", " 1000\n", - " None\n", + " pressure\n", " 0\n", " regular_ll\n", " \n", @@ -405,7 +405,7 @@ " 2018-08-01 12:00:00\n", " 0 days\n", " 1000\n", - " None\n", + " pressure\n", " 0\n", " regular_ll\n", " \n", @@ -418,9 +418,9 @@ "0 t 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", "1 u 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", "\n", - " vertical.level vertical.type ensemble.member geography.grid_type \n", - "0 1000 None 0 regular_ll \n", - "1 1000 None 0 regular_ll " + " vertical.level vertical.level_type ensemble.member geography.grid_type \n", + "0 1000 pressure 0 regular_ll \n", + "1 1000 pressure 0 regular_ll " ] }, "execution_count": 4, @@ -645,7 +645,7 @@ " time.base_datetime\n", " time.step\n", " vertical.level\n", - " vertical.type\n", + " vertical.level_type\n", " ensemble.member\n", " geography.grid_type\n", " parameter.units\n", @@ -659,10 +659,10 @@ " 2018-08-01 12:00:00\n", " 0 days\n", " 1000\n", - " None\n", + " pressure\n", " 0\n", " regular_ll\n", - " K\n", + " kelvin\n", " \n", " \n", " 1\n", @@ -671,10 +671,10 @@ " 2018-08-01 12:00:00\n", " 0 days\n", " 1000\n", - " None\n", + " pressure\n", " 0\n", " regular_ll\n", - " m s**-1\n", + " meter / second\n", " \n", " \n", " 2\n", @@ -683,10 +683,10 @@ " 2018-08-01 12:00:00\n", " 0 days\n", " 1000\n", - " None\n", + " pressure\n", " 0\n", " regular_ll\n", - " m s**-1\n", + " meter / second\n", " \n", " \n", " 3\n", @@ -695,10 +695,10 @@ " 2018-08-01 12:00:00\n", " 0 days\n", " 850\n", - " None\n", + " pressure\n", " 0\n", " regular_ll\n", - " K\n", + " kelvin\n", " \n", " \n", " 4\n", @@ -707,10 +707,10 @@ " 2018-08-01 12:00:00\n", " 0 days\n", " 850\n", - " None\n", + " pressure\n", " 0\n", " regular_ll\n", - " m s**-1\n", + " meter / second\n", " \n", " \n", "\n", @@ -724,19 +724,19 @@ "3 t 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", "4 u 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", "\n", - " vertical.level vertical.type ensemble.member geography.grid_type \\\n", - "0 1000 None 0 regular_ll \n", - "1 1000 None 0 regular_ll \n", - "2 1000 None 0 regular_ll \n", - "3 850 None 0 regular_ll \n", - "4 850 None 0 regular_ll \n", + " vertical.level vertical.level_type ensemble.member geography.grid_type \\\n", + "0 1000 pressure 0 regular_ll \n", + "1 1000 pressure 0 regular_ll \n", + "2 1000 pressure 0 regular_ll \n", + "3 850 pressure 0 regular_ll \n", + "4 850 pressure 0 regular_ll \n", "\n", " parameter.units \n", - "0 K \n", - "1 m s**-1 \n", - "2 m s**-1 \n", - "3 K \n", - "4 m s**-1 " + "0 kelvin \n", + "1 meter / second \n", + "2 meter / second \n", + "3 kelvin \n", + "4 meter / second " ] }, "execution_count": 7, @@ -768,85 +768,15 @@ "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", - "
time.valid_datetimetime.base_datetimetime.step
02018-08-01 12:00:002018-08-01 12:00:000 days
12018-08-01 12:00:002018-08-01 12:00:000 days
22018-08-01 12:00:002018-08-01 12:00:000 days
32018-08-01 12:00:002018-08-01 12:00:000 days
42018-08-01 12:00:002018-08-01 12:00:000 days
52018-08-01 12:00:002018-08-01 12:00:000 days
\n", - "
" - ], - "text/plain": [ - " time.valid_datetime time.base_datetime time.step\n", - "0 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days\n", - "1 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days\n", - "2 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days\n", - "3 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days\n", - "4 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days\n", - "5 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" + "ename": "TypeError", + "evalue": "IndexFieldListBase.ls() got an unexpected keyword argument 'component'", + "output_type": "error", + "traceback": [ + "\u001b[31m---------------------------------------------------------------------------\u001b[39m", + "\u001b[31mTypeError\u001b[39m Traceback (most recent call last)", + "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[8]\u001b[39m\u001b[32m, line 1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m1\u001b[39m \u001b[43mds\u001b[49m\u001b[43m.\u001b[49m\u001b[43mls\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcomponent\u001b[49m\u001b[43m=\u001b[49m\u001b[33;43m\"\u001b[39;49m\u001b[33;43mtime\u001b[39;49m\u001b[33;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n", + "\u001b[31mTypeError\u001b[39m: IndexFieldListBase.ls() got an unexpected keyword argument 'component'" + ] } ], "source": [ @@ -855,103 +785,9 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "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", - "
time.valid_datetimetime.base_datetimetime.stepparameter.variableparameter.units
02018-08-01 12:00:002018-08-01 12:00:000 daystK
12018-08-01 12:00:002018-08-01 12:00:000 daysum s**-1
22018-08-01 12:00:002018-08-01 12:00:000 daysvm s**-1
32018-08-01 12:00:002018-08-01 12:00:000 daystK
42018-08-01 12:00:002018-08-01 12:00:000 daysum s**-1
\n", - "
" - ], - "text/plain": [ - " time.valid_datetime time.base_datetime time.step parameter.variable \\\n", - "0 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days t \n", - "1 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days u \n", - "2 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days v \n", - "3 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days t \n", - "4 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days u \n", - "\n", - " parameter.units \n", - "0 K \n", - "1 m s**-1 \n", - "2 m s**-1 \n", - "3 K \n", - "4 m s**-1 " - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "ds.ls(component=[\"parameter\", \"time\"])" ] @@ -965,158 +801,11 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "metadata": { "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", - " \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", - "
metadata.editionmetadata.centremetadata.typeOfLevelmetadata.levelmetadata.dataDatemetadata.stepRangemetadata.dataTypemetadata.shortNamemetadata.packingTypemetadata.gridType
01ecmfisobaricInhPa1000201808010antgrid_simpleregular_ll
11ecmfisobaricInhPa1000201808010anugrid_simpleregular_ll
21ecmfisobaricInhPa1000201808010anvgrid_simpleregular_ll
31ecmfisobaricInhPa850201808010antgrid_simpleregular_ll
41ecmfisobaricInhPa850201808010anugrid_simpleregular_ll
51ecmfisobaricInhPa850201808010anvgrid_simpleregular_ll
\n", - "
" - ], - "text/plain": [ - " metadata.edition metadata.centre metadata.typeOfLevel metadata.level \\\n", - "0 1 ecmf isobaricInhPa 1000 \n", - "1 1 ecmf isobaricInhPa 1000 \n", - "2 1 ecmf isobaricInhPa 1000 \n", - "3 1 ecmf isobaricInhPa 850 \n", - "4 1 ecmf isobaricInhPa 850 \n", - "5 1 ecmf isobaricInhPa 850 \n", - "\n", - " metadata.dataDate metadata.stepRange metadata.dataType metadata.shortName \\\n", - "0 20180801 0 an t \n", - "1 20180801 0 an u \n", - "2 20180801 0 an v \n", - "3 20180801 0 an t \n", - "4 20180801 0 an u \n", - "5 20180801 0 an v \n", - "\n", - " metadata.packingType metadata.gridType \n", - "0 grid_simple regular_ll \n", - "1 grid_simple regular_ll \n", - "2 grid_simple regular_ll \n", - "3 grid_simple regular_ll \n", - "4 grid_simple regular_ll \n", - "5 grid_simple regular_ll " - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "ds.ls(component=\"metadata\", filter=\"ls\")" ] @@ -1144,7 +833,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "metadata": { "editable": true, "slideshow": { @@ -1152,119 +841,7 @@ }, "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", - " \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", - "
parameter.variabletime.valid_datetimetime.base_datetimetime.stepvertical.levelvertical.typeensemble.membergeography.grid_type
0u2018-08-01 12:00:002018-08-01 12:00:000 days1000pressure0regular_ll
1v2018-08-01 12:00:002018-08-01 12:00:000 days1000pressure0regular_ll
2t2018-08-01 12:00:002018-08-01 12:00:000 days850pressure0regular_ll
3u2018-08-01 12:00:002018-08-01 12:00:000 days850pressure0regular_ll
4v2018-08-01 12:00:002018-08-01 12:00:000 days850pressure0regular_ll
\n", - "
" - ], - "text/plain": [ - " parameter.variable time.valid_datetime time.base_datetime time.step \\\n", - "0 u 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", - "1 v 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", - "2 t 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", - "3 u 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", - "4 v 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", - "\n", - " vertical.level vertical.type ensemble.member geography.grid_type \n", - "0 1000 pressure 0 regular_ll \n", - "1 1000 pressure 0 regular_ll \n", - "2 850 pressure 0 regular_ll \n", - "3 850 pressure 0 regular_ll \n", - "4 850 pressure 0 regular_ll " - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "ds.tail(5)" ] @@ -1292,7 +869,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, "metadata": { "editable": true, "slideshow": { @@ -1300,132 +877,7 @@ }, "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", - " \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", - "
parameter.variabletime.valid_datetimetime.base_datetimetime.stepvertical.levelvertical.typeensemble.membergeography.grid_type
0t2018-08-01 12:00:002018-08-01 12:00:000 days1000pressure0regular_ll
1u2018-08-01 12:00:002018-08-01 12:00:000 days1000pressure0regular_ll
2v2018-08-01 12:00:002018-08-01 12:00:000 days1000pressure0regular_ll
3t2018-08-01 12:00:002018-08-01 12:00:000 days850pressure0regular_ll
4u2018-08-01 12:00:002018-08-01 12:00:000 days850pressure0regular_ll
5v2018-08-01 12:00:002018-08-01 12:00:000 days850pressure0regular_ll
\n", - "
" - ], - "text/plain": [ - " parameter.variable time.valid_datetime time.base_datetime time.step \\\n", - "0 t 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", - "1 u 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", - "2 v 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", - "3 t 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", - "4 u 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", - "5 v 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", - "\n", - " vertical.level vertical.type ensemble.member geography.grid_type \n", - "0 1000 pressure 0 regular_ll \n", - "1 1000 pressure 0 regular_ll \n", - "2 1000 pressure 0 regular_ll \n", - "3 850 pressure 0 regular_ll \n", - "4 850 pressure 0 regular_ll \n", - "5 850 pressure 0 regular_ll " - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "ds.ls()" ] @@ -1439,164 +891,18 @@ }, { "cell_type": "code", - "execution_count": 14, - "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", - "
parameter.variabletime.valid_datetimetime.base_datetimetime.stepvertical.levelvertical.typeensemble.membergeography.grid_type
0t2018-08-01 12:00:002018-08-01 12:00:000 days1000pressure0regular_ll
1u2018-08-01 12:00:002018-08-01 12:00:000 days1000pressure0regular_ll
\n", - "
" - ], - "text/plain": [ - " parameter.variable time.valid_datetime time.base_datetime time.step \\\n", - "0 t 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", - "1 u 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", - "\n", - " vertical.level vertical.type ensemble.member geography.grid_type \n", - "0 1000 pressure 0 regular_ll \n", - "1 1000 pressure 0 regular_ll " - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "ds.ls(2)" ] }, { "cell_type": "code", - "execution_count": 15, + "execution_count": null, "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", - "
parameter.variabletime.valid_datetimetime.base_datetimetime.stepvertical.levelvertical.typeensemble.membergeography.grid_type
0u2018-08-01 12:00:002018-08-01 12:00:000 days850pressure0regular_ll
1v2018-08-01 12:00:002018-08-01 12:00:000 days850pressure0regular_ll
\n", - "
" - ], - "text/plain": [ - " parameter.variable time.valid_datetime time.base_datetime time.step \\\n", - "0 u 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", - "1 v 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", - "\n", - " vertical.level vertical.type ensemble.member geography.grid_type \n", - "0 850 pressure 0 regular_ll \n", - "1 850 pressure 0 regular_ll " - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "ds.ls(-2)" ] @@ -1624,7 +930,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": null, "metadata": { "editable": true, "slideshow": { @@ -1653,7 +959,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": null, "metadata": { "editable": true, "slideshow": { @@ -1668,7 +974,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -1691,481 +997,31 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "
variablet
unitsK
" - ], - "text/plain": [ - "{'parameter': {'variable': 't', 'units': 'K'}}" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "ds[0].dump(\"parameter\")" ] }, { "cell_type": "code", - "execution_count": 20, + "execution_count": null, "metadata": { "scrolled": true }, - "outputs": [ - { - "data": { - "text/html": [ - "
Field
\n", - "
\n", - "
\n", - "
\n", - "
\n", - "
\n", - "\n", - "\n", - "\n", - "
\n", - "\n", - "\n", - "\n", - "
variablet
unitsK
\n", - "
\n", - " \n", - "\n", - "\n", - "
\n", - "\n", - "\n", - "\n", - "
valid_datetime2018-08-01 12:00:00
base_datetime2018-08-01 12:00:00
step0:00:00
\n", - "
\n", - " \n", - "
\n", - "
\n", - "
\n", - "
\n", - "
\n", - " " - ], - "text/plain": [ - "{'parameter': {'variable': 't', 'units': 'K'},\n", - " 'time': {'valid_datetime': datetime.datetime(2018, 8, 1, 12, 0),\n", - " 'base_datetime': datetime.datetime(2018, 8, 1, 12, 0),\n", - " 'step': datetime.timedelta(0)}}" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "ds[0].dump([\"parameter\", \"time\"])" ] }, { "cell_type": "code", - "execution_count": 21, + "execution_count": null, "metadata": { "scrolled": true }, - "outputs": [ - { - "data": { - "text/html": [ - "
Field
\n", - "
\n", - "
\n", - "
\n", - "
\n", - "
\n", - "\n", - "\n", - "\n", - "
\n", - "\n", - "\n", - "\n", - "
variablet
unitsK
\n", - "
\n", - " \n", - "\n", - "\n", - "
\n", - "\n", - "\n", - "\n", - "
valid_datetime2018-08-01 12:00:00
base_datetime2018-08-01 12:00:00
step0:00:00
\n", - "
\n", - " \n", - "\n", - "\n", - "
\n", - "\n", - "\n", - "\n", - "
level1000
layerNone
typepressure
\n", - "
\n", - " \n", - "\n", - "\n", - "
\n", - "\n", - "\n", - "\n", - "
member0
\n", - "
\n", - " \n", - "
\n", - "
\n", - "
\n", - "
\n", - "
\n", - " " - ], - "text/plain": [ - "{'parameter': {'variable': 't', 'units': 'K'},\n", - " 'time': {'valid_datetime': datetime.datetime(2018, 8, 1, 12, 0),\n", - " 'base_datetime': datetime.datetime(2018, 8, 1, 12, 0),\n", - " 'step': datetime.timedelta(0)},\n", - " 'vertical': {'level': 1000, 'layer': None, 'type': 'pressure'},\n", - " 'ensemble': {'member': '0'}}" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "ds[0].dump()" ] @@ -2179,387 +1035,18 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "
edition1
centreecmf
typeOfLevelisobaricInhPa
level1000
dataDate20180801
stepRange0
dataTypean
shortNamet
packingTypegrid_simple
gridTyperegular_ll
" - ], - "text/plain": [ - "{'ls': {'edition': 1,\n", - " 'centre': 'ecmf',\n", - " 'typeOfLevel': 'isobaricInhPa',\n", - " 'level': 1000,\n", - " 'dataDate': 20180801,\n", - " 'stepRange': '0',\n", - " 'dataType': 'an',\n", - " 'shortName': 't',\n", - " 'packingType': 'grid_simple',\n", - " 'gridType': 'regular_ll'}}" - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "ds[0].dump(part=\"metadata\", filter=\"ls\")" ] }, { "cell_type": "code", - "execution_count": 24, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
Field
\n", - "
\n", - "
\n", - "
\n", - "
\n", - "
\n", - "\n", - "\n", - "\n", - "
\n", - "\n", - "\n", - "\n", - "
centreecmf
paramId130
unitsK
nameTemperature
shortNamet
\n", - "
\n", - " \n", - "\n", - "\n", - "
\n", - "\n", - "\n", - "\n", - "
dataDate20180801
dataTime1200
stepUnits1
stepTypeinstant
stepRange0
startStep0
endStep0
validityDate20180801
validityTime1200
\n", - "
\n", - " \n", - "\n", - "\n", - "
\n", - "\n", - "\n", - "\n", - "
typeOfLevelisobaricInhPa
level1000
\n", - "
\n", - " \n", - "\n", - "\n", - "
\n", - "\n", - "\n", - "\n", - "
Ni12
Nj7
latitudeOfFirstGridPointInDegrees90.0
longitudeOfFirstGridPointInDegrees0.0
latitudeOfLastGridPointInDegrees-90.0
longitudeOfLastGridPointInDegrees330.0
iScansNegatively0
jScansPositively0
jPointsAreConsecutive0
jDirectionIncrementInDegrees30.0
iDirectionIncrementInDegrees30.0
gridTyperegular_ll
\n", - "
\n", - " \n", - "\n", - "\n", - "
\n", - "\n", - "\n", - "\n", - "
edition1
centreecmf
typeOfLevelisobaricInhPa
level1000
dataDate20180801
stepRange0
dataTypean
shortNamet
packingTypegrid_simple
gridTyperegular_ll
\n", - "
\n", - " \n", - "\n", - "\n", - "
\n", - "\n", - "\n", - "\n", - "
domaing
levtypepl
levelist1000
date20180801
time1200
step0
paramt
classod
typean
streamoper
expver0001
\n", - "
\n", - " \n", - "\n", - "\n", - "
\n", - "\n", - "\n", - "\n", - "
max320.5641784667969
min240.56417846679688
avg279.70703560965404
sd19.67421739058438
skew-0.7312302105044428
kurt-0.16904561574741717
const0.0
\n", - "
\n", - " \n", - "
\n", - "
\n", - "
\n", - "
\n", - "
\n", - " " - ], - "text/plain": [ - "{'parameter': {'centre': 'ecmf',\n", - " 'paramId': 130,\n", - " 'units': 'K',\n", - " 'name': 'Temperature',\n", - " 'shortName': 't'},\n", - " 'time': {'dataDate': 20180801,\n", - " 'dataTime': 1200,\n", - " 'stepUnits': 1,\n", - " 'stepType': 'instant',\n", - " 'stepRange': '0',\n", - " 'startStep': 0,\n", - " 'endStep': 0,\n", - " 'validityDate': 20180801,\n", - " 'validityTime': 1200},\n", - " 'vertical': {'typeOfLevel': 'isobaricInhPa', 'level': 1000},\n", - " 'geography': {'Ni': 12,\n", - " 'Nj': 7,\n", - " 'latitudeOfFirstGridPointInDegrees': 90.0,\n", - " 'longitudeOfFirstGridPointInDegrees': 0.0,\n", - " 'latitudeOfLastGridPointInDegrees': -90.0,\n", - " 'longitudeOfLastGridPointInDegrees': 330.0,\n", - " 'iScansNegatively': 0,\n", - " 'jScansPositively': 0,\n", - " 'jPointsAreConsecutive': 0,\n", - " 'jDirectionIncrementInDegrees': 30.0,\n", - " 'iDirectionIncrementInDegrees': 30.0,\n", - " 'gridType': 'regular_ll'},\n", - " 'ls': {'edition': 1,\n", - " 'centre': 'ecmf',\n", - " 'typeOfLevel': 'isobaricInhPa',\n", - " 'level': 1000,\n", - " 'dataDate': 20180801,\n", - " 'stepRange': '0',\n", - " 'dataType': 'an',\n", - " 'shortName': 't',\n", - " 'packingType': 'grid_simple',\n", - " 'gridType': 'regular_ll'},\n", - " 'mars': {'domain': 'g',\n", - " 'levtype': 'pl',\n", - " 'levelist': 1000,\n", - " 'date': 20180801,\n", - " 'time': 1200,\n", - " 'step': 0,\n", - " 'param': 't',\n", - " 'class': 'od',\n", - " 'type': 'an',\n", - " 'stream': 'oper',\n", - " 'expver': '0001'},\n", - " 'statistics': {'max': 320.5641784667969,\n", - " 'min': 240.56417846679688,\n", - " 'avg': 279.70703560965404,\n", - " 'sd': 19.67421739058438,\n", - " 'skew': -0.7312302105044428,\n", - " 'kurt': -0.16904561574741717,\n", - " 'const': 0.0}}" - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "ds[0].dump(\"metadata\")" ] diff --git a/docs/examples/grib_to_file_pattern_target.ipynb b/docs/examples/grib_to_file_pattern_target.ipynb index 15a713a7..64a0f4d4 100644 --- a/docs/examples/grib_to_file_pattern_target.ipynb +++ b/docs/examples/grib_to_file_pattern_target.ipynb @@ -25,26 +25,11 @@ }, "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", - " 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", " t\n", - " isobaricInhPa\n", + " 2018-08-01 12:00:00\n", + " 2018-08-01 12:00:00\n", + " 0 days\n", " 850\n", - " 20180801\n", - " 1200\n", - " 0\n", - " an\n", + " pressure\n", " 0\n", " regular_ll\n", " \n", @@ -157,11 +138,11 @@ "" ], "text/plain": [ - " centre shortName typeOfLevel level dataDate dataTime stepRange \\\n", - "0 ecmf t isobaricInhPa 850 20180801 1200 0 \n", + " parameter.variable time.valid_datetime time.base_datetime time.step \\\n", + "0 t 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", "\n", - " dataType number gridType \n", - "0 an 0 regular_ll " + " vertical.level vertical.level_type ensemble.member geography.grid_type \n", + "0 850 pressure 0 regular_ll " ] }, "execution_count": 3, @@ -171,13 +152,13 @@ ], "source": [ "# writing only temperature fields\n", - "ds.sel(param=\"t\").to_target(\"file-pattern\", out_pattern)\n", + "ds.sel({\"parameter.variable\": \"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()" + "ekd.from_source(\"file\", \"_res_pattern_t_850.grib\").to_fieldlist().ls()" ] }, { @@ -213,44 +194,43 @@ " \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", " bitsPerValue\n", " \n", " \n", " \n", " \n", " 0\n", - " ecmf\n", " t\n", - " isobaricInhPa\n", + " 2025-01-08 12:00:00\n", + " 2025-01-08 12:00:00\n", + " 0 days\n", " 850\n", - " 20250108\n", - " 1200\n", - " 0\n", - " an\n", + " pressure\n", " 0\n", " regular_ll\n", - " 8\n", + " None\n", " \n", " \n", "\n", "" ], "text/plain": [ - " centre shortName typeOfLevel level dataDate dataTime stepRange \\\n", - "0 ecmf t isobaricInhPa 850 20250108 1200 0 \n", + " parameter.variable time.valid_datetime time.base_datetime time.step \\\n", + "0 t 2025-01-08 12:00:00 2025-01-08 12:00:00 0 days \n", + "\n", + " vertical.level vertical.level_type ensemble.member geography.grid_type \\\n", + "0 850 pressure 0 regular_ll \n", "\n", - " dataType number gridType bitsPerValue \n", - "0 an 0 regular_ll 8 " + " bitsPerValue \n", + "0 None " ] }, "execution_count": 4, @@ -263,7 +243,7 @@ "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\"])" + "ekd.from_source(\"file\", \"_res_pattern_t_850.grib\").to_fieldlist().ls(extra_keys=[\"bitsPerValue\"])" ] }, { @@ -410,9 +390,9 @@ ], "metadata": { "kernelspec": { - "display_name": "dev_ecc", + "display_name": "dev", "language": "python", - "name": "dev_ecc" + "name": "dev" }, "language_info": { "codemirror_mode": { @@ -424,7 +404,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.13" + "version": "3.13.1" } }, "nbformat": 4, diff --git a/docs/examples/grib_to_file_target.ipynb b/docs/examples/grib_to_file_target.ipynb index 97bcf1da..c2deaaaf 100644 --- a/docs/examples/grib_to_file_target.ipynb +++ b/docs/examples/grib_to_file_target.ipynb @@ -25,26 +25,11 @@ }, "tags": [] }, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "test.grib: 0%| | 0.00/1.03k [00:00\n", " \n", " \n", - " centre\n", - " shortName\n", - " typeOfLevel\n", - " level\n", - " dataDate\n", - " dataTime\n", - " stepRange\n", - " dataType\n", - " number\n", - " gridType\n", - " bitsPerValue\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", + " metadata.bitsPerValue\n", " \n", " \n", " \n", " \n", " 0\n", - " ecmf\n", " 2t\n", - " surface\n", - " 0\n", - " 20250108\n", - " 1200\n", + " 2025-01-08 12:00:00\n", + " 2025-01-08 12:00:00\n", + " 0 days\n", " 0\n", - " an\n", + " surface\n", " 0\n", " regular_ll\n", " 8\n", " \n", " \n", " 1\n", - " ecmf\n", " msl\n", - " surface\n", - " 0\n", - " 20250108\n", - " 1200\n", + " 2025-01-08 12:00:00\n", + " 2025-01-08 12:00:00\n", + " 0 days\n", " 0\n", - " an\n", + " surface\n", " 0\n", " regular_ll\n", " 8\n", @@ -176,13 +155,17 @@ "" ], "text/plain": [ - " centre shortName typeOfLevel level dataDate dataTime stepRange dataType \\\n", - "0 ecmf 2t surface 0 20250108 1200 0 an \n", - "1 ecmf msl surface 0 20250108 1200 0 an \n", + " parameter.variable time.valid_datetime time.base_datetime time.step \\\n", + "0 2t 2025-01-08 12:00:00 2025-01-08 12:00:00 0 days \n", + "1 msl 2025-01-08 12:00:00 2025-01-08 12:00:00 0 days \n", + "\n", + " vertical.level vertical.level_type ensemble.member geography.grid_type \\\n", + "0 0 surface 0 regular_ll \n", + "1 0 surface 0 regular_ll \n", "\n", - " number gridType bitsPerValue \n", - "0 0 regular_ll 8 \n", - "1 0 regular_ll 8 " + " metadata.bitsPerValue \n", + "0 8 \n", + "1 8 " ] }, "execution_count": 3, @@ -194,7 +177,7 @@ "# setting GRIB keys for the output\n", "ds.to_target(\"file\", \"_res_t.grib\", metadata={\"date\": 20250108}, bitsPerValue=8)\n", "\n", - "ekd.from_source(\"file\", \"_res_t.grib\").ls(extra_keys=[\"bitsPerValue\"])" + "ekd.from_source(\"file\", \"_res_t.grib\").to_fieldlist().ls(extra_keys=[\"metadata.bitsPerValue\"])" ] }, { @@ -230,44 +213,38 @@ " \n", " \n", " \n", - " centre\n", - " shortName\n", - " typeOfLevel\n", - " level\n", - " dataDate\n", - " dataTime\n", - " stepRange\n", - " dataType\n", - " number\n", - " gridType\n", - " bitsPerValue\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", + " metadata.bitsPerValue\n", " \n", " \n", " \n", " \n", " 0\n", - " ecmf\n", " msl\n", - " surface\n", + " 2020-05-13 12:00:00\n", + " 2020-05-13 12:00:00\n", + " 0 days\n", " 0\n", - " 20200513\n", - " 1200\n", - " 0\n", - " an\n", + " surface\n", " 0\n", " regular_ll\n", " 16\n", " \n", " \n", " 1\n", - " ecmf\n", " 2t\n", - " surface\n", + " 2020-05-13 12:00:00\n", + " 2020-05-13 12:00:00\n", + " 0 days\n", " 0\n", - " 20200513\n", - " 1200\n", - " 0\n", - " an\n", + " surface\n", " 0\n", " regular_ll\n", " 16\n", @@ -277,13 +254,17 @@ "" ], "text/plain": [ - " centre shortName typeOfLevel level dataDate dataTime stepRange dataType \\\n", - "0 ecmf msl surface 0 20200513 1200 0 an \n", - "1 ecmf 2t surface 0 20200513 1200 0 an \n", + " parameter.variable time.valid_datetime time.base_datetime time.step \\\n", + "0 msl 2020-05-13 12:00:00 2020-05-13 12:00:00 0 days \n", + "1 2t 2020-05-13 12:00:00 2020-05-13 12:00:00 0 days \n", + "\n", + " vertical.level vertical.level_type ensemble.member geography.grid_type \\\n", + "0 0 surface 0 regular_ll \n", + "1 0 surface 0 regular_ll \n", "\n", - " number gridType bitsPerValue \n", - "0 0 regular_ll 16 \n", - "1 0 regular_ll 16 " + " metadata.bitsPerValue \n", + "0 16 \n", + "1 16 " ] }, "execution_count": 4, @@ -295,7 +276,7 @@ "# data can be appended to the output file\n", "ds[1].to_target(\"file\", \"_res_t.grib\")\n", "ds[0].to_target(\"file\", \"_res_t.grib\", append=True)\n", - "ekd.from_source(\"file\", \"_res_t.grib\").ls(extra_keys=[\"bitsPerValue\"])" + "ekd.from_source(\"file\", \"_res_t.grib\").to_fieldlist().ls(extra_keys=[\"metadata.bitsPerValue\"])" ] }, { @@ -456,7 +437,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.12" + "version": "3.13.1" } }, "nbformat": 4, diff --git a/docs/examples/grib_to_geotiff.ipynb b/docs/examples/grib_to_geotiff.ipynb index 1e9ba5fc..7e1f16fe 100644 --- a/docs/examples/grib_to_geotiff.ipynb +++ b/docs/examples/grib_to_geotiff.ipynb @@ -26,20 +26,6 @@ "tags": [] }, "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "test.grib: 0%| | 0.00/1.03k [00:00\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", - " 0\n", - " 20200513\n", - " 1200\n", + " 2020-05-13 12:00:00\n", + " 2020-05-13 12:00:00\n", + " 0 days\n", " 0\n", - " an\n", + " surface\n", " 0\n", " regular_ll\n", " \n", " \n", " 1\n", - " ecmf\n", " msl\n", - " surface\n", + " 2020-05-13 12:00:00\n", + " 2020-05-13 12:00:00\n", + " 0 days\n", " 0\n", - " 20200513\n", - " 1200\n", - " 0\n", - " an\n", + " surface\n", " 0\n", " regular_ll\n", " \n", @@ -105,13 +85,13 @@ "" ], "text/plain": [ - " centre shortName typeOfLevel level dataDate dataTime stepRange dataType \\\n", - "0 ecmf 2t surface 0 20200513 1200 0 an \n", - "1 ecmf msl surface 0 20200513 1200 0 an \n", + " parameter.variable time.valid_datetime time.base_datetime time.step \\\n", + "0 2t 2020-05-13 12:00:00 2020-05-13 12:00:00 0 days \n", + "1 msl 2020-05-13 12:00:00 2020-05-13 12:00:00 0 days \n", "\n", - " number gridType \n", - "0 0 regular_ll \n", - "1 0 regular_ll " + " vertical.level vertical.level_type ensemble.member geography.grid_type \n", + "0 0 surface 0 regular_ll \n", + "1 0 surface 0 regular_ll " ] }, "execution_count": 1, @@ -122,7 +102,7 @@ "source": [ "import earthkit.data as ekd\n", "ds = ekd.from_source(\"sample\", \"test.grib\")\n", - "ds.ls()" + "ds.to_fieldlist().ls()" ] }, { @@ -203,29 +183,51 @@ " \n", " \n", " \n", - " variable\n", - " band\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", " 2 metre temperature\n", - " 1\n", + " None\n", + " None\n", + " None\n", + " None\n", + " unknown\n", + " None\n", + " None\n", " \n", " \n", " 1\n", " Mean sea level pressure\n", - " 2\n", + " None\n", + " None\n", + " None\n", + " None\n", + " unknown\n", + " None\n", + " None\n", " \n", " \n", "\n", "" ], "text/plain": [ - " variable band\n", - "0 2 metre temperature 1\n", - "1 Mean sea level pressure 2" + " parameter.variable time.valid_datetime time.base_datetime time.step \\\n", + "0 2 metre temperature None None None \n", + "1 Mean sea level pressure None None None \n", + "\n", + " vertical.level vertical.level_type ensemble.member geography.grid_type \n", + "0 None unknown None None \n", + "1 None unknown None None " ] }, "execution_count": 3, @@ -235,7 +237,7 @@ ], "source": [ "ds1 = ekd.from_source(\"file\", \"_test.tiff\")\n", - "ds1.ls()" + "ds1.to_fieldlist().ls()" ] }, { @@ -263,9 +265,9 @@ ], "metadata": { "kernelspec": { - "display_name": "dev_ecc", + "display_name": "dev", "language": "python", - "name": "dev_ecc" + "name": "dev" }, "language_info": { "codemirror_mode": { @@ -277,7 +279,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.13" + "version": "3.13.1" } }, "nbformat": 4, diff --git a/docs/examples/grib_to_netcdf.ipynb b/docs/examples/grib_to_netcdf.ipynb index 41c33994..dd66ebbd 100644 --- a/docs/examples/grib_to_netcdf.ipynb +++ b/docs/examples/grib_to_netcdf.ipynb @@ -24,7 +24,7 @@ "import earthkit.data as ekd\n", "ekd.download_example_file(\"tuv_pl.grib\")\n", "# we only select the temperature fields\n", - "ds = ekd.from_source(\"file\", \"tuv_pl.grib\").sel(param=\"t\")" + "ds = ekd.from_source(\"file\", \"tuv_pl.grib\").to_fieldlist().sel({\"parameter.variable\": \"t\"})" ] }, { @@ -92,7 +92,9 @@ "\t\tt:_FillValue = NaN ;\n", "\t\tt:standard_name = \"air_temperature\" ;\n", "\t\tt:long_name = \"Temperature\" ;\n", - "\t\tt:units = \"K\" ;\n", + "\t\tt:units = \"kelvin\" ;\n", + "\t\tt:level_type = \"pressure\" ;\n", + "\t\tt:ek_grid_spec = \"{\\\"grid\\\": [30.0, 30.0], \\\"area\\\": [90.0, 0.0, -90.0, 330.0]}\" ;\n", "\tint64 level(level) ;\n", "\t\tlevel:units = \"hPa\" ;\n", "\t\tlevel:positive = \"down\" ;\n", @@ -111,17 +113,6 @@ "\t\tlongitude:long_name = \"longitude\" ;\n", "\n", "// global attributes:\n", - "\t\t:param = \"t\" ;\n", - "\t\t:paramId = 130LL ;\n", - "\t\t:class = \"od\" ;\n", - "\t\t:stream = \"oper\" ;\n", - "\t\t:levtype = \"pl\" ;\n", - "\t\t:type = \"an\" ;\n", - "\t\t:expver = \"0001\" ;\n", - "\t\t:date = 20180801LL ;\n", - "\t\t:time = 1200LL ;\n", - "\t\t:domain = \"g\" ;\n", - "\t\t:number = 0LL ;\n", "\t\t:Conventions = \"CF-1.8\" ;\n", "\t\t:institution = \"ECMWF\" ;\n", "}\n", @@ -189,7 +180,9 @@ "\t\tt:_FillValue = NaN ;\n", "\t\tt:standard_name = \"air_temperature\" ;\n", "\t\tt:long_name = \"Temperature\" ;\n", - "\t\tt:units = \"K\" ;\n", + "\t\tt:units = \"kelvin\" ;\n", + "\t\tt:level_type = \"pressure\" ;\n", + "\t\tt:ek_grid_spec = \"{\\\"grid\\\": [30.0, 30.0], \\\"area\\\": [90.0, 0.0, -90.0, 330.0]}\" ;\n", "\tint64 level(level) ;\n", "\t\tlevel:units = \"hPa\" ;\n", "\t\tlevel:positive = \"down\" ;\n", @@ -208,17 +201,6 @@ "\t\tlongitude:long_name = \"longitude\" ;\n", "\n", "// global attributes:\n", - "\t\t:param = \"t\" ;\n", - "\t\t:paramId = 130LL ;\n", - "\t\t:class = \"od\" ;\n", - "\t\t:stream = \"oper\" ;\n", - "\t\t:levtype = \"pl\" ;\n", - "\t\t:type = \"an\" ;\n", - "\t\t:expver = \"0001\" ;\n", - "\t\t:date = 20180801LL ;\n", - "\t\t:time = 1200LL ;\n", - "\t\t:domain = \"g\" ;\n", - "\t\t:number = 0LL ;\n", "\t\t:Conventions = \"CF-1.8\" ;\n", "\t\t:institution = \"ECMWF\" ;\n", "}\n", @@ -270,40 +252,31 @@ "\tlatitude = 7 ;\n", "\tlongitude = 12 ;\n", "variables:\n", - "\tdouble longitude(longitude) ;\n", - "\t\tlongitude:units = \"degrees_east\" ;\n", - "\t\tlongitude:standard_name = \"longitude\" ;\n", - "\t\tlongitude:long_name = \"longitude\" ;\n", - "\t\tlongitude:_FillValue = NaN ;\n", - "\tdouble latitude(latitude) ;\n", - "\t\tlatitude:units = \"degrees_north\" ;\n", - "\t\tlatitude:standard_name = \"latitude\" ;\n", - "\t\tlatitude:long_name = \"latitude\" ;\n", - "\t\tlatitude:_FillValue = NaN ;\n", "\tdouble t(level, latitude, longitude) ;\n", + "\t\tt:_FillValue = NaN ;\n", "\t\tt:standard_name = \"air_temperature\" ;\n", "\t\tt:long_name = \"Temperature\" ;\n", - "\t\tt:units = \"K\" ;\n", - "\t\tt:_FillValue = NaN ;\n", - "\tint level(level) ;\n", + "\t\tt:units = \"kelvin\" ;\n", + "\t\tt:level_type = \"pressure\" ;\n", + "\t\tt:ek_grid_spec = \"{\\\"grid\\\": [30.0, 30.0], \\\"area\\\": [90.0, 0.0, -90.0, 330.0]}\" ;\n", + "\tint64 level(level) ;\n", "\t\tlevel:units = \"hPa\" ;\n", "\t\tlevel:positive = \"down\" ;\n", "\t\tlevel:stored_direction = \"decreasing\" ;\n", "\t\tlevel:standard_name = \"air_pressure\" ;\n", "\t\tlevel:long_name = \"pressure\" ;\n", + "\tdouble latitude(latitude) ;\n", + "\t\tlatitude:_FillValue = NaN ;\n", + "\t\tlatitude:units = \"degrees_north\" ;\n", + "\t\tlatitude:standard_name = \"latitude\" ;\n", + "\t\tlatitude:long_name = \"latitude\" ;\n", + "\tdouble longitude(longitude) ;\n", + "\t\tlongitude:_FillValue = NaN ;\n", + "\t\tlongitude:units = \"degrees_east\" ;\n", + "\t\tlongitude:standard_name = \"longitude\" ;\n", + "\t\tlongitude:long_name = \"longitude\" ;\n", "\n", "// global attributes:\n", - "\t\t:param = \"t\" ;\n", - "\t\t:paramId = 130 ;\n", - "\t\t:class = \"od\" ;\n", - "\t\t:stream = \"oper\" ;\n", - "\t\t:levtype = \"pl\" ;\n", - "\t\t:type = \"an\" ;\n", - "\t\t:expver = \"0001\" ;\n", - "\t\t:date = 20180801 ;\n", - "\t\t:time = 1200 ;\n", - "\t\t:domain = \"g\" ;\n", - "\t\t:number = 0 ;\n", "\t\t:Conventions = \"CF-1.8\" ;\n", "\t\t:institution = \"ECMWF\" ;\n", "}\n", @@ -339,41 +312,32 @@ "\tlevel = 6 ;\n", "\tvalues = 84 ;\n", "variables:\n", - "\tdouble latitude(values) ;\n", - "\t\tlatitude:units = \"degrees_north\" ;\n", - "\t\tlatitude:standard_name = \"latitude\" ;\n", - "\t\tlatitude:long_name = \"latitude\" ;\n", - "\t\tlatitude:_FillValue = NaN ;\n", - "\tdouble longitude(values) ;\n", - "\t\tlongitude:units = \"degrees_east\" ;\n", - "\t\tlongitude:standard_name = \"longitude\" ;\n", - "\t\tlongitude:long_name = \"longitude\" ;\n", - "\t\tlongitude:_FillValue = NaN ;\n", "\tdouble t(level, values) ;\n", + "\t\tt:_FillValue = NaN ;\n", "\t\tt:standard_name = \"air_temperature\" ;\n", "\t\tt:long_name = \"Temperature\" ;\n", - "\t\tt:units = \"K\" ;\n", + "\t\tt:units = \"kelvin\" ;\n", + "\t\tt:level_type = \"pressure\" ;\n", + "\t\tt:ek_grid_spec = \"{\\\"grid\\\": [30.0, 30.0], \\\"area\\\": [90.0, 0.0, -90.0, 330.0]}\" ;\n", "\t\tt:coordinates = \"latitude longitude\" ;\n", - "\t\tt:_FillValue = NaN ;\n", - "\tint level(level) ;\n", + "\tint64 level(level) ;\n", "\t\tlevel:units = \"hPa\" ;\n", "\t\tlevel:positive = \"down\" ;\n", "\t\tlevel:stored_direction = \"decreasing\" ;\n", "\t\tlevel:standard_name = \"air_pressure\" ;\n", "\t\tlevel:long_name = \"pressure\" ;\n", + "\tdouble latitude(values) ;\n", + "\t\tlatitude:_FillValue = NaN ;\n", + "\t\tlatitude:units = \"degrees_north\" ;\n", + "\t\tlatitude:standard_name = \"latitude\" ;\n", + "\t\tlatitude:long_name = \"latitude\" ;\n", + "\tdouble longitude(values) ;\n", + "\t\tlongitude:_FillValue = NaN ;\n", + "\t\tlongitude:units = \"degrees_east\" ;\n", + "\t\tlongitude:standard_name = \"longitude\" ;\n", + "\t\tlongitude:long_name = \"longitude\" ;\n", "\n", "// global attributes:\n", - "\t\t:param = \"t\" ;\n", - "\t\t:paramId = 130 ;\n", - "\t\t:class = \"od\" ;\n", - "\t\t:stream = \"oper\" ;\n", - "\t\t:levtype = \"pl\" ;\n", - "\t\t:type = \"an\" ;\n", - "\t\t:expver = \"0001\" ;\n", - "\t\t:date = 20180801 ;\n", - "\t\t:time = 1200 ;\n", - "\t\t:domain = \"g\" ;\n", - "\t\t:number = 0 ;\n", "\t\t:Conventions = \"CF-1.8\" ;\n", "\t\t:institution = \"ECMWF\" ;\n", "}\n", @@ -411,7 +375,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.12" + "version": "3.13.1" } }, "nbformat": 4, diff --git a/docs/examples/multi_files.ipynb b/docs/examples/multi_files.ipynb index 473cd8eb..7d7a5647 100644 --- a/docs/examples/multi_files.ipynb +++ b/docs/examples/multi_files.ipynb @@ -72,7 +72,7 @@ "metadata": {}, "outputs": [], "source": [ - "fs = ekd.from_source(\"file\", \"test*.grib\")" + "fs = ekd.from_source(\"file\", \"test*.grib\").to_fieldlist()" ] }, { @@ -103,10 +103,10 @@ { "data": { "text/html": [ - "GribMultiFieldList(GRIBReader(test.grib),GRIBReader(test4.grib),GRIBReader(test6.grib))" + "" ], "text/plain": [ - "GribMultiFieldList(GRIBReader(test.grib),GRIBReader(test4.grib),GRIBReader(test6.grib))" + "" ] }, "execution_count": 5, @@ -131,7 +131,7 @@ "metadata": {}, "outputs": [], "source": [ - "fs = ekd.from_source(\"file\", [\"test.grib\", \"test4.grib\"])" + "fs = ekd.from_source(\"file\", [\"test.grib\", \"test4.grib\"]).to_fieldlist()" ] }, { @@ -162,10 +162,10 @@ { "data": { "text/html": [ - "GribMultiFieldList(GRIBReader(test.grib),GRIBReader(test4.grib))" + "" ], "text/plain": [ - "GribMultiFieldList(GRIBReader(test.grib),GRIBReader(test4.grib))" + "" ] }, "execution_count": 8, @@ -190,7 +190,7 @@ "metadata": {}, "outputs": [], "source": [ - "fs = ekd.from_source(\"file\", \"./_grib_dir_no_sql\")" + "fs = ekd.from_source(\"file\", \"./_grib_dir_no_sql\").to_fieldlist()" ] }, { @@ -221,10 +221,10 @@ { "data": { "text/html": [ - "GribMultiFieldList(GRIBReader(./_grib_dir_no_sql/test.grib),GRIBReader(./_grib_dir_no_sql/test4.grib))" + "" ], "text/plain": [ - "GribMultiFieldList(GRIBReader(./_grib_dir_no_sql/test.grib),GRIBReader(./_grib_dir_no_sql/test4.grib))" + "" ] }, "execution_count": 11, @@ -276,94 +276,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", " 2t\n", - " surface\n", - " 0\n", - " 20200513\n", - " 1200\n", + " 2020-05-13 12:00:00\n", + " 2020-05-13 12:00:00\n", + " 0 days\n", " 0\n", - " an\n", + " surface\n", " 0\n", " regular_ll\n", " \n", " \n", " 1\n", - " ecmf\n", " msl\n", - " surface\n", + " 2020-05-13 12:00:00\n", + " 2020-05-13 12:00:00\n", + " 0 days\n", " 0\n", - " 20200513\n", - " 1200\n", - " 0\n", - " an\n", + " surface\n", " 0\n", " regular_ll\n", " \n", " \n", " 2\n", - " ecmf\n", " t\n", - " isobaricInhPa\n", + " 2007-01-01 12:00:00\n", + " 2007-01-01 12:00:00\n", + " 0 days\n", " 500\n", - " 20070101\n", - " 1200\n", - " 0\n", - " an\n", + " pressure\n", " 0\n", " regular_ll\n", " \n", " \n", " 3\n", - " ecmf\n", " z\n", - " isobaricInhPa\n", + " 2007-01-01 12:00:00\n", + " 2007-01-01 12:00:00\n", + " 0 days\n", " 500\n", - " 20070101\n", - " 1200\n", - " 0\n", - " an\n", + " pressure\n", " 0\n", " regular_ll\n", " \n", " \n", " 4\n", - " ecmf\n", " t\n", - " isobaricInhPa\n", + " 2007-01-01 12:00:00\n", + " 2007-01-01 12:00:00\n", + " 0 days\n", " 850\n", - " 20070101\n", - " 1200\n", - " 0\n", - " an\n", + " pressure\n", " 0\n", " regular_ll\n", " \n", " \n", " 5\n", - " ecmf\n", " z\n", - " isobaricInhPa\n", + " 2007-01-01 12:00:00\n", + " 2007-01-01 12:00:00\n", + " 0 days\n", " 850\n", - " 20070101\n", - " 1200\n", - " 0\n", - " an\n", + " pressure\n", " 0\n", " regular_ll\n", " \n", @@ -372,21 +358,21 @@ "" ], "text/plain": [ - " centre shortName typeOfLevel level dataDate dataTime stepRange \\\n", - "0 ecmf 2t surface 0 20200513 1200 0 \n", - "1 ecmf msl surface 0 20200513 1200 0 \n", - "2 ecmf t isobaricInhPa 500 20070101 1200 0 \n", - "3 ecmf z isobaricInhPa 500 20070101 1200 0 \n", - "4 ecmf t isobaricInhPa 850 20070101 1200 0 \n", - "5 ecmf z isobaricInhPa 850 20070101 1200 0 \n", - "\n", - " dataType number gridType \n", - "0 an 0 regular_ll \n", - "1 an 0 regular_ll \n", - "2 an 0 regular_ll \n", - "3 an 0 regular_ll \n", - "4 an 0 regular_ll \n", - "5 an 0 regular_ll " + " parameter.variable time.valid_datetime time.base_datetime time.step \\\n", + "0 2t 2020-05-13 12:00:00 2020-05-13 12:00:00 0 days \n", + "1 msl 2020-05-13 12:00:00 2020-05-13 12:00:00 0 days \n", + "2 t 2007-01-01 12:00:00 2007-01-01 12:00:00 0 days \n", + "3 z 2007-01-01 12:00:00 2007-01-01 12:00:00 0 days \n", + "4 t 2007-01-01 12:00:00 2007-01-01 12:00:00 0 days \n", + "5 z 2007-01-01 12:00:00 2007-01-01 12:00:00 0 days \n", + "\n", + " vertical.level vertical.level_type ensemble.member geography.grid_type \n", + "0 0 surface 0 regular_ll \n", + "1 0 surface 0 regular_ll \n", + "2 500 pressure 0 regular_ll \n", + "3 500 pressure 0 regular_ll \n", + "4 850 pressure 0 regular_ll \n", + "5 850 pressure 0 regular_ll " ] }, "execution_count": 12, @@ -405,8 +391,223 @@ "outputs": [ { "data": { + "text/html": [ + "
Field
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "
\n", + "\n", + "\n", + "\n", + "
variablet
unitskelvin
\n", + "
\n", + " \n", + "\n", + "\n", + "
\n", + "\n", + "\n", + "\n", + "
valid_datetime2007-01-01 12:00:00
base_datetime2007-01-01 12:00:00
step0:00:00
\n", + "
\n", + " \n", + "\n", + "\n", + "
\n", + "\n", + "\n", + "\n", + "
level500
layerNone
level_typepressure
\n", + "
\n", + " \n", + "\n", + "\n", + "
\n", + "\n", + "\n", + "\n", + "
member0
\n", + "
\n", + " \n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + " " + ], "text/plain": [ - "GribField(t,500,20070101,1200,0,0)" + "Field(t, 2007-01-01 12:00:00, 2007-01-01 12:00:00, 0:00:00, 500, pressure, 0, regular_ll)" ] }, "execution_count": 13, @@ -444,81 +645,69 @@ " \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", - " 20200513\n", - " 1200\n", + " 2020-05-13 12:00:00\n", + " 2020-05-13 12:00:00\n", + " 0 days\n", " 0\n", - " an\n", + " surface\n", " 0\n", " regular_ll\n", " \n", " \n", " 1\n", - " ecmf\n", " t\n", - " isobaricInhPa\n", + " 2007-01-01 12:00:00\n", + " 2007-01-01 12:00:00\n", + " 0 days\n", " 500\n", - " 20070101\n", - " 1200\n", - " 0\n", - " an\n", + " pressure\n", " 0\n", " regular_ll\n", " \n", " \n", " 2\n", - " ecmf\n", " z\n", - " isobaricInhPa\n", + " 2007-01-01 12:00:00\n", + " 2007-01-01 12:00:00\n", + " 0 days\n", " 500\n", - " 20070101\n", - " 1200\n", - " 0\n", - " an\n", + " pressure\n", " 0\n", " regular_ll\n", " \n", " \n", " 3\n", - " ecmf\n", " t\n", - " isobaricInhPa\n", + " 2007-01-01 12:00:00\n", + " 2007-01-01 12:00:00\n", + " 0 days\n", " 850\n", - " 20070101\n", - " 1200\n", - " 0\n", - " an\n", + " pressure\n", " 0\n", " regular_ll\n", " \n", " \n", " 4\n", - " ecmf\n", " z\n", - " isobaricInhPa\n", + " 2007-01-01 12:00:00\n", + " 2007-01-01 12:00:00\n", + " 0 days\n", " 850\n", - " 20070101\n", - " 1200\n", - " 0\n", - " an\n", + " pressure\n", " 0\n", " regular_ll\n", " \n", @@ -527,19 +716,19 @@ "" ], "text/plain": [ - " centre shortName typeOfLevel level dataDate dataTime stepRange \\\n", - "0 ecmf msl surface 0 20200513 1200 0 \n", - "1 ecmf t isobaricInhPa 500 20070101 1200 0 \n", - "2 ecmf z isobaricInhPa 500 20070101 1200 0 \n", - "3 ecmf t isobaricInhPa 850 20070101 1200 0 \n", - "4 ecmf z isobaricInhPa 850 20070101 1200 0 \n", - "\n", - " dataType number gridType \n", - "0 an 0 regular_ll \n", - "1 an 0 regular_ll \n", - "2 an 0 regular_ll \n", - "3 an 0 regular_ll \n", - "4 an 0 regular_ll " + " parameter.variable time.valid_datetime time.base_datetime time.step \\\n", + "0 msl 2020-05-13 12:00:00 2020-05-13 12:00:00 0 days \n", + "1 t 2007-01-01 12:00:00 2007-01-01 12:00:00 0 days \n", + "2 z 2007-01-01 12:00:00 2007-01-01 12:00:00 0 days \n", + "3 t 2007-01-01 12:00:00 2007-01-01 12:00:00 0 days \n", + "4 z 2007-01-01 12:00:00 2007-01-01 12:00:00 0 days \n", + "\n", + " vertical.level vertical.level_type ensemble.member geography.grid_type \n", + "0 0 surface 0 regular_ll \n", + "1 500 pressure 0 regular_ll \n", + "2 500 pressure 0 regular_ll \n", + "3 850 pressure 0 regular_ll \n", + "4 850 pressure 0 regular_ll " ] }, "execution_count": 14, @@ -578,42 +767,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", " z\n", - " isobaricInhPa\n", + " 2007-01-01 12:00:00\n", + " 2007-01-01 12:00:00\n", + " 0 days\n", " 500\n", - " 20070101\n", - " 1200\n", - " 0\n", - " an\n", + " pressure\n", " 0\n", " regular_ll\n", " \n", " \n", " 1\n", - " ecmf\n", " z\n", - " isobaricInhPa\n", + " 2007-01-01 12:00:00\n", + " 2007-01-01 12:00:00\n", + " 0 days\n", " 850\n", - " 20070101\n", - " 1200\n", - " 0\n", - " an\n", + " pressure\n", " 0\n", " regular_ll\n", " \n", @@ -622,13 +805,13 @@ "" ], "text/plain": [ - " centre shortName typeOfLevel level dataDate dataTime stepRange \\\n", - "0 ecmf z isobaricInhPa 500 20070101 1200 0 \n", - "1 ecmf z isobaricInhPa 850 20070101 1200 0 \n", + " parameter.variable time.valid_datetime time.base_datetime time.step \\\n", + "0 z 2007-01-01 12:00:00 2007-01-01 12:00:00 0 days \n", + "1 z 2007-01-01 12:00:00 2007-01-01 12:00:00 0 days \n", "\n", - " dataType number gridType \n", - "0 an 0 regular_ll \n", - "1 an 0 regular_ll " + " vertical.level vertical.level_type ensemble.member geography.grid_type \n", + "0 500 pressure 0 regular_ll \n", + "1 850 pressure 0 regular_ll " ] }, "execution_count": 15, @@ -637,16 +820,16 @@ } ], "source": [ - "g = fs[3:6].sel(param=\"z\").order_by(\"level\")\n", + "g = fs[3:6].sel({\"parameter.variable\": \"z\"}).order_by(\"vertical.level\")\n", "g.ls()" ] } ], "metadata": { "kernelspec": { - "display_name": "dev_ecc", + "display_name": "dev", "language": "python", - "name": "dev_ecc" + "name": "dev" }, "language_info": { "codemirror_mode": { @@ -658,7 +841,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.13" + "version": "3.13.1" } }, "nbformat": 4, diff --git a/docs/examples/netcdf_fieldlist.ipynb b/docs/examples/netcdf_fieldlist.ipynb index f6d108a1..1dbd3ede 100644 --- a/docs/examples/netcdf_fieldlist.ipynb +++ b/docs/examples/netcdf_fieldlist.ipynb @@ -50,7 +50,7 @@ "metadata": {}, "outputs": [], "source": [ - "ds = ekd.from_source(\"file\", \"tuv_pl.nc\")" + "ds = ekd.from_source(\"file\", \"tuv_pl.nc\").to_fieldlist()" ] }, { @@ -96,9 +96,9 @@ "name": "stdout", "output_type": "stream", "text": [ - "NetCDFField(t,level=1000,time=2018-08-01 12:00:00)\n", - "NetCDFField(t,level=850,time=2018-08-01 12:00:00)\n", - "NetCDFField(t,level=700,time=2018-08-01 12:00:00)\n" + "Field(t, 2018-08-01 12:00:00, 2018-08-01 12:00:00, 0:00:00, 1000, pressure, 0, None)\n", + "Field(t, 2018-08-01 12:00:00, 2018-08-01 12:00:00, 0:00:00, 850, pressure, 0, None)\n", + "Field(t, 2018-08-01 12:00:00, 2018-08-01 12:00:00, 0:00:00, 700, pressure, 0, None)\n" ] } ], @@ -160,163 +160,259 @@ " \n", " \n", " \n", - " variable\n", - " level\n", - " valid_datetime\n", - " units\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", " t\n", + " 2018-08-01 12:00:00\n", + " 2018-08-01 12:00:00\n", + " 0 days\n", " 1000\n", - " 2018-08-01T12:00:00\n", - " K\n", + " pressure\n", + " 0\n", + " None\n", " \n", " \n", " 1\n", " t\n", + " 2018-08-01 12:00:00\n", + " 2018-08-01 12:00:00\n", + " 0 days\n", " 850\n", - " 2018-08-01T12:00:00\n", - " K\n", + " pressure\n", + " 0\n", + " None\n", " \n", " \n", " 2\n", " t\n", + " 2018-08-01 12:00:00\n", + " 2018-08-01 12:00:00\n", + " 0 days\n", " 700\n", - " 2018-08-01T12:00:00\n", - " K\n", + " pressure\n", + " 0\n", + " None\n", " \n", " \n", " 3\n", " t\n", + " 2018-08-01 12:00:00\n", + " 2018-08-01 12:00:00\n", + " 0 days\n", " 500\n", - " 2018-08-01T12:00:00\n", - " K\n", + " pressure\n", + " 0\n", + " None\n", " \n", " \n", " 4\n", " t\n", + " 2018-08-01 12:00:00\n", + " 2018-08-01 12:00:00\n", + " 0 days\n", " 400\n", - " 2018-08-01T12:00:00\n", - " K\n", + " pressure\n", + " 0\n", + " None\n", " \n", " \n", " 5\n", " t\n", + " 2018-08-01 12:00:00\n", + " 2018-08-01 12:00:00\n", + " 0 days\n", " 300\n", - " 2018-08-01T12:00:00\n", - " K\n", + " pressure\n", + " 0\n", + " None\n", " \n", " \n", " 6\n", " u\n", + " 2018-08-01 12:00:00\n", + " 2018-08-01 12:00:00\n", + " 0 days\n", " 1000\n", - " 2018-08-01T12:00:00\n", - " m s**-1\n", + " pressure\n", + " 0\n", + " None\n", " \n", " \n", " 7\n", " u\n", + " 2018-08-01 12:00:00\n", + " 2018-08-01 12:00:00\n", + " 0 days\n", " 850\n", - " 2018-08-01T12:00:00\n", - " m s**-1\n", + " pressure\n", + " 0\n", + " None\n", " \n", " \n", " 8\n", " u\n", + " 2018-08-01 12:00:00\n", + " 2018-08-01 12:00:00\n", + " 0 days\n", " 700\n", - " 2018-08-01T12:00:00\n", - " m s**-1\n", + " pressure\n", + " 0\n", + " None\n", " \n", " \n", " 9\n", " u\n", + " 2018-08-01 12:00:00\n", + " 2018-08-01 12:00:00\n", + " 0 days\n", " 500\n", - " 2018-08-01T12:00:00\n", - " m s**-1\n", + " pressure\n", + " 0\n", + " None\n", " \n", " \n", " 10\n", " u\n", + " 2018-08-01 12:00:00\n", + " 2018-08-01 12:00:00\n", + " 0 days\n", " 400\n", - " 2018-08-01T12:00:00\n", - " m s**-1\n", + " pressure\n", + " 0\n", + " None\n", " \n", " \n", " 11\n", " u\n", + " 2018-08-01 12:00:00\n", + " 2018-08-01 12:00:00\n", + " 0 days\n", " 300\n", - " 2018-08-01T12:00:00\n", - " m s**-1\n", + " pressure\n", + " 0\n", + " None\n", " \n", " \n", " 12\n", " v\n", + " 2018-08-01 12:00:00\n", + " 2018-08-01 12:00:00\n", + " 0 days\n", " 1000\n", - " 2018-08-01T12:00:00\n", - " m s**-1\n", + " pressure\n", + " 0\n", + " None\n", " \n", " \n", " 13\n", " v\n", + " 2018-08-01 12:00:00\n", + " 2018-08-01 12:00:00\n", + " 0 days\n", " 850\n", - " 2018-08-01T12:00:00\n", - " m s**-1\n", + " pressure\n", + " 0\n", + " None\n", " \n", " \n", " 14\n", " v\n", + " 2018-08-01 12:00:00\n", + " 2018-08-01 12:00:00\n", + " 0 days\n", " 700\n", - " 2018-08-01T12:00:00\n", - " m s**-1\n", + " pressure\n", + " 0\n", + " None\n", " \n", " \n", " 15\n", " v\n", + " 2018-08-01 12:00:00\n", + " 2018-08-01 12:00:00\n", + " 0 days\n", " 500\n", - " 2018-08-01T12:00:00\n", - " m s**-1\n", + " pressure\n", + " 0\n", + " None\n", " \n", " \n", " 16\n", " v\n", + " 2018-08-01 12:00:00\n", + " 2018-08-01 12:00:00\n", + " 0 days\n", " 400\n", - " 2018-08-01T12:00:00\n", - " m s**-1\n", + " pressure\n", + " 0\n", + " None\n", " \n", " \n", " 17\n", " v\n", + " 2018-08-01 12:00:00\n", + " 2018-08-01 12:00:00\n", + " 0 days\n", " 300\n", - " 2018-08-01T12:00:00\n", - " m s**-1\n", + " pressure\n", + " 0\n", + " None\n", " \n", " \n", "\n", "" ], "text/plain": [ - " variable level valid_datetime units\n", - "0 t 1000 2018-08-01T12:00:00 K\n", - "1 t 850 2018-08-01T12:00:00 K\n", - "2 t 700 2018-08-01T12:00:00 K\n", - "3 t 500 2018-08-01T12:00:00 K\n", - "4 t 400 2018-08-01T12:00:00 K\n", - "5 t 300 2018-08-01T12:00:00 K\n", - "6 u 1000 2018-08-01T12:00:00 m s**-1\n", - "7 u 850 2018-08-01T12:00:00 m s**-1\n", - "8 u 700 2018-08-01T12:00:00 m s**-1\n", - "9 u 500 2018-08-01T12:00:00 m s**-1\n", - "10 u 400 2018-08-01T12:00:00 m s**-1\n", - "11 u 300 2018-08-01T12:00:00 m s**-1\n", - "12 v 1000 2018-08-01T12:00:00 m s**-1\n", - "13 v 850 2018-08-01T12:00:00 m s**-1\n", - "14 v 700 2018-08-01T12:00:00 m s**-1\n", - "15 v 500 2018-08-01T12:00:00 m s**-1\n", - "16 v 400 2018-08-01T12:00:00 m s**-1\n", - "17 v 300 2018-08-01T12:00:00 m s**-1" + " parameter.variable time.valid_datetime time.base_datetime time.step \\\n", + "0 t 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", + "1 t 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", + "2 t 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", + "3 t 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", + "4 t 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", + "5 t 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", + "6 u 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", + "7 u 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", + "8 u 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", + "9 u 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", + "10 u 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", + "11 u 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", + "12 v 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", + "13 v 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", + "14 v 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", + "15 v 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", + "16 v 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", + "17 v 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", + "\n", + " vertical.level vertical.level_type ensemble.member geography.grid_type \n", + "0 1000 pressure 0 None \n", + "1 850 pressure 0 None \n", + "2 700 pressure 0 None \n", + "3 500 pressure 0 None \n", + "4 400 pressure 0 None \n", + "5 300 pressure 0 None \n", + "6 1000 pressure 0 None \n", + "7 850 pressure 0 None \n", + "8 700 pressure 0 None \n", + "9 500 pressure 0 None \n", + "10 400 pressure 0 None \n", + "11 300 pressure 0 None \n", + "12 1000 pressure 0 None \n", + "13 850 pressure 0 None \n", + "14 700 pressure 0 None \n", + "15 500 pressure 0 None \n", + "16 400 pressure 0 None \n", + "17 300 pressure 0 None " ] }, "execution_count": 5, @@ -349,8 +445,223 @@ "outputs": [ { "data": { + "text/html": [ + "
Field
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "
\n", + "\n", + "\n", + "\n", + "
variablet
unitskelvin
\n", + "
\n", + " \n", + "\n", + "\n", + "
\n", + "\n", + "\n", + "\n", + "
valid_datetime2018-08-01 12:00:00
base_datetime2018-08-01 12:00:00
step0:00:00
\n", + "
\n", + " \n", + "\n", + "\n", + "
\n", + "\n", + "\n", + "\n", + "
level850
layerNone
level_typepressure
\n", + "
\n", + " \n", + "\n", + "\n", + "
\n", + "\n", + "\n", + "\n", + "
member0
\n", + "
\n", + " \n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + " " + ], "text/plain": [ - "NetCDFField(t,level=850,time=2018-08-01 12:00:00)" + "Field(t, 2018-08-01 12:00:00, 2018-08-01 12:00:00, 0:00:00, 850, pressure, 0, None)" ] }, "execution_count": 6, @@ -389,35 +700,51 @@ " \n", " \n", " \n", - " variable\n", - " level\n", - " valid_datetime\n", - " units\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", " t\n", + " 2018-08-01 12:00:00\n", + " 2018-08-01 12:00:00\n", + " 0 days\n", " 850\n", - " 2018-08-01T12:00:00\n", - " K\n", + " pressure\n", + " 0\n", + " None\n", " \n", " \n", " 1\n", " t\n", + " 2018-08-01 12:00:00\n", + " 2018-08-01 12:00:00\n", + " 0 days\n", " 700\n", - " 2018-08-01T12:00:00\n", - " K\n", + " pressure\n", + " 0\n", + " None\n", " \n", " \n", "\n", "" ], "text/plain": [ - " variable level valid_datetime units\n", - "0 t 850 2018-08-01T12:00:00 K\n", - "1 t 700 2018-08-01T12:00:00 K" + " parameter.variable time.valid_datetime time.base_datetime time.step \\\n", + "0 t 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", + "1 t 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", + "\n", + " vertical.level vertical.level_type ensemble.member geography.grid_type \n", + "0 850 pressure 0 None \n", + "1 700 pressure 0 None " ] }, "execution_count": 7, @@ -437,8 +764,223 @@ "outputs": [ { "data": { + "text/html": [ + "
Field
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "
\n", + "\n", + "\n", + "\n", + "
variablev
unitsmeter / second
\n", + "
\n", + " \n", + "\n", + "\n", + "
\n", + "\n", + "\n", + "\n", + "
valid_datetime2018-08-01 12:00:00
base_datetime2018-08-01 12:00:00
step0:00:00
\n", + "
\n", + " \n", + "\n", + "\n", + "
\n", + "\n", + "\n", + "\n", + "
level300
layerNone
level_typepressure
\n", + "
\n", + " \n", + "\n", + "\n", + "
\n", + "\n", + "\n", + "\n", + "
member0
\n", + "
\n", + " \n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + " " + ], "text/plain": [ - "NetCDFField(v,level=300,time=2018-08-01 12:00:00)" + "Field(v, 2018-08-01 12:00:00, 2018-08-01 12:00:00, 0:00:00, 300, pressure, 0, None)" ] }, "execution_count": 8, @@ -666,7 +1208,7 @@ } ], "source": [ - "ds[0].metadata(\"variable\")" + "ds[0].get(\"parameter.variable\")" ] }, { @@ -686,7 +1228,7 @@ } ], "source": [ - "ds[0:2].metadata([\"level\", \"variable\"])" + "ds[0:2].get([\"vertical.level\", \"parameter.variable\"])" ] }, { @@ -730,7 +1272,7 @@ } ], "source": [ - "ds.metadata(\"level\")" + "ds.get(\"vertical.level\")" ] }, { @@ -740,47 +1282,6 @@ "For each filed we can get the metadata as an object:" ] }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "NetCDFMetadata({'units': 'K', 'long_name': 'Temperature', 'standard_name': 'air_temperature', 'date': 20180801, 'time': 1200, 'variable': 't', 'level': 1000, 'levtype': 'level'})" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "md = ds[0].metadata()\n", - "md" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "1000" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "md[\"level\"]" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -797,7 +1298,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 17, "metadata": {}, "outputs": [ { @@ -821,50 +1322,66 @@ " \n", " \n", " \n", - " variable\n", - " level\n", - " valid_datetime\n", - " units\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", " u\n", + " 2018-08-01 12:00:00\n", + " 2018-08-01 12:00:00\n", + " 0 days\n", " 850\n", - " 2018-08-01T12:00:00\n", - " m s**-1\n", + " pressure\n", + " 0\n", + " None\n", " \n", " \n", " 1\n", " v\n", + " 2018-08-01 12:00:00\n", + " 2018-08-01 12:00:00\n", + " 0 days\n", " 850\n", - " 2018-08-01T12:00:00\n", - " m s**-1\n", + " pressure\n", + " 0\n", + " None\n", " \n", " \n", "\n", "" ], "text/plain": [ - " variable level valid_datetime units\n", - "0 u 850 2018-08-01T12:00:00 m s**-1\n", - "1 v 850 2018-08-01T12:00:00 m s**-1" + " parameter.variable time.valid_datetime time.base_datetime time.step \\\n", + "0 u 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", + "1 v 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", + "\n", + " vertical.level vertical.level_type ensemble.member geography.grid_type \n", + "0 850 pressure 0 None \n", + "1 850 pressure 0 None " ] }, - "execution_count": 19, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "g = ds.sel(variable=[\"u\", \"v\"], level=850)\n", + "g = ds.sel({\"parameter.variable\": ['u', 'v'], \"vertical.level\": 850})\n", "g.ls()" ] }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 18, "metadata": {}, "outputs": [ { @@ -888,76 +1405,112 @@ " \n", " \n", " \n", - " variable\n", - " level\n", - " valid_datetime\n", - " units\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", " t\n", + " 2018-08-01 12:00:00\n", + " 2018-08-01 12:00:00\n", + " 0 days\n", " 1000\n", - " 2018-08-01T12:00:00\n", - " K\n", + " pressure\n", + " 0\n", + " None\n", " \n", " \n", " 1\n", " t\n", + " 2018-08-01 12:00:00\n", + " 2018-08-01 12:00:00\n", + " 0 days\n", " 850\n", - " 2018-08-01T12:00:00\n", - " K\n", + " pressure\n", + " 0\n", + " None\n", " \n", " \n", " 2\n", " t\n", + " 2018-08-01 12:00:00\n", + " 2018-08-01 12:00:00\n", + " 0 days\n", " 700\n", - " 2018-08-01T12:00:00\n", - " K\n", + " pressure\n", + " 0\n", + " None\n", " \n", " \n", " 3\n", " t\n", + " 2018-08-01 12:00:00\n", + " 2018-08-01 12:00:00\n", + " 0 days\n", " 500\n", - " 2018-08-01T12:00:00\n", - " K\n", + " pressure\n", + " 0\n", + " None\n", " \n", " \n", " 4\n", " t\n", + " 2018-08-01 12:00:00\n", + " 2018-08-01 12:00:00\n", + " 0 days\n", " 400\n", - " 2018-08-01T12:00:00\n", - " K\n", + " pressure\n", + " 0\n", + " None\n", " \n", " \n", " 5\n", " t\n", + " 2018-08-01 12:00:00\n", + " 2018-08-01 12:00:00\n", + " 0 days\n", " 300\n", - " 2018-08-01T12:00:00\n", - " K\n", + " pressure\n", + " 0\n", + " None\n", " \n", " \n", "\n", "" ], "text/plain": [ - " variable level valid_datetime units\n", - "0 t 1000 2018-08-01T12:00:00 K\n", - "1 t 850 2018-08-01T12:00:00 K\n", - "2 t 700 2018-08-01T12:00:00 K\n", - "3 t 500 2018-08-01T12:00:00 K\n", - "4 t 400 2018-08-01T12:00:00 K\n", - "5 t 300 2018-08-01T12:00:00 K" + " parameter.variable time.valid_datetime time.base_datetime time.step \\\n", + "0 t 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", + "1 t 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", + "2 t 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", + "3 t 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", + "4 t 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", + "5 t 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days \n", + "\n", + " vertical.level vertical.level_type ensemble.member geography.grid_type \n", + "0 1000 pressure 0 None \n", + "1 850 pressure 0 None \n", + "2 700 pressure 0 None \n", + "3 500 pressure 0 None \n", + "4 400 pressure 0 None \n", + "5 300 pressure 0 None " ] }, - "execution_count": 20, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "g = ds.sel(variable=\"t\")\n", + "g = ds.sel({\"parameter.variable\": \"t\"})\n", "g.ls()" ] }, @@ -977,7 +1530,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 19, "metadata": {}, "outputs": [ { @@ -998,39 +1551,86 @@ "\n", "\n", "\n", - "
<xarray.Dataset> Size: 12kB\n",
-       "Dimensions:    (longitude: 12, latitude: 7, level: 6, time: 1)\n",
+       "Dimensions:    (time: 1, level: 6, latitude: 7, longitude: 12)\n",
        "Coordinates:\n",
-       "  * longitude  (longitude) float32 48B 0.0 30.0 60.0 90.0 ... 270.0 300.0 330.0\n",
-       "  * latitude   (latitude) float32 28B 90.0 60.0 30.0 0.0 -30.0 -60.0 -90.0\n",
-       "  * level      (level) int32 24B 1000 850 700 500 400 300\n",
        "  * time       (time) datetime64[ns] 8B 2018-08-01T12:00:00\n",
+       "  * level      (level) int32 24B 1000 850 700 500 400 300\n",
+       "  * latitude   (latitude) float32 28B 90.0 60.0 30.0 0.0 -30.0 -60.0 -90.0\n",
+       "  * longitude  (longitude) float32 48B 0.0 30.0 60.0 90.0 ... 270.0 300.0 330.0\n",
        "Data variables:\n",
        "    t          (time, level, latitude, longitude) float64 4kB dask.array<chunksize=(1, 6, 7, 12), meta=np.ndarray>\n",
        "    u          (time, level, latitude, longitude) float64 4kB dask.array<chunksize=(1, 6, 7, 12), meta=np.ndarray>\n",
        "    v          (time, level, latitude, longitude) float64 4kB dask.array<chunksize=(1, 6, 7, 12), meta=np.ndarray>\n",
        "Attributes:\n",
        "    Conventions:  CF-1.6\n",
-       "    history:      2023-08-07 18:24:35 GMT by grib_to_netcdf-2.30.2: grib_to_n...