{"cells":[{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"# This Python 3 environment comes with many helpful analytics libraries installed\n# It is defined by the kaggle/python Docker image: https://github.com/kaggle/docker-python\n# For example, here's several helpful packages to load\n\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n\n# Input data files are available in the read-only \"../input/\" directory\n# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory\n\nimport os\n# for dirname, _, filenames in os.walk('/kaggle/input'):\n#     for filename in filenames:\n#         print(os.path.join(dirname, filename))\n\n# You can write up to 5GB to the current directory (/kaggle/working/) that gets preserved as output when you create a version using \"Save & Run All\" \n# You can also write temporary files to /kaggle/temp/, but they won't be saved outside of the current session\n\nfrom skimage import io\n\nfrom tqdm.notebook import tqdm\n\nfrom  scipy import misc as npimsv\n\nimport cv2\n\nimport shutil","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","trusted":true},"cell_type":"code","source":"PATH_TO_DATASET=\"/kaggle/input/prostate-cancer-grade-assessment\"\nPATH_TO_TRAINING_IMAGES=os.path.join(PATH_TO_DATASET,\"train_images\")\nPATH_TO_TRAINING_MASKS=os.path.join(PATH_TO_DATASET,\"train_label_masks\")\nPATH_TO_TEST_IMAGES=os.path.join(PATH_TO_DATASET,\"test_images\")\n\nPATH_TO_REDUCED_TRAIN_IMAGES=os.path.join(\".\",\"reduced\", \"images\")\n\nPATH_TO_REDUCED_TRAIN_MASKS=os.path.join(\".\",\"reduced\", \"masks\")\n\nPATH_TO_TRAIN_CLASSES=os.path.join(\".\",\"classes\")\n\nPATH_TO_VALIDATION_IMAGES=os.path.join(\".\",\"val\")\n\n#Checking the locations existance before reading from the directory\npath_to_dataset_exists=os.path.exists(PATH_TO_DATASET)\npath_to_training_images_exists=os.path.exists(PATH_TO_TRAINING_IMAGES)\npath_to_training_masks_exists=os.path.exists(PATH_TO_TRAINING_MASKS)\n\n\npath_to_test_images_exists=os.path.exists(PATH_TO_TEST_IMAGES)\n\n\n\n\n#if successful pointing to those directories then we will set the path for training csv file\n\nif path_to_dataset_exists and path_to_training_images_exists and path_to_training_masks_exists:\n    print(\"Training images and masks are reachable.\")\n    PATH_TO_TRAINING_LABELS_CSV=os.path.join(PATH_TO_DATASET,\"train.csv\")\n    path_to_training_labels_csv_exists=os.path.exists(PATH_TO_TRAINING_LABELS_CSV)\n    print(PATH_TO_TRAINING_LABELS_CSV, path_to_training_labels_csv_exists)\n    \n    \n    \nif path_to_test_images_exists:\n    \n    path_to_test_csv_file=os.path.join(PATH_TO_DATASET, \"test.csv\")\n    path_to_test_csv_file_exists=os.path.exists(path_to_test_csv_file)\n    print(\"Test image set is reachable.\")\n    \n    if path_to_test_csv_file_exists:\n        print(\"Test csv file is reachable.\")\n        \nelse:\n    \n    path_to_test_csv_file=os.path.join(PATH_TO_DATASET, \"test.csv\")\n    path_to_test_csv_file_exists=os.path.exists(path_to_test_csv_file)\n    \n\nif not os.path.exists(PATH_TO_REDUCED_TRAIN_IMAGES):    \n    os.makedirs(PATH_TO_REDUCED_TRAIN_IMAGES, exist_ok=True)\n    \nif not os.path.exists(PATH_TO_REDUCED_TRAIN_MASKS):    \n    os.makedirs(PATH_TO_REDUCED_TRAIN_MASKS, exist_ok=True)\n    \n\nif os.path.exists(PATH_TO_REDUCED_TRAIN_IMAGES):\n    print(\"Path to reduced training images is present.\")\n    \nif os.path.exists(PATH_TO_REDUCED_TRAIN_MASKS):\n    print(\"Path to reduced training masks is present.\")\n    \n    \nif not os.path.exists(PATH_TO_VALIDATION_IMAGES):\n    os.makedirs(PATH_TO_VALIDATION_IMAGES, exist_ok=True)\n\nif os.path.exists(PATH_TO_VALIDATION_IMAGES):\n    print(\"Path to validation images is present\")\n    \n    \n#Global variables used in the following code\nOPTIMAL_PATCH_SIZE=256\nPATCH_SIZE=128\nMODEL_INPUT_PATCH_SIZE=224\nDEGREE_OF_ROTATION=30\nPATCH_SIZE_HALF=PATCH_SIZE//2\nNO_OF_CLASSES=4\nNO_OF_EPOCHS=50\n\nWHICH_LAYER=-1\n\nBATCH_SIZE=128\nNUM_OF_WORKER=32","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"path_to_training_labels_csv_exists","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"if path_to_training_labels_csv_exists:\n\n\n        for file_name in tqdm(os.listdir(PATH_TO_TRAINING_IMAGES)):\n            if file_name.endswith(\"tiff\"):\n                file_name_prefix=file_name.split()[0]\n                \n            \n                \n#            \n\n                image_filename=os.path.join(PATH_TO_TRAINING_IMAGES,file_name)\n\n                #             mask_filename=os.path.join(PATH_TO_TRAINING_MASKS, fileid+\"_mask.tiff\" )\n        \n                \n\n\n\n                try:\n                    image_slide=io.MultiImage(image_filename)\n                    image_slide_cropped=image_slide[WHICH_LAYER]\n                    image_slide.close()\n\n                except:\n                #                 print(fileid)\n                    image_slide_okay=False\n\n                #                 try:\n                #                     mask_slide=io.MultiImage(mask_filename)\n                #                     mask_slide_cropped=mask_slide[WHICH_LAYER]\n                #         #             print(mask_slide_cropped.shape)\n\n                #                 except:\n                #     #                 print(\"Problem with Mask of {}\".format(fileid))\n                #                     #mask_slide.close()\n                #                     mask_slide_okay=False\n\n\n\n                path_to_reduced_image_slide=os.path.join(PATH_TO_REDUCED_TRAIN_IMAGES,\\\n                file_name_prefix +\".png\"\n\n                )\n\n                #                         path_to_reduced_mask_slide=os.path.join(PATH_TO_REDUCED_TRAIN_IMAGES,\\\n                #                                                                  fileid+\"_mask.png\")\n\n\n                #                         image_slide_cropped=padded_image(image_slide_cropped,patch_size=PATCH_SIZE)\n\n                #                         mask_slide_cropped=padded_image(mask_slide_cropped,patch_size=PATCH_SIZE)\n\n                cv2.imwrite(path_to_reduced_image_slide,image_slide_cropped)\n\n                #                         cv2.imwrite(path_to_reduced_mask_slide,mask_slide_cropped)\n\n                #                         list_image_id_gleason_score_same.append([fileid, gleason_score_splited[0],\\\n                #                                                                  path_to_reduced_image_slide,\\\n                #                                                                  path_to_reduced_mask_slide\n                #                                                                 ])\n\n\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"if path_to_training_labels_csv_exists:\n\n\n        for file_name in tqdm(os.listdir(PATH_TO_TRAINING_MASKS)):\n            if file_name.endswith(\"tiff\"):\n                file_name_prefix=file_name.split()[0]\n                \n            \n                \n#            \n\n#                 image_filename=os.path.join(PATH_TO_TRAINING_IMAGES,file_name)\n\n                mask_filename=os.path.join(PATH_TO_TRAINING_MASKS, file_name )\n        \n                \n\n\n\n#                 try:\n#                     image_slide=io.MultiImage(image_filename)\n#                     image_slide_cropped=image_slide[WHICH_LAYER]\n#                     image_slide.close()\n\n#                 except:\n#                 #                 print(fileid)\n#                     image_slide_okay=False\n\n                try:\n                    mask_slide=io.MultiImage(mask_filename)\n                    mask_slide_cropped=mask_slide[WHICH_LAYER]\n                #             print(mask_slide_cropped.shape)\n                    mask_slide.close()\n\n                except:\n                #                 print(\"Problem with Mask of {}\".format(fileid))\n                    #mask_slide.close()\n                    mask_slide_okay=False\n\n\n\n#                 path_to_reduced_image_slide=os.path.join(PATH_TO_REDUCED_TRAIN_IMAGES,\\\n#                 file_name_prefix +\".png\"\n\n#                 )\n\n                path_to_reduced_mask_slide=os.path.join(PATH_TO_REDUCED_TRAIN_MASKS,\\\n                                                 file_name_prefix+\".png\")\n\n\n#                                         image_slide_cropped=padded_image(image_slide_cropped,patch_size=PATCH_SIZE)\n\n#                                         mask_slide_cropped=padded_image(mask_slide_cropped,patch_size=PATCH_SIZE)\n\n#                 cv2.imwrite(path_to_reduced_image_slide,image_slide_cropped)\n\n                cv2.imwrite(path_to_reduced_mask_slide,mask_slide_cropped)\n\n                #                         list_image_id_gleason_score_same.append([fileid, gleason_score_splited[0],\\\n                #                                                                  path_to_reduced_image_slide,\\\n                #                                                                  path_to_reduced_mask_slide\n                #                                                                 ])\n\n\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"!ls -1 reduced/images/ |wc -l \n!ls -1 reduced/masks/ |wc -l ","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"shutil.copyfile(\"../input/prostate-cancer-grade-assessment/sample_submission.csv\", \"submission.csv\")","execution_count":null,"outputs":[]}],"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":4,"nbformat_minor":4}