{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.14","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"none","dataSources":[{"sourceId":36363,"databundleVersionId":4050810,"sourceType":"competition"}],"dockerImageVersionId":30761,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import os\nimport pandas as pd\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport seaborn as sns\nimport pydicom\nfrom tqdm import tqdm\n\n# Set up paths\nBASE_PATH = '/kaggle/input/rsna-2022-cervical-spine-fracture-detection'\nTRAIN_CSV_PATH = os.path.join(BASE_PATH, 'train.csv')\nTEST_CSV_PATH = os.path.join(BASE_PATH, 'test.csv')\nTRAIN_IMAGES_PATH = os.path.join(BASE_PATH, 'train_images')\nTEST_IMAGES_PATH = os.path.join(BASE_PATH, 'test_images')\nSEGMENTATIONS_PATH = os.path.join(BASE_PATH, 'segmentations')\nBOUNDING_BOXES_PATH = os.path.join(BASE_PATH, 'train_bounding_boxes.csv')\nSAMPLE_SUBMISSION_PATH = os.path.join(BASE_PATH, 'sample_submission.csv')\n\n# Load training data\ntrain_df = pd.read_csv(TRAIN_CSV_PATH)\nprint(\"Training data shape:\", train_df.shape)\nprint(\"\\nFirst few rows of training data:\")\nprint(train_df.head())\n\n# Explore target variables\ntarget_cols = ['patient_overall'] + [f'C{i}' for i in range(1, 8)]\nprint(\"\\nDistribution of fractures:\")\nprint(train_df[target_cols].sum())\n\n# Visualize fracture distribution\nplt.figure(figsize=(12, 6))\nsns.barplot(x=target_cols, y=train_df[target_cols].sum())\nplt.title(\"Distribution of Fractures\")\nplt.ylabel(\"Count\")\nplt.xticks(rotation=45)\nplt.tight_layout()\nplt.show()\n\n# Function to load DICOM files\ndef load_dicom(path):\n    dicom = pydicom.dcmread(path)\n    return dicom.pixel_array\n\n# Explore a sample patient's scans\ndef explore_patient_scans(patient_id):\n    patient_path = os.path.join(TRAIN_IMAGES_PATH, patient_id)\n    slices = sorted([f for f in os.listdir(patient_path) if f.endswith('.dcm')])\n    print(f\"Number of slices for patient {patient_id}: {len(slices)}\")\n    \n    # Load middle slice\n    middle_slice = load_dicom(os.path.join(patient_path, slices[len(slices)//2]))\n    print(f\"Slice shape: {middle_slice.shape}\")\n    print(f\"Pixel value range: {middle_slice.min()} to {middle_slice.max()}\")\n    \n    # Visualize middle slice\n    plt.figure(figsize=(10, 10))\n    plt.imshow(middle_slice, cmap='bone')\n    plt.title(f\"Middle slice for patient {patient_id}\")\n    plt.axis('off')\n    plt.show()\n\n# Explore a few sample patients\nsample_patients = train_df['StudyInstanceUID'].sample(3).tolist()\nfor patient in sample_patients:\n    explore_patient_scans(patient)\n\n# Load and explore bounding box data\nbounding_boxes_df = pd.read_csv(BOUNDING_BOXES_PATH)\nprint(\"\\nBounding boxes data shape:\", bounding_boxes_df.shape)\nprint(\"\\nFirst few rows of bounding boxes data:\")\nprint(bounding_boxes_df.head())\n\n# Explore segmentation files\nsegmentation_files = os.listdir(SEGMENTATIONS_PATH)\nprint(f\"\\nNumber of segmentation files: {len(segmentation_files)}\")\nprint(\"Sample segmentation file names:\")\nprint(segmentation_files[:5])\n\nprint(\"\\nInitial data exploration complete!\")","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2024-09-24T15:24:00.388127Z","iopub.execute_input":"2024-09-24T15:24:00.38916Z","iopub.status.idle":"2024-09-24T15:24:04.216285Z","shell.execute_reply.started":"2024-09-24T15:24:00.389109Z","shell.execute_reply":"2024-09-24T15:24:04.21447Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Hello, it works without error ","metadata":{}},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}