{ "cells": [ { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import os\n", "import torch\n", "content_path = '/home/yiming/ContrastDebugger/EXP/codesearch_query'\n", "model_path = os.path.join(content_path)\n", "ENCODER_DIMS= [128,64,64,64,64,2]\n", "DECODER_DIMS= [2,64,64,64,64,128]\n", "GPU_ID = 0\n", "PATIENT = 5\n", "MAX_EPOCH = 10\n", "Epoch_name = 'Epoch_'\n", "S_N_EPOCHS = 5\n", "VIS_MODEL_NAME = 'dvi'\n", "DEVICE = torch.device(\"cuda:{}\".format(GPU_ID) if torch.cuda.is_available() else \"cpu\")" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "def get_epoch_plot_measures(embedded):\n", " \n", "\n", " ebd_min = np.min(embedded, axis=0)\n", " ebd_max = np.max(embedded, axis=0)\n", " ebd_extent = ebd_max - ebd_min\n", "\n", " x_min, y_min = ebd_min - 0.1 * ebd_extent\n", " x_max, y_max = ebd_max + 0.1 * ebd_extent\n", "\n", " x_min = min(x_min, y_min)\n", " y_min = min(x_min, y_min)\n", " x_max = max(x_max, y_max)\n", " y_max = max(x_max, y_max)\n", "\n", " return x_min, y_min, x_max, y_max" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "ename": "ModuleNotFoundError", "evalue": "No module named 'singleVis'", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", "\u001b[1;32m/home/yiming/ContrastDebugger/EXP/codesearch/test.ipynb Cell 3\u001b[0m line \u001b[0;36m1\n\u001b[0;32m----> 1\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39msingleVis\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mSingleVisualizationModel\u001b[39;00m \u001b[39mimport\u001b[39;00m VisModel\n\u001b[1;32m 2\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mPIL\u001b[39;00m \u001b[39mimport\u001b[39;00m Image\n\u001b[1;32m 4\u001b[0m \u001b[39m# for Epoch in range(1,2):\u001b[39;00m\n", "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'singleVis'" ] } ], "source": [ "from singleVis.SingleVisualizationModel import VisModel\n", "from PIL import Image\n", "\n", "# for Epoch in range(1,2):\n", "Epoch = 1\n", "model = VisModel(ENCODER_DIMS, DECODER_DIMS)\n", "train_representation = np.load(os.path.join(model_path, '{}{}'.format(Epoch_name,Epoch), 'train_data.npy'))\n", "test_representation = np.load(os.path.join(model_path, '{}{}'.format(Epoch_name,Epoch), 'test_data.npy'))\n", "file_path = os.path.join(content_path, '{}{}'.format(Epoch_name,Epoch), \"{}.pth\".format(VIS_MODEL_NAME))\n", "save_model = torch.load(file_path, map_location=\"cpu\")\n", "model.load_state_dict(save_model[\"state_dict\"])\n", "model.to(DEVICE)\n", "model.eval()\n", "# emb = model.encoder(torch.from_numpy(train_representation).to(dtype=torch.float32, device=DEVICE)).cpu().detach().numpy()\n", "# x_min, y_min, x_max, y_max = get_epoch_plot_measures(emb)\n", "# print(x_min, y_min, x_max, y_max )\n", "# scale_path = os.path.join(content_path, \"Epoch_{}\".format( Epoch), \"scale.npy\")\n", "# np.save(scale_path,[x_min, y_min, x_max, y_max])\n", "\n", "# img = Image.new(\"RGB\",(200,200),(255,255,255))\n", "# bgimg_path = os.path.join(content_path, \"Epoch_{}\".format( Epoch), \"bgimg.png\")\n", "\n", "# img.save(bgimg_path)\n", "# data = np.concatenate((train_representation,test_representation),axis=0)\n", "#### save embeddings and background for visualization\n", "emb = model.encoder(torch.from_numpy(train_representation).to(dtype=torch.float32, device=DEVICE)).cpu().detach().numpy()\n", "np.save(os.path.join(content_path, 'Epoch_{}'.format(Epoch), 'embedding.npy'), emb)\n", " " ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "Epoch = 1\n", "train_representation = np.load(os.path.join(model_path,'Model', '{}{}'.format(Epoch_name,Epoch), 'train_data.npy'))" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "code1 = train_representation[346702]\n", "code2 = train_representation[342928]\n", "code3 = train_representation[49479]\n", "code4 = train_representation[90792]\n" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1.9433701\n", "3.9611351\n", "0.89250124\n" ] } ], "source": [ "euclidean_distance_1 = np.linalg.norm(code1 - code2)\n", "euclidean_distance_2 = np.linalg.norm(code1 - code3)\n", "euclidean_distance_3 = np.linalg.norm(code3 - code4)\n", "print(euclidean_distance_1)\n", "print(euclidean_distance_2)\n", "print(euclidean_distance_3)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "data = np.concatenate((train_representation,test_representation),axis=0)\n", "##### save embeddings and background for visualization\n", "emb = model.encoder(torch.from_numpy(data).to(dtype=torch.float32, device=DEVICE)).cpu().detach().numpy()\n", "np.save(os.path.join(content_path, 'Epoch_{}'.format(Epoch), 'embedding.npy'), emb)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "label_list = np.array([0]).repeat(len(emb))" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " ...]" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "label_list.tolist()" ] }, { "cell_type": "code", "execution_count": 7, "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", "plt.scatter(emb[:, 0], emb[:, 1])\n", "\n", "plt.xlabel(\"X\")\n", "plt.ylabel(\"Y\")\n", "\n", "# 显示图形\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "res_test = []\n", "with open (r'/home/yifan/full_checkpoint/dataset/test.txt', 'r') as f:\n", " for line in f:\n", " res_test.append(line)" ] }, { "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.10.6" } }, "nbformat": 4, "nbformat_minor": 2 }