{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "ee62959d-4b21-462c-881d-2931047531ec", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [], "source": [ "!test -f syn_new.bufr || wget https://get.ecmwf.int/repository/test-data/pdbufr/test-data/syn_new.bufr" ] }, { "cell_type": "markdown", "id": "a1867cba-dbbb-4856-96e4-6c3d2c113ef9", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "## Synop: overview" ] }, { "cell_type": "code", "execution_count": 2, "id": "a209a358-fa42-462f-ad76-c7cc801737fd", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [], "source": [ "import pdbufr" ] }, { "cell_type": "raw", "id": "cde468ee-da73-49d5-a7e6-a8c6dadbf7a6", "metadata": { "editable": true, "raw_mimetype": "text/restructuredtext", "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "The input BUFR data contains three Synop observations. In this notebook we will read this file with the :ref:`synop reader `, which uses :ref:`pre-defined parameters ` instead of the ecCodes BUFR keys. Parameter is a high-level concept in ``pdbufr`` enabling data extraction without knowing the actual BUFR encoding and allowing more tailor-made access to specific data types." ] }, { "cell_type": "markdown", "id": "b7788371-ce79-4eb4-8ab6-e5b7ecf9664a", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "#### The default settings" ] }, { "cell_type": "raw", "id": "e04427eb-fbdd-4992-8d8c-d7ebb651e961", "metadata": { "editable": true, "raw_mimetype": "text/restructuredtext", "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "By default the \"stnid\", \"lat\", \"lon\", \"elevation\", \"time\" (see :ref:`station parameters ` for details) and the :ref:`default observed parameters ` are extracted." ] }, { "cell_type": "code", "execution_count": 3, "id": "442ec325-ac17-4c94-a1aa-e7a49fbf59ed", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [], "source": [ "df = pdbufr.read_bufr(\"syn_new.bufr\", reader=\"synop\")" ] }, { "cell_type": "code", "execution_count": 4, "id": "063730f7-55dd-45d1-9ebc-b22c7659d6c6", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
012
stnid919481176656257
lat-23.1301749.7772230.0
lon-134.9653317.54194100.27
elevation91.0748.13950.0
time2020-03-15 00:00:002020-03-15 00:00:002020-03-15 00:00:00
t2m300.45269.25276.35
rh2m736537
td2m295.15263.55263.05
wind10m_speed1.64.02.5
wind10m_dir10060229
max_wgust_speed_10min5.3NaNNaN
max_wgust_dir_10min110.0NaNNaN
max_wgust_speed_60min5.3NaNNaN
max_wgust_dir_60min110.0NaNNaN
max_wgust_speed_360min7.6NaNNaN
max_wgust_dir_360min130.0NaNNaN
max_wgust_speed_nanNaNNaNNaN
max_wgust_dir_nanNaNNaNNaN
max_wgust_speed_720minNaNNaN8.9
max_wgust_dir_720minNaNNaN193.0
present_weather25080
past_weather_1_1h0.0NaNNaN
past_weather_2_1h0.0NaNNaN
past_weather_1_6h0.010.0NaN
past_weather_2_6h0.010.0NaN
past_weather_1_12hNaNNaN0.0
past_weather_2_12hNaNNaN0.0
precipitation_1h0.00.0NaN
precipitation_3h0.0NaNNaN
precipitation_6h0.00.00.0
precipitation_12h0.0NaN0.0
precipitation_24h0.0NaN0.0
min_t2m_60minNaNNaNNaN
min_t2m_0h296.45NaN272.65
max_t2m_60min300.75NaNNaN
max_t2m_nanNaNNaNNaN
max_t2m_0hNaNNaN288.35
mslp101320.0NaN100440.0
pressure100310.093680.063030.0
cloud_cover25.0NaN0.0
snow_depthNaNNaN0.0
visibilityNaN30000.030000.0
\n", "
" ], "text/plain": [ " 0 1 \\\n", "stnid 91948 11766 \n", "lat -23.13017 49.77722 \n", "lon -134.96533 17.54194 \n", "elevation 91.0 748.1 \n", "time 2020-03-15 00:00:00 2020-03-15 00:00:00 \n", "t2m 300.45 269.25 \n", "rh2m 73 65 \n", "td2m 295.15 263.55 \n", "wind10m_speed 1.6 4.0 \n", "wind10m_dir 100 60 \n", "max_wgust_speed_10min 5.3 NaN \n", "max_wgust_dir_10min 110.0 NaN \n", "max_wgust_speed_60min 5.3 NaN \n", "max_wgust_dir_60min 110.0 NaN \n", "max_wgust_speed_360min 7.6 NaN \n", "max_wgust_dir_360min 130.0 NaN \n", "max_wgust_speed_nan NaN NaN \n", "max_wgust_dir_nan NaN NaN \n", "max_wgust_speed_720min NaN NaN \n", "max_wgust_dir_720min NaN NaN \n", "present_weather 2 508 \n", "past_weather_1_1h 0.0 NaN \n", "past_weather_2_1h 0.0 NaN \n", "past_weather_1_6h 0.0 10.0 \n", "past_weather_2_6h 0.0 10.0 \n", "past_weather_1_12h NaN NaN \n", "past_weather_2_12h NaN NaN \n", "precipitation_1h 0.0 0.0 \n", "precipitation_3h 0.0 NaN \n", "precipitation_6h 0.0 0.0 \n", "precipitation_12h 0.0 NaN \n", "precipitation_24h 0.0 NaN \n", "min_t2m_60min NaN NaN \n", "min_t2m_0h 296.45 NaN \n", "max_t2m_60min 300.75 NaN \n", "max_t2m_nan NaN NaN \n", "max_t2m_0h NaN NaN \n", "mslp 101320.0 NaN \n", "pressure 100310.0 93680.0 \n", "cloud_cover 25.0 NaN \n", "snow_depth NaN NaN \n", "visibility NaN 30000.0 \n", "\n", " 2 \n", "stnid 56257 \n", "lat 30.0 \n", "lon 100.27 \n", "elevation 3950.0 \n", "time 2020-03-15 00:00:00 \n", "t2m 276.35 \n", "rh2m 37 \n", "td2m 263.05 \n", "wind10m_speed 2.5 \n", "wind10m_dir 229 \n", "max_wgust_speed_10min NaN \n", "max_wgust_dir_10min NaN \n", "max_wgust_speed_60min NaN \n", "max_wgust_dir_60min NaN \n", "max_wgust_speed_360min NaN \n", "max_wgust_dir_360min NaN \n", "max_wgust_speed_nan NaN \n", "max_wgust_dir_nan NaN \n", "max_wgust_speed_720min 8.9 \n", "max_wgust_dir_720min 193.0 \n", "present_weather 0 \n", "past_weather_1_1h NaN \n", "past_weather_2_1h NaN \n", "past_weather_1_6h NaN \n", "past_weather_2_6h NaN \n", "past_weather_1_12h 0.0 \n", "past_weather_2_12h 0.0 \n", "precipitation_1h NaN \n", "precipitation_3h NaN \n", "precipitation_6h 0.0 \n", "precipitation_12h 0.0 \n", "precipitation_24h 0.0 \n", "min_t2m_60min NaN \n", "min_t2m_0h 272.65 \n", "max_t2m_60min NaN \n", "max_t2m_nan NaN \n", "max_t2m_0h 288.35 \n", "mslp 100440.0 \n", "pressure 63030.0 \n", "cloud_cover 0.0 \n", "snow_depth 0.0 \n", "visibility 30000.0 " ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.T" ] }, { "cell_type": "markdown", "id": "b04b469a-2e8d-4607-a08d-9e394ce61c9c", "metadata": {}, "source": [ "#### Using parameter groups" ] }, { "cell_type": "code", "execution_count": 5, "id": "5374286e-2fe4-436f-b258-b718ab8efbd7", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [], "source": [ "df = pdbufr.read_bufr(\"syn_new.bufr\", reader=\"synop\", columns=\"station\")" ] }, { "cell_type": "code", "execution_count": 6, "id": "294f656e-d1f4-4170-bf59-2824366799b9", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
012
stnid919481176656257
lat-23.1301749.7772230.0
lon-134.9653317.54194100.27
elevation91.0748.13950.0
time2020-03-15 00:00:002020-03-15 00:00:002020-03-15 00:00:00
\n", "
" ], "text/plain": [ " 0 1 2\n", "stnid 91948 11766 56257\n", "lat -23.13017 49.77722 30.0\n", "lon -134.96533 17.54194 100.27\n", "elevation 91.0 748.1 3950.0\n", "time 2020-03-15 00:00:00 2020-03-15 00:00:00 2020-03-15 00:00:00" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.T" ] }, { "cell_type": "code", "execution_count": 7, "id": "023b37ee-486f-41c0-82c2-94fdcf921396", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [], "source": [ "df = pdbufr.read_bufr(\"syn_new.bufr\", reader=\"synop\", columns=\"location\")" ] }, { "cell_type": "code", "execution_count": 8, "id": "d2341ad2-886e-4697-a8c6-4de74f7ed486", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
012
lat-23.1301749.7772230.00
lon-134.9653317.54194100.27
\n", "
" ], "text/plain": [ " 0 1 2\n", "lat -23.13017 49.77722 30.00\n", "lon -134.96533 17.54194 100.27" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.T" ] }, { "cell_type": "code", "execution_count": 9, "id": "5b8c044f-2f0a-40f4-93fd-1aa605ce7658", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [], "source": [ "df = pdbufr.read_bufr(\"syn_new.bufr\", reader=\"synop\", columns=\"geometry\")" ] }, { "cell_type": "code", "execution_count": 10, "id": "d30fdcc0-6e0b-46c7-9d36-6b53545ae209", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
012
lat-23.1301749.7772230.00
lon-134.9653317.54194100.27
elevation91.00000748.100003950.00
\n", "
" ], "text/plain": [ " 0 1 2\n", "lat -23.13017 49.77722 30.00\n", "lon -134.96533 17.54194 100.27\n", "elevation 91.00000 748.10000 3950.00" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.T" ] }, { "cell_type": "markdown", "id": "f02fd641-dcd4-48fd-9ff7-c4ec709ce9b8", "metadata": {}, "source": [ "#### Using individual parameters" ] }, { "cell_type": "code", "execution_count": 11, "id": "8ab3af58-4998-46e2-95c7-c5c0b48635e2", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [], "source": [ "df = pdbufr.read_bufr(\"syn_new.bufr\", reader=\"synop\", columns=\"t2m\")" ] }, { "cell_type": "code", "execution_count": 12, "id": "1402bdf6-671b-47ac-aaa3-c2940b1b5fa4", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
012
t2m300.45269.25276.35
\n", "
" ], "text/plain": [ " 0 1 2\n", "t2m 300.45 269.25 276.35" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.T" ] }, { "cell_type": "code", "execution_count": 13, "id": "a8c4dec0-312b-46e7-811e-ea42203abf81", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [], "source": [ "df = pdbufr.read_bufr(\"syn_new.bufr\", reader=\"synop\", columns=[\"station\", \"t2m\", \"td2m\", \"total_sunshine\"])" ] }, { "cell_type": "code", "execution_count": 14, "id": "091d734a-7224-4fdf-85c7-b2e29260d44f", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
012
stnid919481176656257
lat-23.1301749.7772230.0
lon-134.9653317.54194100.27
elevation91.0748.13950.0
time2020-03-15 00:00:002020-03-15 00:00:002020-03-15 00:00:00
t2m300.45269.25276.35
td2m295.15263.55263.05
total_sunshine_1h39.0NaNNaN
total_sunshine_24h535.0486.0NaN
\n", "
" ], "text/plain": [ " 0 1 \\\n", "stnid 91948 11766 \n", "lat -23.13017 49.77722 \n", "lon -134.96533 17.54194 \n", "elevation 91.0 748.1 \n", "time 2020-03-15 00:00:00 2020-03-15 00:00:00 \n", "t2m 300.45 269.25 \n", "td2m 295.15 263.55 \n", "total_sunshine_1h 39.0 NaN \n", "total_sunshine_24h 535.0 486.0 \n", "\n", " 2 \n", "stnid 56257 \n", "lat 30.0 \n", "lon 100.27 \n", "elevation 3950.0 \n", "time 2020-03-15 00:00:00 \n", "t2m 276.35 \n", "td2m 263.05 \n", "total_sunshine_1h NaN \n", "total_sunshine_24h NaN " ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.T" ] }, { "cell_type": "markdown", "id": "a6bf39a8-d18a-4536-9d7b-8e37ea1df6da", "metadata": {}, "source": [ "#### Adding level columns" ] }, { "cell_type": "code", "execution_count": 15, "id": "d8d8630f-f9e9-47da-80d1-9acf5dfbce35", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [], "source": [ "df = pdbufr.read_bufr(\"syn_new.bufr\", reader=\"synop\", \n", " columns=[\"station\", \"t2m\", \"td2m\"], \n", " level_columns=True)" ] }, { "cell_type": "code", "execution_count": 16, "id": "d0adf1e8-cfe3-4af2-80d1-bbbe38e75807", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
012
stnid919481176656257
lat-23.1301749.7772230.0
lon-134.9653317.54194100.27
elevation91.0748.13950.0
time2020-03-15 00:00:002020-03-15 00:00:002020-03-15 00:00:00
t2m300.45269.25276.35
t2m_level1.52.01.5
td2m295.15263.55263.05
td2m_level1.52.01.5
\n", "
" ], "text/plain": [ " 0 1 2\n", "stnid 91948 11766 56257\n", "lat -23.13017 49.77722 30.0\n", "lon -134.96533 17.54194 100.27\n", "elevation 91.0 748.1 3950.0\n", "time 2020-03-15 00:00:00 2020-03-15 00:00:00 2020-03-15 00:00:00\n", "t2m 300.45 269.25 276.35\n", "t2m_level 1.5 2.0 1.5\n", "td2m 295.15 263.55 263.05\n", "td2m_level 1.5 2.0 1.5" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.T" ] }, { "cell_type": "markdown", "id": "333adc31-69ba-4635-9464-ef1cc3a03fa3", "metadata": {}, "source": [ "#### Adding units columns" ] }, { "cell_type": "code", "execution_count": 17, "id": "2a591c40-2254-426d-9b95-0f068bd612ce", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [], "source": [ "df = pdbufr.read_bufr(\"syn_new.bufr\", reader=\"synop\", \n", " columns=[\"station\", \"t2m\", \"td2m\"], \n", " units_columns=True)" ] }, { "cell_type": "code", "execution_count": 18, "id": "e3b18644-ed44-4c72-b022-14b25d21d2d1", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
012
stnid919481176656257
lat-23.1301749.7772230.0
lat_unitsdegdegdeg
lon-134.9653317.54194100.27
lon_unitsdegdegdeg
elevation91.0748.13950.0
elevation_unitsmmm
time2020-03-15 00:00:002020-03-15 00:00:002020-03-15 00:00:00
t2m300.45269.25276.35
t2m_unitsKKK
td2m295.15263.55263.05
td2m_unitsKKK
\n", "
" ], "text/plain": [ " 0 1 2\n", "stnid 91948 11766 56257\n", "lat -23.13017 49.77722 30.0\n", "lat_units deg deg deg\n", "lon -134.96533 17.54194 100.27\n", "lon_units deg deg deg\n", "elevation 91.0 748.1 3950.0\n", "elevation_units m m m\n", "time 2020-03-15 00:00:00 2020-03-15 00:00:00 2020-03-15 00:00:00\n", "t2m 300.45 269.25 276.35\n", "t2m_units K K K\n", "td2m 295.15 263.55 263.05\n", "td2m_units K K K" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.T" ] }, { "cell_type": "code", "execution_count": null, "id": "5fb3c901-904b-4a79-918f-7ac11407feb6", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "dev", "language": "python", "name": "dev" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.12" } }, "nbformat": 4, "nbformat_minor": 5 }