diff --git a/README.md b/README.md index e7ca987..8932448 100644 --- a/README.md +++ b/README.md @@ -45,6 +45,13 @@ +## MeshNet Example +This basic example provides an overview of the training pipeline for the MeshNet model. + +* [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/neuroneural/brainchop/blob/master/py2tfjs/MeshNet_Training_Example.ipynb) [MeshNet Basic Training example](./py2tfjs/MeshNet_Training_Example.ipynb) + + + ## Live Demo To see Brainchop in action please click [here](https://neuroneural.github.io/brainchop). diff --git a/py2tfjs/MeshNet_Training_Example.ipynb b/py2tfjs/MeshNet_Training_Example.ipynb new file mode 100644 index 0000000..d4323e5 --- /dev/null +++ b/py2tfjs/MeshNet_Training_Example.ipynb @@ -0,0 +1,3231 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "source": [ + "\"Open" + ], + "metadata": { + "id": "A1c2bimsUbI2" + } + }, + { + "cell_type": "markdown", + "source": [ + "In this tutorial, you will find a simple tutorial on how to train the **MeshNet** model for MRI brain Gray Matter White Matter (GWM) segmentation. This task involves segmenting the brain into three different regions. The model will be trained on sample volumes from the **Mindboggle 101** brain MRI scans dataset for the multiclass 3D segmentation task.\n", + "\n", + "\n", + "This training pipeline example is part of the [**Brainchop**](https://neuroneural.github.io/brainchop/) project, where the basic MeshNet model is trained using **PyTorch**, and the resulting model can be converted to the **Tensorflow.js** (tfjs) model to be used with Brainchop.\n", + "\n", + "For more information about the whole conversion process, please refer to the Repo [Wiki](https://github.com/neuroneural/brainchop/wiki).\n", + "\n", + "---\n", + "\n", + "This tutorial developed by [Pratyush Reddy](pratyushrg@gmail.com\n", + "), revised by [Mohamed Masoud](mohamedemory@gmail.com), and [Sergey Plis](s.m.plis@gmail.com)\n", + "\n" + ], + "metadata": { + "id": "tKyWAoiv3mN3" + } + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Oxp9pcTthFZW" + }, + "source": [ + "#Imports" + ] + }, + { + "cell_type": "markdown", + "source": [ + "* Installing nibabel and nilearn packages for reading 3d Brain MRI scans.\n", + "* Importing essential libraries" + ], + "metadata": { + "id": "BKmrYuJk1NpZ" + } + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "WPRBNRuVJAbX", + "outputId": "d5152b59-1cba-47a3-f322-a44ea9fc2ff5" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Requirement already satisfied: nibabel in /usr/local/lib/python3.10/dist-packages (4.0.2)\n", + "Collecting nilearn\n", + " Downloading nilearn-0.10.2-py3-none-any.whl (10.4 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m10.4/10.4 MB\u001b[0m \u001b[31m79.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: numpy>=1.17 in /usr/local/lib/python3.10/dist-packages (from nibabel) (1.23.5)\n", + "Requirement already satisfied: packaging>=17.0 in /usr/local/lib/python3.10/dist-packages (from nibabel) (23.2)\n", + "Requirement already satisfied: setuptools in /usr/local/lib/python3.10/dist-packages (from nibabel) (67.7.2)\n", + "Requirement already satisfied: joblib>=1.0.0 in /usr/local/lib/python3.10/dist-packages (from nilearn) (1.3.2)\n", + "Requirement already satisfied: lxml in /usr/local/lib/python3.10/dist-packages (from nilearn) (4.9.3)\n", + "Requirement already satisfied: pandas>=1.1.5 in /usr/local/lib/python3.10/dist-packages (from nilearn) (1.5.3)\n", + "Requirement already satisfied: requests>=2.25.0 in /usr/local/lib/python3.10/dist-packages (from nilearn) (2.31.0)\n", + "Requirement already satisfied: scikit-learn>=1.0.0 in /usr/local/lib/python3.10/dist-packages (from nilearn) (1.2.2)\n", + "Requirement already satisfied: scipy>=1.6.0 in /usr/local/lib/python3.10/dist-packages (from nilearn) (1.11.3)\n", + "Requirement already satisfied: python-dateutil>=2.8.1 in /usr/local/lib/python3.10/dist-packages (from pandas>=1.1.5->nilearn) (2.8.2)\n", + "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas>=1.1.5->nilearn) (2023.3.post1)\n", + "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests>=2.25.0->nilearn) (3.3.2)\n", + "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests>=2.25.0->nilearn) (3.4)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests>=2.25.0->nilearn) (2.0.7)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests>=2.25.0->nilearn) (2023.7.22)\n", + "Requirement already satisfied: threadpoolctl>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from scikit-learn>=1.0.0->nilearn) (3.2.0)\n", + "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.8.1->pandas>=1.1.5->nilearn) (1.16.0)\n", + "Installing collected packages: nilearn\n", + "Successfully installed nilearn-0.10.2\n" + ] + } + ], + "source": [ + "!pip install nibabel nilearn" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "id": "TNueE888JCQp" + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "import nibabel as nib\n", + "import ipywidgets as widgets\n", + "from nilearn import plotting\n", + "import matplotlib.pyplot as plt\n", + "from IPython.display import display\n", + "from collections import OrderedDict\n", + "import torch\n", + "import os\n", + "import torch.nn as nn\n", + "from torch.utils.checkpoint import checkpoint_sequential\n", + "from torch.utils.data import DataLoader" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "5VYNwjgLSwLd" + }, + "source": [ + "# Download required dataset" + ] + }, + { + "cell_type": "markdown", + "source": [ + "We'll be using samples from Mindboggle 101 brain MRI scans dataset for a multiclass 3d segmentation task.\n", + "* Contents:\n", + " 1. BrainDatasets comprise of T1 scans + the prepared limited labels.\n", + " 2. Training(10 pairs of images,labels), Validation(2 pairs), Inference(3 pairs) datasets" + ], + "metadata": { + "id": "y99spj1F2Zt-" + } + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "id": "uBBYs8LiBvRs", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "0e63a213-802c-41c2-a571-5b7f9730068a" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "--2023-11-27 06:30:53-- https://meshnet-pr-dataset.s3.amazonaws.com/data-1-10.zip\n", + "Resolving meshnet-pr-dataset.s3.amazonaws.com (meshnet-pr-dataset.s3.amazonaws.com)... 54.231.200.33, 52.217.196.65, 52.216.24.68, ...\n", + "Connecting to meshnet-pr-dataset.s3.amazonaws.com (meshnet-pr-dataset.s3.amazonaws.com)|54.231.200.33|:443... connected.\n", + "HTTP request sent, awaiting response... 200 OK\n", + "Length: 128402177 (122M) [application/zip]\n", + "Saving to: ‘data-1-10.zip’\n", + "\n", + "data-1-10.zip 100%[===================>] 122.45M 34.8MB/s in 3.5s \n", + "\n", + "2023-11-27 06:30:56 (34.8 MB/s) - ‘data-1-10.zip’ saved [128402177/128402177]\n", + "\n", + "Archive: data-1-10.zip\n", + " inflating: data/coords_generator.py \n", + " inflating: data/dataset_infer.csv \n", + " inflating: data/dataset_train.csv \n", + " inflating: data/model.py \n", + " inflating: data/brain_dataset(1).py \n", + " inflating: data/reader.py \n", + " inflating: data/brain_dataset.py \n", + " inflating: data/dataset_valid.csv \n", + " inflating: data/Mindboggle_101/NKI-TRT-20_volumes/NKI-TRT-20-18/t1weighted.nii.gz \n", + " inflating: data/Mindboggle_101/MMRR-21_volumes/MMRR-21-9/t1weighted.nii.gz \n", + " inflating: data/Mindboggle_101/MMRR-21_volumes/MMRR-21-12/t1weighted.nii.gz \n", + " inflating: data/Mindboggle_101/OASIS-TRT-20_volumes/OASIS-TRT-20-13/t1weighted.nii.gz \n", + " inflating: data/Mindboggle_101/MMRR-21_volumes/MMRR-21-7/t1weighted.nii.gz \n", + " inflating: data/Mindboggle_101/MMRR-21_volumes/MMRR-21-3/labels.DKT31.manual+aseg.nii.gz \n", + " inflating: data/Mindboggle_101/NKI-TRT-20_volumes/NKI-TRT-20-6/labels.DKT31.manual+aseg.nii.gz \n", + " inflating: data/Mindboggle_101/Extra-18_volumes/MMRR-3T7T-2-1/labels.DKT31.manual+aseg.nii.gz \n", + " inflating: data/Mindboggle_101/NKI-RS-22_volumes/NKI-RS-22-15/labels.DKT31.manual+aseg.nii.gz \n", + " inflating: data/Mindboggle_101/NKI-TRT-20_volumes/NKI-TRT-20-11/t1weighted.nii.gz \n", + " inflating: data/Mindboggle_101/NKI-TRT-20_volumes/NKI-TRT-20-6/t1weighted.nii.gz \n", + " inflating: data/Mindboggle_101/Extra-18_volumes/MMRR-3T7T-2-1/t1weighted.nii.gz \n", + " inflating: data/Mindboggle_101/NKI-RS-22_volumes/NKI-RS-22-19/labels.DKT31.manual+aseg.nii.gz \n", + " inflating: data/Mindboggle_101/NKI-RS-22_volumes/NKI-RS-22-8/t1weighted.nii.gz \n", + " inflating: data/Mindboggle_101/MMRR-21_volumes/MMRR-21-7/labels.DKT31.manual+aseg.nii.gz \n", + " inflating: data/Mindboggle_101/MMRR-21_volumes/MMRR-21-9/labels.DKT31.manual+aseg.nii.gz \n", + " inflating: data/Mindboggle_101/NKI-TRT-20_volumes/NKI-TRT-20-18/labels.DKT31.manual+aseg.nii.gz \n", + " inflating: data/Mindboggle_101/NKI-RS-22_volumes/NKI-RS-22-5/labels.DKT31.manual+aseg.nii.gz \n", + " inflating: data/Mindboggle_101/NKI-RS-22_volumes/NKI-RS-22-9/labels.DKT31.manual+aseg.nii.gz \n", + " inflating: data/Mindboggle_101/NKI-RS-22_volumes/NKI-RS-22-19/t1weighted.nii.gz \n", + " inflating: data/Mindboggle_101/Extra-18_volumes/HLN-12-12/t1weighted.nii.gz \n", + " inflating: data/Mindboggle_101/Extra-18_volumes/HLN-12-12/labels.DKT31.manual+aseg.nii.gz \n", + " inflating: data/Mindboggle_101/MMRR-21_volumes/MMRR-21-3/t1weighted.nii.gz \n", + " inflating: data/Mindboggle_101/OASIS-TRT-20_volumes/OASIS-TRT-20-13/labels.DKT31.manual+aseg.nii.gz \n", + " inflating: data/Mindboggle_101/MMRR-21_volumes/MMRR-21-12/labels.DKT31.manual+aseg.nii.gz \n", + " inflating: data/Mindboggle_101/NKI-RS-22_volumes/NKI-RS-22-8/labels.DKT31.manual+aseg.nii.gz \n", + " inflating: data/Mindboggle_101/NKI-RS-22_volumes/NKI-RS-22-5/t1weighted.nii.gz \n", + " inflating: data/Mindboggle_101/NKI-RS-22_volumes/NKI-RS-22-9/t1weighted.nii.gz \n", + " inflating: data/Mindboggle_101/NKI-RS-22_volumes/NKI-RS-22-15/t1weighted.nii.gz \n", + " inflating: data/Mindboggle_101/NKI-TRT-20_volumes/NKI-TRT-20-11/labels.DKT31.manual+aseg.nii.gz \n" + ] + } + ], + "source": [ + "!wget https://meshnet-pr-dataset.s3.amazonaws.com/data-1-10.zip\n", + "!unzip data-1-10.zip\n", + "!rm data-1-10.zip" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "slH_hecyS9J8" + }, + "source": [ + "# Generate graywhite and anatomic labels from existing label files" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "id": "RF1RJ8o-An3X", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "outputId": "77aa823a-7b73-498f-85f6-da7bdfebd467" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "'/content'" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "string" + } + }, + "metadata": {}, + "execution_count": 4 + } + ], + "source": [ + "pwd" + ] + }, + { + "cell_type": "markdown", + "source": [ + "This function takes an input label array and produces a binary mask that distinguishes white matter and gray matter regions using specific integer codes. The conversion to comply with FreeSurfer label numbersing convention and their ColorLUT:\n", + "\n", + "https://surfer.nmr.mgh.harvard.edu/fswiki/FsTutorial/AnatomicalROI/FreeSurferColorLUT" + ], + "metadata": { + "id": "Z1NBHcjw6_du" + } + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "id": "8jtDcxjUHLFL" + }, + "outputs": [], + "source": [ + "def labels2graywhite(label):\n", + " white_code = [2, 41, 7, 16, 46] + [*range(251, 256)]\n", + " gray_code = (\n", + " [*range(1001, 1004)]\n", + " + [*range(1005, 1036)]\n", + " + [*range(2001, 2004)]\n", + " + [*range(2005, 2036)]\n", + " + [*range(8, 14)]\n", + " + [*range(17, 21)]\n", + " + [*range(26, 29)]\n", + " + [*range(47, 56)]\n", + " + [*range(58, 61)]\n", + " )\n", + " white = np.isin(label, white_code)\n", + " gray = np.isin(label, gray_code)\n", + " return white.astype(np.uint8) + (2 * gray).astype(np.uint8)" + ] + }, + { + "cell_type": "markdown", + "source": [ + "This function takes an input label array and maps the labels to anatomical regions" + ], + "metadata": { + "id": "A-k0A8VY7c0G" + } + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "id": "tu11Qg88He3s" + }, + "outputs": [], + "source": [ + "def labels2anatomic(label):\n", + " source = (\n", + " [0]\n", + " + [i for i in range(1001, 1004)]\n", + " + [i for i in range(1005, 1036)]\n", + " + [i for i in range(2001, 2004)]\n", + " + [i for i in range(2005, 2036)]\n", + " + [10,49,11,50,12,51,13,52,17,53,18,54,26,58,28,60,2,41,4,5,43,44,14,15,24,16,7,46,8,47,251,252,253,254,255,]\n", + " )\n", + " labelmap = {x: idx for idx, x in enumerate(source)}\n", + "\n", + " @np.vectorize\n", + " def relabel(x):\n", + " y = 0\n", + " if x in labelmap:\n", + " y = labelmap[x]\n", + " return y\n", + " return relabel(label).astype(np.uint8)" + ] + }, + { + "cell_type": "markdown", + "source": [ + "This function is for creating new labels names for labels generated from above **labels2anatomic, labels2graywhite** functions" + ], + "metadata": { + "id": "FuZQdAPK7fk7" + } + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "id": "dAPfH7XZIbXD" + }, + "outputs": [], + "source": [ + "def create_label(label, prefix):\n", + " temp=label.split('/')[:-1]\n", + " temp.append(prefix+label.split('/')[-1])\n", + " return '/'.join(temp)" + ] + }, + { + "cell_type": "markdown", + "source": [ + "function to update dataset.CSV files with new GW labels and anatamic labels details" + ], + "metadata": { + "id": "gco9Pyua70ni" + } + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "id": "yQuXBwKZHbRw" + }, + "outputs": [], + "source": [ + "def update_csv(CSV_file):\n", + " data = pd.read_csv(CSV_file)\n", + " data['GWlabels']=np.array([create_label(i, 'GW') for i in data['labels']], dtype=object)\n", + " # data['ANAlabels']=np.array([create_label(i, 'ANA') for i in data['labels']], dtype=object)\n", + " # data.drop(['nii_labels'], inplace=True, axis=1)\n", + " data.to_csv(CSV_file, index=False)" + ] + }, + { + "cell_type": "markdown", + "source": [ + "Function to Create GW labes using **labels2graywhite** function" + ], + "metadata": { + "id": "Z9G_RjV58H1O" + } + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "id": "qP32gW1lOU9l" + }, + "outputs": [], + "source": [ + "def create_greywhite(CSV_file):\n", + " data = pd.read_csv(CSV_file)\n", + " for label,GWlabel in zip(data.labels,data.GWlabels):\n", + " print('/'.join(GWlabel.split('/')[:-1]),GWlabel.split('/')[-1])\n", + " img_nifti = nib.load(label)\n", + " img = np.array(img_nifti.dataobj)\n", + " ni_img = nib.Nifti1Image(labels2graywhite(img), affine=np.eye(4))\n", + " nib.save(ni_img, os.path.join('/'.join(GWlabel.split('/')[:-1]), GWlabel.split('/')[-1]))" + ] + }, + { + "cell_type": "markdown", + "source": [ + "Function to Create anatomic labes using **labels2anatomic** function" + ], + "metadata": { + "id": "aRr7zh5V8jca" + } + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "id": "n9s3gj8DQkfT" + }, + "outputs": [], + "source": [ + "def create_ANA(CSV_file):\n", + " data = pd.read_csv(CSV_file)\n", + " for label,ANAlabel in zip(data.labels,data.ANAlabels):\n", + " print('/'.join(ANAlabel.split('/')[:-1]),ANAlabel.split('/')[-1])\n", + " img_nifti = nib.load(label)\n", + " img = np.array(img_nifti.dataobj)\n", + " ni_img = nib.Nifti1Image(labels2anatomic(img), affine=np.eye(4))\n", + " nib.save(ni_img, os.path.join('/'.join(ANAlabel.split('/')[:-1]), ANAlabel.split('/')[-1]))" + ] + }, + { + "cell_type": "markdown", + "source": [ + "Update dataset.csv's [Train,Infer,Valid) with generated GW and anatomic labels using **update_csv,create_ANA,create_greywhite**" + ], + "metadata": { + "id": "HIfvSlvb8qv4" + } + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "id": "36yU0UqRRVzq", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "49cc9ecb-ce9c-43d4-d652-f046053b1c01" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "data/Mindboggle_101/MMRR-21_volumes/MMRR-21-7 GWlabels.DKT31.manual+aseg.nii.gz\n", + "data/Mindboggle_101/NKI-RS-22_volumes/NKI-RS-22-19 GWlabels.DKT31.manual+aseg.nii.gz\n", + "data/Mindboggle_101/NKI-TRT-20_volumes/NKI-TRT-20-18 GWlabels.DKT31.manual+aseg.nii.gz\n", + "data/Mindboggle_101/NKI-TRT-20_volumes/NKI-TRT-20-11 GWlabels.DKT31.manual+aseg.nii.gz\n", + "data/Mindboggle_101/NKI-RS-22_volumes/NKI-RS-22-8 GWlabels.DKT31.manual+aseg.nii.gz\n", + "data/Mindboggle_101/NKI-RS-22_volumes/NKI-RS-22-15 GWlabels.DKT31.manual+aseg.nii.gz\n", + "data/Mindboggle_101/OASIS-TRT-20_volumes/OASIS-TRT-20-13 GWlabels.DKT31.manual+aseg.nii.gz\n", + "data/Mindboggle_101/NKI-RS-22_volumes/NKI-RS-22-9 GWlabels.DKT31.manual+aseg.nii.gz\n", + "data/Mindboggle_101/Extra-18_volumes/HLN-12-12 GWlabels.DKT31.manual+aseg.nii.gz\n", + "data/Mindboggle_101/Extra-18_volumes/MMRR-3T7T-2-1 GWlabels.DKT31.manual+aseg.nii.gz\n", + "data/Mindboggle_101/NKI-RS-22_volumes/NKI-RS-22-5 GWlabels.DKT31.manual+aseg.nii.gz\n", + "data/Mindboggle_101/NKI-TRT-20_volumes/NKI-TRT-20-6 GWlabels.DKT31.manual+aseg.nii.gz\n", + "data/Mindboggle_101/MMRR-21_volumes/MMRR-21-9 GWlabels.DKT31.manual+aseg.nii.gz\n", + "data/Mindboggle_101/MMRR-21_volumes/MMRR-21-3 GWlabels.DKT31.manual+aseg.nii.gz\n", + "data/Mindboggle_101/MMRR-21_volumes/MMRR-21-12 GWlabels.DKT31.manual+aseg.nii.gz\n" + ] + } + ], + "source": [ + "update_csv('./data/dataset_train.csv')\n", + "create_greywhite('./data/dataset_train.csv')\n", + "# create_ANA('./data/dataset_train.csv')\n", + "update_csv('./data/dataset_infer.csv')\n", + "create_greywhite('./data/dataset_infer.csv')\n", + "# create_ANA('./data/dataset_infer.csv')\n", + "update_csv('./data/dataset_valid.csv')\n", + "create_greywhite('./data/dataset_valid.csv')\n", + "# create_ANA('./data/dataset_valid.csv')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "GmLKx_pOSoLy" + }, + "source": [ + "# Plotting Functions" + ] + }, + { + "cell_type": "markdown", + "source": [ + "The code creates interactive sliders to visualize 3D image volumes and labels. It uses the **peek_class_new** class to handle the slider creation and display, and **nibabel** to load and prepare the image and label data for visualization. We use this functionality to visualise the predictions from our trained model" + ], + "metadata": { + "id": "SBC5bVXV9iib" + } + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "id": "Xvw97YKhnFuU" + }, + "outputs": [], + "source": [ + "# Create x, y, and z coordinate sliders\n", + "class peek_class_new:\n", + " def __init__(self,scan_data, label_bool):\n", + " self.label_bool = label_bool\n", + " self.scan_data = scan_data\n", + " if self.label_bool:\n", + " self.x_slider = widgets.IntSlider(min=0, max=self.scan_data.shape[0]-1, value=(self.scan_data.shape[0]-1)/2, description='X')\n", + " self.y_slider = widgets.IntSlider(min=0, max=self.scan_data.shape[1]-1, value=(self.scan_data.shape[1]-1)/2, description='Y')\n", + " self.z_slider = widgets.IntSlider(min=0, max=self.scan_data.shape[2]-1, value=(self.scan_data.shape[2]-1)/2, description='Z')\n", + " else:\n", + " self.x_slider = widgets.IntSlider(min=(self.scan_data.shape[0]-1)*-1, max=0, value=((self.scan_data.shape[0]-1)/2)*-1, description='X')\n", + " self.y_slider = widgets.IntSlider(min=(self.scan_data.shape[1]-1)*-1, max=0, value=((self.scan_data.shape[1]-1)/2)*-1, description='Y')\n", + " self.z_slider = widgets.IntSlider(min=0, max=self.scan_data.shape[0]-1, value=(self.scan_data.shape[2]-1)/2, description='Z')\n", + "\n", + " def shape(self):\n", + " print(f\" {self.scan_data.shape[0]} {self.scan_data.shape[1]} {self.scan_data.shape[2]}\")\n", + "\n", + " def update_slices(self, x, y, z):\n", + " display_plot = plotting.plot_anat(self.scan_data, cut_coords=(x, y, z)).add_markers(marker_coords=[[x, y, z]])\n", + " # Display the plot\n", + " plotting.show()\n", + "\n", + " def plots(self):\n", + " # Link the sliders to the update function\n", + " widgets.interact(self.update_slices, x=self.x_slider, y=self.y_slider, z=self.z_slider)\n", + " # Display the sliders\n", + " display(self.x_slider, self.y_slider, self.z_slider)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "id": "8rhmg4VH3yZg" + }, + "outputs": [], + "source": [ + "img= nib.load('data/Mindboggle_101/MMRR-21_volumes/MMRR-21-7/t1weighted.nii.gz').get_fdata(dtype=np.float32)\n", + "volume_shape = [256, 256, 256]\n", + "temp= np.zeros(volume_shape)\n", + "temp[: img.shape[0], : img.shape[1], : img.shape[2]] = img\n", + "image=temp\n", + "# Create a NIfTI image object\n", + "nifi_image = nib.Nifti1Image(image, affine=np.eye(4)) # Use identity affine matrix for simplicity" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "id": "0oGF8djN4H0W", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 575, + "referenced_widgets": [ + "777ef069c28b46b19dfc96a948400137", + "87e89b5837144563bfefec82ef8354de", + "b508d6a5cbb64e0793e937b70304a053", + "c68c67da6dac4f8f9d47dafa3b983b72", + "61fb6b1b34434f5ea077e588ac883f83", + "367074e77fcf406688d1b2b6022e30f4", + "d087bd6e8ec54991b1894a61c6a4cd6c", + "84931741e8604604add005389f0c5370", + "653f4b81298c40248cb284378e2b1ba0", + "1c49223d5d3f415ebdc16ca30a5cc0b5", + "a3a2daae81564f3194451604ff6e5de6", + "dd978f745221426c9a87421b4c295ff6", + "ec79da9919e94249bdd079f55fd553ed" + ] + }, + "outputId": "ec5ec0ab-2472-4fdc-f1d6-e883338f7725" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "interactive(children=(IntSlider(value=127, description='X', max=255), IntSlider(value=127, description='Y', ma…" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "777ef069c28b46b19dfc96a948400137" + } + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "IntSlider(value=127, description='X', max=255)" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "87e89b5837144563bfefec82ef8354de" + } + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "IntSlider(value=127, description='Y', max=255)" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "b508d6a5cbb64e0793e937b70304a053" + } + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "IntSlider(value=127, description='Z', max=255)" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "c68c67da6dac4f8f9d47dafa3b983b72" + } + }, + "metadata": {} + } + ], + "source": [ + "images = peek_class_new(nifi_image,1)\n", + "images.plots()" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "id": "MMgLXmvT4gUS" + }, + "outputs": [], + "source": [ + "img= nib.load('data/Mindboggle_101/MMRR-21_volumes/MMRR-21-7/GWlabels.DKT31.manual+aseg.nii.gz').get_fdata(dtype=np.float32)\n", + "volume_shape = [256, 256, 256]\n", + "temp= np.zeros(volume_shape)\n", + "temp[: img.shape[0], : img.shape[1], : img.shape[2]] = img\n", + "image=temp\n", + "# Create a NIfTI image object\n", + "nifi_image = nib.Nifti1Image(image, affine=np.eye(4)) # Use identity affine matrix for simplicity" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "id": "I9Ac24kj4ls2", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 575, + "referenced_widgets": [ + "b2fac97873cf4089bbea4ad4b7e89a16", + "fbfa6a0ba2f645e5835009972e37cef1", + "bc93ecff405b48a3afa11ec5f6a278e4", + "b7aa97fa10c3462f953eb5255d47499c", + "d372bb6414aa4b84bd3c170d411d167a", + "4b1649fe17b243198b85d517737978e4", + "a327d96399154967a7a426bf40743f56", + "68bf878904674acbb8c3885d915513c4", + "9772174186944909a070f85559ca552b", + "eeaf6a61f280437da3431ea019049275", + "54a89a522ded47b1806d52b0b6c8ece6", + "90e6aece08594ddf87be7dcac7805b44", + "9b9a4b2079d24f93bde9e57a9e6b3661" + ] + }, + "outputId": "413ba204-1f13-4daf-97dc-ef5f39112126" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "interactive(children=(IntSlider(value=127, description='X', max=255), IntSlider(value=127, description='Y', ma…" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "b2fac97873cf4089bbea4ad4b7e89a16" + } + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "IntSlider(value=127, description='X', max=255)" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "fbfa6a0ba2f645e5835009972e37cef1" + } + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "IntSlider(value=127, description='Y', max=255)" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "bc93ecff405b48a3afa11ec5f6a278e4" + } + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "IntSlider(value=127, description='Z', max=255)" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "b7aa97fa10c3462f953eb5255d47499c" + } + }, + "metadata": {} + } + ], + "source": [ + "labels = peek_class_new(nifi_image,1)\n", + "labels.plots()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "OvlSnfs38UAS" + }, + "source": [ + "# Meshnet custom model Implementation" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "id": "hDa9g4K29nEh" + }, + "outputs": [], + "source": [ + "MeshNet_5_ae16 = [\n", + " {\"in_channels\": -1,\"kernel_size\": 3,\"out_channels\": 5,\"padding\": 1,\"stride\": 1,\"dilation\": 1,},\n", + " {\"in_channels\": 5,\"kernel_size\": 3,\"out_channels\": 5,\"padding\": 2,\"stride\": 1,\"dilation\": 2,},\n", + " {\"in_channels\": 5,\"kernel_size\": 3,\"out_channels\": 5,\"padding\": 4,\"stride\": 1,\"dilation\": 4,},\n", + " {\"in_channels\": 5,\"kernel_size\": 3,\"out_channels\": 5,\"padding\": 8,\"stride\": 1,\"dilation\": 8,},\n", + " {\"in_channels\": 5,\"kernel_size\": 3,\"out_channels\": 5,\"padding\": 16,\"stride\": 1,\"dilation\": 16,},\n", + " {\"in_channels\": 5,\"kernel_size\": 3,\"out_channels\": 5,\"padding\": 8,\"stride\": 1,\"dilation\": 8,},\n", + " {\"in_channels\": 5,\"kernel_size\": 3,\"out_channels\": 5,\"padding\": 4,\"stride\": 1,\"dilation\": 4,},\n", + " {\"in_channels\": 5,\"kernel_size\": 3,\"out_channels\": 5,\"padding\": 2,\"stride\": 1,\"dilation\": 2,},\n", + " {\"in_channels\": 5,\"kernel_size\": 3,\"out_channels\": 5,\"padding\": 1,\"stride\": 1,\"dilation\": 1,},\n", + " {\"in_channels\": 5,\"kernel_size\": 1,\"out_channels\": -1,\"padding\": 0,\"stride\": 1,\"dilation\": 1,},\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "id": "DawF_iJk-ujc" + }, + "outputs": [], + "source": [ + "def ae16channels(channels=5, basearch=MeshNet_5_ae16):\n", + " start = {\"out_channels\": channels}\n", + " middle = {\"in_channels\": channels,\"out_channels\": channels}\n", + " end = {\"in_channels\": channels}\n", + " modifier = [start] + [middle for _ in range(len(basearch)-2)] + [end]\n", + " newarch = basearch.copy()\n", + " [x.update(y) for x,y in zip(newarch, modifier)]\n", + " return newarch" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "id": "JkslLfm3-3YI" + }, + "outputs": [], + "source": [ + "def conv_w_bn_before_act(dropout_p=0, bnorm=True, gelu=False, *args, **kwargs):\n", + " \"\"\"Configurable Conv block with Batchnorm and Dropout\"\"\"\n", + " sequence = [(\"conv\", nn.Conv3d(*args, **kwargs))]\n", + " if bnorm:\n", + " sequence.append((\"bnorm\", nn.BatchNorm3d(kwargs[\"out_channels\"])))\n", + " if gelu:\n", + " sequence.append((\"gelu\", nn.GELU()))\n", + " else:\n", + " sequence.append((\"relu\", nn.ReLU(inplace=True)))\n", + " sequence.append((\"dropout\", nn.Dropout3d(dropout_p)))\n", + " layer = nn.Sequential(OrderedDict(sequence))\n", + " return layer" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "id": "lYYzQRaB-6O3" + }, + "outputs": [], + "source": [ + "def init_weights(model):\n", + " \"\"\"Set weights to be xavier normal for all Convs\"\"\"\n", + " for m in model.modules():\n", + " if isinstance(m, (nn.Conv2d, nn.Conv3d, nn.ConvTranspose2d, nn.ConvTranspose3d)):\n", + " nn.init.xavier_normal_(m.weight, gain=nn.init.calculate_gain(\"relu\"))\n", + " nn.init.constant_(m.bias, 0.0)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "id": "u4Y1-3qa-9ii" + }, + "outputs": [], + "source": [ + "class MeshNet(nn.Module):\n", + " \"\"\"Configurable MeshNet from https://arxiv.org/pdf/1612.00940.pdf\"\"\"\n", + "\n", + " def __init__(self, n_channels, n_classes, large=True, bnorm=True, gelu=False, dropout_p=0):\n", + " \"\"\"Init\"\"\"\n", + " if large:\n", + " params = ae16channels(5)\n", + " else:\n", + " params = MeshNet_5_ae16\n", + "\n", + " super(MeshNet, self).__init__()\n", + " params[0][\"in_channels\"] = n_channels\n", + " params[-1][\"out_channels\"] = n_classes\n", + " layers = [\n", + " conv_w_bn_before_act(dropout_p=dropout_p, bnorm=bnorm, gelu=gelu, **block_kwargs)\n", + " for block_kwargs in params[:-1]\n", + " ]\n", + " layers.append(nn.Conv3d(**params[-1]))\n", + " self.model = nn.Sequential(*layers)\n", + " init_weights(self.model)\n", + "\n", + " def forward(self, x):\n", + " \"\"\"Forward pass\"\"\"\n", + " x = self.model(x)\n", + " return x" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "id": "T6pC_IrX_B8q" + }, + "outputs": [], + "source": [ + "class enMesh_checkpoint(MeshNet):\n", + " def train_forward(self, x):\n", + " y = x\n", + " y.requires_grad_()\n", + " y = checkpoint_sequential(\n", + " self.model, len(self.model), y, preserve_rng_state=False\n", + " )\n", + " return y\n", + "\n", + " def eval_forward(self, x):\n", + " \"\"\"Forward pass\"\"\"\n", + " self.model.eval()\n", + " with torch.inference_mode():\n", + " x = self.model(x)\n", + " return x\n", + "\n", + " def forward(self, x):\n", + " if self.training:\n", + " return self.train_forward(x)\n", + " else:\n", + " return self.eval_forward(x)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "UuM8jtHKQOfz" + }, + "source": [ + "# Subvolumes generator/Volume reassembler and dataloader funtions" + ] + }, + { + "cell_type": "markdown", + "source": [ + "Below class **CubeDivider** provides a convenient way to divide and reassemble tensors, which can be useful for processing large 3D tensors. For more information please refer to the blog : https://medium.com/pytorch/catalyst-neuro-a-3d-brain-segmentation-pipeline-for-mri-b1bb1109276a" + ], + "metadata": { + "id": "aNH5hc_dAVii" + } + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "id": "WesSBrDr3H5x", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "d5bfb55c-2658-432e-8214-043b0750e170" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "torch.Size([32, 32, 32])\n" + ] + } + ], + "source": [ + "import torch\n", + "from torch.utils.data import Dataset\n", + "\n", + "class CubeDivider:\n", + " def __init__(self, tensor, num_cubes):\n", + " self.tensor = tensor\n", + " self.num_cubes = num_cubes\n", + " self.sub_cube_size = tensor.shape[0] // num_cubes # Assuming the tensor is a cube\n", + "\n", + " def divide_into_sub_cubes(self):\n", + " sub_cubes = []\n", + "\n", + " for i in range(self.num_cubes):\n", + " for j in range(self.num_cubes):\n", + " for k in range(self.num_cubes):\n", + " sub_cube = self.tensor[\n", + " i * self.sub_cube_size: (i + 1) * self.sub_cube_size,\n", + " j * self.sub_cube_size: (j + 1) * self.sub_cube_size,\n", + " k * self.sub_cube_size: (k + 1) * self.sub_cube_size\n", + " ].clone()\n", + " sub_cubes.append(sub_cube)\n", + "\n", + " sub_cubes = torch.stack(sub_cubes,0)\n", + " return sub_cubes\n", + "\n", + " @staticmethod\n", + " def reassemble_sub_cubes(sub_cubes):\n", + " sub_cubes = torch.unbind(sub_cubes, dim=0)\n", + " num_cubes = int(len(sub_cubes) ** (1/3))\n", + " sub_cube_size = sub_cubes[0].shape[0]\n", + " tensor_size = num_cubes * sub_cube_size\n", + " tensor = torch.zeros((tensor_size, tensor_size, tensor_size), dtype=torch.float32)\n", + "\n", + " for i in range(num_cubes):\n", + " for j in range(num_cubes):\n", + " for k in range(num_cubes):\n", + " sub_cube = sub_cubes[i * num_cubes**2 + j * num_cubes + k]\n", + " tensor[\n", + " i * sub_cube_size: (i + 1) * sub_cube_size,\n", + " j * sub_cube_size: (j + 1) * sub_cube_size,\n", + " k * sub_cube_size: (k + 1) * sub_cube_size\n", + " ] = sub_cube\n", + "\n", + " return tensor\n", + "\n", + "# Usage:\n", + "# Assuming tensor is a 3D PyTorch tensor\n", + "tensor = torch.randn(32, 32, 32) # Example tensor\n", + "num_cubes = 2 # Number of sub-cubes\n", + "\n", + "divider = CubeDivider(tensor, num_cubes)\n", + "\n", + "# Divide the cube tensor into sub-cubes\n", + "sub_cubes = divider.divide_into_sub_cubes()\n", + "\n", + "# Reassemble the sub-cubes to create the original cube tensor\n", + "reconstructed_tensor = CubeDivider.reassemble_sub_cubes(sub_cubes)\n", + "\n", + "print(reconstructed_tensor.shape) # Should be the same as the original tensor shape\n" + ] + }, + { + "cell_type": "markdown", + "source": [ + "Below class **DataLoaderClass** that loads and processes data from a CSV file using PyTorch's DataLoader.\n", + "\n", + "1. The dataloader method reads the CSV file, preprocesses the images and labels, and creates a DataLoader object for the processed data.\n", + "2. The data is divided into sub-cubes using the **CubeDivider** class.\n", + "3. The labels are converted into a one-hot encoding representation." + ], + "metadata": { + "id": "Vc7TzLElCXhS" + } + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "id": "cT9N0M3q1ymK" + }, + "outputs": [], + "source": [ + "class DataLoaderClass:\n", + " def __init__(self,csv_file, coor_factor, batch_size):\n", + " self.csv_file=csv_file\n", + " self.coor_factor=coor_factor\n", + " self.batch_size=batch_size\n", + "\n", + " def dataloader(self):\n", + " data = pd.read_csv(self.csv_file)\n", + " volume_shape = [256, 256, 256]\n", + " images =()\n", + " labels=()\n", + " for image,label in zip(data['images'],data['GWlabels']):\n", + "\n", + " img = nib.load('./'+image)\n", + " img = img.get_fdata()\n", + " temp= np.zeros(volume_shape)\n", + " temp[: img.shape[0], : img.shape[1], : img.shape[2]] = img\n", + " temp = np.array(temp)\n", + " image_data = (temp - temp.mean()) / temp.std()\n", + " sub_temp = CubeDivider(torch.tensor(image_data),self.coor_factor)\n", + " images = images+(sub_temp.divide_into_sub_cubes(),)\n", + "\n", + " lab = nib.load('./'+label)\n", + " lab = lab.get_fdata()\n", + " temp= np.zeros(volume_shape)\n", + " temp[: lab.shape[0], : lab.shape[1], : lab.shape[2]] = lab\n", + " temp = np.array(temp)\n", + " sub_temp = CubeDivider(torch.tensor(temp),self.coor_factor)\n", + " labels = labels+(sub_temp.divide_into_sub_cubes(),)\n", + "\n", + " images = torch.stack(images)\n", + " labels = torch.stack(labels)\n", + " images = images.reshape(-1,1,int(volume_shape[0]/self.coor_factor),int(volume_shape[1]/self.coor_factor),int(volume_shape[2]/self.coor_factor)).float()\n", + " labels = labels.reshape(-1,1,int(volume_shape[0]/self.coor_factor),int(volume_shape[1]/self.coor_factor),int(volume_shape[2]/self.coor_factor))\n", + " new_labels = ()\n", + " for temp in labels:\n", + " new_temp = ()\n", + " for i in [0,1,2]:\n", + " new_temp=new_temp+ (torch.mul(torch.tensor(np.asarray(temp == i, dtype=np.float64)),1),)\n", + " new_temp = torch.stack(new_temp)\n", + " new_labels = new_labels + (new_temp,)\n", + " labels = torch.stack(new_labels)\n", + " labels = labels.reshape(-1,3,int(volume_shape[0]/self.coor_factor),int(volume_shape[1]/self.coor_factor),int(volume_shape[2]/self.coor_factor))\n", + " dataset = torch.utils.data.TensorDataset(images, labels)\n", + " return DataLoader(dataset, batch_size=self.batch_size, shuffle=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "cuUNlPH_qWeG" + }, + "source": [ + "#Pytorch training" + ] + }, + { + "cell_type": "markdown", + "source": [ + "A common metric for assessing the similarity between two sets or segmentations is dice score. With a value ranging from 0 to 1, it calculates the amount of overlap between the predicted and ground truth labels. An exact overlap is represented by a Dice score of 1, while no overlap is represented by a score of 0. By using the fudge factor, division by zero is avoided." + ], + "metadata": { + "id": "n1MB5aTwE26e" + } + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "id": "xu4EeuURrNlt" + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "import torch\n", + "\n", + "\n", + "def faster_dice(x, y, labels, fudge_factor=1e-8):\n", + " \"\"\"Faster PyTorch implementation of Dice scores.\n", + " :param x: input label map as torch.Tensor\n", + " :param y: input label map as torch.Tensor of the same size as x\n", + " :param labels: list of labels to evaluate on\n", + " :param fudge_factor: an epsilon value to avoid division by zero\n", + " :return: pytorch Tensor with Dice scores in the same order as labels.\n", + " \"\"\"\n", + "\n", + " assert x.shape == y.shape, \"both inputs should have same size, had {} and {}\".format(\n", + " x.shape, y.shape\n", + " )\n", + "\n", + " if len(labels) > 1:\n", + "\n", + " dice_score = torch.zeros(len(labels))\n", + " for label in labels:\n", + " x_label = x == label\n", + " y_label = y == label\n", + " xy_label = (x_label & y_label).sum()\n", + " dice_score[label] = (\n", + " 2 * xy_label / (x_label.sum() + y_label.sum() + fudge_factor)\n", + " )\n", + "\n", + " else:\n", + " dice_score = dice(x == labels[0], y == labels[0], fudge_factor=fudge_factor)\n", + "\n", + " return dice_score\n", + "\n", + "\n", + "def dice(x, y, fudge_factor=1e-8):\n", + " \"\"\"Implementation of dice scores for 0/1 numy array\"\"\"\n", + " return 2 * torch.sum(x * y) / (torch.sum(x) + torch.sum(y) + fudge_factor)" + ] + }, + { + "cell_type": "markdown", + "source": [ + "* The trainer class is responsible for training a neural network model for image segmentation.\n", + "* It takes parameters such as the number of input channels, number of output classes, data loaders for training and validation, subvolume shape, number of epochs, path to the model checkpoint file, and learning rate.\n", + "* The constructor initializes the model, criterion (**CrossEntropyLoss**), optimizer (**RMSprop**), and other class variables.\n", + "* The train method trains the model for the specified number of epochs.\n", + "Within each epoch, it iterates over the training data, computes the loss and dice scores, performs backpropagation, and updates the model's parameters.\n", + "* After the training loop, it evaluates the model on the validation data, computes the loss and dice scores, and prints the training and validation metrics for each epoch.\n", + "* The **faster_dice** function is used to calculate the dice scores." + ], + "metadata": { + "id": "XsQs-uPFFO9j" + } + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "id": "G7I-kcMMqWL4" + }, + "outputs": [], + "source": [ + "from torch.nn import functional as F\n", + "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n", + "class trainer:\n", + " def __init__(self,n_channels, n_classes, trainloader, valloader, subvol_shape, epoches,modelpth,lrate=0.0007):\n", + " self.n_channels = n_channels # Number of input channels\n", + " self.n_classes = n_classes # Number of output classes\n", + " self.model = enMesh_checkpoint(self.n_channels, self.n_classes).to(device, dtype=torch.float32)\n", + " self.criterion = nn.CrossEntropyLoss()\n", + " self.lrate = lrate\n", + " self.trainloader = trainloader\n", + " self.valloader = valloader\n", + " self.subvol_shape = subvol_shape\n", + " self.epoches = epoches\n", + " self.modelpth = modelpth\n", + " self.optimizer = torch.optim.RMSprop(self.model.parameters(), lr=self.lrate)\n", + "\n", + "\n", + " def train(self, num_epoches):\n", + " try:\n", + " self.model.load_state_dict(torch.load(self.modelpth))\n", + " except:\n", + " print('No valid pretained model.pth file mentioned')\n", + " epoch =0\n", + " train_loss = 0.0\n", + " train_dice = 0.0\n", + " val_loss = 0.0\n", + " val_dice = 0.0\n", + " while epoch != num_epoches :\n", + "\n", + " self.model.train()\n", + " train_loss = 0.0\n", + " for images, labels in self.trainloader:\n", + " if 1 in torch.argmax(torch.squeeze(labels),0) or 2 in torch.argmax(torch.squeeze(labels),0):\n", + " images = images.to(device, dtype=torch.float32)\n", + " labels = labels.to(device, dtype=torch.float32)\n", + " train_dice = 0.0\n", + " self.optimizer.zero_grad()\n", + " outputs = self.model(images)\n", + " loss=self.criterion(outputs, labels)\n", + " train_loss += loss.item()\n", + " dice_scores = faster_dice(torch.argmax(torch.squeeze(outputs),0), torch.argmax(torch.squeeze(labels),0), labels=[0, 1, 2]) # Specify the labels to evaluate on\n", + " train_dice += dice_scores.mean().item() # Take the mean Dice score\n", + " loss = loss+ (1-dice_scores.mean().item())\n", + " loss.backward()\n", + " self.optimizer.step()\n", + "\n", + " self.model.eval()\n", + " val_loss = 0.0\n", + " val_dice = 0.0\n", + " with torch.no_grad():\n", + " for images, labels in self.valloader:\n", + " images = images.to(device, dtype=torch.float32)\n", + " labels = labels.to(device, dtype=torch.float32)\n", + " outputs = self.model(images)\n", + " loss = self.criterion(outputs, labels)\n", + " val_loss += loss.item()\n", + " dice_scores = faster_dice(torch.argmax(torch.squeeze(outputs),0), torch.argmax(torch.squeeze(labels),0), labels=[0, 1, 2])\n", + " val_dice += dice_scores.mean().item()\n", + "\n", + "\n", + " train_loss /= len(self.trainloader)\n", + " train_dice /= len(self.trainloader)\n", + " val_loss /= len(self.valloader)\n", + " val_dice /= len(self.valloader)\n", + "\n", + " print(f\"Epoch {epoch+1} - Train Loss: {train_loss:.4f} - Train Dice: {train_dice:.4f} - Val Loss: {val_loss:.4f} - Val Dice: {val_dice:.4f}\")\n", + " epoch = epoch+1" + ] + }, + { + "cell_type": "markdown", + "source": [ + "#Training\n" + ], + "metadata": { + "id": "XdahCxTd2ik3" + } + }, + { + "cell_type": "markdown", + "source": [ + "\n", + "**Cumulative learning** - Training in pytorch 4 separate cycles depending upon how images are divided into number of small subvolumes." + ], + "metadata": { + "id": "rHl965bfShJo" + } + }, + { + "cell_type": "markdown", + "source": [ + "## Training Cycle 1 : subvolume (256,256,256)" + ], + "metadata": { + "id": "83o2ydQ690xt" + } + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": { + "id": "xZbLNvZFHCxh", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "8ada23d4-21dd-4a8d-be62-f45f2d6af027" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "No valid pretained model.pth file mentioned\n", + "Epoch 1 - Train Loss: 0.9851 - Train Dice: 0.0381 - Val Loss: 0.7933 - Val Dice: 0.3471\n", + "Epoch 2 - Train Loss: 0.6630 - Train Dice: 0.0321 - Val Loss: 0.6158 - Val Dice: 0.3251\n", + "Epoch 3 - Train Loss: 0.5784 - Train Dice: 0.0321 - Val Loss: 0.5654 - Val Dice: 0.3248\n", + "Epoch 4 - Train Loss: 0.5324 - Train Dice: 0.0320 - Val Loss: 0.5203 - Val Dice: 0.3248\n", + "Epoch 5 - Train Loss: 0.5012 - Train Dice: 0.0321 - Val Loss: 0.4618 - Val Dice: 0.3248\n", + "Epoch 6 - Train Loss: 0.4746 - Train Dice: 0.0319 - Val Loss: 0.4433 - Val Dice: 0.3248\n", + "Epoch 7 - Train Loss: 0.4529 - Train Dice: 0.0322 - Val Loss: 0.4214 - Val Dice: 0.3248\n", + "Epoch 8 - Train Loss: 0.4355 - Train Dice: 0.0320 - Val Loss: 0.4150 - Val Dice: 0.3248\n", + "Epoch 9 - Train Loss: 0.4193 - Train Dice: 0.0322 - Val Loss: 0.3806 - Val Dice: 0.3248\n", + "Epoch 10 - Train Loss: 0.4045 - Train Dice: 0.0322 - Val Loss: 0.3737 - Val Dice: 0.3248\n", + "Epoch 11 - Train Loss: 0.3914 - Train Dice: 0.0322 - Val Loss: 0.3493 - Val Dice: 0.3248\n", + "Epoch 12 - Train Loss: 0.3794 - Train Dice: 0.0322 - Val Loss: 0.3471 - Val Dice: 0.3248\n", + "Epoch 13 - Train Loss: 0.3672 - Train Dice: 0.0321 - Val Loss: 0.3299 - Val Dice: 0.3248\n", + "Epoch 14 - Train Loss: 0.3561 - Train Dice: 0.0322 - Val Loss: 0.3117 - Val Dice: 0.3248\n", + "Epoch 15 - Train Loss: 0.3450 - Train Dice: 0.0323 - Val Loss: 0.3061 - Val Dice: 0.3248\n", + "Epoch 16 - Train Loss: 0.3346 - Train Dice: 0.0323 - Val Loss: 0.2999 - Val Dice: 0.3248\n", + "Epoch 17 - Train Loss: 0.3213 - Train Dice: 0.0322 - Val Loss: 0.2985 - Val Dice: 0.3248\n", + "Epoch 18 - Train Loss: 0.3111 - Train Dice: 0.0320 - Val Loss: 0.2897 - Val Dice: 0.3248\n", + "Epoch 19 - Train Loss: 0.2991 - Train Dice: 0.0323 - Val Loss: 0.2747 - Val Dice: 0.3248\n", + "Epoch 20 - Train Loss: 0.2894 - Train Dice: 0.0322 - Val Loss: 0.2586 - Val Dice: 0.3248\n" + ] + } + ], + "source": [ + "traindata = DataLoaderClass('./data/dataset_train.csv',1,1).dataloader()\n", + "valdata = DataLoaderClass('./data/dataset_valid.csv',1,1).dataloader()\n", + "meshnet = trainer(1,3,traindata, valdata, [256,256,256], 20,'',0.0007)\n", + "meshnet.train(20)\n", + "torch.save(meshnet.model.state_dict(), 'meshnet.pth')" + ] + }, + { + "cell_type": "code", + "source": [ + "traindata=''\n", + "array=''\n", + "i=''\n", + "array1=''\n", + "images =''\n", + "img=''\n", + "prediciton=''\n", + "predicted=''\n", + "temp=''\n", + "labels=''\n", + "pred_peek=''\n", + "volume_shape=''\n", + "num_cubes=''\n", + "nifi_image=''\n", + "criterion=''\n", + "valdata=''\n", + "loaders=''\n", + "divider=''\n", + "sub_cubes=''\n", + "meshnet=''\n", + "model = ''\n", + "logdir=''\n", + "optimizer=''\n", + "scheduler=''\n", + "runner=''\n", + "tensor=''\n", + "reconstructed_tensor=''\n", + "import gc\n", + "torch.cuda.empty_cache()\n", + "gc.collect()" + ], + "metadata": { + "id": "-UPJryQI-Oj_", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "3684e958-cd42-4077-b458-97d3a0e60ab0" + }, + "execution_count": 29, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0" + ] + }, + "metadata": {}, + "execution_count": 29 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "## Training Cycle 2 : subvolume (32,32,32)" + ], + "metadata": { + "id": "O9Fu99XO993v" + } + }, + { + "cell_type": "code", + "source": [ + "traindata = DataLoaderClass('./data/dataset_train.csv',8,1).dataloader()\n", + "valdata = DataLoaderClass('./data/dataset_valid.csv',8,1).dataloader()\n", + "meshnet = trainer(1,3,traindata, valdata, [32,32,32], 20,'meshnet.pth',0.0007)\n", + "meshnet.train(20)\n", + "torch.save(meshnet.model.state_dict(), 'meshnet.pth')" + ], + "metadata": { + "id": "ZY4-DYdxtQo7" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "traindata=''\n", + "array=''\n", + "i=''\n", + "array1=''\n", + "images =''\n", + "img=''\n", + "prediciton=''\n", + "predicted=''\n", + "temp=''\n", + "labels=''\n", + "pred_peek=''\n", + "volume_shape=''\n", + "num_cubes=''\n", + "nifi_image=''\n", + "criterion=''\n", + "valdata=''\n", + "loaders=''\n", + "divider=''\n", + "sub_cubes=''\n", + "meshnet=''\n", + "model = ''\n", + "logdir=''\n", + "optimizer=''\n", + "scheduler=''\n", + "runner=''\n", + "tensor=''\n", + "reconstructed_tensor=''\n", + "import gc\n", + "torch.cuda.empty_cache()\n", + "gc.collect()" + ], + "metadata": { + "id": "buhkzd-1-Nkc" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Training Cycle 3 : subvolume (64,64,64)" + ], + "metadata": { + "id": "helYON-I-Cn6" + } + }, + { + "cell_type": "code", + "source": [ + "traindata = DataLoaderClass('./data/dataset_train.csv',4,1).dataloader()\n", + "valdata = DataLoaderClass('./data/dataset_valid.csv',4,1).dataloader()\n", + "meshnet = trainer(1,3,traindata, valdata, [64,64,64], 20,'meshnet.pth',0.0007)\n", + "meshnet.train(20)\n", + "torch.save(meshnet.model.state_dict(), 'meshnet.pth')" + ], + "metadata": { + "id": "om3Oq3vwxAus" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "traindata=''\n", + "array=''\n", + "i=''\n", + "array1=''\n", + "images =''\n", + "img=''\n", + "prediciton=''\n", + "predicted=''\n", + "temp=''\n", + "labels=''\n", + "pred_peek=''\n", + "volume_shape=''\n", + "num_cubes=''\n", + "nifi_image=''\n", + "criterion=''\n", + "valdata=''\n", + "loaders=''\n", + "divider=''\n", + "sub_cubes=''\n", + "meshnet=''\n", + "model = ''\n", + "logdir=''\n", + "optimizer=''\n", + "scheduler=''\n", + "runner=''\n", + "tensor=''\n", + "reconstructed_tensor=''\n", + "import gc\n", + "torch.cuda.empty_cache()\n", + "gc.collect()" + ], + "metadata": { + "id": "f9arABKL-MjE" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Training Cycle 4 : subvolume (128,128,128)" + ], + "metadata": { + "id": "XHmbvki0-HmK" + } + }, + { + "cell_type": "code", + "source": [ + "traindata = DataLoaderClass('./data/dataset_train.csv',2,1).dataloader()\n", + "valdata = DataLoaderClass('./data/dataset_valid.csv',2,1).dataloader()\n", + "meshnet = trainer(1,3,traindata, valdata, [128,128,128], 20,'meshnet.pth',0.0007)\n", + "meshnet.train(20)\n", + "torch.save(meshnet.model.state_dict(), 'meshnet.pth')" + ], + "metadata": { + "id": "u0BrzwfK5qXA" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "traindata=''\n", + "array=''\n", + "i=''\n", + "array1=''\n", + "images =''\n", + "img=''\n", + "prediciton=''\n", + "predicted=''\n", + "temp=''\n", + "labels=''\n", + "pred_peek=''\n", + "volume_shape=''\n", + "num_cubes=''\n", + "nifi_image=''\n", + "criterion=''\n", + "valdata=''\n", + "loaders=''\n", + "divider=''\n", + "sub_cubes=''\n", + "meshnet=''\n", + "model = ''\n", + "logdir=''\n", + "optimizer=''\n", + "scheduler=''\n", + "runner=''\n", + "tensor=''\n", + "reconstructed_tensor=''\n", + "import gc\n", + "torch.cuda.empty_cache()\n", + "gc.collect()" + ], + "metadata": { + "id": "M6rVC4HKgkMb" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "#Model evaluation on inference dataset" + ], + "metadata": { + "id": "kAxwlh3M8ULH" + } + }, + { + "cell_type": "code", + "source": [ + "from torch.nn import functional as F\n", + "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n", + "class evaluation:\n", + " def __init__(self, modelpath, inferloader):\n", + " self.inferloader = inferloader\n", + " self.modelpath = modelpath\n", + " self.model = enMesh_checkpoint(1, 3).to(device, dtype=torch.float32)\n", + " self.criterion = nn.CrossEntropyLoss()\n", + "\n", + " def eval(self):\n", + " try:\n", + " self.model.load_state_dict(torch.load(self.modelpath))\n", + " self.model.eval()\n", + " infer_loss = 0.0\n", + " infer_dice = 0.0\n", + " with torch.no_grad():\n", + " for images, labels in self.inferloader:\n", + " images = images.to(device, dtype=torch.float32)\n", + " labels = labels.to(device, dtype=torch.float32)\n", + " outputs = self.model(images)\n", + " loss = self.criterion(outputs, labels)\n", + " infer_loss += loss.item()\n", + " dice_scores = faster_dice(torch.argmax(torch.squeeze(outputs),0), torch.argmax(torch.squeeze(labels),0), labels=[0, 1, 2])\n", + " infer_dice += dice_scores.mean().item()\n", + " infer_loss /= len(self.inferloader)\n", + " infer_dice /= len(self.inferloader)\n", + " print('Loss :',infer_loss,' Dice :',infer_dice)\n", + " except Exception as e:\n", + " print('No valid pretained model.pth file mentioned',e)\n" + ], + "metadata": { + "id": "N5WC0gqm3mhm" + }, + "execution_count": 30, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "inferdata = DataLoaderClass('./data/dataset_infer.csv',1,1).dataloader()\n", + "modeval=evaluation('meshnet.pth',inferdata)\n", + "modeval.eval()" + ], + "metadata": { + "id": "sTVsT5gQ8Gpu", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "d32ec6cb-da65-41e1-860d-547b029dde83" + }, + "execution_count": 31, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Loss : 0.2616010407606761 Dice : 0.3222907781600952\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "224UKySu240T" + }, + "source": [ + "#Plots" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": { + "id": "F5eVPaTZ27iQ" + }, + "outputs": [], + "source": [ + "inferdata = DataLoaderClass('./data/dataset_infer.csv',1,1).dataloader()" + ] + }, + { + "cell_type": "markdown", + "source": [ + "GroundTruth Label" + ], + "metadata": { + "id": "dd8nh9plNrK_" + } + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": { + "id": "-fLzOl4r2-Qe", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 575, + "referenced_widgets": [ + "e610567fb36246cd8a82ca6548853632", + "f7ae22f555734bc88e1fe06c0f853592", + "bb003207aea44fddbe696ee9b24472bc", + "253608ba694444e99ca331b7472d2533", + "26ea0fed3bd34f4d96024b39812c5d70", + "593dfac8552c47ed83ac9e626eac3f62", + "1681e259474a40ecbebfad76fa255d3a", + "ad5469fed7464799a1d1b84bcedcf7b4", + "5c42684be0e14b0e82e17b4fda8e6da2", + "c9615b06b1dd4209931c966ac5a869b6", + "47e8f90022a2486e88c9991fb731e6aa", + "20aa513df93b4e3896d710fd3982bdad", + "508735fc63844aaf8e5c0722ae38d8f1" + ] + }, + "outputId": "6dcd04da-dd31-4c0a-df64-e459cd4e1f4e" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "interactive(children=(IntSlider(value=127, description='X', max=255), IntSlider(value=127, description='Y', ma…" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "e610567fb36246cd8a82ca6548853632" + } + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "IntSlider(value=127, description='X', max=255)" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "f7ae22f555734bc88e1fe06c0f853592" + } + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "IntSlider(value=127, description='Y', max=255)" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "bb003207aea44fddbe696ee9b24472bc" + } + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "IntSlider(value=127, description='Z', max=255)" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "253608ba694444e99ca331b7472d2533" + } + }, + "metadata": {} + } + ], + "source": [ + "prediciton = inferdata.dataset.tensors[1][0].reshape(-1,3,256,256,256)\n", + "predicted = torch.argmax(torch.squeeze(prediciton),0)\n", + "prediciton = predicted.reshape(256,256,256).numpy()\n", + "array1 = prediciton.astype(np.uint16)\n", + "nifi_image = nib.Nifti1Image(array1, affine=np.eye(4)) # Use identity affine matrix for simplicity\n", + "pred_peek= peek_class_new(nifi_image,1)\n", + "pred_peek.plots()" + ] + }, + { + "cell_type": "markdown", + "source": [ + "Label predicted" + ], + "metadata": { + "id": "4vLKF3FQNvUV" + } + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": { + "id": "fW0dHliJ3Dn_", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "f796dc03-86b9-4b94-95b7-890156fb1fc9" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "enMesh_checkpoint(\n", + " (model): Sequential(\n", + " (0): Sequential(\n", + " (conv): Conv3d(1, 5, kernel_size=(3, 3, 3), stride=(1, 1, 1), padding=(1, 1, 1))\n", + " (bnorm): BatchNorm3d(5, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", + " (relu): ReLU(inplace=True)\n", + " (dropout): Dropout3d(p=0, inplace=False)\n", + " )\n", + " (1): Sequential(\n", + " (conv): Conv3d(5, 5, kernel_size=(3, 3, 3), stride=(1, 1, 1), padding=(2, 2, 2), dilation=(2, 2, 2))\n", + " (bnorm): BatchNorm3d(5, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", + " (relu): ReLU(inplace=True)\n", + " (dropout): Dropout3d(p=0, inplace=False)\n", + " )\n", + " (2): Sequential(\n", + " (conv): Conv3d(5, 5, kernel_size=(3, 3, 3), stride=(1, 1, 1), padding=(4, 4, 4), dilation=(4, 4, 4))\n", + " (bnorm): BatchNorm3d(5, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", + " (relu): ReLU(inplace=True)\n", + " (dropout): Dropout3d(p=0, inplace=False)\n", + " )\n", + " (3): Sequential(\n", + " (conv): Conv3d(5, 5, kernel_size=(3, 3, 3), stride=(1, 1, 1), padding=(8, 8, 8), dilation=(8, 8, 8))\n", + " (bnorm): BatchNorm3d(5, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", + " (relu): ReLU(inplace=True)\n", + " (dropout): Dropout3d(p=0, inplace=False)\n", + " )\n", + " (4): Sequential(\n", + " (conv): Conv3d(5, 5, kernel_size=(3, 3, 3), stride=(1, 1, 1), padding=(16, 16, 16), dilation=(16, 16, 16))\n", + " (bnorm): BatchNorm3d(5, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", + " (relu): ReLU(inplace=True)\n", + " (dropout): Dropout3d(p=0, inplace=False)\n", + " )\n", + " (5): Sequential(\n", + " (conv): Conv3d(5, 5, kernel_size=(3, 3, 3), stride=(1, 1, 1), padding=(8, 8, 8), dilation=(8, 8, 8))\n", + " (bnorm): BatchNorm3d(5, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", + " (relu): ReLU(inplace=True)\n", + " (dropout): Dropout3d(p=0, inplace=False)\n", + " )\n", + " (6): Sequential(\n", + " (conv): Conv3d(5, 5, kernel_size=(3, 3, 3), stride=(1, 1, 1), padding=(4, 4, 4), dilation=(4, 4, 4))\n", + " (bnorm): BatchNorm3d(5, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", + " (relu): ReLU(inplace=True)\n", + " (dropout): Dropout3d(p=0, inplace=False)\n", + " )\n", + " (7): Sequential(\n", + " (conv): Conv3d(5, 5, kernel_size=(3, 3, 3), stride=(1, 1, 1), padding=(2, 2, 2), dilation=(2, 2, 2))\n", + " (bnorm): BatchNorm3d(5, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", + " (relu): ReLU(inplace=True)\n", + " (dropout): Dropout3d(p=0, inplace=False)\n", + " )\n", + " (8): Sequential(\n", + " (conv): Conv3d(5, 5, kernel_size=(3, 3, 3), stride=(1, 1, 1), padding=(1, 1, 1))\n", + " (bnorm): BatchNorm3d(5, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", + " (relu): ReLU(inplace=True)\n", + " (dropout): Dropout3d(p=0, inplace=False)\n", + " )\n", + " (9): Conv3d(5, 3, kernel_size=(1, 1, 1), stride=(1, 1, 1))\n", + " )\n", + ")" + ] + }, + "metadata": {}, + "execution_count": 34 + } + ], + "source": [ + "model = enMesh_checkpoint(n_channels=1, n_classes=3)\n", + "model.load_state_dict(\n", + " torch.load(\"meshnet.pth\")\n", + ")\n", + "model.eval()" + ] + }, + { + "cell_type": "code", + "source": [ + "prediciton = model(inferdata.dataset.tensors[0][0].reshape(-1,1,256,256,256))\n", + "predicted = torch.argmax(torch.squeeze(prediciton),0)\n", + "prediciton = predicted.reshape(256,256,256).numpy()\n", + "array = prediciton.astype(np.uint16)\n", + "nifi_image = nib.Nifti1Image(array, affine=np.eye(4)) # Use identity affine matrix for simplicity\n", + "pred_peek= peek_class_new(nifi_image,1)\n", + "pred_peek.plots()" + ], + "metadata": { + "id": "tSOoQD6EkR-U" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# **Final notes**" + ], + "metadata": { + "id": "Q2JEHsWhZvgk" + } + }, + { + "cell_type": "markdown", + "source": [ + "This tutorial aims to provide a simple example of how to train the MeshNet model. However, it is worth noting that the actual brainchop models used in the tool have high accuracy. Therefore, thousands of MRI scans are needed during the training phase to achieve this level of accuracy. Unfortunately, the current capacity of Google Colab is insufficient to handle such a large dataset, and a cluster is required for the training process." + ], + "metadata": { + "id": "q_yFRL5BZ22b" + } + } + ], + "metadata": { + "accelerator": "GPU", + "colab": { + "provenance": [], + "machine_shape": "hm", + "gpuType": "T4" + }, + "kernelspec": { + "display_name": "Python 3", + "name": "python3" + }, + "language_info": { + "name": "python" + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "777ef069c28b46b19dfc96a948400137": { + "model_module": "@jupyter-widgets/controls", + "model_name": "VBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [ + "widget-interact" + ], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "VBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "VBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_87e89b5837144563bfefec82ef8354de", + "IPY_MODEL_b508d6a5cbb64e0793e937b70304a053", + "IPY_MODEL_c68c67da6dac4f8f9d47dafa3b983b72", + "IPY_MODEL_61fb6b1b34434f5ea077e588ac883f83" + ], + "layout": "IPY_MODEL_367074e77fcf406688d1b2b6022e30f4" + } + }, + "87e89b5837144563bfefec82ef8354de": { + "model_module": "@jupyter-widgets/controls", + "model_name": "IntSliderModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "IntSliderModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "IntSliderView", + "continuous_update": true, + "description": "X", + "description_tooltip": null, + "disabled": false, + "layout": "IPY_MODEL_d087bd6e8ec54991b1894a61c6a4cd6c", + "max": 255, + "min": 0, + "orientation": "horizontal", + "readout": true, + "readout_format": "d", + "step": 1, + "style": "IPY_MODEL_84931741e8604604add005389f0c5370", + "value": 127 + } + }, + "b508d6a5cbb64e0793e937b70304a053": { + "model_module": "@jupyter-widgets/controls", + "model_name": "IntSliderModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "IntSliderModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "IntSliderView", + "continuous_update": true, + "description": "Y", + "description_tooltip": null, + "disabled": false, + "layout": "IPY_MODEL_653f4b81298c40248cb284378e2b1ba0", + "max": 255, + "min": 0, + "orientation": "horizontal", + "readout": true, + "readout_format": "d", + "step": 1, + "style": "IPY_MODEL_1c49223d5d3f415ebdc16ca30a5cc0b5", + "value": 127 + } + }, + "c68c67da6dac4f8f9d47dafa3b983b72": { + "model_module": "@jupyter-widgets/controls", + "model_name": "IntSliderModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "IntSliderModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "IntSliderView", + "continuous_update": true, + "description": "Z", + "description_tooltip": null, + "disabled": false, + "layout": "IPY_MODEL_a3a2daae81564f3194451604ff6e5de6", + "max": 255, + "min": 0, + "orientation": "horizontal", + "readout": true, + "readout_format": "d", + "step": 1, + "style": "IPY_MODEL_dd978f745221426c9a87421b4c295ff6", + "value": 127 + } + }, + "61fb6b1b34434f5ea077e588ac883f83": { + "model_module": "@jupyter-widgets/output", + "model_name": "OutputModel", + "model_module_version": "1.0.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/output", + "_model_module_version": "1.0.0", + "_model_name": "OutputModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/output", + "_view_module_version": "1.0.0", + "_view_name": "OutputView", + "layout": "IPY_MODEL_ec79da9919e94249bdd079f55fd553ed", + "msg_id": "", + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/png": "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IKiBQCAQCAQCgVOFIKiBQCAQCAQCgVOFIKiBQCAQCAQCgVOFIKiBQCAQCAQCgVOFIKiBQCAQCAQCgVOFIKiBQCAQCAQCgVOFIKiBQCAQCAQCgVOFIKiBQCAQCAQCgVOFIKiBQCAQCAQCgVOFIKiBQCAQCAQCgVOFIKiBQCAQCAQCgVOFIKiBQCAQCAQCgVOFIKiBQCAQCAQCgVOFIKiBQCAQCAQCgVOFIKiBQCAQCAQCgVOFIKiBQCAQCAQCgVOFIKiBQCAQCAQCgVOFIKiBQCAQCAQCgVOFIKiBQCAQCAQCgVOFIKiBQCAQCAQCgVOFIKiBQCAQCAQCgVOFIKiBQCAQCAQCgVOFIKiBQCAQCAQCgVOFIKiBQCAQCAQCgVOFIKiBQCAQCAQCgVOFIKiBQCAQCAQCgVOFIKiBQCAQCAQCgVOFIKiBQCAQCAQCgVOFIKiBQCAQCAQCgVOFIKiBQCAQCAQCgVOFIKiBQCAQCAQCgVOFIKiBQCAQCAQCgVOFIKiBQCAQCAQCgVOFIKiBQCAQCAQCgVOFIKiBQCAQCAQCgVOFIKiBQCAQCAQCgVOFIKiBQCAQCAQCgVOFIKiBQCAQCAQCgVOFIKiBQCAQCAQCgVOFIKiBQCAQCAQCgVOFIKiBQCAQCAQCgVOFIKiBQCAQCAQCgVOFIKiBQCAQCAQCgVOFIKiBQCAQCAQCgVOFIKiBQCAQCAQCgVOFIKiBQCAQCAQCgVOFIKiBQCAQCAQCgVOFIKiBQCAQCAQCgVOFIKiBQCAQCAQCgVOFIKiBQCAQCAQCgVOFIKiBQCAQCAQCgVOFIKiBQCAQCAQCgVOFIKiBQCAQCAQCgVOFIKiBQCAQCAQCgVOFIKiBQCAQCAQCgVOFIKiBQCAQCAQCgVOFIKiBQCAQCAQCgVOFIKiBQCAQCAQCgVOFIKiBQCAQCAQCgVOF/w9j1u2nk2dFRAAAAABJRU5ErkJggg==\n" + }, + "metadata": {} + } + ] + } + }, + "367074e77fcf406688d1b2b6022e30f4": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d087bd6e8ec54991b1894a61c6a4cd6c": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "84931741e8604604add005389f0c5370": { + "model_module": "@jupyter-widgets/controls", + "model_name": "SliderStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "SliderStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "", + "handle_color": null + } + }, + "653f4b81298c40248cb284378e2b1ba0": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "1c49223d5d3f415ebdc16ca30a5cc0b5": { + "model_module": "@jupyter-widgets/controls", + "model_name": "SliderStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "SliderStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "", + "handle_color": null + } + }, + "a3a2daae81564f3194451604ff6e5de6": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "dd978f745221426c9a87421b4c295ff6": { + "model_module": "@jupyter-widgets/controls", + "model_name": "SliderStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "SliderStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "", + "handle_color": null + } + }, + "ec79da9919e94249bdd079f55fd553ed": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "b2fac97873cf4089bbea4ad4b7e89a16": { + "model_module": "@jupyter-widgets/controls", + "model_name": "VBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [ + "widget-interact" + ], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "VBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "VBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_fbfa6a0ba2f645e5835009972e37cef1", + "IPY_MODEL_bc93ecff405b48a3afa11ec5f6a278e4", + "IPY_MODEL_b7aa97fa10c3462f953eb5255d47499c", + "IPY_MODEL_d372bb6414aa4b84bd3c170d411d167a" + ], + "layout": "IPY_MODEL_4b1649fe17b243198b85d517737978e4" + } + }, + "fbfa6a0ba2f645e5835009972e37cef1": { + "model_module": "@jupyter-widgets/controls", + "model_name": "IntSliderModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "IntSliderModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "IntSliderView", + "continuous_update": true, + "description": "X", + "description_tooltip": null, + "disabled": false, + "layout": "IPY_MODEL_a327d96399154967a7a426bf40743f56", + "max": 255, + "min": 0, + "orientation": "horizontal", + "readout": true, + "readout_format": "d", + "step": 1, + "style": "IPY_MODEL_68bf878904674acbb8c3885d915513c4", + "value": 127 + } + }, + "bc93ecff405b48a3afa11ec5f6a278e4": { + "model_module": "@jupyter-widgets/controls", + "model_name": "IntSliderModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "IntSliderModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "IntSliderView", + "continuous_update": true, + "description": "Y", + "description_tooltip": null, + "disabled": false, + "layout": "IPY_MODEL_9772174186944909a070f85559ca552b", + "max": 255, + "min": 0, + "orientation": "horizontal", + "readout": true, + "readout_format": "d", + "step": 1, + "style": "IPY_MODEL_eeaf6a61f280437da3431ea019049275", + "value": 127 + } + }, + "b7aa97fa10c3462f953eb5255d47499c": { + "model_module": "@jupyter-widgets/controls", + "model_name": "IntSliderModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "IntSliderModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "IntSliderView", + "continuous_update": true, + "description": "Z", + "description_tooltip": null, + "disabled": false, + "layout": "IPY_MODEL_54a89a522ded47b1806d52b0b6c8ece6", + "max": 255, + "min": 0, + "orientation": "horizontal", + "readout": true, + "readout_format": "d", + "step": 1, + "style": "IPY_MODEL_90e6aece08594ddf87be7dcac7805b44", + "value": 127 + } + }, + "d372bb6414aa4b84bd3c170d411d167a": { + "model_module": "@jupyter-widgets/output", + "model_name": "OutputModel", + "model_module_version": "1.0.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/output", + "_model_module_version": "1.0.0", + "_model_name": "OutputModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/output", + "_view_module_version": "1.0.0", + "_view_name": "OutputView", + "layout": "IPY_MODEL_9b9a4b2079d24f93bde9e57a9e6b3661", + "msg_id": "", + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAqgAAAFyCAYAAAA59SiIAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAxHklEQVR4nO3df4wdVf3/8feWLdxSpPxKPwSVglAxBBUCKnzoVzBowJVoXQgNvUAR+UMpoIEaQC0lxCZfJIHwK0oQgYbFrEAFfywq8GnRUqkWP/lipAmCBcSmLq0lWtqllM73jzrL2bPnnDlnftx7Zu7zkdxA986dmbt7z5zXPXN+9IlIIgAAAEAkpnT7BAAAAAAVARUAAABRIaACAAAgKgRUAAAARIWACgAAgKgQUAEAABAVAioAAACiQkAFAABAVAioAAAAiAoBFQAAAFEhoAIAACAqBFQAAABEhYAKAACAqBBQAQAAEBUCKgAAAKJCQAUAAEBUCKgAAACICgEVAAAAUSGgAgAAICoEVAAAAESFgAoAAICoEFABAAAQFQIqAAAAokJABQAAQFQIqAAAAIgKARUAAABRIaACAAAgKgRUAAAARIWACgAAgKgQUAEAABAVAioAAACiQkAFAABAVAioAAAAiAoBFQAAAFEhoAIAACAqBFQAAABEhYAKAACAqBBQAQAAEBUCKgAAAKJCQAUAAEBUCKgAAACICgEVAAAAUSGgAgAAICoEVAAAAESFgAoAAICoEFABAAAQFQIqAAAAokJABQAAQFQIqAAAAIgKARUAAABRIaACAAAgKgRUAAAARIWACgAAgKgQUAEAABAVAioAAACiQkAFAABAVAioAAAAiAoBFQAAAFEhoAIAACAqBFQAAABEhYAKAACAqBBQAQAAEBUCKgAAAKJCQAUAAEBUCKgAAACICgEVAAAAUSGgAgAAICoEVAAAAESFgAoAAICoEFABAAAQFQIqAAAAokJABQAAQFQIqAAAAIgKARUAAABRIaACAAAgKgRUAAAARIWACgAAgKgQUAEAABAVAioAAACiQkAFAABAVAioAAAAiAoBFQAAAFEhoAIAACAqBNQGa7Va0mq1un0aQE+gvAGdQ3lrPgJqQ7VaLVm1apWsWrWKQgxUjPIGdA7lrTcQUAEAABCVaALqggULJEkSOf7447t9KsD45zF9vP322/Laa6/JPffcI4cccki3Tw9AjVC/ISZ1qd/6u30CQMwWL14s69evl1arJSeeeKJceOGFMmfOHDnmmGPkrbfe6vbpAQCQS+z1GwEVcHjsscfk2WefFRGRu+++WzZt2iRXX321fP7zn5cHH3ywy2cHAEA+sddv0dziB+rgt7/9rYiIHHHEEV0+EwAAyhNb/UZABQIcdthhIiKyZcuW7p4IAAAliq1+4xY/4DBjxgw58MADpdVqySc+8QlZsmSJjI2Nyc9//vNunxoAALnFXr8RUAGHJ598csK/169fL+edd578/e9/79IZAQBQXOz1GwEVcLjkkkvkhRdekBkzZshFF10kn/zkJ6MY3QgAQBGx128EVMDh97///fgox0ceeURWrVolDzzwgBx11FHy5ptvdvnsAADIJ/b6jYAKeNq1a5dcc801snLlSrn00kvlhhtu6PYpAUCQkZGRCf8eGBgw/lyXbodmirF+YxQ/EOCpp56SNWvWyNe//nXZa6+9un06AODNFEJHRkYyw6nttab9+OwLcYqtfouuBfWiiy6SM844Y9LPb7nlFtm6dWsXzgiY6MYbb5SHHnpILrzwQrnzzju7fToAaiKW+m1oaEja7fakn9mk246MjNCS2nAx1W/RBdRLLrnE+PN7772XgIooLF++XF588UVZtGiR3HXXXbJr165unxKAGoihfkuDqCmkul7juy3qLab6LZpb/Pfdd5/09fVZH7FMe4DekH4e0w7kqiRJZPbs2TJ79mzCKYBMMdRvrlvvrtbTrH2q+x0aGpKhoaFCXQlQvbrUb9EEVAAAUL6yg6EeNm2BtBPnguaK7hY/AAAIlxX+9JbSvC2n+j5st/9tfVbpywoftKACANAw6e32Itrt9vjDdgz1v/rPgSIIqAAANIgaEPOGRVMoVVs9s/brep7WU/jgFj8AAA1WZBS+LUy2222vIGxbGADIQgsqAAANF9qSqo7It/VtDQ29ejhlwBRcaEEFAKCGOhHw0mBrG9ikt6Ta9qGH2fTc0//SsgodLagAADREGQOjbNLWVN9j2AZq0XIKH7SgAgBQMyFBMZRrgFQaLosce2BgYNJ+aEmFjhZUAABqqIrlR03BUw2NeQJku932fh2tq0jRggoAQM2krZB6SC1r8n1VmRPr+wRQJvKHCAEVAIBaU2+/+wxa6gY9mMZ4jogLt/gBAKgBfcqngYEB68j6Km7/p+dQ5Fi2gVMEVuhoQQUAIHJqMFRvgZc1uMgVMtVjFQmXvtul3Re4zd/bCKgAANREOqeo3pKp/jtPa6Q+V2m6j/RnZYVTUxBWj62GUr21GL2FgAoAQMRM/Tc7NYJfZwqx6s99Q6zebzYLLaq9hz6oAABEyjbqPQ19ap/OsgOcHhzT6aLS46T9T9XtfINz2p+W0AkbAioAABEy3eKuavCTTg+jep9X/bxsA7Z0WfOsZm2L3kFABQAgMqaWUz3ImeYrLYMegvXZA0z/r2/jorb62vqZqi3EpuOi+eiDCgBAjXRirtOsMOxi6pvqwq1+mNCCCgBARNR16vVgaLvVn25bVnB1tVaqfU+zAqjrfGwtwOqx1f0TYnsLATUnbjUAAMpWx7olK6j6hGZTOLVtg95AQM3BtyCpDwAAfLnmDe1GS6JteqlOoz7tHfRBDZS3cJS12gcAAFWyzbOqznVa1lys6X5sodfUn3X58uWFj4v40YJaUGhg5dsfAMAk5PZ2Jxs7sqaBKtr3teylUtEMBFQD20XC1XHdxrQtIRUAEKqTdQehEd3W87f4s8KoPjmxbUSlibqtaV1jbvcDAFz0W9ymZU/LYLrNrh6r6HHK6BLQqUUKEAdaUDPYAqxPQaEwAQB8qY0WpvqjzGmkVOmxQpcsDZluCgjV0wE19Juoa1QlAABF6SHVFlTV/5ZJPabtLl/VgdS2b7oT9JaeDagh4bRIvx9bQeP2PgDARK8fXCG1quNn1VH6NnpXhLznrLbm0hjU23q+D2qRjuC+IdM1hYZtHWIAQG9Rxz7o4x+KUqeI0pnGSKTnob7e1kfVVr+FLsnqmtoKvacnW1CraBHVZYXNPBP4M/k/ADSTek03NVwUaVH0fZ1puVRbl4OscGo7dhktv4ODg4X3gfj1dAuq7ZukrUCFrgk8MDCQK0iavr3qF4N0NCetrgBQb6Z6Qm9NzdsooddnPv079W30esY3nKr7Cw2yrrqt1Wp5HRf11viAmifElfENz3YxCZlqIz1308Ug3Q8hFQDqLb3Om0Jip+6W+d6O188z9BhZsro26PVduqoU9WDzNPYWv3obvOwCXrQglDEgi345ANAsrvXui0wxVdb0VFV3jyNkQtW4FlTXxPumkZF5Cm0ZA5t8vim7pvgAADSPWi+VESpDBwKrU0zZ6rq8dacvxlhApGEtqL4f6jJCpXrMooXJp6DbZhHgGycA1F/WJP1VCWldLeMcs46Vtz4l1DZPowKqropVN3ymi6pS1gTKAID6UBs5Oh1SbfWZqX4xnWOnUe/1lsbc4neNKnQNKHLNDRfCVXB8W0hNF6QiHdIBAHHKGgQ0MjJSSv0UEnTb7bazLlPrUNuof9e5ql0X8gZwWkp7R6NbUF18VurQ2eahs03BIVLswkJBBJCFuZHrx+dv1YnWwiKttLbXFtmn6/dSZKot1FPjAmpVa/jmKXRFjmm7OKX7pKACzeS7IIfpea4LzaJO0l+VtOGlzGP47M80S4GLz2ebz3+zNCag+vTdGRoaKnVpUdcgpaLhlIIG9J4yyj3XjvrrVqu4Xp9ljePICqG+t/7142UdV11JanBwkL6pDVXrgOoqxK6CU0ahV/sJ2Y6f5xup6QIBoPlcU+S5fsY1olm6EUptjS1lt6zqyv7sElSbpdYBVRfSr7TIqEnXCEddSAHXV9DIO0crLShA9yxfvnzSbfoyy6R6ffC9RnBdiEeev0O3voTodZ0txLqeL6KKmXhQH7UNqLa+V1kFRP3A66/xGX2oH1P9uV4JqN9KfUKq+vq8hZJvkED18gQ+V2jVQ6etYtaPafsC7BOOGVxVD6ET7Ye8Pqu+sM0iY3pd3q5poXWd7Zyp+5qntgE1pQdO3wKS5zUp02tchSO0o3uVU14BKM63jPn0p7NxXS9c0/TYptpzIaTWl/r58vmchdYPtrm31a4B3axz9DsWaI7aBlQ99OW5KKvP56lA9NfoLbGhhca3IjPtn8IJxC2rfIdMmu57rNBuAOgcnxbysm5v63f6qgiUps9PFbfnR0ZGZPny5UHngXqqbUBVqSE19KKcp3XD5zVV95uhXw7QXbZKXh1hnFfIwBSfvvedXDoT2aoMpz6vC1kW3NZCqjaKEApRhVoF1G63EoaGWX37Tiy7yoUC8FPlnQdbePUZUJJn0ElZt1m5flQrtt9vVdOa5akrizyPZqpVQE2llUroIKRuqXIkos9+1T46AKqXVdZ8wmSewOkaZe0zIhud4+pDXEV9Ydtn3nrB9PmxnXsZ78f398Lnujn6u30CodIPaLvdnhRSY5kbsN1ud+T4tmVXCaKAXcgAR19qn7j0/21rlbuOp4dJ39Vz1H2m1wDfyjzdNuYv+U1T1YqH6n5MxzDtv4y/e56+1UWO1d/fL5dddtmk5winzVK7gJpKC6A6VZQazlyDp8piaplQK5ayj+26kFAwgWw+4TR0tbkig0OyljJ1CR3J7xvMqxpE0+v0BhT9b1dFkPMJn9w+R6xqE1CzLtau1tRu6FQ41SuSbr9vIFZZKzKVFcqGh4eDzkW9K2Q6D9u1xHZN0L8c52kdreL3gok6EQx7uWXcd250xKs2AdVEv7DbWlM7dfxOoLAB1chqOayia0AZ/QLV87C9ztbdQN/GNuk/1514ZXUp8+lyVtXfWF1IopOfIRpqmqEWATX0VpdptRV12zoydWkQoSACeenXDX0eY9c1pazj63wr8V5tFWu6vH1TbSG0E/WDOlB5aGgo1zHL+jzzZapZahFQfdi+/Tf1Qp7nIkDBBd7lGrjUbrczvwSq3YrUbebNm+f1RdjVsuXbn96n9VQ/JuJU5d8mK/jmrRv0z343Pl/Dw8Myb9688X/TaNMcfSKSdPskXHwnL65yGVGf22N5jlu0MGe9fubMmSIiMmfOHBkbGyt0LKDp0mtN+mVXD6i2FlcRkVarJatWrRIRkdHR0fHtU7bXqf1FXdukTPs0bRsyg4DeZ1UNxN24PdtUprpMv4b7/N1d9BWjfBX9+4ZM/K/Lqsdsz6f122233SY7d+5kEHEDNaYFNUtZq3KE9Dvt5GpSrvNRp8ChoAK72Ubfq+HU5/VVLhsZsm/T+8kKmK4ZCGhtLVdWa2Odu22F9oP2xWewt/VEQK1iybiscOjTKb3MAOs7WpORjYD/1FC+85CWeXxXObbd7vcNp3UMP02SNXi3G3+fTtYFVc4RrtaBfMlqhloF1KK356tiKhg+OjWhvwlBFb2o6HrnZcwtmXXrVj1G2s/VNfDT9z2VtZAJ147yVTHrjLryUqeCb5XH8WlhLqM7HuIRdUAt8mHvdPDLe7wyQ6pasQ0PD4+vtDE8PJzZRwdoOp8g53N73/Q6dWUbfR7UPHdYdL6toFkzEOS51tiOzYjpfPQwWuXv0NSfWBf6dyxzxoAy6qR0gFSeldsQt6gDaogqJsb37YsWk/T30N8/+U/by5M2o7fFcms7T0uZHmbUfeTtt5i1ipFtPlTTz+p2jYxBp35nvtd79e/oMy1jkZUaQxpl9LsJqcHBwfFBifo5oTmmdPsEYldFxVbWrTYA2Xz7m1ZRwZXdkhNye922IpXpnLJWqosl4DdZ+uVDfYRKG1byfJZHRkYmvc53hH2eL0hFyps68BfN1ZgW1DLpBafMVgIu9EC1skKcHtTSf5sWw/CZj9RV0ZpagHxapVwB2rass2vglOuLcPoeTaPKs65XtJ7mY6pTqujbW8asM3mngSqLT7/STqwcic6rTUAt2tJY5JZEVULPpcz+qlQsaKqQyso0jVxIUKtiurmsch46Kt+1GIDPMVCNJgWqTnUfswVuNfAziK85anOLP++HX7+VUMd+Kup78Lk10m63J6yskf5/Hd87UBWfqeBSVVd2WVNLlblASMrUt1VtNfZpgW1SyOq0vLfxqxBTw40PfSCiKqbfK4qpTQuqiF8Lok9fqqz91GEOtdDW1JjfC1C2blZQvkudptT5Sl3TSaXbpHyn23HxaW3Su0CgOPX3HbKIQl5Zf7usQXMusXwmGLDXPFEHVNsFO7SvTN4PbdkX5LKme/FZo9tnP0CTVFFB5d1nFXMclzVgqQ5fwPGubrRu2lYgi7HFfHh4ePwuISG1WaIOqCL+/cmyLrZ5C5Y6cCKWDz4jawH7tEcik1uoQspK6BfTgYEBabVaxmlvbIOdfEJHyEpQrv3Zpg0yvU/XilSohv47r2rAT+wt4EVacU2DEWOpr5Ff9AFVpHggc03Q7TPnm09IzdpP1ghe33OxvS5k+5jCNpCXK7j5VFKuCfRNqznZ6MceHByUsbEx5+16fcR+1vQ+oStg+QQRV9eCLFw/ivFd7tT375xnXlEfeeuKKlt92+22sQ+qfmeAeq7+ajFISu2wHzJ/oenD6RsQQ/jOHVd2vx71/bnC7eDgoPdxgV6W90tiGcfz5Rta8s6naZvmKkWlX4zvvLwhX0JCPkexDIjK0yUvfY06CNiFu4z1VouAmnK1cIqYR6LahI6MLbp2dbcvCj6d8oE68qmEbF/m0ueK9FP34Zqw33UdCj0vvVXU9uU+75dxrh3lU1vt9Z81nTo7jYi7nPrqld9dL6hVQE0VXYWiiCLLFIbSb9/oFY5te5GJ03Cw6gaayFYWQisoW3cA32vM0NCQtbzp16r0GLagZ/oi6XvL13XLvox1ygmn5TPNwxvSPzn0uVgVCZW+ramon1oF1JBgWkbFFbJv9RhDQ0POIFn1Odi2Z344NEXW51//UidSTutMmWzLWpZZTvXAYwunWZP2m57n9mkxeesjny8YIV+uylQ0YOcd4FT3uc5hVotBUjbdKoQikztgh/QXKvN8WOINvSZklSjTyN5OlRfTFD2uY2eFwNC5TbNWkDJN1G+aJ9oUGrjmxKnqoFZF+TF93sr6gkaDTL31iUjS7ZPIyzQ9h/7zvOsL217rmjjbdE6++7Wdk+scsmY3mDlzpoiIjI6OWs8XqJPQ6aJE/AccqsHO1Eql9yXX95uWtzlz5hhH8avnZNqHrTz7XC9Mo7N9+pyafkch58j1JFzWVGGukflFQ2ee2R+y6rgyZpQwHTNrYLSpfjPtB/VVqxZU/aJY5DaA7/Y+yyGGnEfoQAXTxSrvfHYUVvSSMlqQ8k5xFzJSWz3PPOHU9G8TvfXLZ1BO3v6qyEdvAc2aTaHXWrK5fd9bahNQ1YJoKpS2ibmrWNElj6LnoL4PUyuuaS7GdOLwdF5GoOnyVto+81K6+nKqE/Wrg6RMrZG2/eQZDJV17ur2WcuosiJd98RQR8Uqbx3O57P+ahNQs/hOot9U+ntvtVrj/59WmBRYNFWRlaNUZa62U8a0TjqfuSPzvndXeNavHVxL8vP9fDZhLtpO1b3677Quvx+41WoUv8i7owTVR6oTH9Csb3JVFoxuTq8FxMg2wjxkJLxryqe8S3+GhlOfAZem1aXS83N1DdD/v2hLaa/dVq5aJ1tPO1WHFD1O1mdMXXwm/f+8C1MgXo1oQfVdUzqPsrsIVHlxSN/zHtu3y2E/+YkcNjAgUzdtkrEDDpC/nXGG/Orhh+X0s86q7PhAp9kGSvoK2d5WdqeLyB/PPnu8vG1pteTNI4+Uxz70ITn7wguDzsc3nJrCc9b0d/q/Te8nvd6ZJk5H+UK+yGQ9X2brf4iqutHZuurtsX27/D+lvP1l1y65U0RuFpE3Sz8LdFNtAqo6BYrOtp51L1HD6Seuukr2fekl6Ut2T9AwbdMmmT00JP/1zDMyXSjEqK+s26N6Vx/blEo27XY7aNW16SKyUkRmDw2Nl7cDtm2Tweeek89s2yZr5s2Td6ZNs74+vW7ZVpvLmjUk3Ydt+6z9pftUfz+uL/u0UJXL9++l/o3L+P3HMjbDxVTOH7r3Xrnpj3+cUL+9T0Su7+uTLySJnCrUb03iHVDVPo3dkjbl6ysjtdvt8ZVcqjjP/n73r8l1zPS8svaRR3pc9fdx2E9+MqHwpvqSRPZ96SX5Rn+//N8KzgXolMHBQevqaIODg8byqN4SzPO8Lj3+EQ88MCGcpqaIyL4vvSS/mzdPPv7Tn47/fHh4eNK1wHaNUFfISc9vZGRkwrnqr/PZl77PVqtl/Z3qv4sY6oEQvoNDO/2+XJ/hlBpe1b+n6VyHh4eDG2hMddLw8PCkz0pI/Vblqk79/f3yuT//Wd7z4ovSpz3XlyRynAj1W034lkvveVDXrl1b5HzQIR8eGJA9LfPCJSLy9syZ8if6kAGloLzFLZ2TNgv1Wz1Q3prhhBNO8NqudoOk4DZ10ybrc30ZzwMIQ3kDOofy1lu8W1C7dWsn6zZIKr01od/+8n29z/5T+m0M1zHV15lem5d+iyg9zk0PPigHbNtmfE0iIn8Xkdk1u00HdIrremEqc77lzec6FHKt0Ld1ba9fn0T8rovq60zbm/Ybm1hv8fvQP2t6/WZ6vghbHdeN+i09rv65O/WCC2SaJYRSv9WHb7n07qwR+0TvO3fuFJHdhcenE3novIHp/k1cvxvX61QhyzKKTK4w0uP8z5FHyuBzzxmbxneJyJ0S/98S6Ias64BpAn7f8qYORLJde9RrhT4HadYk/llLVOaZ1US9ljZ9nsmYr4nq31s9T/Vv4lvPuNj24VO/lTFAWR/obDru3844w9jnW0RE+vrkziSJ+m+JMNH3JrZdCE0XbHVErOu1Iu61p8ukj8LMOpY+Z2FoxfLYhz4kn9m2TfZ96SWRJBlvIt8lIv8ru6fiAPCurLXRU6aJ7PfYvl3+/Z9ZM9TyJn19svWII+T/3HCDjGij+F1l2rXuvemc9J/nWTY16zz080E1XH+volNQlcVVVjpxDi9/8YvyX888M6m8JSLy7/+UN2EqxcaINqBmLWdqoxYU34rHpOzCFjq5d/qa0Am/35o6VdbccMPueVB//WuZummT/J154gCjrLBom/A+LYvvTJtmLG/b2m15+YtfdE4xVYUyvmybrjNNbj2Ngc+XiTxz/IY0cNimnurmwgz6ezCVty2tlvzPkUfKvkuWdLy8oVrRBlQTdY5D2yS+IuZvc1kX7rICaZHCHDo3ne138M60afLRhx4aXxt8dHRU/ltE/luoXIAQpnkodaefdZa0Wq0J5S3luh2vt5DmbT0ti+0aaFoQgOtIefJ039BfVzZTY4np52XyrYPfmTZNXpo/X/799a+LiMhtt90mO3fulDbhtHFqFVB1rpCq6lQ49VVkrXBVnmUYqVyAcHkmNg8JGyrfcBr6Jdwl9JY+15HquT4rPvVHmQE2/Vu7zskWan24ughk9aWucu5VdFftpplS158WmbiySZ5+pXnCqe++TeteZ13UXfuOfeUPoG5s5dH087JbstJrmXoNy1opysVn/XPf650pJKMaIZ81F1N90zRpWanDDBIorhYtqD4DANSlUH0HJPkyjaLNGsCkXnTUW3pZF/y0wrJdoGzfNPX36ppGhtYPwM42cl3k3ZZUvRzq5S3k2qOGVN9A6Aowttbe9DVlDBDl+lENn1ZEkzLqOttMMlkto3nvFFSBz2Wz1CKgpmyFUB25H7KvkNeYPvhFfuaSnleeLgvpc/39/XLZZZcFHRfARKbbi2pITanlLZ0b0lSR2yp7n76mPl9MTdv4DtC03eanFbV7THVHkdkZsmR9xkyfk26FUTRf7W7xm1R9W6Os/qLdutAPDw83/tYPkJcaAny/TOaplH0q/9BymhWCQ/oMpvTfQda/UZ1O1BumOwL6OdQBn8vmqUVAVW9NqY+88swvWpdCmv5u1I7j8+bN41su4KD2Aw1VtLzlCaamLkSm87K9JnRAi6uPLIrL+r3Wpf7xNTQ0NP6ebV3yTO+5ab8HuNXmFr/t1lVof9N0uzoMAgid/JgQCpSjjL6g+jUm710Mn3KdNcuA76Ilru0Ip3DJM1m/Pt7CZx9550hH/dSiBdXEZ9oLXR1vc+c556xRjhRmwC5POLWVt6yFALLuBoVM/1S02wHXhe4q0oJflO8+fFdBK3Lc0DqPEf3NVZsWVJGJHfbzDIqqA9s0MyEDHfTfzeDgoIyNjTF6HyjANmBoYGBAWq3WpJ/bBj7lGciktsZWddfHZ4lodF/WwLXQ7hs+dUuZdYdptgDbYjvUWb1tfOno2JkKZEjotG3rc7Evq4AUOVaeW/0zZ84UkXdXtqGgA25ZZVQvQ+r2enlL2QKDa1+u53yYQoBpujx9G9Ox0Vm+t7CzPhNFJs5X9+HTNzRkfz7npDbKmN67unLbnDlzZGxsLPc5IV7Rt6DaCkOe0a7dbEWtqtXDNKfh0NAQ00wBgVzXGtN0UDbDw8O7l140XHNsy5y6BmmNjIwEzzVpm6/V9/XonrK+IBSt81yzPKSfybI+Q/qXJz6bEIm8D6pPfxefPlx1+bAXbT3N07kcgFtWRT80NDQ+96n+c30/IuYBmvqt+/TfecKpuo2pdZSBUM3Qib9Vepvdtqx2yAwUWa2nps8mn8feFn0LqourD4v+vLqN7aJvU0Y/mKITXvt+G3ZtR2EH7EL79oXQr0W24/jcgi8D14LeoM904/tZKtIlLvRY6X75TEIXdQuqie1DHLJedda26RxtnZ77z9baa1qi0ESd2UCdlxGAH1sLY9ZdGld5CwkF6qNOd3/QHaYWx6L1VZ4WUdNrsp7XmZYvR2+LugXV1KKhftMqMuVF+rz+Ta9TFUPWbbs8rSfcwgfK4WpNzSqT8+bNyzUAyfcLKHqTbfBUyAwPRQdOhd4JDL3roPbJZlYJRD+K36cwhIwMNG2TNQVMmQUk5BaJ7Xx8+6Slo4oZ5Qjk4zvzhjqqWB/Fn26j7i9rlDKgy9MAUXRgsOkLVtkLT4Q0xqRlhVH8vSH6W/yui7epg7bv4AHf18RQeficg/57YPJioHpZZTNt4VJbtwinCKV+dtSHS1Wz1uRZJCePusxdjupEH1BF/C/ieW5XqK+Npb9X3nnn1NctX7681HMCepHviHe1vA0ODhqDaci+AR8ho+jz7r9qane7bhwf8Yq6D6qq6Cj42Pm+Pwos0H1quNTLre3LYZWj8tFsaf1gG+TbyXqhynrYNPpfn4eYL3a9ozYB1aSMC70pGFZZAGydv23zzIUqc/JkABP7j+a9NugBgkoWvcpUR+nTYQEiNbnFnyr7om4Kip2oOPSpQGxrdudFAQfKl3e5SbXllC+PKKrbnyG9a1weoXWUun2T76Riolq3oIqE3fqPfTCUiPscXbMNZM1EAKB8WdefqmcFQW/Sb/W7+nGWLSQg2mbLMf3b9FrbNoyx6A21akEVebf1sYwJiUXi/zbmO2m472T+ALqHcIq89M+OrR6oug7I+xlOzy3kHF0BF81X+xZUH7EPsLKdn88FKeR5AOXT50FVfw6UwTSBvYvv0tiu14tUGwpd50hdBpEatqCa5KkIymqBLYvtXFwXo5jOH8Bu6TRTQBnUOsBWH/gu3tJN6tLhRedSZZ7v3tATLagi9jAXU0Win0uRcDo4ODipRQcAUG9V3xFUQ6MpQOY9dvq6rNkwfJb8bbVauc4B9dKIFlQRcfZLjfn2flGm9xtT6AYAlKuqxWuy6HVp3i4A6n7U8ROu8RXoPY0JqKqmBDTfVt+mvF8AwES2O2v6z9WwWMZUUFmKTBWl8529Br2lsbf4bRPi141+O6cOXRUAAOVS59NN6wTTVFO2mV9Cg56rK4HvvvRJ+fXV1Fz1VpPvfMJPI1tQU7ENhCqqSe8FABBOXfwhpbdAlhHu9L6iZdY/6fn7LHRhOi/0hkYH1KZoWtAGAISxLc6itkb6DKDKM1eqacrD0H3Yzn9kZGT8AagIqAAA1IBpDXuRdwNk3lWeyjqfUHprsG3ZbzUQ01jTOwioAADUhB4KTYEtDX5pyNNbW32pU0P5no+PkBWlGMXfuwioAABEzGdwrGnglOnfVZyHjc+0USEBlNbT3kJABQCgxtRwGrrevS4r0BYNien+s8ZW6O+BcNp7CKgAADRQVki1Pe8KqUUHM+UJzoTT3kRABQCgZnzDZZGWVNsAJtfxTNKASX9ShCCgAgBQI3kHJpW9KlPe1aEAHwRUAAAarIqwSDhF1QioAADUmG8fTVMrqitM5umjmvfcTK9jkZreRkAFACByrsAWOnDJJ2DmCa7pc+q5Zq0Spb8fVpRCqr/bJwAAAPyZ5j9NucKjb8unaR/qMcvuy0orKUxoQQUAoAF85w0N7SOq78v39bbWUAIpfBBQAQBAEJ9VonT0KUUIAioAADVlC3y21kuf1s8ybuHrxyeYIhQBFQCAGssT/oqMrs96noFOKAMBFQCABvIJkzbqSlJq4Ez/3zZdFeEUZSGgAgDQMKbwmTU9VMjgKSbjR9WYZgoAgJqztYbabrmrP7OFTd8Q6jM4CghFCyoAABCR8sMm4RR5EVABAECwNMyWPXE/IEJABQAADrZW0KxgSuspiqAPKgAADZYGxayVndLni65IRTBFGWhBBQAApQRLwinKQgsqAAA9QA2PaWspoRSxIqACANBjXNNS+bx2ZGSEYIpKcYsfAAAEIZyiagRUAAAARIWACgAAgKgQUAEAABAVAioAAACiQkAFAABAVAioAAAAiAoBFQAAAFEhoAIAACAqBFQAAABEhYAKAACAqBBQAQAAEBUCKgAAAKJCQAUAAEBUCKgAAACICgEVAAAAUSGgAgAAICoEVAAAAESFgAoAAICoEFABAAAQFQIqAAAAokJABQAAQFQIqAAAAIgKARUAAABRIaACAAAgKgRUAAAARIWACgAAgKgQUAEAABAVAioAAACiQkAFAABAVAioAAAAiEpUAfWDH/yg3HTTTfL000/L9u3bJUkSmTVr1qTtDjjgAFm0aJE89dRTMjo6Klu2bJHf/e53cs4550za9p577pEkSayPQw45pBNvDYgKZQ3onI997GNyxx13yNq1a2XHjh2SJIlxu/e9731y7bXXypo1a+Sf//ynvP7667JixQo57bTTJm27YsUKa1nbsWNH1W8JqFx/t09AddJJJ8nll18uzz//vKxbt06OO+4463ZLly6VkZER+c53viM7d+6Us846S4aHh+Xoo4+W6667bnzbO++8U5544okJr+/r65Pvf//78vLLL8uGDRuqfEtAlChrQOcMDAzIxRdfLM8995z89a9/laOOOsq43Re+8AW56qqr5JFHHpH77rtP+vv75YILLpAnnnhCvvSlL8m99947vu3SpUvlBz/4wYTXT58+Xe6880759a9/XeXbATomieWx//77J/vss08iIsmVV16ZJEmSzJo1a9J2hx12WHLooYdO+vkTTzyRbN++Pdl7772dxzn55JOTJEmSa665puvvuapHq9VK1q5dm6xduzZptVpdPx8ecT0oa+U+KG88XI+ZM2eOfy5uu+22JNndhDrpcfTRRycHHnjghJ/tueeeyfPPP5+8+uqrmcdpt9tJkiTJueee2/X3XOWD8tYbj6Bb/KeeeqokSSJz586d9Ny5554rSZLIiSeeGLLLCbZs2SJbt27N3O7ll1+WV199ddLPH3nkEWm1WvKBD3zA+fr58+fLrl275IEHHsh9rkCVWq2WrFu3TtatWyetVmv85/vvv79s2LBBnn76aZkyJX8PHcoaMNGsWbOcXVSKGB0dlbGxscztnn/+edm8efOEn+3YsUNGRkbk/e9/v+yzzz7O18+fP1+2bt0qjz76aKHzBWIQdIt/5cqV8uqrr0q73ZZHHnlkwnPtdltefPFFeeaZZ2TPPfeU97znPV771AtjEQcffLCIiGzatMm6TX9/v5xzzjmyevVqeeWVV0o7NlCmsbExWbBggTz99NOydOlSufLKK0VE5I477pAZM2bIhRdeKLt27aKsASV5/fXX5bzzzpvws6lTp8rNN9883qdz2rRpsvfee2fu65133pE33nijtHM7+OCD5c0335Rt27ZZtznooIPkM5/5jAwPDzu3A+okqMl16dKlyfbt25N99913/GcHHXRQsmPHjmTJkiWJiCQLFixIfNmO47rtaHrsv//+ycaNG5OnnnrKud3n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\n" + }, + "metadata": {} + } + ] + } + }, + "4b1649fe17b243198b85d517737978e4": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "a327d96399154967a7a426bf40743f56": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "68bf878904674acbb8c3885d915513c4": { + "model_module": "@jupyter-widgets/controls", + "model_name": "SliderStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "SliderStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "", + "handle_color": null + } + }, + "9772174186944909a070f85559ca552b": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "eeaf6a61f280437da3431ea019049275": { + "model_module": "@jupyter-widgets/controls", + "model_name": "SliderStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "SliderStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "", + "handle_color": null + } + }, + "54a89a522ded47b1806d52b0b6c8ece6": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "90e6aece08594ddf87be7dcac7805b44": { + "model_module": "@jupyter-widgets/controls", + "model_name": "SliderStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "SliderStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "", + "handle_color": null + } + }, + "9b9a4b2079d24f93bde9e57a9e6b3661": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e610567fb36246cd8a82ca6548853632": { + "model_module": "@jupyter-widgets/controls", + "model_name": "VBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [ + "widget-interact" + ], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "VBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "VBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_f7ae22f555734bc88e1fe06c0f853592", + "IPY_MODEL_bb003207aea44fddbe696ee9b24472bc", + "IPY_MODEL_253608ba694444e99ca331b7472d2533", + "IPY_MODEL_26ea0fed3bd34f4d96024b39812c5d70" + ], + "layout": "IPY_MODEL_593dfac8552c47ed83ac9e626eac3f62" + } + }, + "f7ae22f555734bc88e1fe06c0f853592": { + "model_module": "@jupyter-widgets/controls", + "model_name": "IntSliderModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "IntSliderModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "IntSliderView", + "continuous_update": true, + "description": "X", + "description_tooltip": null, + "disabled": false, + "layout": "IPY_MODEL_1681e259474a40ecbebfad76fa255d3a", + "max": 255, + "min": 0, + "orientation": "horizontal", + "readout": true, + "readout_format": "d", + "step": 1, + "style": "IPY_MODEL_ad5469fed7464799a1d1b84bcedcf7b4", + "value": 127 + } + }, + "bb003207aea44fddbe696ee9b24472bc": { + "model_module": "@jupyter-widgets/controls", + "model_name": "IntSliderModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "IntSliderModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "IntSliderView", + "continuous_update": true, + "description": "Y", + "description_tooltip": null, + "disabled": false, + "layout": "IPY_MODEL_5c42684be0e14b0e82e17b4fda8e6da2", + "max": 255, + "min": 0, + "orientation": "horizontal", + "readout": true, + "readout_format": "d", + "step": 1, + "style": "IPY_MODEL_c9615b06b1dd4209931c966ac5a869b6", + "value": 127 + } + }, + "253608ba694444e99ca331b7472d2533": { + "model_module": "@jupyter-widgets/controls", + "model_name": "IntSliderModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "IntSliderModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "IntSliderView", + "continuous_update": true, + "description": "Z", + "description_tooltip": null, + "disabled": false, + "layout": "IPY_MODEL_47e8f90022a2486e88c9991fb731e6aa", + "max": 255, + "min": 0, + "orientation": "horizontal", + "readout": true, + "readout_format": "d", + "step": 1, + "style": "IPY_MODEL_20aa513df93b4e3896d710fd3982bdad", + "value": 127 + } + }, + "26ea0fed3bd34f4d96024b39812c5d70": { + "model_module": "@jupyter-widgets/output", + "model_name": "OutputModel", + "model_module_version": "1.0.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/output", + "_model_module_version": "1.0.0", + "_model_name": "OutputModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/output", + "_view_module_version": "1.0.0", + "_view_name": "OutputView", + "layout": "IPY_MODEL_508735fc63844aaf8e5c0722ae38d8f1", + "msg_id": "", + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/png": "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BQBghKjboeb0Vkr1//Wxp/qWqjGvW8W5YjTQxQ8AwAiKmfkfMkY05jVt9xVpmUU3EVABABhhtu71mABb5bkAIgRUAABGXkwwJERiGAioAADAikCKJjBJCgAAAEkhoAIAACApBFQAAAAkhYAKAACApBBQAQAAkJSkAupLXvISufjii+X222+X/fv3S5Zlcuyxxy573DOf+Uw5//zz5bbbbpP5+Xl56KGH5Ne//rWcfvrpyx77ne98R7Iss96e/exnD+OtAUmhrAHD8+pXv1ouv/xy2bVrlxw4cECyzLzD+HOf+1y58MILZefOnfKvf/1L/vnPf8ott9wib3nLW5Y99pZbbrGWtQMHDtT9loDaJbXM1Otf/3r58Ic/LHfeeafcddddcuKJJ1oft23bNpmdnZUvfOELcvDgQTnttNNkenpajj/+ePnc5z63+NgrrrhCbrrppiXPHxsbk69//ety7733yp49e+p8S0CSKGvA8GzYsEHe//73y+9//3v5y1/+Ii996UuNj3v3u98tF1xwgdxwww1y1VVXyfj4uJx11lly0003yXvf+1658sorFx+7bds2+eY3v7nk+atXr5YrrrhCfv7zn9f5doChyVK5HX300dkRRxyRiUj28Y9/PMuyLDv22GOXPW7dunXZ85///GU/v+mmm7L9+/dnT3/6052v84Y3vCHLsiz71Kc+1fh7ruvW6/WyXbt2Zbt27cp6vV7j58MtrRtlrdob5Y2b6zYxMbF4XVx22WVZ9mQT6rLb8ccfnx1zzDFLfnbYYYdld955Z3b//fd7X6ff72dZlmVnnHFG4++5zhvlbTRuUV38J598smRZJqeeeuqy+8444wzJskxe97rXxRxyiYceekj27dvnfdy9994r999//7Kf33DDDdLr9eSFL3yh8/kbN26UQ4cOydVXX134XIE69Xo9ueuuu+Suu+6SXq+3+POjjz5a9uzZI7fffrusWFF8hA5lDVjq2GOPdQ5RKWN+fl4WFha8j7vzzjvlwQcfXPKzAwcOyOzsrDzvec+TI444wvn8jRs3yr59++QHP/hBqfMFUhDVxX/rrbfK/fffL/1+X2644YYl9/X7fbnnnnvkN7/5jRx22GHyjGc8I+iYemEs41nPepaIiOzdu9f6mPHxcTn99NNlx44dct9991X22kCVFhYWZPPmzXL77bfLtm3b5OMf/7iIiFx++eWyZs0aOfvss+XQoUOUNaAi//znP2XTpk1LfrZy5Ur5yle+sjimc9WqVfL0pz/de6wnnnhCHn744crO7VnPepY88sgj8uijj1ofs3btWnnb294m09PTzscBbRLV5Lpt27Zs//792ZFHHrn4s7Vr12YHDhzILrrookxEss2bN2ehbK/j6nY03Y4++ujsgQceyG677Tbn497xjndkWZZlH/jABxpvvq7zRhdIN27btm3LDh48mK1fvz477bTTsizLsg9/+MOL91PW0rhR3rp5++pXv5o9/vjj2cknn5yJSHbRRRcFlbXdu3dbj+nq4jfdjjvuuOzRRx/NrrrqKufjzjvvvCzLsuyUU05p/PdW943yNhq36ElS27dvl09/+tPynve8R7797W+LiMjU1JSsXLlSvvvd74qIyM9+9jN561vfGnvowsbGxmQwGMhRRx0lW7ZscT5248aNcuDAAfn+978/pLMDivvc5z4n73znO+Wqq66SI444Qm699Va59NJLF++nrAH1OPPMM+W8886Tj33sY3LrrbeKyJP139zcnPe5+/fvr+QcVq1aJddcc43s379fPvnJTzofu3HjRpmfn5df/OIXlbw2kILoVLtz587s5ptvXvz/HTt2ZDt27Kg0Oce06nz1q1/NsizLNm3a5Hzc6tWrs3379mU//OEPG/9mMIxbr9fj22UHbieddFKWZVn26KOPZuvWrav8+JS1am6Ut+7cXvGKV2SPPPJINhgMKj92aAvqihUrsh/84AfZwsJC9uY3v9n52Be84AVZlmXZpZde2vjvblg3ylv3b4WWmdq+fbtccskl8pznPEcOP/xwef3rXy/nnXfe4v29Xk/WrFkTdKx//OMfRU5h0YUXXijnnXeeXHDBBYstuDannnqqrF69WgaDQanXbIuQQflI39vf/nYRebI15cUvfrHce++9i/dR1tJBeeuGo446Sq677jq5++675f3vf/+S+1avXu2dqCTy5BhU1/jsEN/4xjfkne98p/T7fbnlllucj924caOICOUNnROdao855pjssccey84///xs69at2WOPPbZkaYxhjYs799xzsyzLsosvvjjovGdnZ7N///vf2apVqxr/ZsCNW8jtZS97WbawsJB961vfyu64447svvvuWzL+m7LGjVt1t7GxsewnP/lJtnfvXmNvxbDGoH7pS1/KsmzpeHPX7Y9//GP2pz/9qfHfHzduVd4KtaA++OCDcuONN8qmTZuk1+vJT3/60yUzhIcxLu7000+XSy+9VL773e/Kxz72Me/j165dK29961vle9/7XmXjg4A6jY+Py5VXXil79uyRj3zkI/KCF7xAfve738lXvvIVed/73icilDWgShdddJG8/e1vl//4j/9Y0lORG8YY1PPPP18+8YlPyLZt25aMN7d55StfKccff7x8/vOfL/yaQIoK7yS1fft2ue6660REZOvWrUvue+CBB+SBBx6IPuaRRx65OPHiDW94g4iIfOhDH5KHH35YHn74Ybn88stF5Mlt47Zv3y4PPvig3HzzzdLv95ccZ8eOHbJ79+4lP8snco1SFwja7bOf/ay88pWvlLe85S2yb98++cMf/iCf//znZdu2bXLttdfKjTfeSFkDKnLCCSfI1q1b5Ze//KVMTEwsu9YHg4Hs3r172fUe4vnPf76ceeaZIiLyqle9SkREPvOZz4iIyH333bc4ZObUU0+VL3/5y3L33XfLXXfdtewcfvGLX8j8/PySn+WPobyhiwo1va5cuTJ78MEHs4ceeig7/PDDK2nOPfbYY4O6THzdmps3b1527B07dmQPPPBAtmLFisabrblx891OPPHE7MCBA9kll1yy5OcrVqzIdu7cmf3tb3/L1qxZU/j4lDVu3Jbe3vSmNzmv9bqOfcsttyw+zjeE4E1vetOS446NjWV//etfs127djX+++PGrerb2P/+I9rTnvY02bNnj/zoRz9aNpAcAAAAKKrwXomnnnqqTExMyPbt26s8HwAAAIy46BbU17zmNfLyl79ctm7dKnv37pWTTjqpplMDAADAKIpuQf3gBz8oX/va12R+fl7OOuusOs4JAAAAI6zwGFQAAACgDoXHoAIAAAB1IKACAAAgKQRUAAAAJIWACgAAgKQQUAEAAJAUAioAAACSQkAFAABAUgioAAAASAoBFQAAAEkhoAIAACApBFQAAAAkhYAKAACApBBQAQAAkBQCKgAAAJJCQAUAAEBSCKgAAABICgEVAAAASSGgAgAAICkEVAAAACSFgAoAAICkEFABAACQFAIqAAAAkkJABQAAQFIIqAAAAEgKARUAAABJIaACAAAgKQRUAAAAJIWACgAAgKQQUAEAAJAUAioAAACSQkAFAABAUgioAAAASAoBFQAAAEkhoAIAACApBFQAAAAkhYAKAACApBBQAQAAkBQCKgAAAJJCQAUAAEBSCKgAAABICgEVAAAASSGgAgAAICkEVAAAACSFgAoAAICkEFABAACQFAIqAAAAkkJABQAAQFIIqAAAAEgKARUAAABJIaACAAAgKQRUAAAAJIWACgAAgKQQUAEAAJAUAioAAACSQkAFAABAUgioAAAASAoBFQAAAEkhoAIAACApBFQAAAAkhYAKAACApBBQAQAAkBQCKgAAAJJCQAUAAEBSCKgAAABICgEVAAAASSGgAgAAICkEVAAAACSFgAoAAICkEFABAACQFAIqAAAAkkJABQAAQFIIqAAAAEgKARUAAABJIaACAAAgKf8fVf6L/xi1O60AAAAASUVORK5CYII=\n" + }, + "metadata": {} + } + ] + } + }, + "593dfac8552c47ed83ac9e626eac3f62": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "1681e259474a40ecbebfad76fa255d3a": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ad5469fed7464799a1d1b84bcedcf7b4": { + "model_module": "@jupyter-widgets/controls", + "model_name": "SliderStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "SliderStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "", + "handle_color": null + } + }, + "5c42684be0e14b0e82e17b4fda8e6da2": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c9615b06b1dd4209931c966ac5a869b6": { + "model_module": "@jupyter-widgets/controls", + "model_name": "SliderStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "SliderStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "", + "handle_color": null + } + }, + "47e8f90022a2486e88c9991fb731e6aa": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "20aa513df93b4e3896d710fd3982bdad": { + "model_module": "@jupyter-widgets/controls", + "model_name": "SliderStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "SliderStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "", + "handle_color": null + } + }, + "508735fc63844aaf8e5c0722ae38d8f1": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + } + } + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file diff --git a/py/Conversion/Convert model.json with ZeroPadding3D to tfjs compatible json.ipynb b/py2tfjs/Modify_model_json_With_ZeroPadding3D2 tfjs_compatible_json.ipynb similarity index 100% rename from py/Conversion/Convert model.json with ZeroPadding3D to tfjs compatible json.ipynb rename to py2tfjs/Modify_model_json_With_ZeroPadding3D2 tfjs_compatible_json.ipynb diff --git a/py/blendbatchnorm.py b/py2tfjs/blendbatchnorm.py similarity index 100% rename from py/blendbatchnorm.py rename to py2tfjs/blendbatchnorm.py diff --git a/py/fixmodeljson.py b/py2tfjs/fixmodeljson.py similarity index 100% rename from py/fixmodeljson.py rename to py2tfjs/fixmodeljson.py diff --git a/py/meshnet.py b/py2tfjs/meshnet.py similarity index 100% rename from py/meshnet.py rename to py2tfjs/meshnet.py diff --git a/py/pytorch2js.py b/py2tfjs/pytorch2js.py similarity index 100% rename from py/pytorch2js.py rename to py2tfjs/pytorch2js.py