{"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":"markdown","source":"# Preprocess csv file & create folder and copy files","metadata":{}},{"cell_type":"markdown","source":"### Load csv file","metadata":{}},{"cell_type":"code","source":"import pandas as pd\ncsv_path = '/kaggle/input/rsna-process-dataset-jitshil/process_dataset_final.csv'\ndf = pd.read_csv(csv_path)\ndf.head()","metadata":{"execution":{"iopub.status.busy":"2023-02-01T21:20:41.4907Z","iopub.execute_input":"2023-02-01T21:20:41.491822Z","iopub.status.idle":"2023-02-01T21:20:41.509588Z","shell.execute_reply.started":"2023-02-01T21:20:41.49177Z","shell.execute_reply":"2023-02-01T21:20:41.508714Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### Create patient_L/R folders and copy dicom files between two folders respectively L and R letarelity","metadata":{}},{"cell_type":"code","source":"import os\nimport shutil\n\nsource_main_path = '/kaggle/input/rsna-breast-cancer-detection/train_images/'\noutput_train_folder = '/kaggle/working/train_imgs/'\nif os.path.exists(output_train_folder) == False:\n    os.mkdir(output_train_folder)\n\n\nfor dfvalue in  df.values:\n    folder_name = str(dfvalue[2])+'_'+ str(dfvalue[4])\n    #print(folder_name)\n    output_folder = '/kaggle/working/train_imgs/'+folder_name\n    if os.path.exists(output_folder) == False:\n        os.mkdir(output_folder)\n    src = source_main_path+str(dfvalue[2])+\"/\"+str(dfvalue[3])+'.dcm'\n    dst = output_folder+'/'+str(dfvalue[2])+'.dcm'\n    shutil.copyfile(src, dst)\n    \n ","metadata":{"execution":{"iopub.status.busy":"2023-02-01T21:20:46.635676Z","iopub.execute_input":"2023-02-01T21:20:46.636092Z","iopub.status.idle":"2023-02-01T21:23:34.103321Z","shell.execute_reply.started":"2023-02-01T21:20:46.636045Z","shell.execute_reply":"2023-02-01T21:23:34.102134Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(os.listdir('/kaggle/working/train_imgs'))","metadata":{"execution":{"iopub.status.busy":"2023-02-01T21:23:34.105683Z","iopub.execute_input":"2023-02-01T21:23:34.106155Z","iopub.status.idle":"2023-02-01T21:23:34.115269Z","shell.execute_reply.started":"2023-02-01T21:23:34.106112Z","shell.execute_reply":"2023-02-01T21:23:34.114007Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"len(os.listdir('/kaggle/working/train_imgs'))","metadata":{"execution":{"iopub.status.busy":"2023-02-01T21:23:34.116923Z","iopub.execute_input":"2023-02-01T21:23:34.117273Z","iopub.status.idle":"2023-02-01T21:23:34.126158Z","shell.execute_reply.started":"2023-02-01T21:23:34.117242Z","shell.execute_reply":"2023-02-01T21:23:34.125003Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# dicom image to nifti image conversion","metadata":{}},{"cell_type":"markdown","source":"### Import libs","metadata":{}},{"cell_type":"code","source":"import os\nimport nibabel as nib\nimport SimpleITK as sitk","metadata":{"execution":{"iopub.status.busy":"2023-02-01T21:23:34.128459Z","iopub.execute_input":"2023-02-01T21:23:34.12888Z","iopub.status.idle":"2023-02-01T21:23:34.811804Z","shell.execute_reply.started":"2023-02-01T21:23:34.128813Z","shell.execute_reply":"2023-02-01T21:23:34.810593Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### Conversion function from dicom 2 nii and save nii images","metadata":{}},{"cell_type":"code","source":"output_nii_folder = '/kaggle/working/nii_img/'\nif os.path.exists(output_nii_folder) == False:\n    os.mkdir(output_nii_folder)\n\ndef dicom2nifti(main_dir, image_dir, save=True):\n    \"given a dicom directory, loads them into single file and can save it as .nii file\"\n    reader = sitk.ImageSeriesReader()\n    reader.LoadPrivateTagsOn()\n    file_dir = main_dir+image_dir\n    filenamesDICOM = reader.GetGDCMSeriesFileNames(str(file_dir))\n    reader.SetFileNames(filenamesDICOM)\n    img = reader.Execute()\n    img = sitk.Cast(img, sitk.sitkFloat32)\n    \n    if save:\n        sitk.WriteImage(img, output_nii_folder+image_dir+'.nii.gz')\n    else:\n        return img\n","metadata":{"execution":{"iopub.status.busy":"2023-02-01T21:23:34.813163Z","iopub.execute_input":"2023-02-01T21:23:34.813466Z","iopub.status.idle":"2023-02-01T21:23:34.821669Z","shell.execute_reply.started":"2023-02-01T21:23:34.813438Z","shell.execute_reply":"2023-02-01T21:23:34.820516Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"main_input_dir = '/kaggle/working/train_imgs/'\n\nfor img_folder in os.listdir(main_input_dir):\n    print(img_folder)\n    dicom2nifti(main_input_dir, img_folder)","metadata":{"execution":{"iopub.status.busy":"2023-02-01T21:23:34.823313Z","iopub.execute_input":"2023-02-01T21:23:34.823609Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"len(os.listdir(output_nii_folder))","metadata":{"trusted":true},"execution_count":null,"outputs":[]}]}