{"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 glob\nimport numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt\nimport os\nimport pydicom as dicom\n\nlabel_path = '/kaggle/input/rsna-2023-abdominal-trauma-detection/train.csv'\ndf = pd.read_csv(label_path)","metadata":{"execution":{"iopub.status.busy":"2023-08-25T09:46:27.904997Z","iopub.execute_input":"2023-08-25T09:46:27.905414Z","iopub.status.idle":"2023-08-25T09:46:27.918532Z","shell.execute_reply.started":"2023-08-25T09:46:27.905378Z","shell.execute_reply":"2023-08-25T09:46:27.917548Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df.drop(['patient_id'], axis=1).describe().round(2)","metadata":{"execution":{"iopub.status.busy":"2023-08-25T09:46:29.339525Z","iopub.execute_input":"2023-08-25T09:46:29.339909Z","iopub.status.idle":"2023-08-25T09:46:29.418142Z","shell.execute_reply.started":"2023-08-25T09:46:29.339878Z","shell.execute_reply":"2023-08-25T09:46:29.417131Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import seaborn as sns\n\nf, ax = plt.subplots(figsize=(10, 8))\ncorr = df.drop(['patient_id'], axis=1).corr()\nsns.heatmap(corr,\n    cmap=sns.diverging_palette(220, 10, as_cmap=True),\n    vmin=-1.0, vmax=1.0,\n    square=True, ax=ax)","metadata":{"execution":{"iopub.status.busy":"2023-08-25T09:46:30.231159Z","iopub.execute_input":"2023-08-25T09:46:30.231536Z","iopub.status.idle":"2023-08-25T09:46:31.560684Z","shell.execute_reply.started":"2023-08-25T09:46:30.231507Z","shell.execute_reply":"2023-08-25T09:46:31.559762Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# [train/test]_images/[patient_id]/[series_id]/[image_instance_number].dcm\ntrain_path = '/kaggle/input/rsna-2023-abdominal-trauma-detection/train_images/10004/21057/1000.dcm'\n#test_path = '/kaggle/input/rsna-2023-abdominal-trauma-detection/test_images/10004/21057/1000.dcm'\n\nds = dicom.dcmread(train_path)\nplt.imshow(ds.pixel_array)","metadata":{"execution":{"iopub.status.busy":"2023-08-25T09:46:32.935466Z","iopub.execute_input":"2023-08-25T09:46:32.935864Z","iopub.status.idle":"2023-08-25T09:46:33.340776Z","shell.execute_reply.started":"2023-08-25T09:46:32.935833Z","shell.execute_reply":"2023-08-25T09:46:33.339894Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"patient_id = df['patient_id'].to_numpy().astype(str)\ntrain_x = []\ntrain_y = []\nfor idx, pat_id in enumerate(patient_id[:3]):\n    dir_path = '/kaggle/input/rsna-2023-abdominal-trauma-detection/train_images/'+pat_id+'/'\n    lab = df.iloc[idx].to_numpy()[1:]\n    for file_path in glob.glob(dir_path+'*'):\n        for img_path in glob.glob(file_path+'/*'):\n            ds = dicom.dcmread(train_path).pixel_array\n            train_x.append(ds)\n            train_y.append(lab)","metadata":{"execution":{"iopub.status.busy":"2023-08-25T09:46:33.541658Z","iopub.execute_input":"2023-08-25T09:46:33.542408Z","iopub.status.idle":"2023-08-25T09:47:06.218423Z","shell.execute_reply.started":"2023-08-25T09:46:33.542376Z","shell.execute_reply":"2023-08-25T09:47:06.217339Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_x = []\ntest_pat_id = []\ntest_dir_path = '/kaggle/input/rsna-2023-abdominal-trauma-detection/test_images/'\nfor test_file_path in glob.glob(test_dir_path+'*'):\n    for test_path in glob.glob(test_file_path+'*'):\n        for test_file in glob.glob(test_path+'/*'):\n            for img_path in glob.glob(test_file+'/*'):\n                ds = dicom.dcmread(img_path).pixel_array\n                test_x.append(ds)\n                img_id = img_path.split('/')[5]\n                test_pat_id.append(img_id)","metadata":{"execution":{"iopub.status.busy":"2023-08-25T09:47:06.220553Z","iopub.execute_input":"2023-08-25T09:47:06.220906Z","iopub.status.idle":"2023-08-25T09:47:06.33393Z","shell.execute_reply.started":"2023-08-25T09:47:06.220871Z","shell.execute_reply":"2023-08-25T09:47:06.332895Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_x = np.array(train_x)\ntrain_y = np.array(train_y)\n\ntest_x = np.array(test_x)\ntest_pat_id = np.array(test_pat_id)\n\nprint(train_x.shape)\nprint(train_y.shape)\nprint(test_x.shape)\nprint(test_pat_id.shape)","metadata":{"execution":{"iopub.status.busy":"2023-08-25T09:47:06.336425Z","iopub.execute_input":"2023-08-25T09:47:06.337079Z","iopub.status.idle":"2023-08-25T09:47:06.770176Z","shell.execute_reply.started":"2023-08-25T09:47:06.337039Z","shell.execute_reply":"2023-08-25T09:47:06.769278Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.imshow(train_x[1]/np.max(train_x[1]))\nplt.title(train_y[1])","metadata":{"execution":{"iopub.status.busy":"2023-08-25T09:47:06.772616Z","iopub.execute_input":"2023-08-25T09:47:06.773197Z","iopub.status.idle":"2023-08-25T09:47:07.17899Z","shell.execute_reply.started":"2023-08-25T09:47:06.773162Z","shell.execute_reply":"2023-08-25T09:47:07.178037Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import tensorflow as tf\nfrom tensorflow.keras import layers, models","metadata":{"execution":{"iopub.status.busy":"2023-08-25T09:47:07.180417Z","iopub.execute_input":"2023-08-25T09:47:07.180993Z","iopub.status.idle":"2023-08-25T09:47:16.034749Z","shell.execute_reply.started":"2023-08-25T09:47:07.180957Z","shell.execute_reply":"2023-08-25T09:47:16.033686Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model = models.Sequential()\nmodel.add(layers.Conv2D(2, (3,3), activation='relu', input_shape=(train_x.shape[1],train_x.shape[2],1)))\nmodel.add(layers.Conv2D(2, (3,3), activation='tanh'))\nmodel.add(layers.BatchNormalization())\nmodel.add(layers.MaxPool2D(2))\nmodel.add(layers.Conv2D(4, (3,3), activation='relu'))\nmodel.add(layers.Conv2D(4, (3,3), activation='tanh'))\nmodel.add(layers.BatchNormalization())\nmodel.add(layers.MaxPool2D(2))\nmodel.add(layers.Conv2D(16, (3,3), activation='relu'))\nmodel.add(layers.Conv2D(16, (3,3), activation='tanh'))\nmodel.add(layers.BatchNormalization())\nmodel.add(layers.MaxPool2D(2))\nmodel.add(layers.Conv2D(64, (3,3), activation='relu'))\nmodel.add(layers.Conv2D(64, (3,3), activation='tanh'))\nmodel.add(layers.BatchNormalization())\nmodel.add(layers.MaxPool2D(2))\n\nmodel.add(layers.Flatten())\nmodel.add(layers.Dense(train_y.shape[1], activation='sigmoid'))\nopt = tf.keras.optimizers.Adam(\n    learning_rate=0.0008,\n    beta_1=0.9,\n    beta_2=0.999,\n    epsilon=1e-07,\n    amsgrad=False,\n    weight_decay=None,\n)\nmodel.compile(optimizer=opt,\n             loss = 'mse',\n             metrics = 'mae')\nmodel.summary()","metadata":{"execution":{"iopub.status.busy":"2023-08-25T09:47:16.03648Z","iopub.execute_input":"2023-08-25T09:47:16.03733Z","iopub.status.idle":"2023-08-25T09:47:20.629864Z","shell.execute_reply.started":"2023-08-25T09:47:16.03729Z","shell.execute_reply":"2023-08-25T09:47:20.629077Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"np.set_printoptions(suppress=True)","metadata":{"execution":{"iopub.status.busy":"2023-08-25T09:51:26.493534Z","iopub.execute_input":"2023-08-25T09:51:26.494005Z","iopub.status.idle":"2023-08-25T09:51:26.503539Z","shell.execute_reply.started":"2023-08-25T09:51:26.493965Z","shell.execute_reply":"2023-08-25T09:51:26.50248Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"history = model.fit(train_x, train_y, \n                    epochs=10,\n                    batch_size=32,\n                    validation_split=0.3, \n                    verbose=1,\n                    shuffle=True)","metadata":{"execution":{"iopub.status.busy":"2023-08-25T09:51:38.572871Z","iopub.execute_input":"2023-08-25T09:51:38.573236Z","iopub.status.idle":"2023-08-25T09:52:28.260429Z","shell.execute_reply.started":"2023-08-25T09:51:38.573189Z","shell.execute_reply":"2023-08-25T09:52:28.259391Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"predictions = model.predict(test_x, verbose=1)","metadata":{"execution":{"iopub.status.busy":"2023-08-25T09:52:36.910699Z","iopub.execute_input":"2023-08-25T09:52:36.911069Z","iopub.status.idle":"2023-08-25T09:52:37.053613Z","shell.execute_reply.started":"2023-08-25T09:52:36.911039Z","shell.execute_reply":"2023-08-25T09:52:37.052559Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"d={'patient_id': test_pat_id}\ndf1 = pd.DataFrame(data=d)","metadata":{"execution":{"iopub.status.busy":"2023-08-25T09:52:37.527149Z","iopub.execute_input":"2023-08-25T09:52:37.527544Z","iopub.status.idle":"2023-08-25T09:52:37.53296Z","shell.execute_reply.started":"2023-08-25T09:52:37.527515Z","shell.execute_reply":"2023-08-25T09:52:37.531962Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"j=0\nfor i in df.columns:\n    if(i!='patient_id'):\n        df1[i]=predictions.T[j][:]\n        j+=1","metadata":{"execution":{"iopub.status.busy":"2023-08-25T09:52:42.587391Z","iopub.execute_input":"2023-08-25T09:52:42.587808Z","iopub.status.idle":"2023-08-25T09:52:42.599585Z","shell.execute_reply.started":"2023-08-25T09:52:42.587778Z","shell.execute_reply":"2023-08-25T09:52:42.598523Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df1","metadata":{"execution":{"iopub.status.busy":"2023-08-25T09:52:43.982181Z","iopub.execute_input":"2023-08-25T09:52:43.98268Z","iopub.status.idle":"2023-08-25T09:52:44.008244Z","shell.execute_reply.started":"2023-08-25T09:52:43.982646Z","shell.execute_reply":"2023-08-25T09:52:44.00713Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df1.to_csv('submission.csv', index=False)","metadata":{"execution":{"iopub.status.busy":"2023-08-25T09:52:56.92587Z","iopub.execute_input":"2023-08-25T09:52:56.926243Z","iopub.status.idle":"2023-08-25T09:52:56.934155Z","shell.execute_reply.started":"2023-08-25T09:52:56.926192Z","shell.execute_reply":"2023-08-25T09:52:56.932883Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}