[44bf8c]: / Notebooks / old / nyul_normalization_2.ipynb

Download this file

687 lines (687 with data), 34.1 kB

{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "name": "TorchIO_data_loading.ipynb",
      "provenance": [],
      "collapsed_sections": []
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    }
  },
  "cells": [
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "dT9Q8Wgy5UE1",
        "outputId": "80ef29f0-c43a-4e97-8081-9b2537901316"
      },
      "source": [
        "#Running this code and the cell below allows us to access files in drive\r\n",
        "from google.colab import drive\r\n",
        "drive.mount('/content/drive', force_remount=True)"
      ],
      "execution_count": 1,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Mounted at /content/drive\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "K13L9oVaA7qA",
        "outputId": "eaab4f60-e67e-44e2-8813-4c738617b493"
      },
      "source": [
        "cd drive/MyDrive/MacAI"
      ],
      "execution_count": 2,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "/content/drive/MyDrive/MacAI\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "-cC2ulF95iiw",
        "outputId": "087f877b-60db-46c9-81ca-9debebd85bae"
      },
      "source": [
        "pip install torchio"
      ],
      "execution_count": 3,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Collecting torchio\n",
            "\u001b[?25l  Downloading https://files.pythonhosted.org/packages/3d/33/94812ae74a2815fdd5bf7c4e26be75086ebc770309c569380e6f7cc4ad60/torchio-0.18.29-py2.py3-none-any.whl (140kB)\n",
            "\r\u001b[K     |██▎                             | 10kB 20.8MB/s eta 0:00:01\r\u001b[K     |████▋                           | 20kB 25.9MB/s eta 0:00:01\r\u001b[K     |███████                         | 30kB 31.8MB/s eta 0:00:01\r\u001b[K     |█████████▎                      | 40kB 21.9MB/s eta 0:00:01\r\u001b[K     |███████████▋                    | 51kB 12.5MB/s eta 0:00:01\r\u001b[K     |██████████████                  | 61kB 13.7MB/s eta 0:00:01\r\u001b[K     |████████████████▎               | 71kB 10.8MB/s eta 0:00:01\r\u001b[K     |██████████████████▋             | 81kB 11.5MB/s eta 0:00:01\r\u001b[K     |█████████████████████           | 92kB 12.6MB/s eta 0:00:01\r\u001b[K     |███████████████████████▎        | 102kB 12.4MB/s eta 0:00:01\r\u001b[K     |█████████████████████████▋      | 112kB 12.4MB/s eta 0:00:01\r\u001b[K     |████████████████████████████    | 122kB 12.4MB/s eta 0:00:01\r\u001b[K     |██████████████████████████████▎ | 133kB 12.4MB/s eta 0:00:01\r\u001b[K     |████████████████████████████████| 143kB 12.4MB/s \n",
            "\u001b[?25hRequirement already satisfied: nibabel in /usr/local/lib/python3.7/dist-packages (from torchio) (3.0.2)\n",
            "Requirement already satisfied: scipy in /usr/local/lib/python3.7/dist-packages (from torchio) (1.4.1)\n",
            "Requirement already satisfied: humanize in /usr/local/lib/python3.7/dist-packages (from torchio) (0.5.1)\n",
            "Requirement already satisfied: torch>=1.1 in /usr/local/lib/python3.7/dist-packages (from torchio) (1.7.1+cu101)\n",
            "Collecting Deprecated\n",
            "  Downloading https://files.pythonhosted.org/packages/d4/56/7d4774533d2c119e1873993d34d313c9c9efc88c5e4ab7e33bdf915ad98c/Deprecated-1.2.11-py2.py3-none-any.whl\n",
            "Requirement already satisfied: Click in /usr/local/lib/python3.7/dist-packages (from torchio) (7.1.2)\n",
            "Requirement already satisfied: tqdm in /usr/local/lib/python3.7/dist-packages (from torchio) (4.41.1)\n",
            "Collecting SimpleITK<2\n",
            "\u001b[?25l  Downloading https://files.pythonhosted.org/packages/4a/ee/638b6bae2db10e5ef4ca94c95bb29ec25aa37a9d721b47f91077d7e985e0/SimpleITK-1.2.4-cp37-cp37m-manylinux1_x86_64.whl (42.5MB)\n",
            "\u001b[K     |████████████████████████████████| 42.5MB 102kB/s \n",
            "\u001b[?25hRequirement already satisfied: numpy in /usr/local/lib/python3.7/dist-packages (from torchio) (1.19.5)\n",
            "Requirement already satisfied: typing-extensions in /usr/local/lib/python3.7/dist-packages (from torch>=1.1->torchio) (3.7.4.3)\n",
            "Requirement already satisfied: wrapt<2,>=1.10 in /usr/local/lib/python3.7/dist-packages (from Deprecated->torchio) (1.12.1)\n",
            "Installing collected packages: Deprecated, SimpleITK, torchio\n",
            "Successfully installed Deprecated-1.2.11 SimpleITK-1.2.4 torchio-0.18.29\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "KDiN7ieXkvIt"
      },
      "source": [
        "import matplotlib.pyplot as plt\r\n",
        "import numpy as np\r\n",
        "import torch\r\n",
        "from pathlib import Path\r\n",
        "from torchio.transforms import HistogramStandardization"
      ],
      "execution_count": 4,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "tUly42ud6QY_",
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "outputId": "a719b388-8750-48f4-8314-cde5f18e05ae"
      },
      "source": [
        "import os\r\n",
        "import torchio as tio\r\n",
        "subjects = []\r\n",
        "base_dir = './macai_datasets/brats_new/BraTS2020_TrainingData/MICCAI_BraTS2020_TrainingData/'\r\n",
        "\r\n",
        "flairs = []\r\n",
        "t1s = []\r\n",
        "t2s = []\r\n",
        "t1ces = []\r\n",
        "segs = []\r\n",
        "\r\n",
        "series_strings = ['flair', 't1', 't2', 't1ce', 'seg']\r\n",
        "orig_paths = [flairs, t1s, t2s, t1ces, segs]\r\n",
        "\r\n",
        "for file in [file for file in os.listdir('./macai_datasets/brats_new/BraTS2020_TrainingData/MICCAI_BraTS2020_TrainingData') if os.path.isdir(base_dir + file) == True]:\r\n",
        "  print(file)\r\n",
        "\r\n",
        "  subject_dict = {}\r\n",
        "  for i, _ in enumerate(series_strings):\r\n",
        "    current_path =  base_dir+file +'/'+ file+'_' + series_strings[i] +'.nii.gz'\r\n",
        "    orig_paths[i].append(current_path)\r\n",
        "    if series_strings[i] != 'seg':\r\n",
        "      subject_dict[series_strings[i]] = tio.ScalarImage(path=current_path)\r\n",
        "    else:\r\n",
        "      subject_dict[series_strings[i]] = tio.LabelMap(path=current_path)\r\n",
        "    subject = tio.Subject(subject_dict)\r\n",
        "\r\n",
        "  subjects.append(subject)\r\n",
        "dataset = tio.SubjectsDataset(subjects)"
      ],
      "execution_count": 17,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "BraTS20_Training_106\n",
            "BraTS20_Training_262\n",
            "BraTS20_Training_203\n",
            "BraTS20_Training_147\n",
            "BraTS20_Training_127\n",
            "BraTS20_Training_349\n",
            "BraTS20_Training_299\n",
            "BraTS20_Training_202\n",
            "BraTS20_Training_181\n",
            "BraTS20_Training_014\n",
            "BraTS20_Training_035\n",
            "BraTS20_Training_177\n",
            "BraTS20_Training_310\n",
            "BraTS20_Training_027\n",
            "BraTS20_Training_083\n",
            "BraTS20_Training_094\n",
            "BraTS20_Training_150\n",
            "BraTS20_Training_092\n",
            "BraTS20_Training_113\n",
            "BraTS20_Training_089\n",
            "BraTS20_Training_061\n",
            "BraTS20_Training_347\n",
            "BraTS20_Training_306\n",
            "BraTS20_Training_216\n",
            "BraTS20_Training_125\n",
            "BraTS20_Training_327\n",
            "BraTS20_Training_277\n",
            "BraTS20_Training_171\n",
            "BraTS20_Training_108\n",
            "BraTS20_Training_308\n",
            "BraTS20_Training_302\n",
            "BraTS20_Training_248\n",
            "BraTS20_Training_321\n",
            "BraTS20_Training_067\n",
            "BraTS20_Training_289\n",
            "BraTS20_Training_128\n",
            "BraTS20_Training_318\n",
            "BraTS20_Training_317\n",
            "BraTS20_Training_104\n",
            "BraTS20_Training_041\n",
            "BraTS20_Training_051\n",
            "BraTS20_Training_303\n",
            "BraTS20_Training_151\n",
            "BraTS20_Training_360\n",
            "BraTS20_Training_131\n",
            "BraTS20_Training_265\n",
            "BraTS20_Training_078\n",
            "BraTS20_Training_209\n",
            "BraTS20_Training_258\n",
            "BraTS20_Training_237\n",
            "BraTS20_Training_076\n",
            "BraTS20_Training_168\n",
            "BraTS20_Training_008\n",
            "BraTS20_Training_281\n",
            "BraTS20_Training_221\n",
            "BraTS20_Training_280\n",
            "BraTS20_Training_285\n",
            "BraTS20_Training_224\n",
            "BraTS20_Training_367\n",
            "BraTS20_Training_188\n",
            "BraTS20_Training_274\n",
            "BraTS20_Training_309\n",
            "BraTS20_Training_060\n",
            "BraTS20_Training_130\n",
            "BraTS20_Training_175\n",
            "BraTS20_Training_001\n",
            "BraTS20_Training_159\n",
            "BraTS20_Training_170\n",
            "BraTS20_Training_019\n",
            "BraTS20_Training_205\n",
            "BraTS20_Training_334\n",
            "BraTS20_Training_174\n",
            "BraTS20_Training_050\n",
            "BraTS20_Training_004\n",
            "BraTS20_Training_102\n",
            "BraTS20_Training_337\n",
            "BraTS20_Training_034\n",
            "BraTS20_Training_328\n",
            "BraTS20_Training_194\n",
            "BraTS20_Training_362\n",
            "BraTS20_Training_336\n",
            "BraTS20_Training_178\n",
            "BraTS20_Training_322\n",
            "BraTS20_Training_189\n",
            "BraTS20_Training_095\n",
            "BraTS20_Training_214\n",
            "BraTS20_Training_369\n",
            "BraTS20_Training_342\n",
            "BraTS20_Training_045\n",
            "BraTS20_Training_100\n",
            "BraTS20_Training_236\n",
            "BraTS20_Training_200\n",
            "BraTS20_Training_123\n",
            "BraTS20_Training_186\n",
            "BraTS20_Training_244\n",
            "BraTS20_Training_215\n",
            "BraTS20_Training_295\n",
            "BraTS20_Training_229\n",
            "BraTS20_Training_077\n",
            "BraTS20_Training_140\n",
            "BraTS20_Training_195\n",
            "BraTS20_Training_320\n",
            "BraTS20_Training_345\n",
            "BraTS20_Training_222\n",
            "BraTS20_Training_356\n",
            "BraTS20_Training_023\n",
            "BraTS20_Training_163\n",
            "BraTS20_Training_044\n",
            "BraTS20_Training_271\n",
            "BraTS20_Training_059\n",
            "BraTS20_Training_072\n",
            "BraTS20_Training_139\n",
            "BraTS20_Training_099\n",
            "BraTS20_Training_273\n",
            "BraTS20_Training_287\n",
            "BraTS20_Training_324\n",
            "BraTS20_Training_117\n",
            "BraTS20_Training_250\n",
            "BraTS20_Training_183\n",
            "BraTS20_Training_068\n",
            "BraTS20_Training_026\n",
            "BraTS20_Training_017\n",
            "BraTS20_Training_180\n",
            "BraTS20_Training_344\n",
            "BraTS20_Training_111\n",
            "BraTS20_Training_266\n",
            "BraTS20_Training_353\n",
            "BraTS20_Training_184\n",
            "BraTS20_Training_276\n",
            "BraTS20_Training_129\n",
            "BraTS20_Training_040\n",
            "BraTS20_Training_149\n",
            "BraTS20_Training_255\n",
            "BraTS20_Training_143\n",
            "BraTS20_Training_249\n",
            "BraTS20_Training_240\n",
            "BraTS20_Training_314\n",
            "BraTS20_Training_162\n",
            "BraTS20_Training_210\n",
            "BraTS20_Training_028\n",
            "BraTS20_Training_116\n",
            "BraTS20_Training_298\n",
            "BraTS20_Training_056\n",
            "BraTS20_Training_368\n",
            "BraTS20_Training_085\n",
            "BraTS20_Training_112\n",
            "BraTS20_Training_018\n",
            "BraTS20_Training_199\n",
            "BraTS20_Training_226\n",
            "BraTS20_Training_042\n",
            "BraTS20_Training_284\n",
            "BraTS20_Training_153\n",
            "BraTS20_Training_115\n",
            "BraTS20_Training_012\n",
            "BraTS20_Training_197\n",
            "BraTS20_Training_167\n",
            "BraTS20_Training_109\n",
            "BraTS20_Training_296\n",
            "BraTS20_Training_256\n",
            "BraTS20_Training_057\n",
            "BraTS20_Training_070\n",
            "BraTS20_Training_196\n",
            "BraTS20_Training_126\n",
            "BraTS20_Training_268\n",
            "BraTS20_Training_282\n",
            "BraTS20_Training_238\n",
            "BraTS20_Training_011\n",
            "BraTS20_Training_231\n",
            "BraTS20_Training_135\n",
            "BraTS20_Training_098\n",
            "BraTS20_Training_190\n",
            "BraTS20_Training_156\n",
            "BraTS20_Training_136\n",
            "BraTS20_Training_297\n",
            "BraTS20_Training_182\n",
            "BraTS20_Training_340\n",
            "BraTS20_Training_365\n",
            "BraTS20_Training_038\n",
            "BraTS20_Training_257\n",
            "BraTS20_Training_325\n",
            "BraTS20_Training_037\n",
            "BraTS20_Training_300\n",
            "BraTS20_Training_107\n",
            "BraTS20_Training_219\n",
            "BraTS20_Training_160\n",
            "BraTS20_Training_122\n",
            "BraTS20_Training_191\n",
            "BraTS20_Training_053\n",
            "BraTS20_Training_288\n",
            "BraTS20_Training_081\n",
            "BraTS20_Training_335\n",
            "BraTS20_Training_007\n",
            "BraTS20_Training_192\n",
            "BraTS20_Training_346\n",
            "BraTS20_Training_361\n",
            "BraTS20_Training_339\n",
            "BraTS20_Training_227\n",
            "BraTS20_Training_075\n",
            "BraTS20_Training_047\n",
            "BraTS20_Training_316\n",
            "BraTS20_Training_003\n",
            "BraTS20_Training_278\n",
            "BraTS20_Training_212\n",
            "BraTS20_Training_021\n",
            "BraTS20_Training_176\n",
            "BraTS20_Training_029\n",
            "BraTS20_Training_187\n",
            "BraTS20_Training_064\n",
            "BraTS20_Training_260\n",
            "BraTS20_Training_020\n",
            "BraTS20_Training_319\n",
            "BraTS20_Training_286\n",
            "BraTS20_Training_330\n",
            "BraTS20_Training_233\n",
            "BraTS20_Training_169\n",
            "BraTS20_Training_046\n",
            "BraTS20_Training_243\n",
            "BraTS20_Training_232\n",
            "BraTS20_Training_087\n",
            "BraTS20_Training_246\n",
            "BraTS20_Training_142\n",
            "BraTS20_Training_307\n",
            "BraTS20_Training_022\n",
            "BraTS20_Training_292\n",
            "BraTS20_Training_228\n",
            "BraTS20_Training_261\n",
            "BraTS20_Training_366\n",
            "BraTS20_Training_245\n",
            "BraTS20_Training_333\n",
            "BraTS20_Training_069\n",
            "BraTS20_Training_357\n",
            "BraTS20_Training_031\n",
            "BraTS20_Training_270\n",
            "BraTS20_Training_080\n",
            "BraTS20_Training_193\n",
            "BraTS20_Training_024\n",
            "BraTS20_Training_198\n",
            "BraTS20_Training_063\n",
            "BraTS20_Training_058\n",
            "BraTS20_Training_049\n",
            "BraTS20_Training_157\n",
            "BraTS20_Training_225\n",
            "BraTS20_Training_259\n",
            "BraTS20_Training_363\n",
            "BraTS20_Training_043\n",
            "BraTS20_Training_133\n",
            "BraTS20_Training_006\n",
            "BraTS20_Training_230\n",
            "BraTS20_Training_263\n",
            "BraTS20_Training_144\n",
            "BraTS20_Training_217\n",
            "BraTS20_Training_179\n",
            "BraTS20_Training_251\n",
            "BraTS20_Training_204\n",
            "BraTS20_Training_220\n",
            "BraTS20_Training_301\n",
            "BraTS20_Training_166\n",
            "BraTS20_Training_252\n",
            "BraTS20_Training_364\n",
            "BraTS20_Training_032\n",
            "BraTS20_Training_343\n",
            "BraTS20_Training_082\n",
            "BraTS20_Training_025\n",
            "BraTS20_Training_074\n",
            "BraTS20_Training_354\n",
            "BraTS20_Training_351\n",
            "BraTS20_Training_066\n",
            "BraTS20_Training_010\n",
            "BraTS20_Training_088\n",
            "BraTS20_Training_154\n",
            "BraTS20_Training_359\n",
            "BraTS20_Training_253\n",
            "BraTS20_Training_313\n",
            "BraTS20_Training_164\n",
            "BraTS20_Training_234\n",
            "BraTS20_Training_124\n",
            "BraTS20_Training_091\n",
            "BraTS20_Training_118\n",
            "BraTS20_Training_013\n",
            "BraTS20_Training_096\n",
            "BraTS20_Training_206\n",
            "BraTS20_Training_275\n",
            "BraTS20_Training_141\n",
            "BraTS20_Training_304\n",
            "BraTS20_Training_002\n",
            "BraTS20_Training_152\n",
            "BraTS20_Training_079\n",
            "BraTS20_Training_110\n",
            "BraTS20_Training_101\n",
            "BraTS20_Training_039\n",
            "BraTS20_Training_239\n",
            "BraTS20_Training_145\n",
            "BraTS20_Training_054\n",
            "BraTS20_Training_331\n",
            "BraTS20_Training_030\n",
            "BraTS20_Training_158\n",
            "BraTS20_Training_267\n",
            "BraTS20_Training_016\n",
            "BraTS20_Training_015\n",
            "BraTS20_Training_272\n",
            "BraTS20_Training_242\n",
            "BraTS20_Training_241\n",
            "BraTS20_Training_048\n",
            "BraTS20_Training_173\n",
            "BraTS20_Training_208\n",
            "BraTS20_Training_305\n",
            "BraTS20_Training_264\n",
            "BraTS20_Training_137\n",
            "BraTS20_Training_146\n",
            "BraTS20_Training_218\n",
            "BraTS20_Training_036\n",
            "BraTS20_Training_138\n",
            "BraTS20_Training_105\n",
            "BraTS20_Training_326\n",
            "BraTS20_Training_172\n",
            "BraTS20_Training_062\n",
            "BraTS20_Training_185\n",
            "BraTS20_Training_352\n",
            "BraTS20_Training_009\n",
            "BraTS20_Training_103\n",
            "BraTS20_Training_269\n",
            "BraTS20_Training_207\n",
            "BraTS20_Training_033\n",
            "BraTS20_Training_254\n",
            "BraTS20_Training_132\n",
            "BraTS20_Training_315\n",
            "BraTS20_Training_350\n",
            "BraTS20_Training_247\n",
            "BraTS20_Training_358\n",
            "BraTS20_Training_120\n",
            "BraTS20_Training_065\n",
            "BraTS20_Training_121\n",
            "BraTS20_Training_338\n",
            "BraTS20_Training_279\n",
            "BraTS20_Training_223\n",
            "BraTS20_Training_201\n",
            "BraTS20_Training_086\n",
            "BraTS20_Training_084\n",
            "BraTS20_Training_055\n",
            "BraTS20_Training_090\n",
            "BraTS20_Training_332\n",
            "BraTS20_Training_283\n",
            "BraTS20_Training_148\n",
            "BraTS20_Training_329\n",
            "BraTS20_Training_235\n",
            "BraTS20_Training_341\n",
            "BraTS20_Training_097\n",
            "BraTS20_Training_311\n",
            "BraTS20_Training_134\n",
            "BraTS20_Training_052\n",
            "BraTS20_Training_073\n",
            "BraTS20_Training_293\n",
            "BraTS20_Training_119\n",
            "BraTS20_Training_291\n",
            "BraTS20_Training_005\n",
            "BraTS20_Training_323\n",
            "BraTS20_Training_165\n",
            "BraTS20_Training_348\n",
            "BraTS20_Training_161\n",
            "BraTS20_Training_211\n",
            "BraTS20_Training_071\n",
            "BraTS20_Training_093\n",
            "BraTS20_Training_312\n",
            "BraTS20_Training_213\n",
            "BraTS20_Training_114\n",
            "BraTS20_Training_290\n",
            "BraTS20_Training_294\n",
            "BraTS20_Training_155\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 458
        },
        "id": "Lg3JKzRjaYL2",
        "outputId": "23b2c4d2-6447-4e18-bbe2-1fac4c9ab8bc"
      },
      "source": [
        "landmarks_dict = {}\r\n",
        "landmarks_paths = [Path(modality + '_landmarks.npy') for modality in series_strings]\r\n",
        "\r\n",
        "series_strings = ['data', 'seg']\r\n",
        "#some serialization problems right now but whatever\r\n",
        "for i, series in enumerate(series_strings):\r\n",
        "  if series != 'seg':\r\n",
        "    print('Training/Loading Nyul for series: '+ series +'\\n')\r\n",
        "    landmarks_path = landmarks_paths[i]\r\n",
        "    landmarks = HistogramStandardization.train(orig_paths[i])\r\n",
        "  #  (landmarks_path if landmarks_path.is_file()\r\n",
        "  #  else \r\n",
        "  #  )\r\n",
        "    torch.save(landmarks, landmarks_path)\r\n",
        "\r\n",
        "    landmarks_dict[series] = landmarks\r\n"
      ],
      "execution_count": 7,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "\r  0%|          | 0/368 [00:00<?, ?it/s]"
          ],
          "name": "stderr"
        },
        {
          "output_type": "stream",
          "text": [
            "Training/Loading Nyul for series: flair\n",
            "\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "stream",
          "text": [
            "  6%|▌         | 22/368 [00:30<07:25,  1.29s/it]"
          ],
          "name": "stderr"
        },
        {
          "output_type": "error",
          "ename": "SystemError",
          "evalue": "ignored",
          "traceback": [
            "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
            "\u001b[0;31mKeyboardInterrupt\u001b[0m                         Traceback (most recent call last)",
            "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/SimpleITK/SimpleITK.py\u001b[0m in \u001b[0;36m<lambda>\u001b[0;34m(self, name, value)\u001b[0m\n\u001b[1;32m   3708\u001b[0m     \u001b[0m__swig_setmethods__\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m{\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 3709\u001b[0;31m     \u001b[0m__setattr__\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mlambda\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0m_swig_setattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mImage\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   3710\u001b[0m     \u001b[0m__swig_getmethods__\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m{\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;31mKeyboardInterrupt\u001b[0m: ",
            "\nThe above exception was the direct cause of the following exception:\n",
            "\u001b[0;31mSystemError\u001b[0m                               Traceback (most recent call last)",
            "\u001b[0;32m<ipython-input-7-2a9f7d2b4d07>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m      7\u001b[0m     \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Training/Loading Nyul for series: '\u001b[0m\u001b[0;34m+\u001b[0m \u001b[0mseries\u001b[0m \u001b[0;34m+\u001b[0m\u001b[0;34m'\\n'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      8\u001b[0m     \u001b[0mlandmarks_path\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mlandmarks_paths\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 9\u001b[0;31m     \u001b[0mlandmarks\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mHistogramStandardization\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtrain\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0morig_paths\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     10\u001b[0m   \u001b[0;31m#  (landmarks_path if landmarks_path.is_file()\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     11\u001b[0m   \u001b[0;31m#  else\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/torchio/transforms/preprocessing/intensity/histogram_standardization.py\u001b[0m in \u001b[0;36mtrain\u001b[0;34m(cls, images_paths, cutoff, mask_path, masking_function, output_path)\u001b[0m\n\u001b[1;32m    165\u001b[0m         \u001b[0mpercentiles\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_get_percentiles\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpercentiles_cutoff\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    166\u001b[0m         \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mimage_file_path\u001b[0m \u001b[0;32min\u001b[0m \u001b[0menumerate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtqdm\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mimages_paths\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 167\u001b[0;31m             \u001b[0mtensor\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0m_\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mread_image\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mimage_file_path\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    168\u001b[0m             \u001b[0;32mif\u001b[0m \u001b[0mmasking_function\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    169\u001b[0m                 \u001b[0mmask\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmasking_function\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtensor\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/torchio/data/io.py\u001b[0m in \u001b[0;36mread_image\u001b[0;34m(path)\u001b[0m\n\u001b[1;32m     17\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mread_image\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpath\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mTypePath\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m->\u001b[0m \u001b[0mTuple\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mtorch\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mTensor\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mndarray\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     18\u001b[0m     \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 19\u001b[0;31m         \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_read_sitk\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpath\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     20\u001b[0m     \u001b[0;32mexcept\u001b[0m \u001b[0mRuntimeError\u001b[0m\u001b[0;34m:\u001b[0m  \u001b[0;31m# try with NiBabel\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     21\u001b[0m         \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/torchio/data/io.py\u001b[0m in \u001b[0;36m_read_sitk\u001b[0;34m(path)\u001b[0m\n\u001b[1;32m     48\u001b[0m         \u001b[0mimage\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_read_dicom\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpath\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     49\u001b[0m     \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 50\u001b[0;31m         \u001b[0mimage\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0msitk\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mReadImage\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpath\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     51\u001b[0m     \u001b[0mdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maffine\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0msitk_to_nib\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mimage\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkeepdim\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     52\u001b[0m     \u001b[0mdata\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcheck_uint_to_int\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/SimpleITK/SimpleITK.py\u001b[0m in \u001b[0;36mReadImage\u001b[0;34m(*args)\u001b[0m\n\u001b[1;32m   8874\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   8875\u001b[0m     \"\"\"\n\u001b[0;32m-> 8876\u001b[0;31m     \u001b[0;32mreturn\u001b[0m \u001b[0m_SimpleITK\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mReadImage\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   8877\u001b[0m \u001b[0;32mclass\u001b[0m \u001b[0mImageViewer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m_object\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   8878\u001b[0m     \"\"\"\n",
            "\u001b[0;31mSystemError\u001b[0m: <built-in function ReadImage> returned a result with an error set"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "BAsNt9MRDo0k"
      },
      "source": [
        "print(landmarks_dict)"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "vttA1NMTg3QW",
        "outputId": "fc297b58-24a6-4556-9d34-4624ed3591aa"
      },
      "source": [
        "print(dataset[0])"
      ],
      "execution_count": 8,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Subject(Keys: ('flair', 't1', 't2', 't1ce', 'seg'); images: 5)\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "KAIVJB31xtu6"
      },
      "source": [
        "# RandomElasticDeformation takes forever, again. Maybe even longer than before.\r\n",
        "\r\n",
        "\r\n",
        "transforms_dict = {\r\n",
        "  tio.HistogramStandardization(landmarks_dict):1,\r\n",
        "  tio.transforms.ZNormalization(): 1,\r\n",
        "  tio.transforms.RandomGamma(): 0.5,\r\n",
        "  #  tio.transforms.RandomElasticDeformation(): 0.5\r\n",
        "}\r\n",
        "all_transforms = tio.transforms.Compose(transforms_dict)\r\n"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "rZfgSs9iAOCk"
      },
      "source": [
        "iteration =0\r\n",
        "for i, _ in enumerate(dataset):\r\n",
        "  print(i)\r\n",
        "\r\n",
        "  print(torch.sum(dataset[i]['seg'].tensor))\r\n",
        "  transformed = all_transforms(dataset[i]) \r\n",
        "  print(torch.sum(transformed['seg'].tensor))\r\n",
        "\r\n",
        "  iteration += 1\r\n",
        "  if iteration >= 10:\r\n",
        "    break"
      ],
      "execution_count": null,
      "outputs": []
    }
  ]
}