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": []
}
]
}