{"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":"code","source":"!pip install -U python-gdcm\n!pip install pylibjpeg\n!pip install pylibjpeg-libjpeg\n\n\nimport tensorflow as tf\nimport numpy as np\nimport pandas as pd\nfrom tensorflow import keras\nfrom tensorflow.keras import layers\n\nfrom skimage.feature import graycomatrix, graycoprops\n\nimport gdcm\n\nimport pandas as pd\nimport numpy as np\n\nimport pydicom\nfrom PIL import Image\n\nimport os\n\nimport shutil\n\npath_sample = '/kaggle/input/rsna-breast-cancer-detection/sample_submission.csv'\npath_test = '/kaggle/input/rsna-breast-cancer-detection/test.csv'\npath_train = '/kaggle/input/rsna-breast-cancer-detection/train.csv'\n\ndf_sample_submission = pd.read_csv(path_sample)\ndf_test = pd.read_csv(path_test)\ndf_train = pd.read_csv(path_train)\n\ndf_train = df_train.set_index('image_id')\n\nos.mkdir('/kaggle/working/ReadyData')\nos.mkdir('/kaggle/working/ReadyData/1')\nos.mkdir('/kaggle/working/ReadyData/0')","metadata":{"execution":{"iopub.status.busy":"2023-01-13T21:25:59.916559Z","iopub.execute_input":"2023-01-13T21:25:59.916978Z","iopub.status.idle":"2023-01-13T21:26:50.060441Z","shell.execute_reply.started":"2023-01-13T21:25:59.916897Z","shell.execute_reply":"2023-01-13T21:26:50.059443Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def get_data_ready(start_index , end_index) :\n    i = 0\n    for patient in list(df_train['patient_id']) :\n        list_of_files = os.listdir('/kaggle/input/rsna-breast-cancer-detection/train_images/'+str(patient))\n        for file in list_of_files :\n            if i >= start_index and i<= end_index :\n                file = file.replace('.dcm',\"\")\n                label = df_train.loc[int(file) , 'cancer']\n                \n                if label == 0 :\n                    #try :\n                    im = pydicom.dcmread('/kaggle/input/rsna-breast-cancer-detection/train_images/'+str(patient)+'/'+str(file)+'.dcm').pixel_array\n                    rescaled_image = (np.maximum(im, 0) / im.max())*255 # Rescaling the image, put their values between 0 and 255\n                    final_image = np.uint8(rescaled_image) # Convert int\n                    final_image = Image.fromarray(final_image) # Creater image from an array\n                    final_image = final_image.resize((500,500))\n                    final_image.save('/kaggle/working/ReadyData/0/'+str(i)+'.png')\n                    print('image number {}'.format(str(i)))\n                    #except :\n                    #num_fails = num_fails + 1\n                    #print('a class 0 fail occured , total num_fails is now : {}'.format(num_fails))\n            \n                if label == 1 :\n                    #try :\n                    im = pydicom.dcmread('/kaggle/input/rsna-breast-cancer-detection/train_images/'+str(patient)+'/'+str(file)+'.dcm').pixel_array\n                    rescaled_image = (np.maximum(im, 0) / im.max())*255 # Rescaling the image, put their values between 0 and 255\n                    final_image = np.uint8(rescaled_image) # Convert int\n                    final_image = Image.fromarray(final_image) # Creater image from an array\n                    final_image = final_image.resize((500,500))\n                    final_image.save('/kaggle/working/ReadyData/1/'+str(i)+'.png')\n                    print('image number {}'.format(str(i)))\n                    #except :\n                    #    num_fails = num_fails + 1\n                    #print('a class 1 fail occured, total num fails is now : {}'.format(num_fails))\n                \n                i = i + 1\n                    \n            else :\n                i = i + 1\n                ","metadata":{"execution":{"iopub.status.busy":"2023-01-13T21:25:59.916559Z","iopub.execute_input":"2023-01-13T21:25:59.916978Z","iopub.status.idle":"2023-01-13T21:26:50.060441Z","shell.execute_reply.started":"2023-01-13T21:25:59.916897Z","shell.execute_reply":"2023-01-13T21:26:50.059443Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"get_data_ready(10000,20000)","metadata":{"execution":{"iopub.status.busy":"2023-01-13T21:26:50.063388Z","iopub.execute_input":"2023-01-13T21:26:50.063899Z","iopub.status.idle":"2023-01-13T21:28:14.038428Z","shell.execute_reply.started":"2023-01-13T21:26:50.06384Z","shell.execute_reply":"2023-01-13T21:28:14.037431Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from shutil import make_archive\nfrom zipfile import ZipFile\nfile = \"EXT2\"  # zip file name\ndirectory = \"/kaggle/working/ReadyData\"\nmake_archive(file, \"zip\", directory)  # zipping the directory\n\nshutil.rmtree('/kaggle/working/ReadyData')","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"'''def extract_train_features(parameters_list) :\n    i = 0\n    extracted_data = pd.DataFrame()\n    \n    for file in os.listdir('/kaggle/working/ReadyData/0') :\n        i = i + 1\n        image = Image.open('/kaggle/working/ReadyData/0/'+file)\n        image = image.convert('L')\n        for element in parameters_list :\n            glcm = graycomatrix(image , distances=[element[0]], angles=[element[1]], levels=256, symmetric=True, normed=True)\n            extracted_data.append(pd.Series(name=i))\n            column_name = str(element[2])\n            extracted_data.at[i,column_name] = graycoprops(glcm, element[3])[0, 0]\n            extracted_data.at[i,'label'] = 0\n        \n\n    for file in os.listdir('/kaggle/working/ReadyData/1') :\n        i = i + 1\n        image = Image.open('/kaggle/working/ReadyData/1/'+file)\n        image = image.convert('L')\n        for element in parameters_list :\n            glcm = graycomatrix(image , distances=[element[0]], angles=[element[1]], levels=256, symmetric=True, normed=True)\n            extracted_data.append(pd.Series(name=i))\n            column_name = str(element[2])\n            extracted_data.at[i,column_name] = graycoprops(glcm, element[3])[0, 0]\n            extracted_data.at[i,'label'] = 1\n        \n#    extracted_data = extracted_data.drop(0)\n\n\n    column_names = extracted_data.columns.values.tolist()\n    for column in column_names :\n        extracted_data[column] = extracted_data[column].astype(float)\n\n\n    extracted_data['label'] = extracted_data['label'].astype(int)\n    \n    #extracted_data = extracted_data[extracted_data['dissimilarity_1_0'] != 0]\n    return extracted_data'''","metadata":{"execution":{"iopub.status.busy":"2023-01-13T21:28:14.04053Z","iopub.execute_input":"2023-01-13T21:28:14.041Z","iopub.status.idle":"2023-01-13T21:28:14.055159Z","shell.execute_reply.started":"2023-01-13T21:28:14.040955Z","shell.execute_reply":"2023-01-13T21:28:14.054234Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"'''parameters_list = [(50 , 0 , 'dissimilarity_50_0' , 'dissimilarity' ),\\\n                   (60 , 0 , 'dissimilarity_60_0' , 'dissimilarity'),\\\n                   (70 , 0 , 'dissimilarity_3_0' , 'dissimilarity'),\\\n                   (80 , 0 , 'dissimilarity_4_0' , 'dissimilarity'),]\n                   #(1,np.pi/4,'dissimilarity_1_quarter_pi' , 'dissimilarity'),\\\n                   #(1,np.pi/2,'dissimilarity_1_half_pi' , 'dissimilarity'),\\\n                   #(1 , 3*np.pi/4 , 'dissimilarity_1_threequarters_pi' , 'dissimilarity'),\\\n                   #(1 , np.pi , 'dissimilarity_1_pi' , 'dissimilarity'), \\\n                   #(1 , 0 , 'correlation_1_0' , 'correlation'), \\\n                   #(2 , 0 , 'correlation_2_0' , 'correlation'), \\\n                   #(3 , 0 , 'correlation_3_0' , 'correlation'), \\\n                   #(4 , 0 , 'correlation_4_0' , 'correlation'), \\\n                   #(1 , np.pi/4,'correlation_1_quarter_pi' , 'correlation'),\\\n                   #(1 , np.pi/2,'correlation_1_half_pi' , 'correlation'),\\\n                   #(1 , 3*np.pi/4,'correlation_1_threequarters_pi' , 'correlation'),\\\n                   #(1 , np.pi ,'correlation_1_pi' , 'correlation'),]\n\n\nextract_train_features(parameters_list).to_csv('/kaggle/working/2NEW.csv')'''","metadata":{"execution":{"iopub.status.busy":"2023-01-13T21:28:14.056811Z","iopub.execute_input":"2023-01-13T21:28:14.057167Z","iopub.status.idle":"2023-01-13T21:28:15.155737Z","shell.execute_reply.started":"2023-01-13T21:28:14.057137Z","shell.execute_reply":"2023-01-13T21:28:15.154479Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}