From d80866a2f78d24ad32704e359cb09129b6c63a66 Mon Sep 17 00:00:00 2001 From: tibuch Date: Wed, 31 Mar 2021 18:29:40 +0200 Subject: [PATCH] Update DataModule - TRec notebook. --- .../DataModule - MNIST Tomo .ipynb | 606 ------------------ .../datamodules/trec/DataModule - TRec.ipynb | 232 +++++++ 2 files changed, 232 insertions(+), 606 deletions(-) delete mode 100644 examples/datamodules/DataModule - MNIST Tomo .ipynb create mode 100644 examples/datamodules/trec/DataModule - TRec.ipynb diff --git a/examples/datamodules/DataModule - MNIST Tomo .ipynb b/examples/datamodules/DataModule - MNIST Tomo .ipynb deleted file mode 100644 index 68f6642..0000000 --- a/examples/datamodules/DataModule - MNIST Tomo .ipynb +++ /dev/null @@ -1,606 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "from fit.datamodules.tomo_rec import MNISTTomoFourierTargetDataModule\n", - "from fit.utils import convert2FC, fft_interpolate, psfft, convert_to_dft, PSNR\n", - "from fit.utils.tomo_utils import get_proj_coords_pol, get_img_coords_pol\n", - "\n", - "from matplotlib import pyplot as plt\n", - "\n", - "import torch\n", - "\n", - "import numpy as np\n", - "\n", - "from skimage.transform import iradon\n", - "\n", - "from fit.utils.utils import denormalize" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# MNIST Tomo Fourier Target\n", - "Create a MNIST projection dataset with 15 angles and batch-size 4." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "batch_size = 4\n", - "num_angles = 7\n", - "img_shape = 27\n", - "inner_circle = True" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "dm = MNISTTomoFourierTargetDataModule(root_dir='/data/mnist/', batch_size=batch_size, \n", - " num_angles=num_angles, inner_circle=inner_circle)\n", - "dm.setup()" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "mean, std = dm.mean, dm.std" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "train_dl = dm.train_dataloader()" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "for sino, img in train_dl.dataset.ds:\n", - " break" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "plt.figure(figsize=(20,5))\n", - "plt.subplot(1,4,1)\n", - "plt.imshow(sino)\n", - "plt.title('Sinogram');\n", - "plt.subplot(1,4,2)\n", - "rec = iradon(sino.numpy().T, theta=np.rad2deg(-dm.gt_ds.get_ray_trafo().geometry.angles), circle=inner_circle,\n", - " output_size=img_shape).astype(np.float32).T\n", - "plt.imshow(rec)\n", - "plt.title('FBP');\n", - "plt.subplot(1,4,3)\n", - "plt.imshow(img)\n", - "plt.title('GT');\n", - "plt.subplot(1,4,4)\n", - "plt.imshow(img - rec)\n", - "plt.title('Alignment Check');" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "# x and y are normalized magnitude and angle of the Fourier coefficients\n", - "for x, y, y_real, (mag_min, mag_max) in train_dl:\n", - " break" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "# We have to convert angle and magnitude back to Fourier coefficients\n", - "x_fc = convert2FC(x, mag_min, mag_max)\n", - "y_fc = convert2FC(y, mag_min, mag_max)" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "det_len = dm.gt_ds.get_ray_trafo().geometry.detector.shape[0]" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Fourier Space Shape: (27, 14)\n" - ] - } - ], - "source": [ - "# Computing the projection and target Fourier coefficient coordinates\n", - "srcx, srcy, src_flatten_order = get_proj_coords(angles=dm.gt_ds.get_ray_trafo().geometry.angles, \n", - " det_len=det_len)\n", - "dstx, dsty, dst_flatten_order, order = get_img_coords(img_shape=img_shape, \n", - " det_len=det_len)\n", - "target_shape = order.shape\n", - "print('Fourier Space Shape:', target_shape)" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "plt.figure(figsize=(2.5, 5))\n", - "plt.scatter(srcx, srcy, marker='.', label='Projection Coordinates', \n", - " c=np.arange(srcx.shape[0]), cmap='YlOrRd')\n", - "plt.scatter(dstx, dsty, marker='.', label='Target Coordinates', c=np.arange(dstx.shape[0]), \n", - " cmap='YlGnBu')\n", - "\n", - "plt.axis('equal')\n", - "plt.title('Fourier Coefficient Coordinates');" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [], - "source": [ - "bin_factor = 2\n", - "shells = (det_len//2+1)/bin_factor\n", - "num_sino_fcs = np.clip(num_angles*int(shells + 1), 1, x_fc.shape[1])\n", - "num_target_fcs = np.sum(order <= shells)" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [], - "source": [ - "# Interpolate target Fourier coefficients based on projection Fourier coefficients --> Fourier Slice Theorem\n", - "i = 0\n", - "fc = x_fc[i][src_flatten_order]\n", - "fc[num_sino_fcs:] = 1\n", - "x_dft = fft_interpolate(srcx, srcy, dstx, dsty, fc, \n", - " target_shape=target_shape, dst_flatten_order=dst_flatten_order)" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [], - "source": [ - "y_fc_ = y_fc[i].numpy().flatten()[dst_flatten_order]\n", - "y_fc_[num_target_fcs:] = 1\n", - "y_fc_[dst_flatten_order] = y_fc_.flatten()" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": { - "scrolled": false - }, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "plt.figure(figsize=(10,5))\n", - "plt.subplot(1,2,1)\n", - "plt.imshow(np.roll(np.log(np.abs(x_dft)), x_dft.shape[0]//2, 0))\n", - "plt.colorbar()\n", - "plt.title('Interpolated Fourier Coefficients');\n", - "plt.subplot(1,2,2)\n", - "plt.imshow(np.roll(np.log(np.abs(y_fc_.reshape(27, 14))), img_shape//2, 0))\n", - "plt.colorbar()\n", - "plt.title('Ground Truth');" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "#Inputs: 56/98=0.571\n", - "#Targets: 82/378=0.217\n" - ] - } - ], - "source": [ - "print('#Inputs: {}/{}={:1.3f}'.format(num_sino_fcs, x_fc.shape[1], num_sino_fcs/x_fc.shape[1]))\n", - "print('#Targets: {}/{}={:1.3f}'.format(num_target_fcs, y_fc.shape[1], num_target_fcs/y_fc.shape[1]))" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [], - "source": [ - "mask = psfft(bin_factor, pixel_res=img_shape).numpy()" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "plt.figure(figsize=(15,5))\n", - "plt.subplot(1,3,1)\n", - "plt.imshow(np.roll(np.abs(mask), img_shape//2, 0))\n", - "plt.title('Mask')\n", - "plt.subplot(1,3,2)\n", - "plt.imshow(np.roll(np.abs(x_dft*mask), img_shape//2, 0))\n", - "plt.title('Masked Interpolated Fourier Coefficients');\n", - "plt.subplot(1,3,3)\n", - "plt.imshow(np.roll(np.abs(y_fc_.reshape(img_shape, img_shape//2 + 1) * mask), img_shape//2, 0))\n", - "plt.title('Masked Ground Truth');" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "plt.figure(figsize=(15,5))\n", - "plt.subplot(1,3,1)\n", - "rec_img = denormalize(np.roll(np.fft.irfftn(x_dft*mask, s=2*(img_shape,)), 2*(img_shape//2,), (0, 1)), \n", - " mean.item(), std.item())\n", - "plt.imshow(rec_img)\n", - "plt.title('Reconstructed Image');\n", - "plt.subplot(1,3,2)\n", - "y_target = denormalize(\n", - " np.roll(np.fft.irfftn(y_fc_.reshape(*target_shape)*mask, s=2*(img_shape,)), 2*(img_shape//2,), (0, 1)), \n", - " mean.item(), std.item())\n", - "plt.imshow(y_target)\n", - "plt.title('Ground Truth from Fourier Coefficients');\n", - "plt.subplot(1,3,3)\n", - "plt.imshow(denormalize(y_real[i], mean, std))\n", - "plt.title('Ground Truth');" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "PSNR Binned GT: 19.704\n" - ] - } - ], - "source": [ - "print('PSNR Binned GT: {:2.3f}'.format(\n", - " PSNR(denormalize(y_real[i], mean, std), \n", - " denormalize(torch.from_numpy(y_target), mean, std), torch.tensor(255., dtype=torch.float32)).item()))" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "MSE Input : 3872.761\n", - "MSE Binned GT: 3817.864\n" - ] - } - ], - "source": [ - "print('MSE Input : {:4.3f}'.format(np.mean((y_real[i].numpy() - rec_img)**2)))\n", - "print('MSE Binned GT: {:4.3f}'.format(np.mean((y_real[i].numpy() - y_target)**2)))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Training-Step and Real-Loss" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [], - "source": [ - "for x_fc, y_fc, y_real, (mag_min, mag_max) in train_dl:\n", - " break" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [], - "source": [ - "shells = (det_len//2+1) / bin_factor\n", - "num_sino_fcs = np.clip(num_angles * int(shells + 1), 1, x_fc.shape[1])\n", - "num_target_fcs = np.sum(order <= shells)" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [], - "source": [ - "t_src_flatten_order = torch.from_numpy(src_flatten_order)\n", - "t_dst_flatten_order = torch.from_numpy(dst_flatten_order)" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [], - "source": [ - "x_fc_ = x_fc[:, t_src_flatten_order][:, :num_sino_fcs]" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [], - "source": [ - "y_fc_ = y_fc[:, t_dst_flatten_order][:, :num_target_fcs]" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "pred_fc = y_fc_.clone()" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [], - "source": [ - "dft_pred = convert_to_dft(pred_fc, mag_min, mag_max, t_dst_flatten_order, img_shape=img_shape)\n", - "dft_target = convert_to_dft(y_fc_, mag_min, mag_max, t_dst_flatten_order, img_shape=img_shape)" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [], - "source": [ - "mask = psfft(bin_factor, pixel_res=img_shape)" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": {}, - "outputs": [], - "source": [ - "dft_pred *= mask\n", - "dft_target *= mask" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 32, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "plt.figure(figsize=(5,10))\n", - "plt.subplot(1,2,1)\n", - "plt.imshow(torch.log(dft_pred[0].abs()))\n", - "plt.subplot(1,2,2)\n", - "plt.imshow(torch.log(dft_target[0].abs()))" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": {}, - "outputs": [], - "source": [ - "y_hat = torch.roll(torch.fft.irfftn(dft_pred, dim=[1, 2], s=(img_shape, img_shape)),\n", - " 2*(img_shape // 2, ), (1, 2))\n", - "y_target = torch.roll(torch.fft.irfftn(dft_target, dim=[1,2], s=(img_shape, img_shape)),\n", - " 2*(img_shape // 2, ), (1, 2))" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "plt.figure(figsize=(15, 5))\n", - "plt.subplot(1,3,1)\n", - "plt.imshow(y_hat[0])\n", - "plt.colorbar()\n", - "plt.title('y_hat');\n", - "plt.subplot(1,3,2)\n", - "plt.imshow(y_target[0])\n", - "plt.colorbar()\n", - "plt.title('y_target');\n", - "plt.subplot(1,3,3)\n", - "plt.imshow(y_real[0])\n", - "plt.colorbar()\n", - "plt.title('GT');" - ] - } - ], - "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.7.9" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/examples/datamodules/trec/DataModule - TRec.ipynb b/examples/datamodules/trec/DataModule - TRec.ipynb new file mode 100644 index 0000000..90e8da7 --- /dev/null +++ b/examples/datamodules/trec/DataModule - TRec.ipynb @@ -0,0 +1,232 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from fit.datamodules.tomo_rec import MNIST_TRecFITDM, Kanji_TRecFITDM, LoDoPaB_TRecFITDM\n", + "from fit.utils.tomo_utils import get_polar_rfft_coords_2D, get_polar_rfft_coords_sinogram\n", + "\n", + "from matplotlib import pyplot as plt\n", + "\n", + "from skimage.transform import iradon\n", + "\n", + "import torch\n", + "\n", + "import numpy as np\n", + "\n", + "from fit.utils import denormalize_FC, pol2cart, fft_interpolate" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "dm = MNIST_TRecFITDM(root_dir='./data/', batch_size=4, num_angles=7)\n", + "\n", + "# dm = Kanji_TRecFITDM(root_dir='./data/Kanji/', batch_size=4, num_angles=33)\n", + "\n", + "# dm = LoDoPaB_TRecFITDM(batch_size=4, gt_shape=111, num_angles=33)\n", + "\n", + "dm.prepare_data()\n", + "dm.setup()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "train_dl = dm.train_dataloader()\n", + "\n", + "for sino, img in train_dl.dataset.ds:\n", + " break" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "train_dl = dm.train_dataloader()\n", + "\n", + "for x, fbp, y, y_real, (mag_min, mag_max) in train_dl:\n", + " break" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "# We have to convert angle and magnitude back to Fourier coefficients\n", + "x_fc = denormalize_FC(x, mag_min, mag_max)\n", + "y_fc = denormalize_FC(y, mag_min, mag_max)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "det_len = dm.gt_ds.get_ray_trafo().geometry.detector.shape[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Fourier Space Shape: torch.Size([27, 14])\n" + ] + } + ], + "source": [ + "# Computing the projection and target Fourier coefficient coordinates\n", + "srcx, srcy, src_flatten_order = get_polar_rfft_coords_sinogram(angles=dm.gt_ds.get_ray_trafo().geometry.angles, \n", + " det_len=det_len)\n", + "dstx, dsty, dst_flatten_order, order = get_polar_rfft_coords_2D(img_shape=dm.gt_shape)\n", + "target_shape = order.shape\n", + "print('Fourier Space Shape:', target_shape)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(5, 10))\n", + "plt.scatter(*pol2cart(srcx, srcy), marker='o', label='Projection Coordinates', \n", + " c=np.arange(srcx.shape[0]), cmap='YlOrRd', linewidth=1, edgecolor='black')\n", + "plt.scatter(*pol2cart(dstx, dsty), marker='.', label='Target Coordinates', c=np.arange(dstx.shape[0]), \n", + " cmap='YlGnBu', linewidth=1, edgecolor='black')\n", + "\n", + "plt.axis('equal')\n", + "plt.title('Fourier Coefficient Coordinates');" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "fbp = iradon(sino.numpy().T, theta=np.rad2deg(-dm.gt_ds.get_ray_trafo().geometry.angles), circle=True,\n", + " output_size=dm.gt_shape).astype(np.float32).T" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "fc_interpolated = fft_interpolate(srcx, srcy, dstx, dsty, x_fc[0,src_flatten_order], \n", + " target_shape=target_shape, dst_flatten_order=dst_flatten_order)\n", + "rec_interpolated = np.roll(np.fft.irfftn(fc_interpolated, s=2*(dm.gt_shape,)), 2*(dm.gt_shape//2,), (0, 1))" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "y_fc_ = y_fc[0].numpy().flatten()[dst_flatten_order]\n", + "y_fc_[dst_flatten_order] = y_fc_.flatten()\n", + "y_target = np.roll(np.fft.irfftn(y_fc_.reshape(*target_shape), s=2*(dm.gt_shape,)), 2*(dm.gt_shape//2,), (0, 1))" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(25,5))\n", + "plt.subplot(1,5,1)\n", + "plt.imshow(sino)\n", + "plt.title('Sinogram');\n", + "plt.subplot(1,5,2)\n", + "plt.imshow(rec_interpolated)\n", + "plt.title('Fourier Space Interpolation');\n", + "plt.subplot(1,5,3)\n", + "plt.imshow(fbp)\n", + "plt.title('Filtered Backprojection')\n", + "plt.subplot(1,5,4)\n", + "plt.imshow(y_target)\n", + "plt.title('Ground Truth from Fourier Coefficients');\n", + "plt.subplot(1,5,5)\n", + "plt.imshow(y_real[0])\n", + "plt.title('Ground Truth');" + ] + }, + { + "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.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +}