{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import tensorflow as tf\nfrom tensorflow.keras import Sequential\nfrom tensorflow.keras.layers import BatchNormalization, Conv2D, MaxPool2D, UpSampling2D, GlobalMaxPool2D, GlobalAveragePooling2D, Conv2DTranspose, concatenate\nfrom tensorflow.keras.layers import Dense, Dropout, Activation, Reshape, Flatten, Input\nfrom tensorflow.keras.models import Model, load_model\nfrom tensorflow.keras.utils import to_categorical, plot_model\n\nfrom tensorflow.keras.applications.resnet50 import ResNet50\nfrom tensorflow.keras.applications import NASNetMobile, Xception, DenseNet121, MobileNetV2, InceptionV3, InceptionResNetV2, vgg16, resnet50, inception_v3, xception, DenseNet201\n\nfrom tensorflow.keras.callbacks import ModelCheckpoint\nfrom tensorflow.keras.callbacks import CSVLogger\nfrom tensorflow.keras.callbacks import EarlyStopping\nfrom tensorflow.keras.optimizers import Adam\nfrom tensorflow.keras import metrics\nfrom tensorflow.keras.preprocessing.image import ImageDataGenerator\n\nimport sklearn\nfrom sklearn.model_selection import train_test_split, KFold\nfrom sklearn.metrics import jaccard_score\nfrom sklearn.cluster import KMeans\n\nfrom scipy import stats\n\nimport seaborn as sns\n\nimport skimage\nfrom skimage.transform import rotate\n\nfrom tqdm.notebook import tqdm\nfrom datetime import datetime\n\nfrom sklearn.metrics import f1_score, recall_score, precision_score, accuracy_score, roc_auc_score, roc_curve\nimport numpy as np\nimport os\nimport cv2\nimport pandas as pd\n# import imutils\nimport random\nfrom PIL import Image\nimport matplotlib.pyplot as plt\n\nimport pickle\nimport torch\n\nimport urllib\n\nimport warnings\nwarnings.filterwarnings(\"ignore\")\n\nfrom PIL import Image\nfrom torchvision import transforms\n\nimport tensorflow_addons as tfa\ntqdm_callback = tfa.callbacks.TQDMProgressBar()\n\nfrom IPython.display import HTML\n\nimport pydicom\nfrom pydicom.pixel_data_handlers.util import apply_color_lut\nimport re","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2021-10-12T16:56:48.694489Z","iopub.execute_input":"2021-10-12T16:56:48.694808Z","iopub.status.idle":"2021-10-12T16:56:48.709199Z","shell.execute_reply.started":"2021-10-12T16:56:48.694776Z","shell.execute_reply":"2021-10-12T16:56:48.708549Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"im_size = (180,180)\nbatch_size = 64\nsplit_size = (0.7,0.15,0.15)\nrandom_state = 42\nimage_threshold = 0.5\ntrain_dir = '../input/rsna-miccai-brain-tumor-radiogenomic-classification/train'\ntest_dir = '../input/rsna-miccai-brain-tumor-radiogenomic-classification/test'","metadata":{"execution":{"iopub.status.busy":"2021-10-12T16:56:48.710415Z","iopub.execute_input":"2021-10-12T16:56:48.711231Z","iopub.status.idle":"2021-10-12T16:56:48.724943Z","shell.execute_reply.started":"2021-10-12T16:56:48.711187Z","shell.execute_reply":"2021-10-12T16:56:48.724286Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"ds = pydicom.dcmread('../input/rsna-miccai-brain-tumor-radiogenomic-classification/train/00000/FLAIR/Image-150.dcm')","metadata":{"execution":{"iopub.status.busy":"2021-10-12T16:56:48.814106Z","iopub.execute_input":"2021-10-12T16:56:48.814991Z","iopub.status.idle":"2021-10-12T16:56:48.826265Z","shell.execute_reply.started":"2021-10-12T16:56:48.814948Z","shell.execute_reply":"2021-10-12T16:56:48.825066Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def six2num(a,b):\n    return int(a, 16), int(b, 16)","metadata":{"execution":{"iopub.status.busy":"2021-10-12T16:56:50.893718Z","iopub.execute_input":"2021-10-12T16:56:50.894645Z","iopub.status.idle":"2021-10-12T16:56:50.898508Z","shell.execute_reply.started":"2021-10-12T16:56:50.894606Z","shell.execute_reply":"2021-10-12T16:56:50.897889Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"pydicom.dcmread('../input/rsna-miccai-brain-tumor-radiogenomic-classification/train/00000/FLAIR/Image-1.dcm')","metadata":{"execution":{"iopub.status.busy":"2021-10-12T16:56:51.045567Z","iopub.execute_input":"2021-10-12T16:56:51.046397Z","iopub.status.idle":"2021-10-12T16:56:51.057346Z","shell.execute_reply.started":"2021-10-12T16:56:51.046358Z","shell.execute_reply":"2021-10-12T16:56:51.056723Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"pydicom.dcmread('../input/rsna-miccai-brain-tumor-radiogenomic-classification/train/00002/FLAIR/Image-387.dcm')","metadata":{"execution":{"iopub.status.busy":"2021-10-12T16:57:23.269894Z","iopub.execute_input":"2021-10-12T16:57:23.27097Z","iopub.status.idle":"2021-10-12T16:57:23.281992Z","shell.execute_reply.started":"2021-10-12T16:57:23.270928Z","shell.execute_reply":"2021-10-12T16:57:23.281377Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def get_image(path, im_size=im_size):\n    ds = pydicom.dcmread(path)\n    \n    im = ds.pixel_array\n    \n    return np.array(im), slice_location","metadata":{"execution":{"iopub.status.busy":"2021-10-12T17:03:10.250859Z","iopub.execute_input":"2021-10-12T17:03:10.251256Z","iopub.status.idle":"2021-10-12T17:03:10.258459Z","shell.execute_reply.started":"2021-10-12T17:03:10.251223Z","shell.execute_reply":"2021-10-12T17:03:10.257404Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import pydicom\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport sys\nimport glob\n\ndef image_dicom(path):\n    files = []\n    for fname in glob.glob(f'{path}/*', recursive=False):\n        files.append(pydicom.dcmread(fname))\n\n    slices = []\n    skipcount = 0\n    for f in files:\n        if hasattr(f, 'SliceLocation'):\n            slices.append(f)\n        else:\n            skipcount = skipcount + 1\n\n    slices = sorted(slices, key=lambda s: s.SliceLocation)\n\n    ps = slices[0].PixelSpacing\n    ss = slices[0].SliceThickness\n    ax_aspect = ps[1]/ps[0]\n    sag_aspect = ps[1]/ss\n    cor_aspect = ss/ps[0]\n\n    img_shape = list(slices[0].pixel_array.shape)\n    img_shape.append(len(slices))\n    img3d = np.zeros(img_shape)\n\n    for i, s in enumerate(slices):\n        img2d = s.pixel_array\n        img3d[:, :, i] = img2d\n\n    print(slices[0].FlipAngle)\n    plt.figure(figsize=(18,10))\n    a1 = plt.subplot(2, 3, 1)\n    im1 = cv2.resize(img3d[:, :, img_shape[2]//2], (img_shape[0], img_shape[1]))\n    plt.imshow(im1)\n\n    a2 = plt.subplot(2, 3, 2)\n    im2 = cv2.resize(img3d[:, img_shape[1]//2, :], (img_shape[0], img_shape[1]))\n    plt.imshow(im2)\n\n    a3 = plt.subplot(2, 3, 3)\n    im3 = cv2.resize(img3d[img_shape[0]//2, :, :].T, (img_shape[0], img_shape[1]))\n    plt.imshow(im3)\n\n    plt.show()","metadata":{"execution":{"iopub.status.busy":"2021-10-12T17:03:49.884539Z","iopub.execute_input":"2021-10-12T17:03:49.885105Z","iopub.status.idle":"2021-10-12T17:03:49.900044Z","shell.execute_reply.started":"2021-10-12T17:03:49.885066Z","shell.execute_reply":"2021-10-12T17:03:49.899194Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"types = ['FLAIR', 'T1w', 'T1wCE', 'T2w']","metadata":{"execution":{"iopub.status.busy":"2021-10-12T17:03:49.994827Z","iopub.execute_input":"2021-10-12T17:03:49.995201Z","iopub.status.idle":"2021-10-12T17:03:50.001416Z","shell.execute_reply.started":"2021-10-12T17:03:49.995158Z","shell.execute_reply":"2021-10-12T17:03:50.000721Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"for i in types:\n    image_dicom(f'../input/rsna-miccai-brain-tumor-radiogenomic-classification/train/00000/{i}')","metadata":{"execution":{"iopub.status.busy":"2021-10-12T17:03:50.218137Z","iopub.execute_input":"2021-10-12T17:03:50.218446Z","iopub.status.idle":"2021-10-12T17:04:01.16167Z","shell.execute_reply.started":"2021-10-12T17:03:50.218417Z","shell.execute_reply":"2021-10-12T17:04:01.160717Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"for i in types:\n    image_dicom(f'../input/rsna-miccai-brain-tumor-radiogenomic-classification/train/00002/{i}')","metadata":{"execution":{"iopub.status.busy":"2021-10-12T17:04:01.163152Z","iopub.execute_input":"2021-10-12T17:04:01.163393Z","iopub.status.idle":"2021-10-12T17:04:08.730564Z","shell.execute_reply.started":"2021-10-12T17:04:01.163366Z","shell.execute_reply":"2021-10-12T17:04:08.729385Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}