{"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":30732,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import pandas as pd\nimport matplotlib.pyplot as plt\nimport cv2\nimport pydicom\nimport numpy as np\nimport os\nimport glob\nfrom tqdm import tqdm\nimport warnings","metadata":{"execution":{"iopub.status.busy":"2024-06-24T14:54:40.041403Z","iopub.execute_input":"2024-06-24T14:54:40.042525Z","iopub.status.idle":"2024-06-24T14:54:41.086231Z","shell.execute_reply.started":"2024-06-24T14:54:40.042473Z","shell.execute_reply":"2024-06-24T14:54:41.085041Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train = pd.read_csv('/kaggle/input/rsna-2024-lumbar-spine-degenerative-classification/train.csv')\nprint(\"Total Cases: \", len(train))\nprint(train.columns)","metadata":{"execution":{"iopub.status.busy":"2024-06-24T14:54:41.089134Z","iopub.execute_input":"2024-06-24T14:54:41.089819Z","iopub.status.idle":"2024-06-24T14:54:41.130151Z","shell.execute_reply.started":"2024-06-24T14:54:41.089783Z","shell.execute_reply":"2024-06-24T14:54:41.129014Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# List out all of the Studies we have on patients.\npart_1 = os.listdir('/kaggle/input/rsna-2024-lumbar-spine-degenerative-classification/train_images')\npart_1 = list(filter(lambda x: x.find('.DS') == -1, part_1))\n\ndf_meta_f = pd.read_csv('/kaggle/input/rsna-2024-lumbar-spine-degenerative-classification/train_series_descriptions.csv')\n\np1 = [(x, f\"/kaggle/input/rsna-2024-lumbar-spine-degenerative-classification/train_images/{x}\") for x in part_1]\nmeta_obj = { p[0]: { 'folder_path': p[1], \n                    'SeriesInstanceUIDs': [] \n                   } \n            for p in p1 }\n\nfor m in meta_obj:\n    meta_obj[m]['SeriesInstanceUIDs'] = list(\n        filter(lambda x: x.find('.DS') == -1, \n               os.listdir(meta_obj[m]['folder_path'])\n              )\n    )\n    \n# grabs the correspoding series descriptions\nfor k in tqdm(meta_obj):\n    for s in meta_obj[k]['SeriesInstanceUIDs']:\n        if 'SeriesDescriptions' not in meta_obj[k]:\n            meta_obj[k]['SeriesDescriptions'] = []\n        try:\n            meta_obj[k]['SeriesDescriptions'].append(\n                df_meta_f[(df_meta_f['study_id'] == int(k)) & \n                (df_meta_f['series_id'] == int(s))]['series_description'].iloc[0])\n        except:\n            print(\"Failed on\", s, k)","metadata":{"execution":{"iopub.status.busy":"2024-06-24T14:54:41.131589Z","iopub.execute_input":"2024-06-24T14:54:41.131953Z","iopub.status.idle":"2024-06-24T14:54:50.011319Z","shell.execute_reply.started":"2024-06-24T14:54:41.131922Z","shell.execute_reply":"2024-06-24T14:54:50.010294Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train.head()","metadata":{"execution":{"iopub.status.busy":"2024-06-24T14:54:50.012838Z","iopub.execute_input":"2024-06-24T14:54:50.013237Z","iopub.status.idle":"2024-06-24T14:54:50.042868Z","shell.execute_reply.started":"2024-06-24T14:54:50.013201Z","shell.execute_reply":"2024-06-24T14:54:50.041746Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_meta_f.head()","metadata":{"execution":{"iopub.status.busy":"2024-06-24T14:54:50.045280Z","iopub.execute_input":"2024-06-24T14:54:50.045649Z","iopub.status.idle":"2024-06-24T14:54:50.056226Z","shell.execute_reply.started":"2024-06-24T14:54:50.045620Z","shell.execute_reply":"2024-06-24T14:54:50.055238Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_meta = pd.DataFrame(meta_obj).T\ndf_meta_mini = df_meta.head(50)\ndf_meta_mini.head()","metadata":{"execution":{"iopub.status.busy":"2024-06-24T14:56:10.421592Z","iopub.execute_input":"2024-06-24T14:56:10.422195Z","iopub.status.idle":"2024-06-24T14:56:10.526804Z","shell.execute_reply.started":"2024-06-24T14:56:10.422152Z","shell.execute_reply":"2024-06-24T14:56:10.525704Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import os\n\ndef create_folder(folder_path):\n    \"\"\"\n    Creates a folder if it doesn't already exist.\n    \n    Args:\n        folder_path (str): The path of the folder to create.\n    \"\"\"\n    # Check if the folder exists\n    if not os.path.exists(folder_path):\n        # If the folder doesn't exist, create it\n        os.makedirs(folder_path)\n        print(f\"Folder '{folder_path}' created successfully.\")\n    else:\n        print(f\"Folder '{folder_path}' already exists.\")\n        \ncreate_folder('./rsna-2024-lumbar-spine-degenerative-classification-mini')\ncreate_folder('./rsna-2024-lumbar-spine-degenerative-classification-mini/train_images')","metadata":{"execution":{"iopub.status.busy":"2024-06-24T14:58:36.483053Z","iopub.execute_input":"2024-06-24T14:58:36.483541Z","iopub.status.idle":"2024-06-24T14:58:36.492128Z","shell.execute_reply.started":"2024-06-24T14:58:36.483507Z","shell.execute_reply":"2024-06-24T14:58:36.490881Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import os\nimport shutil\n\ndef copy_folder(src_folder, dst_folder):\n    \"\"\"\n    Copies a folder from one location to another.\n    \n    Args:\n        src_folder (str): The path of the source folder.\n        dst_folder (str): The path of the destination folder.\n    \"\"\"\n    # Check if the source folder exists\n    if os.path.exists(src_folder):\n        # Check if the destination folder already exists\n        #if not os.path.exists(dst_folder):\n            # Create the destination folder if it doesn't exist\n        #    os.makedirs(dst_folder)\n        \n        # Copy the folder contents\n        shutil.copytree(src_folder, dst_folder)\n        print(f\"Folder '{src_folder}' copied to '{dst_folder}'.\")\n    else:\n        print(f\"Source folder '{src_folder}' does not exist.\")\n        \nfor folder_name in df_meta_mini['folder_path'].values:\n    id = folder_name.split('/')[-1]\n    copy_folder(folder_name, f'./rsna-2024-lumbar-spine-degenerative-classification-mini/train_images/{id}')","metadata":{"execution":{"iopub.status.busy":"2024-06-24T15:05:32.854622Z","iopub.execute_input":"2024-06-24T15:05:32.855225Z","iopub.status.idle":"2024-06-24T15:06:07.727463Z","shell.execute_reply.started":"2024-06-24T15:05:32.855171Z","shell.execute_reply":"2024-06-24T15:06:07.725933Z"},"_kg_hide-output":false,"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"desired_index = [int(x) for x in list(df_meta_mini.index)]\ndesired_index","metadata":{"execution":{"iopub.status.busy":"2024-06-24T15:14:18.933152Z","iopub.execute_input":"2024-06-24T15:14:18.933606Z","iopub.status.idle":"2024-06-24T15:14:18.942860Z","shell.execute_reply.started":"2024-06-24T15:14:18.933573Z","shell.execute_reply":"2024-06-24T15:14:18.941515Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_mini = train[train['study_id'].isin(desired_index)]\ntrain_mini = train_mini.reset_index(drop=True)\ntrain_mini.head()\ntrain_mini.to_csv('/kaggle/working/rsna-2024-lumbar-spine-degenerative-classification-mini/train.csv')","metadata":{"execution":{"iopub.status.busy":"2024-06-24T15:15:38.075708Z","iopub.execute_input":"2024-06-24T15:15:38.076162Z","iopub.status.idle":"2024-06-24T15:15:38.091344Z","shell.execute_reply.started":"2024-06-24T15:15:38.076127Z","shell.execute_reply":"2024-06-24T15:15:38.089831Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!cp /kaggle/input/rsna-2024-lumbar-spine-degenerative-classification/sample_submission.csv /kaggle/working/rsna-2024-lumbar-spine-degenerative-classification-mini\n!cp /kaggle/input/rsna-2024-lumbar-spine-degenerative-classification/test_series_descriptions.csv /kaggle/working/rsna-2024-lumbar-spine-degenerative-classification-mini\n!cp /kaggle/input/rsna-2024-lumbar-spine-degenerative-classification/train_label_coordinates.csv /kaggle/working/rsna-2024-lumbar-spine-degenerative-classification-mini\n!cp /kaggle/input/rsna-2024-lumbar-spine-degenerative-classification/train_series_descriptions.csv /kaggle/working/rsna-2024-lumbar-spine-degenerative-classification-mini\n!ls /kaggle/working/rsna-2024-lumbar-spine-degenerative-classification-mini","metadata":{"execution":{"iopub.status.busy":"2024-06-24T15:17:32.646324Z","iopub.execute_input":"2024-06-24T15:17:32.647146Z","iopub.status.idle":"2024-06-24T15:17:38.409979Z","shell.execute_reply.started":"2024-06-24T15:17:32.647069Z","shell.execute_reply":"2024-06-24T15:17:38.408514Z"},"trusted":true},"execution_count":null,"outputs":[]}]}