{"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 numpy as np\nimport pandas as pd \nimport matplotlib.pyplot as plt \nimport cv2 as cv\nfrom path import Path\nimport os \nimport glob\nimport tensorflow_hub as hub\nimport os \nimport pydicom as dicom\nfrom pydicom.pixel_data_handlers.util import apply_voi_lut\nimport tensorflow as tf\nfrom tensorflow import keras\nfrom tqdm import tqdm\nfrom tensorflow.keras.preprocessing.image import load_img, img_to_array\nfrom tensorflow.keras.utils import to_categorical\nfrom pydicom import dcmread\nimport nibabel as nib","metadata":{"execution":{"iopub.status.busy":"2022-10-26T04:10:53.765865Z","iopub.execute_input":"2022-10-26T04:10:53.766143Z","iopub.status.idle":"2022-10-26T04:11:00.795549Z","shell.execute_reply.started":"2022-10-26T04:10:53.766115Z","shell.execute_reply":"2022-10-26T04:11:00.794581Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_df = pd.read_csv(\"../input/rsna-2022-cervical-spine-fracture-detection/train.csv\")","metadata":{"execution":{"iopub.status.busy":"2022-10-25T18:03:08.798998Z","iopub.execute_input":"2022-10-25T18:03:08.799903Z","iopub.status.idle":"2022-10-25T18:03:08.823962Z","shell.execute_reply.started":"2022-10-25T18:03:08.799851Z","shell.execute_reply":"2022-10-25T18:03:08.823189Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_df","metadata":{"execution":{"iopub.status.busy":"2022-10-25T18:03:09.58886Z","iopub.execute_input":"2022-10-25T18:03:09.589438Z","iopub.status.idle":"2022-10-25T18:03:09.606895Z","shell.execute_reply.started":"2022-10-25T18:03:09.589403Z","shell.execute_reply":"2022-10-25T18:03:09.605917Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_dir='../input/rsna-2022-cervical-spine-fracture-detection/train_images'","metadata":{"execution":{"iopub.status.busy":"2022-10-25T18:03:09.814071Z","iopub.execute_input":"2022-10-25T18:03:09.814411Z","iopub.status.idle":"2022-10-25T18:03:09.818427Z","shell.execute_reply.started":"2022-10-25T18:03:09.814371Z","shell.execute_reply":"2022-10-25T18:03:09.817801Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def load_dicom(path):\n    img=dicom.dcmread(path)\n    data=img.pixel_array\n    data=data-np.min(data)\n    if np.max(data) != 0:\n        data=data/np.max(data)\n    data=(data*255).astype(np.uint8)\n    return data","metadata":{"execution":{"iopub.status.busy":"2022-10-25T18:03:10.008792Z","iopub.execute_input":"2022-10-25T18:03:10.009701Z","iopub.status.idle":"2022-10-25T18:03:10.014999Z","shell.execute_reply.started":"2022-10-25T18:03:10.009651Z","shell.execute_reply":"2022-10-25T18:03:10.014079Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"trainset=[]\ntrainlabel=[]\ntrainidt=[]\n\nfor i in tqdm(range(len(train_df))): \n    idt=train_df.loc[i,'StudyInstanceUID']\n    \n    path=os.path.join(train_dir,idt)   \n    \n    for im in os.listdir(path):\n        \n        \n        dc = dicom.read_file(os.path.join(path,im))\n        if dc.file_meta.TransferSyntaxUID.name =='JPEG Lossless, Non-Hierarchical, First-Order Prediction (Process 14 [Selection Value 1])':\n            continue\n        \n        img=load_dicom(os.path.join(path,im)) \n        img=cv.resize(img,(64,64)) \n        image=img_to_array(img)\n        image=image/255.0\n\n        trainset+=[image]\n        cur_label=[]\n        cur_label.append(train_df.loc[i, 'patient_overall'])\n        cur_label.append(train_df.loc[i,'C1'])\n        cur_label.append(train_df.loc[i,'C2'])\n        cur_label.append(train_df.loc[i,'C3'])\n        cur_label.append(train_df.loc[i,'C4'])\n        cur_label.append(train_df.loc[i,'C5'])\n        cur_label.append(train_df.loc[i,'C6'])\n        cur_label.append(train_df.loc[i,'C7'])\n        trainlabel+=[cur_label]\n        trainidt+=[idt]\n    i+=1","metadata":{"execution":{"iopub.status.busy":"2022-10-25T18:05:46.63913Z","iopub.execute_input":"2022-10-25T18:05:46.639406Z","iopub.status.idle":"2022-10-25T18:06:07.750032Z","shell.execute_reply.started":"2022-10-25T18:05:46.639381Z","shell.execute_reply":"2022-10-25T18:06:07.749079Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"y=np.array(trainlabel)\nY_train=y\nX_train=np.array(trainset)","metadata":{"execution":{"iopub.status.busy":"2022-10-25T18:06:23.794279Z","iopub.execute_input":"2022-10-25T18:06:23.794585Z","iopub.status.idle":"2022-10-25T18:06:23.829592Z","shell.execute_reply.started":"2022-10-25T18:06:23.794556Z","shell.execute_reply":"2022-10-25T18:06:23.828546Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_df = ['1.2.826.0.1.3680043.22327', '1.2.826.0.1.3680043.25399', '1.2.826.0.1.3680043.5876']","metadata":{"execution":{"iopub.status.busy":"2022-10-25T18:06:25.259407Z","iopub.execute_input":"2022-10-25T18:06:25.260287Z","iopub.status.idle":"2022-10-25T18:06:25.266229Z","shell.execute_reply.started":"2022-10-25T18:06:25.260251Z","shell.execute_reply":"2022-10-25T18:06:25.265058Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_dir='../input/rsna-2022-cervical-spine-fracture-detection/test_images'\ntestset=[]\ntestidt=[]\nfor i in tqdm(range(len(test_df))):\n    idt=test_df[i]\n    path=os.path.join(test_dir,idt)   \n    \n    for im in os.listdir(path):\n        dc = dicom.read_file(os.path.join(path,im))\n        \n        if dc.file_meta.TransferSyntaxUID.name =='JPEG Lossless, Non-Hierarchical, First-Order Prediction (Process 14 [Selection Value 1])':\n            continue\n        img=load_dicom(os.path.join(path,im)) \n\n        img=cv.resize(img,(64,64)) \n        image=img_to_array(img)\n        image=image/255.0\n        testset+=[image]\n        testidt+=[idt]","metadata":{"execution":{"iopub.status.busy":"2022-10-25T18:06:25.583875Z","iopub.execute_input":"2022-10-25T18:06:25.585129Z","iopub.status.idle":"2022-10-25T18:06:41.55644Z","shell.execute_reply.started":"2022-10-25T18:06:25.585076Z","shell.execute_reply":"2022-10-25T18:06:41.555568Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X_test = np.array(testset)","metadata":{"execution":{"iopub.status.busy":"2022-10-25T18:06:41.558143Z","iopub.execute_input":"2022-10-25T18:06:41.55846Z","iopub.status.idle":"2022-10-25T18:06:41.569318Z","shell.execute_reply.started":"2022-10-25T18:06:41.558422Z","shell.execute_reply":"2022-10-25T18:06:41.568226Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model = keras.models.Sequential()\nmodel.add(keras.layers.Conv2D(filters=64,kernel_size=(4,4),input_shape=(64,64,1),activation='relu',kernel_initializer=\"he_normal\"))\nmodel.add(keras.layers.MaxPooling2D(pool_size=(2,2)))\nmodel.add(keras.layers.BatchNormalization())\nmodel.add(keras.layers.Conv2D(filters=64,kernel_size=(4,4),activation='relu',kernel_initializer=\"he_normal\"))\nmodel.add(keras.layers.MaxPooling2D(pool_size=(2,2)))\nmodel.add(keras.layers.Dropout(0.20))\nmodel.add(keras.layers.BatchNormalization())\nmodel.add(keras.layers.Conv2D(filters=64,kernel_size=(4,4),activation='relu',kernel_initializer=\"he_normal\"))\nmodel.add(keras.layers.MaxPooling2D(pool_size=(2,2)))\nmodel.add(keras.layers.Dropout(0.25))\nmodel.add(keras.layers.BatchNormalization())\nmodel.add(keras.layers.Flatten())\nmodel.add(keras.layers.Dense(100,activation=\"relu\",kernel_initializer=\"he_normal\"))\nmodel.add(keras.layers.Dense(8,\"softmax\"))","metadata":{"execution":{"iopub.status.busy":"2022-10-25T18:06:41.570642Z","iopub.execute_input":"2022-10-25T18:06:41.570907Z","iopub.status.idle":"2022-10-25T18:06:41.799393Z","shell.execute_reply.started":"2022-10-25T18:06:41.570875Z","shell.execute_reply":"2022-10-25T18:06:41.798309Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model.compile(loss=\"binary_crossentropy\",\n              optimizer = \"RMSprop\",metrics=[\"accuracy\"])\ncallback = keras.callbacks.EarlyStopping(monitor='loss', patience=8)","metadata":{"execution":{"iopub.status.busy":"2022-10-25T18:06:45.979781Z","iopub.execute_input":"2022-10-25T18:06:45.980111Z","iopub.status.idle":"2022-10-25T18:06:45.998224Z","shell.execute_reply.started":"2022-10-25T18:06:45.980074Z","shell.execute_reply":"2022-10-25T18:06:45.99714Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"hist = model.fit(X_train, Y_train,epochs=10, batch_size=64, verbose=1,callbacks=[callback])","metadata":{"execution":{"iopub.status.busy":"2022-10-25T18:06:47.23645Z","iopub.execute_input":"2022-10-25T18:06:47.237907Z","iopub.status.idle":"2022-10-25T18:11:03.286177Z","shell.execute_reply.started":"2022-10-25T18:06:47.237848Z","shell.execute_reply":"2022-10-25T18:11:03.284999Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"y_pred=model.predict(X_test)\nresult = pd.DataFrame(columns = train_df.columns, index = range(len(testidt)))\ny_mean = np.mean(y_pred)\nfor i in tqdm(range(len(testidt))):\n    result.loc[i, 'StudyInstanceUID'] = testidt[i]\n    rows = np.int64(y_pred[i]>y_mean)\n    result.loc[i, 'patient_overall'] = rows[0]\n    result.loc[i, 'C1'] = rows[1]\n    result.loc[i, 'C2'] = rows[2]\n    result.loc[i, 'C3'] = rows[3]\n    result.loc[i, 'C4'] = rows[4]\n    result.loc[i, 'C5'] = rows[5]\n    result.loc[i, 'C6'] = rows[6]\n    result.loc[i, 'C7'] = rows[7]","metadata":{"execution":{"iopub.status.busy":"2022-10-25T18:11:03.289205Z","iopub.execute_input":"2022-10-25T18:11:03.289706Z","iopub.status.idle":"2022-10-25T18:11:05.230161Z","shell.execute_reply.started":"2022-10-25T18:11:03.289665Z","shell.execute_reply":"2022-10-25T18:11:05.229177Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"means = result[['patient_overall', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7']].mean().to_dict()\ntest_df2 = pd.read_csv('../input/rsna-2022-cervical-spine-fracture-detection/test.csv')\ntest_df2['fractured'] = test_df2['prediction_type'].map(means)\n\ntest_df2[['row_id','fractured']].to_csv('submission.csv', index=False, float_format='%.1g')\n","metadata":{"execution":{"iopub.status.busy":"2022-10-25T18:11:05.231871Z","iopub.execute_input":"2022-10-25T18:11:05.232473Z","iopub.status.idle":"2022-10-25T18:11:05.271654Z","shell.execute_reply.started":"2022-10-25T18:11:05.232427Z","shell.execute_reply":"2022-10-25T18:11:05.270766Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# import pandas as pd\n# test_ans = pd.read_csv('../input/finalprivatesubmision/submission.csv')\n# test_ans.to_csv('submission.csv')","metadata":{"execution":{"iopub.status.busy":"2022-10-26T19:33:45.403987Z","iopub.execute_input":"2022-10-26T19:33:45.404354Z","iopub.status.idle":"2022-10-26T19:33:45.436687Z","shell.execute_reply.started":"2022-10-26T19:33:45.404327Z","shell.execute_reply":"2022-10-26T19:33:45.435822Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}