{"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 pydicom\nfrom fastai.vision.all import *\nnp.random.seed(20210717)","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2021-07-21T09:37:51.354159Z","iopub.execute_input":"2021-07-21T09:37:51.354593Z","iopub.status.idle":"2021-07-21T09:37:54.463132Z","shell.execute_reply.started":"2021-07-21T09:37:51.3545Z","shell.execute_reply":"2021-07-21T09:37:54.46222Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def read_data(p):\n    dicom = pydicom.read_file(p)\n    return dicom.pixel_array.astype(np.float32)\n\ndef load_volumes(id, modes=['T2w', 'T1wCE', 'T1w', 'FLAIR']):\n    p = Path(f'/kaggle/input/rsna-miccai-brain-tumor-radiogenomic-classification/train/{id:05d}')\n    slices = {m:np.sort([int(o.stem.split('-')[1]) for o in (p/m).iterdir()]) for m in modes}\n    volumes = {}\n    for m in modes:\n        ims = []\n        for s in slices[m]:\n            ims.append(read_data(p/m/f'Image-{s}.dcm'))\n        volumes[m] = np.array(ims)\n    return volumes\n\ndef plot_volumes(volumes):\n    fig, axes = plt.subplots(ncols=10, nrows=4, figsize=(15,9))\n    for i, (m, v) in enumerate(volumes.items()):\n        axes[i,5].set_title(m)\n        for j in range(10):\n            axes[i,j].imshow(v[np.linspace(0,len(v)-1,10).astype(np.uint32)[j]])\n            axes[i,j].axis('off')\n    fig.tight_layout(pad=0)\n    plt.show()","metadata":{"execution":{"iopub.status.busy":"2021-07-21T09:37:54.464526Z","iopub.execute_input":"2021-07-21T09:37:54.464841Z","iopub.status.idle":"2021-07-21T09:37:54.477637Z","shell.execute_reply.started":"2021-07-21T09:37:54.464806Z","shell.execute_reply":"2021-07-21T09:37:54.475038Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"path = Path('/kaggle/input/rsna-miccai-brain-tumor-radiogenomic-classification')\npath_train = path/'train'\npath_test = path/'test'\n\ntrain_df = pd.read_csv(path/'train_labels.csv')\nsub_df = pd.read_csv(path/'sample_submission.csv')","metadata":{"execution":{"iopub.status.busy":"2021-07-21T09:37:54.479885Z","iopub.execute_input":"2021-07-21T09:37:54.480355Z","iopub.status.idle":"2021-07-21T09:37:54.503573Z","shell.execute_reply.started":"2021-07-21T09:37:54.480316Z","shell.execute_reply":"2021-07-21T09:37:54.502524Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"for i in progress_bar(np.random.choice(range(len(train_df)), 50)):\n    print(f'Plotting sample {i}')\n    ref = train_df.loc[i, 'BraTS21ID']\n    volumes = load_volumes(ref)\n    plot_volumes(volumes)","metadata":{"execution":{"iopub.status.busy":"2021-07-21T09:37:54.50505Z","iopub.execute_input":"2021-07-21T09:37:54.505449Z","iopub.status.idle":"2021-07-21T09:38:04.643256Z","shell.execute_reply.started":"2021-07-21T09:37:54.505402Z","shell.execute_reply":"2021-07-21T09:38:04.641661Z"},"trusted":true},"execution_count":null,"outputs":[]}]}