From aef338b0b2ac157fa744e3b3f86725fdb5f3aa62 Mon Sep 17 00:00:00 2001 From: Mohsen Date: Wed, 11 Sep 2024 12:46:54 +0200 Subject: [PATCH] Delete test_nb.ipynb --- Python_codes/test_nb.ipynb | 295 ------------------------------------- 1 file changed, 295 deletions(-) delete mode 100644 Python_codes/test_nb.ipynb diff --git a/Python_codes/test_nb.ipynb b/Python_codes/test_nb.ipynb deleted file mode 100644 index 93f5935..0000000 --- a/Python_codes/test_nb.ipynb +++ /dev/null @@ -1,295 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [], - "source": [ - "import run_one_config as roc\n", - "import postpro as pp\n", - "\n", - "# reload roc\n", - "import importlib\n", - "importlib.reload(roc)\n", - "\n", - "res = roc.__main__()\n" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "(2, 100, 400)\n" - ] - }, - { - "data": { - "text/plain": [ - "array([[0.57089297, 0.5718574 , 0.57060507, ..., 0.55646789, 0.55330579,\n", - " 0.55466033],\n", - " [0.14800008, 0.15102167, 0.1497736 , ..., 0.1500574 , 0.15134463,\n", - " 0.15245962],\n", - " [0.844311 , 0.8461389 , 0.84754231, ..., 0.83777961, 0.83843417,\n", - " 0.83767924],\n", - " ...,\n", - " [0.68743047, 0.68489183, 0.68508417, ..., 0.62451998, 0.62447105,\n", - " 0.62301318],\n", - " [1.36784056, 1.36670966, 1.36402568, ..., 1.35519617, 1.35321755,\n", - " 1.35473475],\n", - " [0.58295736, 0.5828308 , 0.58471569, ..., 0.53168129, 0.53390758,\n", - " 0.53426887]])" - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "posArr = res['posArr']\n", - "print(posArr.shape)\n", - "res['zsArr']\n" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[]" - ] - }, - "execution_count": 25, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# plot the final positions\n", - "import matplotlib.pyplot as plt\n", - "plt.plot(posArr[0,:,-1], posArr[1,:,-1], 'ro')" - ] - }, - { - "cell_type": "code", - "execution_count": 70, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "(100,)\n", - "(100, 400)\n", - "399\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "posArr = res['posArr']\n", - "opinionArr = res['zsArr']\n", - "stateArr = res['stArr']\n", - "\n", - "pos = posArr[:,:,-1]\n", - "opinion = opinionArr[:,-1]\n", - "state = stateArr[:,-1]\n", - "\n", - "print(opinion.shape)\n", - "\n", - "importlib.reload(pp)\n", - "\n", - "# CMap = plt.cm.get_cmap('coolwarm')\n", - "\n", - "# from palettable.lightbartlein.diverging import BlueDarkRed18_2\n", - "# CMap = BlueDarkRed18_2.mpl_colormap\n", - "\n", - "from palettable.scientific.diverging import Berlin_20\n", - "CMap = Berlin_20.mpl_colormap\n", - "\n", - "# from palettable.mycarta import Cube1_3\n", - "# CMap = Cube1_3.mpl_colormap\n", - "\n", - "NPop = 100\n", - "linkThresh = 0.15\n", - "\n", - "# pp.plot_pos_net(pos=pos, opinion=opinion, state=state, CMap=CMap, NPop=NPop, linkThresh=linkThresh, show_net_bool=True, marker_size=40, bool_from_arr=False)\n", - "\n", - "print(opinionArr.shape)\n", - "length_of_sim = opinionArr.shape[1] - 1\n", - "print(length_of_sim)\n", - "pp.plot_pos_net(pos=posArr, opinion=opinionArr, state=stateArr, time=length_of_sim, CMap=CMap, NPop=NPop, linkThresh=linkThresh, show_net_bool=True, marker_size=40, bool_from_arr=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "ename": "NameError", - "evalue": "name 'importlib' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[1], line 4\u001b[0m\n\u001b[1;32m 2\u001b[0m get_ipython()\u001b[38;5;241m.\u001b[39mrun_line_magic(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mmatplotlib\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mqt5\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m 3\u001b[0m \u001b[38;5;66;03m# reload pp everytime automatically\u001b[39;00m\n\u001b[0;32m----> 4\u001b[0m \u001b[43mimportlib\u001b[49m\u001b[38;5;241m.\u001b[39mreload(pp)\n\u001b[1;32m 6\u001b[0m pp\u001b[38;5;241m.\u001b[39mshow_animation(result\u001b[38;5;241m=\u001b[39mres)\n", - "\u001b[0;31mNameError\u001b[0m: name 'importlib' is not defined" - ] - } - ], - "source": [ - "# show matplotlib in a external window with qt5\n", - "%matplotlib qt5\n", - "# reload pp everytime automatically\n", - "importlib.reload(pp)\n", - "\n", - "pp.show_animation(result=res)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 61, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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Cg0N1e23367FixfrqquuCkYbAACgiQn69xwBAABcSfjdagAAABbCEQAAgIVwBAAAYCEcAQAAWBplOHr88cc1cOBARUZGKjo6uk7bGGM0c+ZMtWvXTi1atJDb7daePXsCaoqLizVq1Cg5nU5FR0dr3LhxAV9NcLnV9/j279+vkJCQGpd169b562pav3bt2kvRUp2cz3m55ZZbqvV07733BtQcOHBAw4YNU2RkpNq2baspU6aooqIimK3US337Li4u1gMPPKBu3bqpRYsWuu666/Tggw/K6/UG1DXE871kyRJ16NBBERERSkxM1LZt285av27dOnXv3l0RERHq1auXNm3aFLC+Ls/3hqA+fS9btky/+MUv1KpVK7Vq1Uput7ta/ZgxY6qd25SUlGC3UW/16XvVqlXVeoqIiAioaYznu6b/w0JCQjRs2DB/TUM/3++//75+85vfKC4uTiEhIdq4ceM5t9m6datuuOEGORwOdenSRatWrapWU9//L2pkGqGZM2eaRYsWmYyMDBMVFVWnbebNm2eioqLMxo0bzWeffWZ++9vfmo4dO5offvjBX5OSkmL69OljPv74Y/N///d/pkuXLuaOO+4IUhf1V9/jq6ioMIcPHw5YZs+eba666ipz4sQJf50ks3LlyoA6++dyuZ3PeRk0aJBJT08P6Mnr9frXV1RUmOuvv9643W6zY8cOs2nTJhMTE2MyMzOD3U6d1bfvL774wvzud78zr732mtm7d6/JyckxXbt2NbfffntAXUM732vXrjXh4eFmxYoVZufOnSY9Pd1ER0eboqKiGus//PBDExYWZp588knz1VdfmUceecQ0b97cfPHFF/6aujzfL7f69n3nnXeaJUuWmB07dpjCwkIzZswYExUVZQ4dOuSvGT16tElJSQk4t8XFxZeqpTqpb98rV640TqczoCePxxNQ0xjP9/HjxwN6/vLLL01YWJhZuXKlv6ahn+9NmzaZ//f//p9Zv369kWQ2bNhw1vq///3vJjIy0mRkZJivvvrKPP300yYsLMxkZ2f7a+r7c6xNowxHZ6xcubJO4aiqqsq4XC6zYMEC/1hJSYlxOBzmr3/9qzHGmK+++spIMp988om/5q233jIhISHm22+/vejHXl8X6/gSEhLMf/zHfwSM1eUf7eVyvn0PGjTI/PGPf6x1/aZNm0xoaGjAf7J//vOf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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# make a movie animation using the plot_pos_net function\n", - "\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "from matplotlib.animation import FuncAnimation\n", - "\n", - "# Create a figure and a set of subplots\n", - "fig, ax = plt.subplots()\n", - "ax.set_xlim(-1, 1)\n", - "ax.set_ylim(-1, 1)\n", - "\n", - "# Create a FuncAnimation object\n", - "anim = FuncAnimation(fig, pp.plot_pos_net, frames=range(0, posArr.shape[2], 1), fargs=(posArr, opinionArr, stateArr, CMap, NPop, linkThresh, False, 40, True))\n", - "\n", - "# Show the animation\n", - "plt.show()\n", - "\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 62, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "MovieWriter imagemagick unavailable; using Pillow instead.\n" - ] - }, - { - "ename": "IndexError", - "evalue": "list index out of range", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", - "File \u001b[0;32m~/.pyenv/versions/3.9.6/lib/python3.9/site-packages/matplotlib/animation.py:243\u001b[0m, in \u001b[0;36mAbstractMovieWriter.saving\u001b[0;34m(self, fig, outfile, dpi, *args, **kwargs)\u001b[0m\n\u001b[1;32m 242\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 243\u001b[0m \u001b[38;5;28;01myield\u001b[39;00m \u001b[38;5;28mself\u001b[39m\n\u001b[1;32m 244\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n", - "File \u001b[0;32m~/.pyenv/versions/3.9.6/lib/python3.9/site-packages/matplotlib/animation.py:1092\u001b[0m, in \u001b[0;36mAnimation.save\u001b[0;34m(self, filename, writer, fps, dpi, codec, bitrate, extra_args, metadata, extra_anim, savefig_kwargs, progress_callback)\u001b[0m\n\u001b[1;32m 1091\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m anim \u001b[38;5;129;01min\u001b[39;00m all_anim:\n\u001b[0;32m-> 1092\u001b[0m \u001b[43manim\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_init_draw\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;66;03m# Clear the initial frame\u001b[39;00m\n\u001b[1;32m 1093\u001b[0m frame_number \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m0\u001b[39m\n", - "File \u001b[0;32m~/.pyenv/versions/3.9.6/lib/python3.9/site-packages/matplotlib/animation.py:1747\u001b[0m, in \u001b[0;36mFuncAnimation._init_draw\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1746\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m\n\u001b[0;32m-> 1747\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_draw_frame\u001b[49m\u001b[43m(\u001b[49m\u001b[43mframe_data\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1748\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n", - "File \u001b[0;32m~/.pyenv/versions/3.9.6/lib/python3.9/site-packages/matplotlib/animation.py:1766\u001b[0m, in \u001b[0;36mFuncAnimation._draw_frame\u001b[0;34m(self, framedata)\u001b[0m\n\u001b[1;32m 1764\u001b[0m \u001b[38;5;66;03m# Call the func with framedata and args. If blitting is desired,\u001b[39;00m\n\u001b[1;32m 1765\u001b[0m \u001b[38;5;66;03m# func needs to return a sequence of any artists that were modified.\u001b[39;00m\n\u001b[0;32m-> 1766\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_drawn_artists \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_func\u001b[49m\u001b[43m(\u001b[49m\u001b[43mframedata\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_args\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1768\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_blit:\n", - "File \u001b[0;32m~/My Drive/PhD/Publications/3__messengers/code_availability/messengers/Python_test/postpro.py:10\u001b[0m, in \u001b[0;36mplot_pos_net\u001b[0;34m(pos, opinion, state, CMap, NPop, linkThresh, show_net_bool, marker_size, bool_from_arr, time, link_color)\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m bool_from_arr:\n\u001b[0;32m---> 10\u001b[0m pos \u001b[38;5;241m=\u001b[39m pos[\u001b[38;5;241m0\u001b[39m, \u001b[38;5;241m0\u001b[39m, :, :, time, \u001b[38;5;241m0\u001b[39m]\u001b[38;5;241m.\u001b[39mreshape(\u001b[38;5;241m2\u001b[39m, \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m)\n\u001b[1;32m 11\u001b[0m opinion \u001b[38;5;241m=\u001b[39m opinion[\u001b[38;5;241m0\u001b[39m, \u001b[38;5;241m0\u001b[39m, :, time, \u001b[38;5;241m0\u001b[39m]\u001b[38;5;241m.\u001b[39mreshape(\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m)\n", - "\u001b[0;31mTypeError\u001b[0m: 'int' object is not subscriptable", - "\nDuring handling of the above exception, another exception occurred:\n", - "\u001b[0;31mIndexError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[62], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m# Save the animation\u001b[39;00m\n\u001b[0;32m----> 2\u001b[0m \u001b[43manim\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msave\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43manimation.gif\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mwriter\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mimagemagick\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mfps\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m10\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 4\u001b[0m \u001b[38;5;66;03m# Save the animation\u001b[39;00m\n\u001b[1;32m 5\u001b[0m anim\u001b[38;5;241m.\u001b[39msave(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124manimation.mp4\u001b[39m\u001b[38;5;124m'\u001b[39m, writer\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mffmpeg\u001b[39m\u001b[38;5;124m'\u001b[39m, fps\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m10\u001b[39m)\n", - "File \u001b[0;32m~/.pyenv/versions/3.9.6/lib/python3.9/site-packages/matplotlib/animation.py:1109\u001b[0m, in \u001b[0;36mAnimation.save\u001b[0;34m(self, filename, writer, fps, dpi, codec, bitrate, extra_args, metadata, extra_anim, savefig_kwargs, progress_callback)\u001b[0m\n\u001b[1;32m 1107\u001b[0m progress_callback(frame_number, total_frames)\n\u001b[1;32m 1108\u001b[0m frame_number \u001b[38;5;241m+\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[38;5;241m1\u001b[39m\n\u001b[0;32m-> 1109\u001b[0m writer\u001b[38;5;241m.\u001b[39mgrab_frame(\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39msavefig_kwargs)\n", - "File \u001b[0;32m~/.pyenv/versions/3.9.6/lib/python3.9/contextlib.py:135\u001b[0m, in \u001b[0;36m_GeneratorContextManager.__exit__\u001b[0;34m(self, type, value, traceback)\u001b[0m\n\u001b[1;32m 133\u001b[0m value \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mtype\u001b[39m()\n\u001b[1;32m 134\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 135\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mgen\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mthrow\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mtype\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mvalue\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtraceback\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 136\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mStopIteration\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m exc:\n\u001b[1;32m 137\u001b[0m \u001b[38;5;66;03m# Suppress StopIteration *unless* it's the same exception that\u001b[39;00m\n\u001b[1;32m 138\u001b[0m \u001b[38;5;66;03m# was passed to throw(). This prevents a StopIteration\u001b[39;00m\n\u001b[1;32m 139\u001b[0m \u001b[38;5;66;03m# raised inside the \"with\" statement from being suppressed.\u001b[39;00m\n\u001b[1;32m 140\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m exc \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m value\n", - "File \u001b[0;32m~/.pyenv/versions/3.9.6/lib/python3.9/site-packages/matplotlib/animation.py:245\u001b[0m, in \u001b[0;36mAbstractMovieWriter.saving\u001b[0;34m(self, fig, outfile, dpi, *args, **kwargs)\u001b[0m\n\u001b[1;32m 243\u001b[0m \u001b[38;5;28;01myield\u001b[39;00m \u001b[38;5;28mself\u001b[39m\n\u001b[1;32m 244\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n\u001b[0;32m--> 245\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfinish\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/.pyenv/versions/3.9.6/lib/python3.9/site-packages/matplotlib/animation.py:515\u001b[0m, in \u001b[0;36mPillowWriter.finish\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 514\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mfinish\u001b[39m(\u001b[38;5;28mself\u001b[39m):\n\u001b[0;32m--> 515\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_frames\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m]\u001b[49m\u001b[38;5;241m.\u001b[39msave(\n\u001b[1;32m 516\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39moutfile, save_all\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m, append_images\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_frames[\u001b[38;5;241m1\u001b[39m:],\n\u001b[1;32m 517\u001b[0m duration\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mint\u001b[39m(\u001b[38;5;241m1000\u001b[39m \u001b[38;5;241m/\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfps), loop\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m0\u001b[39m)\n", - "\u001b[0;31mIndexError\u001b[0m: list index out of range" - ] - } - ], - "source": [ - "# Save the animation\n", - "anim.save('animation.gif', writer='imagemagick', fps=10)\n", - "\n", - "# Save the animation\n", - "anim.save('animation.mp4', writer='ffmpeg', fps=10)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "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.6" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -}