{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.11.11","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"none","dataSources":[{"sourceId":20604,"databundleVersionId":1357052,"sourceType":"competition"}],"dockerImageVersionId":31040,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"!pip install fpdf","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-05-13T14:43:39.166630Z","iopub.execute_input":"2025-05-13T14:43:39.166947Z","iopub.status.idle":"2025-05-13T14:43:43.306537Z","shell.execute_reply.started":"2025-05-13T14:43:39.166917Z","shell.execute_reply":"2025-05-13T14:43:43.305278Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"import os\nimport pydicom\nimport pandas as pd\nimport matplotlib.pyplot as plt\nfrom pydicom.errors import InvalidDicomError","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-05-13T14:43:43.308618Z","iopub.execute_input":"2025-05-13T14:43:43.309657Z","iopub.status.idle":"2025-05-13T14:43:43.314971Z","shell.execute_reply.started":"2025-05-13T14:43:43.309616Z","shell.execute_reply":"2025-05-13T14:43:43.313950Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"import os\nimport random\n\n# Tentukan path ke folder yang berisi folder pasien\nbase_path = '/kaggle/input/osic-pulmonary-fibrosis-progression/train/'\n\n# Mengambil semua folder pasien\nall_folders = sorted([f for f in os.listdir(base_path) if os.path.isdir(os.path.join(base_path, f))])\n\n# Memilih 3 folder secara acak\nselected_folders = random.sample(all_folders, 3)\n\n# Menampilkan 3 folder yang dipilih secara acak\nprint(\"Selected 3 random patient folders:\")\nprint(selected_folders)\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-05-13T14:43:43.315759Z","iopub.execute_input":"2025-05-13T14:43:43.316001Z","iopub.status.idle":"2025-05-13T14:43:43.345773Z","shell.execute_reply.started":"2025-05-13T14:43:43.315973Z","shell.execute_reply":"2025-05-13T14:43:43.344544Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"import pydicom\nimport os\nimport random\n\n# Fungsi untuk menampilkan metadata DICOM\ndef display_dicom_metadata(dicom_base_path, selected_folders):\n    # Proses setiap folder pasien yang terpilih\n    for folder in selected_folders:\n        dicom_folder = os.path.join(dicom_base_path, folder)\n        \n        # Mengambil file DICOM dari folder pasien\n        dicom_files = [f for f in os.listdir(dicom_folder) if f.endswith('.dcm')]\n        \n        # Pilih satu file DICOM secara acak dari folder pasien\n        dicom_file = random.choice(dicom_files)\n        dicom_path = os.path.join(dicom_folder, dicom_file)\n        \n        # Mengecek apakah path tersebut adalah file DICOM\n        if os.path.isfile(dicom_path):\n            dataset = pydicom.dcmread(dicom_path)\n            \n            # Menampilkan metadata DICOM\n            print(f\"Metadata for DICOM file: {dicom_file}\")\n            print(f\"Patient ID: {dataset.PatientID}\")\n            print(f\"Study ID: {dataset.StudyID}\")\n            print(f\"Modality: {dataset.Modality}\")\n            print(f\"Slice Thickness: {dataset.SliceThickness}\")\n            print(f\"Rows: {dataset.Rows}, Columns: {dataset.Columns}\")\n            print(\"Image Position (Patient):\", dataset.ImagePositionPatient)\n            print(\"Image Orientation (Patient):\", dataset.ImageOrientationPatient)\n            print(\"-\" * 40)\n\n# Menampilkan metadata DICOM\ndisplay_dicom_metadata(dicom_base_path, selected_folders)\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-05-13T14:43:43.348468Z","iopub.execute_input":"2025-05-13T14:43:43.348775Z","iopub.status.idle":"2025-05-13T14:43:43.441302Z","shell.execute_reply.started":"2025-05-13T14:43:43.348753Z","shell.execute_reply":"2025-05-13T14:43:43.440089Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"import pydicom\nimport os\nimport random\nimport matplotlib.pyplot as plt\n\n# Fungsi untuk menampilkan gambar DICOM\ndef display_dicom_images(dicom_base_path, selected_folders):\n    # Proses setiap folder pasien yang terpilih\n    for folder in selected_folders:\n        dicom_folder = os.path.join(dicom_base_path, folder)\n        \n        # Mengambil file DICOM dari folder pasien\n        dicom_files = [f for f in os.listdir(dicom_folder) if f.endswith('.dcm')]\n        \n        # Pilih satu file DICOM secara acak dari folder pasien\n        dicom_file = random.choice(dicom_files)\n        dicom_path = os.path.join(dicom_folder, dicom_file)\n        \n        # Mengecek apakah path tersebut adalah file DICOM\n        if os.path.isfile(dicom_path):\n            dataset = pydicom.dcmread(dicom_path)\n            \n            # Mengecek apakah file DICOM memiliki data pixel\n            if 'PixelData' in dataset:\n                pixel_data = dataset.pixel_array\n                \n                # Menampilkan gambar DICOM\n                plt.figure(figsize=(6, 6))\n                plt.imshow(pixel_data, cmap='gray')\n                plt.title(f\"Patient Folder: {folder} - DICOM File: {dicom_file}\")\n                plt.axis('off')  # Menonaktifkan axis\n                plt.show()\n\n# Menampilkan gambar DICOM\ndisplay_dicom_images(dicom_base_path, selected_folders)\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-05-13T14:43:43.442138Z","iopub.execute_input":"2025-05-13T14:43:43.442461Z","iopub.status.idle":"2025-05-13T14:43:44.148026Z","shell.execute_reply.started":"2025-05-13T14:43:43.442431Z","shell.execute_reply":"2025-05-13T14:43:44.146871Z"}},"outputs":[],"execution_count":null}]}