From 46db6c17eeae815c4bae01fefe325a4a2686052b Mon Sep 17 00:00:00 2001 From: ViiSkor Date: Wed, 10 Jun 2020 15:03:44 +0300 Subject: [PATCH] Add missing imports to utils.py --- notebooks/Models_exploration.ipynb | 110665 +------------------------- src/utils.py | 6 +- 2 files changed, 85 insertions(+), 110586 deletions(-) diff --git a/notebooks/Models_exploration.ipynb b/notebooks/Models_exploration.ipynb index c297c4d..b27ee72 100644 --- a/notebooks/Models_exploration.ipynb +++ b/notebooks/Models_exploration.ipynb @@ -6,6 +6,7 @@ "name": "Models_exploration", "provenance": [], "collapsed_sections": [], + "toc_visible": true, "machine_shape": "hm" }, "kernelspec": { @@ -29,7 +30,7 @@ "metadata": { "id": "GXQRLG_lWb6b", "colab_type": "code", - "outputId": "b1535f76-a1ea-492d-f682-a959253c1384", + "outputId": "652ec035-5988-4806-a53a-5f9a9905d446", "colab": { "base_uri": "https://localhost:8080/", "height": 122 @@ -69,7 +70,11 @@ "metadata": { "id": "Favb_S72QDVk", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 51 + }, + "outputId": "73c292ed-587c-4aec-a77d-42ba5d3cbbf5" }, "source": [ "import sys\n", @@ -84,6 +89,7 @@ "from matplotlib import animation, rc\n", "from matplotlib import pyplot as plt\n", "\n", + "from src.data_gen import Med3DDataGenerator, Med2DDataGenerator\n", "from src.visualization import animate_scan\n", "from src.metrics import dice_coefficient, recall, precision, mean_dice, mean_iou\n", "from src.losses import soft_dice_loss\n", @@ -91,8 +97,17 @@ "\n", "rc('animation', html='jshtml')" ], - "execution_count": 0, - "outputs": [] + "execution_count": 2, + "outputs": [ + { + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.6/dist-packages/statsmodels/tools/_testing.py:19: FutureWarning: pandas.util.testing is deprecated. Use the functions in the public API at pandas.testing instead.\n", + " import pandas.util.testing as tm\n" + ], + "name": "stderr" + } + ] }, { "cell_type": "markdown", @@ -254,8 +269,8 @@ "colab": {} }, "source": [ - "model_3DUnet_path = '/content/drive/My Drive/VolumMedSeg/models/BraTS/tmp/Unet3D.h5'\n", - "model_history_3DUnet_path = '/content/drive/My Drive/VolumMedSeg/models/BraTS/tmp/Unet3D_history.pkl'\n", + "model_3DUnet_path = '/content/drive/My Drive/VolumMedSeg/models/BraTS/Unet3D/Unet3D.h5'\n", + "model_history_3DUnet_path = '/content/drive/My Drive/VolumMedSeg/models/BraTS/Unet3D/Unet3D_history.pkl'\n", "\n", "model_Dilated3DUnet_path = '/content/drive/My Drive/VolumMedSeg/models/BraTS/UNet3DDilated/Unet3DDilated.h5'\n", "model_history_Dilated3DUnet_path = '/content/drive/My Drive/VolumMedSeg/models/BraTS/UNet3DDilated/Unet3DDilated_history.pkl'\n", @@ -339,13 +354,25 @@ "metadata": { "id": "NeFVfbJY4Jup", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "2d345806-b0b0-43c1-f3e4-5b5612884525" }, "source": [ "prediction_UNet3D = model_3D.predict(validation3D_generator, verbose=1)" ], - "execution_count": 0, - "outputs": [] + "execution_count": 13, + "outputs": [ + { + "output_type": "stream", + "text": [ + "51/51 [==============================] - 586s 11s/step\n" + ], + "name": "stdout" + } + ] }, { "cell_type": "code", @@ -388,13 +415,25 @@ "metadata": { "id": "i8XXzUftJnxh", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "895bf2ca-b420-4049-83e5-a323bed572e1" }, "source": [ "prediction_UNet3D_dil = model_3D_dil.predict(validation3D_generator, verbose=1)" ], - "execution_count": 0, - "outputs": [] + "execution_count": 16, + "outputs": [ + { + "output_type": "stream", + "text": [ + "51/51 [==============================] - 657s 13s/step\n" + ], + "name": "stdout" + } + ] }, { "cell_type": "code", @@ -492,13 +531,25 @@ "metadata": { "id": "chXy29jyOS3i", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "21ff7bbc-71df-44a3-bf16-4663cc74fddd" }, "source": [ "prediction_UNet2D = model2D.predict(validation2D_generator, verbose=1)" ], - "execution_count": 0, - "outputs": [] + "execution_count": 21, + "outputs": [ + { + "output_type": "stream", + "text": [ + "6988/6988 [==============================] - 1040s 149ms/step\n" + ], + "name": "stdout" + } + ] }, { "cell_type": "code", @@ -521,7 +572,7 @@ "colab": {} }, "source": [ - "scores_2D = evaluate(val_data2D_paths, stacked_pred, mean_iou, DIM3D, SCAN_TYPES, OUTPUT_CLASSES, MERGE_CLASSES, mode=\"2D\")" + "scores_2D = evaluate(val_data2D_paths, stacked_pred, mean_dice, DIM3D, SCAN_TYPES, OUTPUT_CLASSES, MERGE_CLASSES, mode=\"2D\")" ], "execution_count": 0, "outputs": [] @@ -583,7 +634,7 @@ "colab": {} }, "source": [ - "scores_2D_dil = evaluate(val_data2D_paths, stacked_pred_dil, mean_iou, DIM3D, SCAN_TYPES, OUTPUT_CLASSES, MERGE_CLASSES, mode=\"2D\")" + "scores_2D_dil = evaluate(val_data2D_paths, stacked_pred_dil, mean_dice, DIM3D, SCAN_TYPES, OUTPUT_CLASSES, MERGE_CLASSES, mode=\"2D\")" ], "execution_count": 0, "outputs": [] @@ -603,11 +654,7 @@ "metadata": { "id": "fYfsXEDs3arJ", "colab_type": "code", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 1000 - }, - "outputId": "58def37d-9cf7-42fe-e13d-b70878d962e2" + "colab": {} }, "source": [ "mask, modalities = load_sample(val_data3D_paths[50], DIM3D, SCAN_TYPES, OUTPUT_CLASSES, MERGE_CLASSES, mode=\"3D\")\n", @@ -622,110529 +669,8 @@ " (20, 12))\n", "anim" ], - "execution_count": 52, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
\n", - " \n", - "
\n", - " \n", - "
\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - "
\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - "
\n", - "
\n", - "\n", - "\n", - "\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 52 - }, - { - "output_type": "display_data", - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "tags": [], - "needs_background": "light" - } - } - ] + "execution_count": 0, + "outputs": [] }, { "cell_type": "markdown", @@ -111221,7 +747,7 @@ "plt.ylabel('Loss', fontsize=18)\n", "plt.show();" ], - "execution_count": 88, + "execution_count": 0, "outputs": [ { "output_type": "display_data", @@ -111242,11 +768,11 @@ "metadata": { "id": "OzCOcRs5wAk7", "colab_type": "code", + "outputId": "68f7882c-f823-4698-f80f-05cb740ed74a", "colab": { "base_uri": "https://localhost:8080/", "height": 510 - }, - "outputId": "68f7882c-f823-4698-f80f-05cb740ed74a" + } }, "source": [ "sns.set(style=\"whitegrid\")\n", @@ -111261,7 +787,7 @@ "plt.ylabel('Loss', fontsize=18)\n", "plt.show();" ], - "execution_count": 82, + "execution_count": 0, "outputs": [ { "output_type": "display_data", @@ -111282,11 +808,11 @@ "metadata": { "id": "mhCLP7cxsqSE", "colab_type": "code", + "outputId": "a4a3c851-e873-4dc1-a0a8-76ef53815fe3", "colab": { "base_uri": "https://localhost:8080/", "height": 507 - }, - "outputId": "a4a3c851-e873-4dc1-a0a8-76ef53815fe3" + } }, "source": [ "sns.set(style=\"whitegrid\")\n", @@ -111302,7 +828,7 @@ "plt.ylabel('Loss', fontsize=18)\n", "plt.show();" ], - "execution_count": 83, + "execution_count": 0, "outputs": [ { "output_type": "display_data", @@ -111333,11 +859,7 @@ "metadata": { "id": "3wwyd73ls1qJ", "colab_type": "code", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 524 - }, - "outputId": "6dfcadc2-1fa7-43d0-8c97-07d0aa47befc" + "colab": {} }, "source": [ "scores_3D['model'] = ['3D U-Net' for _ in range(len(scores_3D['score']))]\n", @@ -111356,33 +878,8 @@ "plt.ylabel('model', fontsize=18)\n", "sns.boxplot(x=\"model\", y=\"score\", hue=\"class\", data=df_models, palette=\"hls\")" ], - "execution_count": 86, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 86 - }, - { - "output_type": "display_data", - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAABCsAAAHqCAYAAAAtR8TnAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOzdfZzVdYEv8M8ww4MP6AmuEqZp19Jlw2xTX4bBmKaiCcGouwjpzTRtS7JXT9sDrA8rZFpu96qZq7WZl5tuajMma6QGySBEm7dd8aJiq2IoAoLHEB9ghnP/sGZDHnR0ht9vhvf7r5nz+55zPucMP845n/P9fX91tVqtFgAAAICS6FN0AAAAAIA/p6wAAAAASkVZAQAAAJSKsgIAAAAolYaiA3SnjRs3Zt26denbt2/q6uqKjgMAAAAkqdVq2bBhQ3bZZZf06bP5PIpeXVasW7cuS5YsKToGAAAAsAUHHHBABg4cuNnlvbqs6Nu3b5JXHny/fv0KTgMAAAAkyfr167NkyZKOz+2v1qvLij8d+tGvX7/079+/4DQAAADAn9vakg0W2AQAAABKRVkBAAAAlIqyAgAAACiVXr1mBQAAAGxvGzZsyLJly/LSSy8VHaUUBgwYkL333nuri2luibICAAAAutCyZcsycODA7LfffltdQHJHUavVsnr16ixbtizveMc7Xvf1HAYCAAAAXeill17K4MGDd/iiInnlbB+DBw/u9CwTZQUAAAB0MUXFf3kjz4WyAgAAACgVZQUAAAD0QD/5yU8yceLEomN0C2UFAAAAUCrKCgAAAKBUlBUAAABQcsuXL8/kyZPz/ve/P4cffnj+4R/+YbMx06ZNy5FHHpn3ve99Oemkk/Kb3/ymY9v999+fk046Ke973/tyxBFH5JJLLkmSvPzyy/niF7+Yww8/PIceemhOPvnkPPPMM9vtcW1NQ9EBAAAAgK1rb2/PJz/5ybz//e/P7NmzU19fn0WLFuWJJ57YZNxBBx2Uc889NwMHDswNN9yQz372s5k9e3b69++f6dOn53/8j/+R8ePHZ926dXnkkUeSJM3NzXn++efzy1/+Mv369cuDDz6YAQMGFPEwN2FmBQAAAJTY/fffn5UrV+bv/u7vsvPOO6d///459NBDNxs3bty4vOUtb0lDQ0POPPPMrF+/Po899liSpKGhIU888UTWrFmTXXbZJe9973s7Lq9Wq1m6dGnq6+szfPjw7Lrrrtv18W2JsgIAAABKbPny5dlrr73S0LDtgyO+//3v54QTTsghhxySQw89NGvXrs2zzz6bJJk+fXoef/zxnHDCCTn55JMzZ86cJK8UHCNHjsznP//5jBw5Mpdddlk2bNjQ7Y/ptTgMBAAAAEps6NChWb58edra2rZaWPzmN7/J9773vVx//fV517velT59+uSwww5LrVZLkuy33375x3/8x2zcuDF33nlnzjvvvCxcuDA777xzJk+enMmTJ2fZsmU555xz8o53vCN//dd/vT0f4maUFXSYN29e7rnnnqJjvGnPPfdckmT33XcvOMmbc+SRR2bkyJFFx6CX6g37u30dANhRvOc978kee+yRyy+/PJ/5zGdSX1+fBx54YJMx69atS319fQYNGpS2trZce+21ef755zu233bbbRk1alQGDRqU3XbbLUnSp0+f/OpXv8pb3vKWvPOd78yuu+6ahoaG9OlT/EEYygp6nWq1mqTnf4ABts2+DgDsKOrr63PNNddk2rRpOeqoo5IkY8eOzV/+5V92jBk5cmRGjRqV0aNHZ+edd87HPvaxDB06tGN7a2trvvGNb+Sll17KXnvtlW9/+9sZMGBAnnnmmVxwwQVZsWJFdt5553z4wx/OuHHjtvtjfLW62p/mhPRCL7/8ch544IEMHz48/fv3LzoO28n06dOTJFOmTCk4CdCd7OsAQFk9+OCDGTZsWNExSuXVz8lrfV4vfm4HAAAAwJ9RVgAAAACloqwAAAAASkVZAQAAAJSKsgIAAAAoFWUFAAAAUCrKCgAAAKBUGooOAAAAAL3Zt6ZPyx/WrOny291t0KB8ccrULr/dMlBWAAAAQDf6w5o1+ciGF7r8dn/a9f1Hp51++uk588wzc9RRR3Xp7ToMBAAAACgVZQUAAAD0YgceeGC++93v5uSTT86HPvShLFiwIJdffnnGjx+fMWPG5D//8z+TJKtWrcrpp5+ek046KSeeeGIuu+yyjtu4++67M3bs2IwbNy5jxozJwoULN7uff/3Xf83JJ5+cp59++k1ndhgIAAAA9HK77bZbbr311vzsZz/Lpz/96fzjP/5jvvCFL+S6667Ld7/73XzrW9/KbrvtlmuuuSa77LJLNmzYkLPOOitz585NY2NjrrjiivzDP/xD/uqv/irt7e158cUXN7n96667Lvfee2+uv/76DBw48E3nVVYAAABAL3fCCSckSd797ncnSccaE8OHD89dd92VJGlvb89ll12W3/72t6nVannmmWfy0EMPpbGxMe9///tzySWX5LjjjktjY2MOOOCAjtu+8sors9dee+Xaa69Nv379uiSvw0AAAACgl+vfv3+SpE+fPpsUCn369ElbW1uS5Ac/+EH+8Ic/5Oabb87tt9+eY445Ji+//HKS5Gtf+1ouvvji9O3bN5/97Gfz4x//uOM23vve9+aRRx7JU0891WV5lRUAAABA1q5dmz322CP9+/fPihUr8otf/KJj26OPPpoDDzwwH/vYx/KRj3wkixYt6tg2atSoXHjhhTnnnHPyyCOPdEkWh4EAAABAN9pt0KBuOc3oboMGdentnX766fnsZz+bMWPGZMiQIRkxYkTHtssvvzxLly5NfX19dtttt0yfPn2T644YMSKXXHJJPvWpT+WKK67IX/7lX76pLMoKAAAA6EZfnDK10Pt/+OGHO37ee++9NzmTx+GHH56f/OQnSZK3ve1tueWWW7Z4G9/5zne2ePn//t//u+PnQw45JHfffXdXRFZWAHTGjBkzsnTp0qJjkHT8HV7d6rP97bvvvjnttNOKjgEA9CLKii7iA0x5+ABTHr3xA8zSpUvz6MMPZY96S/4UbcDGWpJk7e+WFJxkx7aqfWPREQCAXkhZ0UV8gCkPH2DKoTd/gNmjvk9OGbhT0TGgFG5Z++JrDwKAHVCtVktdXV3RMUqhVqt1+jrKii7kAwz8Fx9gAADYUQ0YMCCrV6/O4MGDd/jColarZfXq1RkwYECnrqesAAAAgC609957Z9myZVm1alXRUUphwIAB2XvvvTt1HWUFAAAAdKG+ffvmHe94R9ExejQLLAAAAACloqwAAAAASkVZAQAAAJSKsgIAAAAoFWUFAAAAUCrKCgAAAKBUlBUAAABAqSgrAAAAgFJRVgAAAACloqwAAAAASkVZAQAAAJRKQ9EBAHqS5557LqvbNuaWtS8WHQVKYVXbxmx87rmiYwAAvYyZFQAAAECpmFkB0Am77757+qxakVMG7lR0FCiFW9a+mIG77150DACglzGzAgAAACgVZQUAAABQKsoKAAAAoFSUFQAAAECpKCsAAACAUlFWAAAAAKWirAAAAABKRVkBAAAA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3vOe3HXXXVvc9vLLL+e2227L+973vi4JBgBbs2DBgrS1tSVJ2traMn/+/IITAQDQlTpVVpx11ln593//93zpS1/Kww8/nCR55pln0tramtNPPz0rVqzImWee2S1BAeBPRowYkYaGV05o1dDQsM1DFAEA6Hk6derSI444IhdeeGGmT5+emTNnJkn+7u/+LknSt2/fXHzxxfmrv/qrrk8JAH+mqakpra2tSZK6urqMHz++4EQAAHSlTpUVSTJhwoQcffTRmTVrVh599NHUarXst99+OeGEEzJkyJDuyAgAm6hUKhk1alTmzJmTxsbGVCqVoiMBANCFXndZsW7dukybNi2NjY054YQTcvrpp3dnLgDYpqampjz55JNmVQAA9EKve82KXXbZJXfccUeef/757swDAK9LpVLJ1KlTzaoAAOiFOrXA5v77758nn3yyu7IAAAAAdK6s+MQnPpEbb7wxjz32WHflAQAAAHZwnVpg89FHH83QoUMzduzYHHXUUdl3330zYMCATcbU1dXl3HPP7dKQAPBq1Wo1V111VSZPnuxQEACAXqZTZcVVV13V8fNdd921xTHKCgC2h+bm5ixZsiQtLS0544wzio4DAEAX6lRZ8Ytf/KK7cgDA61atVtPa2pparZa5c+dm/PjxZlcAAPQinSor3va2t3VXDgB43Zqbm1Or1ZIktVrN7AoAgF6mUwts/rlnn302ixYtyqJFi/Lss892ZSYA2KYFCxakra0tSdLW1pb58+cXnAgAgK7UqZkVSfLQQw9l2rRpue+++za5/NBDD82UKVPyF3/xF10WDgC2ZMSIEZk7d27a2trS0NCQI444ouhIAAB0oU6VFUuWLMnEiROzfv36fOhDH8o73/nOJMnvfve7zJkzJx/96Edz00035V3vele3hAWAJGlqakpra2uSVxZ2Hj9+fMGJAADoSp0qK6644or07ds3N95442YzKJYsWZLTTjstV1xxRa688souDQkAf65SqWTUqFGZM2dOGhsbLa4JANDLdGrNin/7t3/LpEmTtnioxwEHHJCJEyfm17/+dZeFA4CtaWpqygEHHGBWBQBAL9SpmRUvvvhi9thjj61u33PPPfPiiy++6VAA8FoqlUqmTp1adAwAALpBp2ZW7LPPPpkzZ85Wt8+ZMyf77LPPmw4FAAAA7Lg6VVaMGzcu8+bNyxe+8IU8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AAAAAKWirAAAAABKRVkBAAAAlIqyAgAAACgVZQUAAABQKsoKAAAAoFSUFQAAAECpKCsAAACAUmkoOgAAQBmtat+YW9a+WHSMHd4LG2tJkp371BWcZMe2qn1jBhYdAtihKCsAAF5l3333LToCf7Rm6dIkyRB/k0INjP0C2L6UFQAAr3LaaacVHYE/mj59epJkypQpBScBYHuyZgUAAABQKsoKAAAAoFSUFQAAAECpKCsAAACAUlFWAAAAAKWirAAAAABKRVkBAAAAlIqyAgAAACgVZQUAAABQKsoKAAAAoFQaig4AAADAGzdv3rzcc889Rcd4U5YuXZokmT59esFJ3pwjjzwyI0eOLDpGr6CsAAAAoFCVSqXoCJSMsgIAAKAHGzlypG/z6XWsWQEAAACUirICAAAAKBVlBQAAAFAqygoAAACgVJQVAAAAQKkoKwAAAIBSUVYAAAAApaKsAAAAAEpFWQEAAACUirICAAAAKBVlBQAAAFAqygoAAAAKVa1WM23atFSr1aKjUBLKCgAAAAp100035eGHH86//Mu/FB2FklBWAAAAUJhqtZr58+cnSe69916zK0iirAAAAKBAN910U2q1WpKkVquZXUGSgsuKxx57LBMmTMjo0aMzYcKEPP7445uN+c53vpMTTzwxY8eOzUknnZTW1tbtHxQAAIBu8atf/WqT3xcsWFBQEsqkocg7v+CCCzJp0qSMGzcut912W84///zccMMNm4x5z3vekzPPPDM77bRTHnrooZx22mmZN29eBgwYUFBqAAAAoDsVNrNi9erVWbx4ccaMGZMkGTNmTBYvXpw1a9ZsMm7UqFHZaaedkiQHHnhgarWaY5gAAAB6iREjRmzzd3ZMhc2sWL58eYYMGZL6+vokSX19ffbcc88sX748gwYN2uJ1Wlpa8va3vz1vfetbO3VfDzzwwJvOS8+xdu3aJMl9991XcBIA4M3yug6937Bhw3LvvfemVqulrq4uw4YNs89T7GEgnfHrX/86/+t//a/88z//c6evO3z48PTv378bUlFGs2bNSpIccsghBScBAN4sr+uwY3jwwQczb968fOADH0hjY2PRcdgOXn755W1OLCisrBg6dGhWrFiR9vb21NfXp729PStXrszQoUM3G/vb3/42X/rSl3L11Vfnv//3/15AWgAAALrLhAkTsmrVqkyYMKHoKJRE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13fPAwAAAAA67U+f0//0uf3V6mpb29ILrF27NkuWLCk6BgAAALAFBxxwQAYOHLjZ5b26rNi4cWPWrVuXvn37pq6urug4AAAAQF6ZUbFhw4bssssu6dNn8xUqenVZAQAAAPQ8hS2wCQAAALAlygoAAACgVJQVAAAAQKkoKwAAAIBSUVYAAAAApaKsAAAAAEpFWQEAAACUirICAAAAKBVlBdvdpz/96XzkIx/J+PHjM2nSpDz44IMd244++ugcf/zx+chHPpJjjz02n/rUp/J//+//3eptHXjggVm3bt0mlx1++OFZtmzZFseffvrpGTFixCbXOf300zNnzpzXzP2Tn/wkjz322GuOg57otfa9G2+8Mddff32SV/aF88477zVvc+HChZk3b94byrNw4cKcdNJJW9z23e9+N2PHjs348eMzbty43HHHHR3bvvKVr6SxsTHjx4/Pcccdl4kTJ6alpWWr97Ol/f+8887LT37yky2Ov/LKK3PggQfmP/7jPza57NJLL31dj+mNPh9QZs8++2zOPvvsjB49OmPHjs3kyZOzZs2aju0HHnhgxo4dm7Fjx2b06NH5/Oc/n9/97ndbvK1ly5bl8MMP3+SydevW5cADD9zq/R999NEZM2ZMNm7cuMllS5Ysec3s119/fVavXv2a46Cn6Umv6xdddFFH1lNPPTWLFi3q2Hb66afnQx/6UMaNG5djjz02H//4x/PLX/5yq/ezpX3/pJNOysKFC7c4/itf+UoOOuigPPXUU5tcNmPGjNd8THfffXfuv//+1xzHG6esYLu79NJL89Of/jQtLS0588wz87WvfW2T7VdccUV++tOf5q677kpTU1POOeecTT4YvFk77bRTfvCDH3T6es3NzXn88ce7LAeUzbb2vYkTJ+aMM87o1O39+te/zr333tvlOU877bTcfvvtaWlpybXXXpupU6fmueee69h+zjnnpKWlJXfeeWfOP//8fPe7331D+/zWvO1tb8vll1/e6et11/MBRaurq8snPvGJ/PznP8/tt9+effbZJ9/61rc2GXPTTTfl9ttvz89+9rMcdthhmThxYn7/+993WYYXXnght912W6evd8MNNygr6LV6yut6Y2Njbr/99vz0pz/NJz/5yXzuc5/bZPvUqVNz22235a677srf/u3fZsqUKbnzzju77P732GOPXHnllZ2+nrKi+ykr2O4GDhzY8fPzzz+furq6rY497rjjcuqpp+b73/9+l93/Oeeckx/96EebfOvz53mmTJmSU045JWPHjs20adPS3t6eW2+9NQ888ECmTZuWcePGZf78+V2WB8ro1fve1mYPrFq1KqeffnpOOumknHjiibnsssuSJA8//HBuuummtLS0ZNy4cbn22muTJPfcc09OPfXUnHTSSZkwYUL+/d//veO2vv3tb+fYY4/NySefvM1vTf78/5AXXnghdXV1m3yj+ueGDRuWKVOm5LrrrkutVuv087Alxx13XKrValpbW7e4/dprr80pp5ySpqam/O3f/m1WrVq11ecDeoNKpbLJbIj3vve9m3xL+ef69OmTiRMnZuTIkfnRj37UZRkmT56cq666KuvXr99s28qVK3Peeed1vLZfc801SV6ZpfWnbePGjdvqbA/oDcr8un7UUUelb9++SV75/+Ppp5/e6uv64YcfnsmTJ+ef/umf3tDzsCWnnnpq7r333i3+H7B+/fpceumlOeWUU/KRj3wkX/rSl7Ju3bq0trZm9uzZufbaazNu3LhtzuLkjWsoOgA7pilTpuTee+9NrVbL9773vW2OPfjggzN79uwuu+8hQ4Zk3Lhxueaaazab1XHJJZfksMMOy/Tp07Nx48Z88YtfzK233pq/+Zu/6ZgJctRRR3VZFiiz17Pv7bbbbrnmmmuyyy67ZMOGDTnrrLMyd+7cNDY25tRTT80LL7yQL3/5y0mSJ554IldffXW+//3vZ9ddd80jjzySs88+O7/85S8ze/bszJ49Oy0tLRkwYEDOPffcbd7vjTfemB/+8Id5+umn8/Wvfz1vectbtvk4Vq9enTVr1mTw4MGdfyJepa6uLp///Ofz7W9/OyNHjtxk22233Zbf//73+fGPf5w+ffrkRz/6Ub7xjW/k8ssv3+z5gN5o48aNufHGG3P00Udvc9zBBx/cpd/QDh8+PO9+97tz44035mMf+9gm27785S/n05/+dA477LCsX78+Z5xxRg466KB86lOfys0335wrrrgiBxxwQJdlgbIq8+v6n/yf//N/8sEPfjB9+mz9O/WDDz443/jGN17/A38NO++8cz75yU/m29/+dr7zne9ssu173/teBg4cmFtuuSVJ8s1vfjPXXnttPve5z+Xoo4/O8OHDc9ppp3VZFjalrKAQ06dPT5K0tLTk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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "tags": [] - } - } - ] + "execution_count": 0, + "outputs": [] } ] } \ No newline at end of file diff --git a/src/utils.py b/src/utils.py index e359ccc..74d8265 100644 --- a/src/utils.py +++ b/src/utils.py @@ -6,6 +6,8 @@ import nibabel as nib from tqdm import tqdm +from preprocessing import preprocess_label, crop, pad + def get_fpaths(data_dir, mode="3D"): '''Parse all the filenames and create a dictionary for each patient with structure: @@ -189,7 +191,7 @@ def stack_2D_2_3D(samples_sep, arr, dim, n_channels): return np.array(stacked_pred) -def load_sample(path, dim, scan_types, classes, merge_classes, mode="3D"): +def load_sample(path, dim, scan_types, classes, merge_classes, n_channels, n_classes, mode="3D"): dim_before_axes_swap = (dim[-1], dim[1], dim[0]) if mode=="3D": masks = preprocess_label(np.asanyarray(nib.load(path['seg']).dataobj), output_classes=classes, merge_classes=merge_classes) @@ -223,7 +225,7 @@ def evaluate(data_paths, prediction, metric, dim, scan_types, classes, merge_cla else: cls_name = cls cls = [cls] - mask, _ = load_sample(path=path, dim=dim, scan_types=scan_types, classes=cls, merge_classes=merge_classes, mode=mode) + mask, _ = load_sample(path=path, dim=dim, scan_types=scan_types, classes=cls, merge_classes=merge_classes, n_channels=len(scan_types), n_classes=1, mode=mode) mask = np.array([mask]) pred = np.array([pred]) score = metric(mask, pred)