{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "c0314d29-7fc8-4c11-8bfc-5440a442629a", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "https://hf-mirror.com\n" ] } ], "source": [ "# import subprocess\n", "# import os\n", "\n", "# result = subprocess.run('bash -c \"source /etc/network_turbo && env | grep proxy\"', shell=True, capture_output=True, text=True)\n", "# output = result.stdout\n", "# for line in output.splitlines():\n", "# if '=' in line:\n", "# var, value = line.split('=', 1)\n", "# os.environ[var] = value\n", "\n", "\n", "import os\n", "\n", "# 设置环境变量\n", "os.environ['HF_ENDPOINT'] = 'https://hf-mirror.com'\n", "\n", "# 打印环境变量以确认设置成功\n", "print(os.environ.get('HF_ENDPOINT'))" ] }, { "cell_type": "code", "execution_count": 2, "id": "1a09a2f5-dda6-4d86-badd-60bf2fda3983", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2025-02-10 09:46:42.348539: I tensorflow/core/util/port.cc:153] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`.\n", "2025-02-10 09:46:42.362158: E external/local_xla/xla/stream_executor/cuda/cuda_fft.cc:485] Unable to register cuFFT factory: Attempting to register factory for plugin cuFFT when one has already been registered\n", "2025-02-10 09:46:42.378104: E external/local_xla/xla/stream_executor/cuda/cuda_dnn.cc:8454] Unable to register cuDNN factory: Attempting to register factory for plugin cuDNN when one has already been registered\n", "2025-02-10 09:46:42.382810: E external/local_xla/xla/stream_executor/cuda/cuda_blas.cc:1452] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered\n", "2025-02-10 09:46:42.394903: I tensorflow/core/platform/cpu_feature_guard.cc:210] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.\n", "To enable the following instructions: AVX2 AVX512F AVX512_VNNI AVX512_BF16 FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags.\n", "2025-02-10 09:46:43.362404: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Could not find TensorRT\n" ] } ], "source": [ "from transformers import GPT2Tokenizer, GPT2Model,AutoModel\n", "import torch\n", "from transformers import AutoTokenizer, DataCollatorWithPadding\n", "from datasets import load_dataset\n", "from transformers import AutoTokenizer, DataCollatorWithPadding\n", "from transformers import Trainer\n", "import evaluate\n", "import numpy as np\n", "from transformers import TrainingArguments\n", "from transformers import AutoModelForSequenceClassification" ] }, { "cell_type": "code", "execution_count": 3, "id": "7c5ab8f5-b8a9-4930-ac30-49d0bf26d579", "metadata": {}, "outputs": [], "source": [ "model_name=\"gpt2_gene_multi_v2_ft\"\n", "device=\"cuda\"\n", "tokenizer = AutoTokenizer.from_pretrained(\"gpt2_gene_multi_v2_ft\")\n", "model = AutoModel.from_pretrained(model_name)\n", "model.to(device)\n", "\n", "def get_text_embedding(text):\n", " \"\"\"\n", " 使用 GPT-2 模型获取文本的向量表示。\n", " \n", " 参数:\n", " text (str): 输入文本。\n", " model_name (str): 预训练 GPT-2 模型名称,默认为 \"gpt2\"。\n", " device (str): 设备名称(\"cpu\" 或 \"cuda\")。\n", " \n", " 返回:\n", " torch.Tensor: 文本的向量表示,维度为 [hidden_size]。\n", " \"\"\"\n", "\n", " # 将文本编码为输入 ID 并添加批量维度\n", " inputs = tokenizer(text, return_tensors=\"pt\", truncation=True, max_length=256)\n", " input_ids = inputs[\"input_ids\"].to(device)\n", " attention_mask = inputs[\"attention_mask\"].to(device)\n", " \n", " # 获取模型的隐藏层输出\n", " with torch.no_grad():\n", " outputs = model(input_ids, attention_mask=attention_mask)\n", " hidden_states = outputs.last_hidden_state # [batch_size, seq_length, hidden_size]\n", " \n", " # 平均池化:获取序列中所有词向量的平均值\n", " embeddings = hidden_states.mean(dim=1).squeeze() # [hidden_size]\n", " \n", " return embeddings" ] }, { "cell_type": "code", "execution_count": 4, "id": "76ff7fed-fc17-421e-8a57-2a5de33d4ba6", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "39.938614" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn.metrics.pairwise import cosine_similarity\n", "\n", "def get_sim_score(s1, s2):\n", " v1 = get_text_embedding(s1)\n", " v2 = get_text_embedding(s2)\n", " \n", " # 假设dna_embedding和protein_embedding为numpy数组\n", " #similarity = cosine_similarity([v1.cpu().numpy()], [v2.cpu().numpy()])[0][0]\n", " A = v1.cpu().numpy()\n", " B = v2.cpu().numpy()\n", " #similarity = np.dot(A, B) / (np.linalg.norm(A) * np.linalg.norm(B))\n", " similarity = np.linalg.norm(A - B)\n", " return similarity\n", "\n", "s1 = \"ATCCCCCCCCCCCCCCCCCCCCCCCCCCCCC\"\n", "s2 = \"ATCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC\"\n", "s1 = \"ATGTCTCTACAGATGATAACGGTCAGTAATAACGTAACTTTAATTCAACCAGGCTTCTCACTGATGAATTTTGATGGACAAGTTTTCTTCTTTGGTCAAAAAGGCTGGCCCAAGAGATCCTGCCCCACAGGAGTTTTCCATTTTGATGTAAAGCATAACCATCTCAAACTGAAGCCTACAGTTTTCTCAAAGGATTCCTGCTACCTTCCTCCTCTTCGCTATCCAGCCACTTGCATATTTAAAGGCAACTTCGAGTCTGAAAAGCATCAGTATATCATCCATGGAGGGAAAACACCAAACAATGAACTTTCAGATAAGATGTATGTCATGTCTATTGTTTGCAAAAACAACAAAAAATTTACTTTTCGCTGCACGGAGAAAGACTTGGTAGGTGATGTTCCTGAAGGCAGATATGGCCATTCCATTGATGTAGTGTATAGTCGAGGGAAAAGTATGGGCGTTCTCTTTGGAGGACGATCTTACATGCCTTCTGCCCAAAGAACCACAGAAAAATGGAACAGTGTAGTTGACTGCTTGCCCCATCTCTTCTTGGTGGATTTTGAATTTGGGTGTTCTACATCCTACATTCTTCCCGAACTTCAGGATGGGATATCTTTTCATGTCTCCATTGCCAGAAATGATACCATTTATATTTTAGGAGGTCATTCACTCACCAATAACATCCGCCCTGCCAATCTGTTCAGAGTAAGGGTTGATCTCCCCCTGGGTAGCCCAGCTGTGAGTTGCACGGTCTTATCAGGAGGAATCTCTGTCTCCAGTGCAATCTTGACTCAAACTAATAATGATGAATTTGTCATTGTTGGTGGCTATCAGCTTGAAAATCAAAAAAGAATGGTCTGCAACATTGTCACTTTAGATGACAACAAGATAGATATTCGTGAGATGGAGGCACCAGATTGGACCCCAGATATTAAGCACAGCAAGGTATGGTTTGGAAACAACATGGGAAATGGGAGTGTTTTCCTTGGAATACCAGGAGACAATAAGCAGGCTGTTTCAGAAGCATTCTATTTCTATATGTTGAAATGTGCTGAAGATGATATAAATGAAGATGAGAAAACATTGATGAACAGTCAGACATCAACAGAAGATCCAGGAGACTCCACACCCTTTGAAGACTCGGAAGAATTTTGCTTCAGTGCAGAAGCAAATAGTTTTGGTGGGGATGATGAATTTGACACCTATAATGAAGATGATGAGGAAGATGAGTCTGAGACAGGCTACTGGATTACGTGTTGCCTTACTTGTAATGTGGATATCAACACTTGGGTACCATTCTACTCAACTGAGCTCAACAAACCTGCTATGATCTACTGCTCTCATGAGGACGGGCACTGGGTCCATGCTCAGTGCATGGATCTGGCAGAGCGCACGCTCATCCATCTGTCAGAAGGAAGCAACAAGTATTATTGCAATGAGCATGTGGAGATAGCAAGAGCACTACAAACCCCCAAAAGAGCCATGCCCTTGAAAAAGCCCCCACTGAAATCCCTCCGCAAAAAAGGCCCTGCAAAAATCTTGACTCCTGCCAAGAAATCCTTCCTTAGAAGATTGTTTGAT\"\n", "s2 = \"MSLQMITVSNNVTLIQPGFSLMNFDGQVFFFGQKGWPKRSCPTGVFHFDVKHNHLKLKPTVFSKDSCYLPPLRYPATCIFKGNFESEKHQYIIHGGKTPNNELSDKMYVMSIVCKNNKKFTFRCTEKDLVGDVPEGRYGHSIDVVYSRGKSMGVLFGGRSYMPSAQRTTEKWNSVVDCLPHLFLVDFEFGCSTSYILPELQDGISFHVSIARNDTIYILGGHSLTNNIRPANLFRVRVDLPLGSPAVSCTVLSGGISVSSAILTQTNNDEFVIVGGYQLENQKRMVCNIVTLDDNKIDIREMEAPDWTPDIKHSKVWFGNNMGNGSVFLGIPGDNKQAVSEAFYFYMLKCAEDDINEDEKTLMNSQTSTEDPGDSTPFEDSEEFCFSAEANSFGGDDEFDTYNEDDEEDESETGYWITCCLTCNVDINTWVPFYSTELNKPAMIYCSHEDGHWVHAQCMDLAERTLIHLSEGSNKYYCNEHVEIARALQTPKRAMPLKKPPLKSLRKKGPAKILTPAKKSFLRRLFD\"\n", "get_sim_score(s1, s2)" ] }, { "cell_type": "code", "execution_count": 5, "id": "2116f787-781f-4bfc-b12d-c36efe26cfa9", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "DatasetDict({\n", " train: Dataset({\n", " features: ['sentence1', 'sentence2', 'label'],\n", " num_rows: 8000\n", " })\n", " test: Dataset({\n", " features: ['sentence1', 'sentence2', 'label'],\n", " num_rows: 8000\n", " })\n", "})" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#模型测试 蛋白质数据集,150长度/450bp,复杂版本 不相似\n", "raw_datasets_dna_protein = load_dataset('dnagpt/gene_lan_transfer', 'dna_protein_pair_rand')['train'].train_test_split(test_size=0.5) #默认已经shuffle\n", "raw_datasets_dna_protein" ] }, { "cell_type": "code", "execution_count": 6, "id": "6e6b1d3d-3d05-40b0-a96a-537a4dc324d6", "metadata": {}, "outputs": [], "source": [ "sim_score = []\n", "dif_score = []\n", "\n", "for item in raw_datasets_dna_protein[\"train\"]:\n", " #print(item)\n", " sentence1 = item[\"sentence1\"]\n", " sentence2 = item[\"sentence2\"]\n", " label = item[\"label\"]\n", " score = get_sim_score(sentence1, sentence2)\n", "\n", " if 1 == label:\n", " sim_score.append(score)\n", " else:\n", " dif_score.append(score)" ] }, { "cell_type": "code", "execution_count": 7, "id": "a515f319-254b-4675-9ca5-fb15da6a62e5", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "38.87972 37.672188\n" ] } ], "source": [ "import numpy as np\n", "print(np.mean(sim_score), np.mean(dif_score))" ] }, { "cell_type": "code", "execution_count": 8, "id": "4417c7b5-8019-4a53-968a-4dee311acef3", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "4047 3953\n" ] } ], "source": [ "print(len(sim_score),len(dif_score))" ] }, { "cell_type": "code", "execution_count": 9, "id": "adc022c4-7bec-4381-b80b-6ac1b18be00c", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/root/miniconda3/lib/python3.12/site-packages/IPython/core/pylabtools.py:170: UserWarning: Glyph 39057 (\\N{CJK UNIFIED IDEOGRAPH-9891}) missing from font(s) DejaVu Sans.\n", " fig.canvas.print_figure(bytes_io, **kw)\n", "/root/miniconda3/lib/python3.12/site-packages/IPython/core/pylabtools.py:170: UserWarning: Glyph 25968 (\\N{CJK UNIFIED IDEOGRAPH-6570}) missing from font(s) DejaVu Sans.\n", " fig.canvas.print_figure(bytes_io, **kw)\n", "/root/miniconda3/lib/python3.12/site-packages/IPython/core/pylabtools.py:170: UserWarning: Glyph 20540 (\\N{CJK UNIFIED IDEOGRAPH-503C}) missing from font(s) DejaVu Sans.\n", " fig.canvas.print_figure(bytes_io, **kw)\n", "/root/miniconda3/lib/python3.12/site-packages/IPython/core/pylabtools.py:170: UserWarning: Glyph 20998 (\\N{CJK UNIFIED IDEOGRAPH-5206}) missing from font(s) DejaVu Sans.\n", " fig.canvas.print_figure(bytes_io, **kw)\n", "/root/miniconda3/lib/python3.12/site-packages/IPython/core/pylabtools.py:170: UserWarning: Glyph 24067 (\\N{CJK UNIFIED IDEOGRAPH-5E03}) missing from font(s) DejaVu Sans.\n", " fig.canvas.print_figure(bytes_io, **kw)\n", "/root/miniconda3/lib/python3.12/site-packages/IPython/core/pylabtools.py:170: UserWarning: Glyph 30452 (\\N{CJK UNIFIED IDEOGRAPH-76F4}) missing from font(s) DejaVu Sans.\n", " fig.canvas.print_figure(bytes_io, **kw)\n", "/root/miniconda3/lib/python3.12/site-packages/IPython/core/pylabtools.py:170: UserWarning: Glyph 26041 (\\N{CJK UNIFIED IDEOGRAPH-65B9}) missing from font(s) DejaVu Sans.\n", " fig.canvas.print_figure(bytes_io, **kw)\n", "/root/miniconda3/lib/python3.12/site-packages/IPython/core/pylabtools.py:170: UserWarning: Glyph 22270 (\\N{CJK UNIFIED IDEOGRAPH-56FE}) missing from font(s) DejaVu Sans.\n", " fig.canvas.print_figure(bytes_io, **kw)\n", "/root/miniconda3/lib/python3.12/site-packages/IPython/core/pylabtools.py:170: UserWarning: Glyph 21306 (\\N{CJK UNIFIED IDEOGRAPH-533A}) missing from font(s) DejaVu Sans.\n", " fig.canvas.print_figure(bytes_io, **kw)\n", "/root/miniconda3/lib/python3.12/site-packages/IPython/core/pylabtools.py:170: UserWarning: Glyph 38388 (\\N{CJK UNIFIED IDEOGRAPH-95F4}) missing from font(s) DejaVu Sans.\n", " fig.canvas.print_figure(bytes_io, **kw)\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", "\n", "# 示例数据(Python list,float 类型)\n", "#data = np.random.normal(loc=50, scale=15, size=200) # 生成200个服从正态分布的随机数\n", "data = sim_score\n", "\n", "# 计算直方图并自动确定分区数\n", "plt.figure(figsize=(8, 6)) # 设置图像大小\n", "plt.hist(data, bins='auto', edgecolor='black', alpha=0.7)\n", "\n", "# 添加标题和标签\n", "plt.xlabel('数值区间', fontsize=12)\n", "plt.ylabel('频数', fontsize=12)\n", "plt.title('数值分布直方图', fontsize=14)\n", "\n", "# 显示网格\n", "plt.grid(axis='y', linestyle='--', alpha=0.7)\n", "\n", "# 显示直方图\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 10, "id": "71ff0b65-1ced-49de-8bf3-60c9715916db", "metadata": {}, "outputs": [ { "data": { "image/png": "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Luo5mZmZmjt3btznDCc9t1EsgUBAPp9PHk/f91b529/+pry8PJ199tlatWqV6uvrT8WUT6t42+epp57SuHHj9KlPfUp33HGHmpub465jpL+Htm7dqm3btum6667rd12mvYdWr16tpUuXRr32ktgXdRNvG8UyEvdF/W0f9kUDfw+N5H3RQBl5BzVTvffeeyotLVVra6tGjx6tZ555RtOnT9e2bduUmpqqrKysqPH5+fmqq6uLua6ues+7yvX1nOEg3jbq6fDhw/re976nlStX9rm+xYsXa9myZZo4caL27NmjO++8U0uWLFFZWZncbvepauOU6Wv7fO1rX1NJSYkKCwu1fft23X777aqoqNAf/vCHmOsa6e+hhx9+WNOmTdNnPvOZPtdn2nvoN7/5jd599139/e9/77Wsrq6OfZH63kY9jcR9UX/bh33R4N5DI3VfNBiE3WHk7LPP1rZt2xQIBPTf//3fuuaaa7Rp06ZETyupxNtG3cNKMBjU0qVLNX36dK1Zs6bP9V1xxRXO/59zzjmaMWOGJk+erL/97W9asGDBqWrjlOlr+3T/YXvOOedo/PjxWrBggfbs2aPJkycncNan10DeQy0tLdqwYYO++93v9rs+k95D1dXV+rd/+ze98sorGjVqVKKnk5QGs41G4r5oINtnpO+LBvMeGqn7okFL9HkUOHkLFiywV65caW/cuNGWZB85ciRqeXFxsf2Tn/wk5nP37NljS7LLy8uj6vPnz7e/9a1vnaIZn35d26hLMBi0S0tL7QULFpz0BxfGjRtnP/jgg0M1xYTquX26a2pqsiXZL730UszlI/U9ZNu2/cQTT9gpKSn2oUOHTmqdw/U99Mwzz9iSbLfb7Twk2ZZl2W6323711VdH/L6ov20UDodt2x65+6KBbp/uRtq+aDDbaKTuiwaLc3aHsUgkora2Ns2aNUspKSnauHGjs6yiokL79u2Le77qxIkTVVBQEPWcYDCot99+O+5zhqOubSR19nfxxRcrNTVVf/rTn07qyFRNTY3q6+s1fvz4oZ5qQnTfPj1t27ZNkuL2OhLfQ10efvhhffGLX1Rubu6g1zec30MLFizQe++9p23btjmP2bNn68orr3T+f6Tvi/rbRm63e0TviwayfXoaafuiwWyjkbovGrREp20MzHe+8x1706ZNdmVlpb19+3b7O9/5jm1Zlv2Xv/zFtu3Oy/0UFxfbr732mr1lyxa7tLTULi0tjVrH2Wefbf/hD39wvr7vvvvsrKws+9lnn7W3b99uX3bZZcP6Ui19baNAIGDPnTvXPuecc+zdu3dHXXql+2/J3bdRY2Oj/e1vf9suKyuzKysr7VdffdX+9Kc/bU+ZMsVubW1NVJsnra/ts3v3bvvee++1t2zZYldWVtrPPvusPWnSJHv+/PlR6xjJ76EuH374oW1Zlv3iiy/GXIfJ76FYen5KnH1Rb923Efui3rpvH/ZFscW6GgP7ooEj7A4T//Iv/2KXlJTYqampdm5urr1gwYKoH8AtLS32v/7rv9pjx46109PT7S996Ut2bW1t1Dok2Y8++qjzdSQSsb/73e/a+fn5ttfrtRcsWGBXVFScrpaGXF/b6K9//astKeajsrLSWUf3bdTc3GxffPHFdm5urp2SkmKXlJTYK1assOvq6hLQ3cfX1/bZt2+fPX/+fDs7O9v2er32WWedZd922229rm05kt9DXe644w57woQJdkdHR8x1mPweiqXnD2H2Rb1130bsi3rrvn3YF8UWK+yyLxo4y7Zt+/QeSwYAAABOD87ZBQAAgLEIuwAAADAWYRcAAADGIuwCAADAWIRdAAAAGIuwCwAAAGMRdgEAAGAswi4AAACMRdgFAACAsQi7AAAAMJYn0RMAAMS2c+dOnXfeeUpNTY25vL29XeXl5f2Oef/999Xa2jqk4yZPnnxyTQHAaUbYBYAkZdu2zj//fL355psxl8+bN2/AY4Z6HAAMF5zGAAAAAGMRdgEAAGAswi4AAACMRdgFAACAsQi7AAAAMBZhFwAAAMYi7AIAAMBYhF0AAAAYi7ALAAAAYxF2AQAAYCzCLgAAAIxF2AUAAICxPImeAAAgvrfeektZWVkxlzU1NQ14zKkYBwDDgWXbtp3oSQAAAACnAqcxAAAAwFiEXQAAABiLsAsAAABjEXYBAABgLMIuAAAAjEXYBQAAgLEIuwAAADAWYRcAAADGIuwCAADAWP8/SmluBIeZ2rYAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", "\n", "# 示例数据(Python list,float 类型)\n", "#data = np.random.normal(loc=50, scale=15, size=200) # 生成200个服从正态分布的随机数\n", "data = dif_score\n", "\n", "# 计算直方图并自动确定分区数\n", "plt.figure(figsize=(8, 6)) # 设置图像大小\n", "plt.hist(data, bins='auto', edgecolor='black', alpha=0.7)\n", "\n", "# 添加标题和标签\n", "plt.xlabel('数值区间', fontsize=12)\n", "plt.ylabel('频数', fontsize=12)\n", "plt.title('数值分布直方图', fontsize=14)\n", "\n", "# 显示网格\n", "plt.grid(axis='y', linestyle='--', alpha=0.7)\n", "\n", "# 显示直方图\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 11, "id": "f314d408-18ff-4e59-92bd-eb7a767ca262", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", "\n", "# 示例数据\n", "data1 = sim_score # 生成 1000 个符合正态分布的随机数\n", "data2 = dif_score # 生成 1000 个偏移的随机数\n", "\n", "# 绘制直方图\n", "plt.hist(data1, bins=30, alpha=0.5, label='Data 1', color='blue', edgecolor='black')\n", "plt.hist(data2, bins=30, alpha=0.5, label='Data 2', color='red', edgecolor='black')\n", "\n", "# 添加图例\n", "plt.legend()\n", "\n", "# 添加标题和标签\n", "plt.title('Histogram of Two Data Sets')\n", "plt.xlabel('Value')\n", "plt.ylabel('Frequency')\n", "\n", "# 显示图形\n", "plt.show()\n" ] }, { "cell_type": "code", "execution_count": null, "id": "ff7610d0-0487-418b-905e-969f4cd4f321", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.12.3" } }, "nbformat": 4, "nbformat_minor": 5 }