{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "660798fa-cf08-4cfd-b553-c6d750d7e7ad", "metadata": {}, "outputs": [], "source": [ "import algo_test" ] }, { "cell_type": "code", "execution_count": 11, "id": "ff42670b-301d-4ee1-8da2-6a658fc5f286", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'_id': ObjectId('66ebba82a3b7dbe82538e34a'), 'name': 'Alice', 'age': 25, 'city': 'Beijing'}\n", "\n" ] } ], "source": [ "import subprocess\n", "\n", "# 使用 subprocess 执行 .py 文件\n", "result = subprocess.run(['python', 'algo_test.py'], capture_output=True, text=True)\n", "\n", "# 打印输出\n", "print(result.stdout)" ] }, { "cell_type": "code", "execution_count": null, "id": "b47d615a-5953-43c0-9289-387d5c823a7a", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2024-09-26 14:20:47,541 - waitress - INFO - Serving on http://0.0.0.0:10091\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Program starts execution!\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2024-09-26 14:21:19,377 - evaluation_accuracy log - INFO - {'formulaType': 'DAY_SHORT_ACCURACY', 'cap': '225', 'province': 'E15', 'electricType': 'E2', 'stationCode': 'J00260', 'col_time': 'C_TIME', 'col_rp': '实际功率', 'col_pp': 'predict', 'mongodb_connection': 'mongodb://root:Jydl3377@192.168.1.33:27017', 'mongodb_database': 'algorithm_platform', 'mongodb_read_table': 'J00260NWP_records_predict', 'mongodb_write_table': 'J00260NWP_records_accuracy'}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Program starts execution!\n", "args {'formulaType': 'DAY_SHORT_ACCURACY', 'cap': '225', 'province': 'E15', 'electricType': 'E2', 'stationCode': 'J00260', 'col_time': 'C_TIME', 'col_rp': '实际功率', 'col_pp': 'predict', 'mongodb_connection': 'mongodb://root:Jydl3377@192.168.1.33:27017', 'mongodb_database': 'algorithm_platform', 'mongodb_read_table': 'J00260NWP_records_predict', 'mongodb_write_table': 'J00260NWP_records_accuracy'}\n", "accuray compute successfully!\n", "Collection 'J00260NWP_records_accuracy already exist, deleted successfully!\n", "data inserted successfully!\n", "Program execution ends!\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2024-09-26 14:25:11,738 - evaluation_accuracy log - INFO - {'formulaType': 'DAY_SHORT_ACCURACY', 'cap': '225', 'province': 'E15', 'electricType': 'E2', 'stationCode': 'J00260', 'col_time': 'C_TIME', 'col_rp': '实际功率', 'col_pp': 'predict', 'mongodb_connection': 'mongodb://root:Jydl3377@192.168.1.33:27017', 'mongodb_database': 'algorithm_platform', 'mongodb_read_table': 'J00260NWP_records_predict', 'mongodb_write_table': 'J00260NWP_records_accuracy'}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Program starts execution!\n", "args {'formulaType': 'DAY_SHORT_ACCURACY', 'cap': '225', 'province': 'E15', 'electricType': 'E2', 'stationCode': 'J00260', 'col_time': 'C_TIME', 'col_rp': '实际功率', 'col_pp': 'predict', 'mongodb_connection': 'mongodb://root:Jydl3377@192.168.1.33:27017', 'mongodb_database': 'algorithm_platform', 'mongodb_read_table': 'J00260NWP_records_predict', 'mongodb_write_table': 'J00260NWP_records_accuracy'}\n", "accuray compute successfully!\n", "Collection 'J00260NWP_records_accuracy already exist, deleted successfully!\n", "data inserted successfully!\n", "Program execution ends!\n" ] } ], "source": [ "%run evaluation_accuracy.py" ] }, { "cell_type": "code", "execution_count": 5, "id": "752c3ab3-cdef-47b0-9d9a-805348d30d6e", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "3.9.19 (main, May 6 2024, 20:12:36) [MSC v.1916 64 bit (AMD64)]\n" ] } ], "source": [ "'formulaType': 'DAY_SHORT_ACCURACY',\n", " 'cap': '225',\n", " 'province': 'E15',\n", " 'electricType': 'E2',\n", " 'stationCode': 'J00260'" ] }, { "cell_type": "code", "execution_count": 5, "id": "acc6aa2a-0f1d-43f3-985d-cd37c4a5ac6e", "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Output:\n", "Program starts execution!\n", "args: Namespace(formulaType='DAY_SHORT_ACCURACY', cap='225', province='E15', electricType='E2', stationCode='J00260', col_time='C_TIME', col_rp='实际功率', col_pp='predict', mongodb_connection='mongodb://root:Jydl3377@192.168.1.33:27017', mongodb_database='algorithm_platform', mongodb_read_table='J00260NWP_records_predict', mongodb_write_table='J00260NWP_records_accuracy')\n", "accuray compute successfully!\n", "Collection 'J00260NWP_records_accuracy already exist, deleted successfully!\n", "data inserted successfully!\n", "Program execution ends!\n", "\n", "Error:\n", "\n" ] } ], "source": [ "import subprocess\n", "\n", "# 构建命令\n", "command = [\n", " \"python\", \"accuracy.py\",\n", " \"--formulaType\", \"DAY_SHORT_ACCURACY\",\n", " \"--cap\",\"225\",\n", " \"--province\",\"E15\",\n", " \"--electricType\",\"E2\",\n", " \"--stationCode\",\"J00260\",\n", " \"--col_time\",\"C_TIME\",\n", " \"--col_rp\",\"实际功率\",\n", " \"--col_pp\",\"predict\",\n", " \"--mongodb_connection\", \"mongodb://root:Jydl3377@192.168.1.33:27017\",\n", " \"--mongodb_database\", \"algorithm_platform\",\n", " \"--mongodb_read_table\", \"J00260NWP_records_predict\",\n", " \"--mongodb_write_table\", \"J00260NWP_records_accuracy\",\n", "]\n", "\n", "# 使用 subprocess.run 来执行命令\n", "result = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)\n", "\n", "# 输出结果和错误信息\n", "print(\"Output:\")\n", "print(result.stdout)\n", "print(\"Error:\")\n", "print(result.stderr)" ] }, { "cell_type": "code", "execution_count": null, "id": "1cb1c745-0673-4dfa-968f-8985e788852a", "metadata": {}, "outputs": [], "source": [ "\"--electricType\",\"E2\",\n", "\"--stationCode\",\"J00260\",\n", "\"--col_time\",\"C_TIME\",\n", "\"--col_rp\",\"实际功率\",\n", "\"--col_pp\",\"predict\",\n", "\"--mongodb_connection\", \"mongodb://root:Jydl3377@192.168.1.33:27017\",\n", "\"--mongodb_database\", \"algorithm_platform\",\n", "\"--mongodb_read_table\", \"J00260NWP_records_predict\",\n", "\"--mongodb_write_table\", \"J00260NWP_records_accuracy\"," ] }, { "cell_type": "code", "execution_count": null, "id": "14a9feb4-5625-45d7-8e0f-6a8dea8c9f24", "metadata": {}, "outputs": [], "source": [ "docker run evaluation_accuracy --formulaType \"DAY_SHORT_ACCURACY\" --cap \"225\" --province \"E15\" --electricType \"E2\" --stationCode \"J00260\" --col_time \"C_TIME\" --col_rp \"实际功率\" --col_pp \"predict\" --mongodb_connection \"mongodb://root:Jydl3377@192.168.1.33:27017\" --mongodb_database \"algorithm_platform\" --mongodb_read_table \"J00260NWP_records_predict\" --mongodb_write_table \"J00260NWP_records_accuracy\" " ] }, { "cell_type": "code", "execution_count": null, "id": "c0d791f8-12d8-4ab9-b561-b474e2a739f0", "metadata": {}, "outputs": [], "source": [ "docker run evaluation_accuracy.py --numerical_features ','.join(['NWP预测总辐射', 'NWP-10米预测风速', 'NWP-10米预测风向', 'NWP-30米预测风速', 'NWP-30米预测风向','NWP-50米预测风速', 'NWP-50米预测风向', 'NWP-70米预测风速', 'NWP-70米预测风向','NWP-90米预测风速', 'NWP-90米预测风向', 'NWP-110米预测风速', 'NWP-110米预测风向','NWP-150米预测风速', 'NWP-150米预测风向', 'NWP-170米预测风速', 'NWP-170米预测风向','NWP-低云量', 'NWP-中云量', 'NWP-高云量', 'NWP-总云量', 'NWP-晴空总辐射', 'NWP-法相直辐射','NWP-总降水强度', 'NWP-温度', 'NWP-湿度', 'NWP-气压']) --categorical_features ','.join([]) --label \"实际功率\" --learning_rate \"0.01\" --num_leaves \"31\" --min_data_in_leaf \"21\" --mongodb_connection \"mongodb://root:Jydl3377@192.168.1.33:27017\" --mongodb_database \"algorithm_platform\" --mongodb_read_table \"J00260NWP_records\" --mongodb_write_table \"models\" --model_name \"lightgbm_model\"" ] }, { "cell_type": "code", "execution_count": 7, "id": "9ca17599-e453-479c-a9b3-b1d15f2d54de", "metadata": {}, "outputs": [], "source": [ "import lightgbm as lgb\n", "import argparse\n", "import pandas as pd \n", "import numpy as np\n", "from pymongo import MongoClient\n", "import pickle\n", "client = MongoClient(\"mongodb://root:Jydl3377@192.168.1.33:27017\")\n", "db = client[\"algorithm_platform\"]\n", "# collection = db[\"models\"]\n", "# model_data = collection.find_one({\"model_name\": \"lightgbm_model\"})\n", "# if model_data is not None:\n", "# # 假设模型存储在字段 'model' 中\n", "# model_binary = model_data['model'] # 确保这个字段是存储模型的二进制数据\n", "\n", "# # 反序列化模型\n", "# model = pickle.loads(model_binary)\n", "# model" ] }, { "cell_type": "code", "execution_count": 8, "id": "ff940fec-55fd-4cbd-99ef-5564c6632efb", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "90.50265625" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "collection = db[\"J00260NWP_records_accuracy\"] # 集合名称\n", "data_from_db = collection.find() # 这会返回一个游标(cursor)\n", "# 将游标转换为列表,并创建 pandas DataFrame\n", "df = pd.DataFrame(list(data_from_db))\n", "df['accuracy'].mean()" ] }, { "cell_type": "code", "execution_count": 42, "id": "8c55f915-4db7-4859-b449-07b2891635bc", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
_iddateaccuracy
366f24cdb7783ad7f1a7a270c2024-05-0592.48
466f24cdb7783ad7f1a7a270d2024-05-0692.05
566f24cdb7783ad7f1a7a270e2024-05-0790.81
666f24cdb7783ad7f1a7a270f2024-05-0894.91
766f24cdb7783ad7f1a7a27102024-05-0984.49
............
12366f24cdb7783ad7f1a7a27842024-09-0791.89
12466f24cdb7783ad7f1a7a27852024-09-0883.68
12566f24cdb7783ad7f1a7a27862024-09-1091.89
12666f24cdb7783ad7f1a7a27872024-09-1188.76
12766f24cdb7783ad7f1a7a27882024-09-1286.05
\n", "

125 rows × 3 columns

\n", "
" ], "text/plain": [ " _id date accuracy\n", "3 66f24cdb7783ad7f1a7a270c 2024-05-05 92.48\n", "4 66f24cdb7783ad7f1a7a270d 2024-05-06 92.05\n", "5 66f24cdb7783ad7f1a7a270e 2024-05-07 90.81\n", "6 66f24cdb7783ad7f1a7a270f 2024-05-08 94.91\n", "7 66f24cdb7783ad7f1a7a2710 2024-05-09 84.49\n", ".. ... ... ...\n", "123 66f24cdb7783ad7f1a7a2784 2024-09-07 91.89\n", "124 66f24cdb7783ad7f1a7a2785 2024-09-08 83.68\n", "125 66f24cdb7783ad7f1a7a2786 2024-09-10 91.89\n", "126 66f24cdb7783ad7f1a7a2787 2024-09-11 88.76\n", "127 66f24cdb7783ad7f1a7a2788 2024-09-12 86.05\n", "\n", "[125 rows x 3 columns]" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[df['date']>='2024-05-05']" ] }, { "cell_type": "code", "execution_count": 39, "id": "7feaff6d-e41a-4bd7-b6fb-a63fc6900cca", "metadata": {}, "outputs": [], "source": [ "import argparse\n", "import importlib\n", "import acc\n", "from datetime import datetime, timedelta\n", "\n", "collection = db[\"J00260NWP_records_predict\"] # 集合名称\n", "data_from_db = collection.find() # 这会返回一个游标(cursor)\n", "# 将游标转换为列表,并创建 pandas DataFrame\n", "df = pd.DataFrame(list(data_from_db))\n", "df.to_csv('J00260_predict.csv',encoding='gbk')" ] }, { "cell_type": "code", "execution_count": 64, "id": "8a22f3e9-feff-438e-81e2-b5ceaa15ac48", "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "90.50265625000002" ] }, "execution_count": 64, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import argparse\n", "import importlib\n", "import acc\n", "from datetime import datetime, timedelta\n", "\n", "collection = db[\"J00260NWP_records_predict\"] # 集合名称\n", "data_from_db = collection.find() # 这会返回一个游标(cursor)\n", "# 将游标转换为列表,并创建 pandas DataFrame\n", "df = pd.DataFrame(list(data_from_db))\n", "\n", "# 重新加载模块\n", "importlib.reload(acc)\n", "from acc import calculate_acc\n", "\n", "df_tmp = df[['C_TIME','实际功率','predict']].rename(columns={'实际功率':'realValue','predict':'forecastAbleValue'})\n", "df_tmp = df_tmp[~np.isnan(df_tmp['realValue'])]\n", "df_tmp['ableValue'] = df_tmp['realValue']\n", "df_tmp['C_TIME'] = df_tmp['C_TIME'].apply(lambda x: datetime.strptime(x, \"%Y-%m-%d %H:%M:%S\"))\n", "\n", "cc = {\n", " 'formulaType': 'DAY_SHORT_ACCURACY',\n", " 'cap': '225',\n", " 'province': 'E15',\n", " 'electricType': 'E2',\n", " 'stationCode': 'J00260' }\n", " \n", "opt = argparse.Namespace(**cc)\n", "\n", "calculate_acc(df_tmp, opt)" ] }, { "cell_type": "code", "execution_count": 57, "id": "abccb68a-cc63-4474-8167-ab1e01363ad2", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
_idC_TIME理论功率第1个设备轮毂风速实际功率实时环境数据预测功率NWP预测总辐射NWP-10米预测风速NWP-10米预测风向...NWP-中云量NWP-高云量NWP-总云量NWP-晴空总辐射NWP-法相直辐射NWP-总降水强度NWP-温度NWP-湿度NWP-气压predict
5166ecc86f1075358d129a1e722024-05-05 21:30:00128.718.98108.10-0.9993.610.03.614958.2727...9.053644.534546.87730.00.00.008214.407322.4573890.210976.442233
5266ecc86f1075358d129a1e732024-05-05 21:45:00129.848.98108.34-0.9992.700.03.528056.5700...8.329143.206445.52730.00.00.009114.102723.0645890.336475.284865
5366ecc86f1075358d129a1e742024-05-05 22:00:00136.818.98111.86-0.9991.750.03.508855.0418...7.359141.990944.18000.00.00.010013.806423.6636890.455575.199564
\n", "

3 rows × 35 columns

\n", "
" ], "text/plain": [ " _id C_TIME 理论功率 第1个设备轮毂风速 实际功率 \\\n", "51 66ecc86f1075358d129a1e72 2024-05-05 21:30:00 128.71 8.98 108.10 \n", "52 66ecc86f1075358d129a1e73 2024-05-05 21:45:00 129.84 8.98 108.34 \n", "53 66ecc86f1075358d129a1e74 2024-05-05 22:00:00 136.81 8.98 111.86 \n", "\n", " 实时环境数据 预测功率 NWP预测总辐射 NWP-10米预测风速 NWP-10米预测风向 ... NWP-中云量 NWP-高云量 \\\n", "51 -0.99 93.61 0.0 3.6149 58.2727 ... 9.0536 44.5345 \n", "52 -0.99 92.70 0.0 3.5280 56.5700 ... 8.3291 43.2064 \n", "53 -0.99 91.75 0.0 3.5088 55.0418 ... 7.3591 41.9909 \n", "\n", " NWP-总云量 NWP-晴空总辐射 NWP-法相直辐射 NWP-总降水强度 NWP-温度 NWP-湿度 NWP-气压 \\\n", "51 46.8773 0.0 0.0 0.0082 14.4073 22.4573 890.2109 \n", "52 45.5273 0.0 0.0 0.0091 14.1027 23.0645 890.3364 \n", "53 44.1800 0.0 0.0 0.0100 13.8064 23.6636 890.4555 \n", "\n", " predict \n", "51 76.442233 \n", "52 75.284865 \n", "53 75.199564 \n", "\n", "[3 rows x 35 columns]" ] }, "execution_count": 57, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[df['C_TIME'].str.contains('2024-05-05')]" ] }, { "cell_type": "code", "execution_count": 56, "id": "abf7687b-faf2-4b78-a9f2-44a2fea9daaa", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
_idC_TIME理论功率第1个设备轮毂风速实际功率实时环境数据预测功率NWP预测总辐射NWP-10米预测风速NWP-10米预测风向...NWP-中云量NWP-高云量NWP-总云量NWP-晴空总辐射NWP-法相直辐射NWP-总降水强度NWP-温度NWP-湿度NWP-气压predict
5166ecc86f1075358d129a1e722024-05-05 21:30:00128.718.98108.10-0.9993.610.03.614958.2727...9.053644.534546.87730.00.00.008214.407322.4573890.210976.442233
5266ecc86f1075358d129a1e732024-05-05 21:45:00129.848.98108.34-0.9992.700.03.528056.5700...8.329143.206445.52730.00.00.009114.102723.0645890.336475.284865
5366ecc86f1075358d129a1e742024-05-05 22:00:00136.818.98111.86-0.9991.750.03.508855.0418...7.359141.990944.18000.00.00.010013.806423.6636890.455575.199564
\n", "

3 rows × 35 columns

\n", "
" ], "text/plain": [ " _id C_TIME 理论功率 第1个设备轮毂风速 实际功率 \\\n", "51 66ecc86f1075358d129a1e72 2024-05-05 21:30:00 128.71 8.98 108.10 \n", "52 66ecc86f1075358d129a1e73 2024-05-05 21:45:00 129.84 8.98 108.34 \n", "53 66ecc86f1075358d129a1e74 2024-05-05 22:00:00 136.81 8.98 111.86 \n", "\n", " 实时环境数据 预测功率 NWP预测总辐射 NWP-10米预测风速 NWP-10米预测风向 ... NWP-中云量 NWP-高云量 \\\n", "51 -0.99 93.61 0.0 3.6149 58.2727 ... 9.0536 44.5345 \n", "52 -0.99 92.70 0.0 3.5280 56.5700 ... 8.3291 43.2064 \n", "53 -0.99 91.75 0.0 3.5088 55.0418 ... 7.3591 41.9909 \n", "\n", " NWP-总云量 NWP-晴空总辐射 NWP-法相直辐射 NWP-总降水强度 NWP-温度 NWP-湿度 NWP-气压 \\\n", "51 46.8773 0.0 0.0 0.0082 14.4073 22.4573 890.2109 \n", "52 45.5273 0.0 0.0 0.0091 14.1027 23.0645 890.3364 \n", "53 44.1800 0.0 0.0 0.0100 13.8064 23.6636 890.4555 \n", "\n", " predict \n", "51 76.442233 \n", "52 75.284865 \n", "53 75.199564 \n", "\n", "[3 rows x 35 columns]" ] }, "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[df['C_TIME'].str.contains('2024-05-05')]" ] }, { "cell_type": "code", "execution_count": 1, "id": "a3b9a9ca-6c1a-40c1-a9c4-f3500fcba937", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "208" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python (panddlets)", "language": "python", "name": "panddlets" }, "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.9.19" } }, "nbformat": 4, "nbformat_minor": 5 }