{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.13","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"none","dataSources":[{"sourceId":71549,"databundleVersionId":8561470,"sourceType":"competition"}],"dockerImageVersionId":30698,"isInternetEnabled":false,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"# packages\n\n# standard\nimport numpy as np\nimport pandas as pd\nimport os\nimport time\n\n# plots\nimport matplotlib.pyplot as plt\nimport plotly.express as px\nimport seaborn as sns\n\n# dicom\nimport pydicom as dicom\nfrom sklearn.model_selection import train_test_split","metadata":{"execution":{"iopub.status.busy":"2024-05-27T20:14:09.579037Z","iopub.execute_input":"2024-05-27T20:14:09.579726Z","iopub.status.idle":"2024-05-27T20:14:11.620588Z","shell.execute_reply.started":"2024-05-27T20:14:09.579675Z","shell.execute_reply":"2024-05-27T20:14:11.619596Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# read data\ndf_train_main = pd.read_csv('../input/rsna-2024-lumbar-spine-degenerative-classification/train.csv')\ndf_train_label = pd.read_csv('../input/rsna-2024-lumbar-spine-degenerative-classification/train_label_coordinates.csv')\ndf_train_desc = pd.read_csv('../input/rsna-2024-lumbar-spine-degenerative-classification/train_series_descriptions.csv')\ndf_test_desc = pd.read_csv('../input/rsna-2024-lumbar-spine-degenerative-classification/test_series_descriptions.csv')\ndf_sub = pd.read_csv('../input/rsna-2024-lumbar-spine-degenerative-classification/sample_submission.csv')","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2024-05-27T20:14:11.622534Z","iopub.execute_input":"2024-05-27T20:14:11.623456Z","iopub.status.idle":"2024-05-27T20:14:11.796309Z","shell.execute_reply.started":"2024-05-27T20:14:11.623416Z","shell.execute_reply":"2024-05-27T20:14:11.795276Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_train_main.head(2)","metadata":{"execution":{"iopub.status.busy":"2024-05-26T03:20:11.755838Z","iopub.execute_input":"2024-05-26T03:20:11.756717Z","iopub.status.idle":"2024-05-26T03:20:11.781442Z","shell.execute_reply.started":"2024-05-26T03:20:11.756678Z","shell.execute_reply":"2024-05-26T03:20:11.780238Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_train_main.head(2)","metadata":{"execution":{"iopub.status.busy":"2024-05-26T03:20:11.782873Z","iopub.execute_input":"2024-05-26T03:20:11.783304Z","iopub.status.idle":"2024-05-26T03:20:11.811878Z","shell.execute_reply.started":"2024-05-26T03:20:11.783258Z","shell.execute_reply":"2024-05-26T03:20:11.810459Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Usando melt para transformar colunas em linhas\ndf_unpivoted = df_train_main.melt(id_vars='study_id', var_name='condition', value_name='status')\nfrequency_table = df_unpivoted.groupby('condition')['status'].value_counts(normalize=True).unstack(fill_value=0)\n\n# Resetando o índice para que 'condition' seja uma coluna novamente\nfrequency_table = frequency_table.reset_index()\n\nfrequency_table.rename(columns={'Moderate': 'moderate', 'Normal/Mild': 'normal_mild', 'Severe': 'severe'}, inplace=True)\n\ndf_sub['condition'] = df_sub['row_id'].str.extract(r'_(.*)')\ndf_sub = pd.merge(df_sub[['row_id', 'condition']],frequency_table, on='condition', how='inner')[['row_id', 'normal_mild', 'moderate', 'severe']]\n","metadata":{"execution":{"iopub.status.busy":"2024-05-26T04:30:46.849430Z","iopub.execute_input":"2024-05-26T04:30:46.850673Z","iopub.status.idle":"2024-05-26T04:30:46.949832Z","shell.execute_reply.started":"2024-05-26T04:30:46.850623Z","shell.execute_reply":"2024-05-26T04:30:46.948509Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_train_main.columns","metadata":{"execution":{"iopub.status.busy":"2024-05-27T20:14:21.448430Z","iopub.execute_input":"2024-05-27T20:14:21.449426Z","iopub.status.idle":"2024-05-27T20:14:21.459032Z","shell.execute_reply.started":"2024-05-27T20:14:21.449387Z","shell.execute_reply":"2024-05-27T20:14:21.457740Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import pandas as pd\nimport os\n\n# Load the sample submission or create an empty DataFrame if you have the structure\n# Assuming df_submission is your DataFrame name with 'row_id' and prediction columns\n\n# Define the path to your test images directory\ntest_images_dir = \"/kaggle/input/rsna-2024-lumbar-spine-degenerative-classification/test_images\"\n\n# Get all unique IDs from the filenames in the test images directory\ntest_ids = [filename.split('.')[0] for filename in os.listdir(test_images_dir)]\nunique_ids = list(set(test_ids))\n\n# Generate the row_ids needed for submission by repeating each unique_id for each condition from df_train_main\nconditions = ['left_neural_foraminal_narrowing_l1_l2',\n              'left_neural_foraminal_narrowing_l2_l3',\n              'left_neural_foraminal_narrowing_l3_l4',\n              'left_neural_foraminal_narrowing_l4_l5',\n              'left_neural_foraminal_narrowing_l5_s1',\n              'left_subarticular_stenosis_l1_l2',\n              'left_subarticular_stenosis_l2_l3',\n              'left_subarticular_stenosis_l3_l4',\n              'left_subarticular_stenosis_l4_l5',\n              'left_subarticular_stenosis_l5_s1',\n              'right_neural_foraminal_narrowing_l1_l2',\n              'right_neural_foraminal_narrowing_l2_l3',\n              'right_neural_foraminal_narrowing_l3_l4',\n              'right_neural_foraminal_narrowing_l4_l5',\n              'right_neural_foraminal_narrowing_l5_s1',\n              'right_subarticular_stenosis_l1_l2',\n              'right_subarticular_stenosis_l2_l3',\n              'right_subarticular_stenosis_l3_l4',\n              'right_subarticular_stenosis_l4_l5',\n              'right_subarticular_stenosis_l5_s1',\n              'spinal_canal_stenosis_l1_l2',\n              'spinal_canal_stenosis_l2_l3',\n              'spinal_canal_stenosis_l3_l4',\n              'spinal_canal_stenosis_l4_l5',\n              'spinal_canal_stenosis_l5_s1']\n\nrow_ids = [f\"{id}_{condition}\" for id in unique_ids for condition in conditions]\n\n# Create DataFrame\ndf_submission = pd.DataFrame(row_ids, columns=['row_id'])\ndf_submission['normal_mild'] = 0.333333\ndf_submission['moderate'] = 0.333333\ndf_submission['severe'] = 0.333333\n\ndf_submission","metadata":{"execution":{"iopub.status.busy":"2024-05-27T20:19:41.528051Z","iopub.execute_input":"2024-05-27T20:19:41.528853Z","iopub.status.idle":"2024-05-27T20:19:41.551452Z","shell.execute_reply.started":"2024-05-27T20:19:41.528818Z","shell.execute_reply":"2024-05-27T20:19:41.550266Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Save the DataFrame to a CSV file for submission\ndf_submission.to_csv('submission.csv', index=False)","metadata":{"execution":{"iopub.status.busy":"2024-05-27T20:19:46.212106Z","iopub.execute_input":"2024-05-27T20:19:46.212482Z","iopub.status.idle":"2024-05-27T20:19:46.219549Z","shell.execute_reply.started":"2024-05-27T20:19:46.212451Z","shell.execute_reply":"2024-05-27T20:19:46.218348Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"execution":{"iopub.status.busy":"2024-05-26T04:01:47.050865Z","iopub.status.idle":"2024-05-26T04:01:47.051474Z","shell.execute_reply.started":"2024-05-26T04:01:47.051234Z","shell.execute_reply":"2024-05-26T04:01:47.051256Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"execution":{"iopub.status.busy":"2024-05-26T03:24:00.565711Z","iopub.status.idle":"2024-05-26T03:24:00.579266Z","shell.execute_reply.started":"2024-05-26T03:24:00.578821Z","shell.execute_reply":"2024-05-26T03:24:00.578867Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"execution":{"iopub.status.busy":"2024-05-26T03:24:00.588474Z","iopub.status.idle":"2024-05-26T03:24:00.589195Z","shell.execute_reply.started":"2024-05-26T03:24:00.588819Z","shell.execute_reply":"2024-05-26T03:24:00.588845Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"execution":{"iopub.status.busy":"2024-05-26T03:24:00.604313Z","iopub.status.idle":"2024-05-26T03:24:00.605131Z","shell.execute_reply.started":"2024-05-26T03:24:00.604742Z","shell.execute_reply":"2024-05-26T03:24:00.604770Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}