{"cells":[{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"%matplotlib inline\nimport os\n\nimport numpy as np\nimport openslide\nfrom matplotlib import pyplot as plt","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","trusted":true},"cell_type":"code","source":"images_dir = \"../input/prostate-cancer-grade-assessment/train_images/\"\nmasks_dir = \"../input/prostate-cancer-grade-assessment/train_label_masks/\"\n\nimage_files = os.listdir(images_dir)\nmask_files = os.listdir(masks_dir)\nmask_files_cleaned = [i.replace(\"_mask\", \"\") for i in mask_files]\nimages_with_masks = list(set(image_files).intersection(mask_files_cleaned))\nlen(image_files), len(mask_files), len(images_with_masks)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"def min_max_mask_coordinates(mask, axis=1):\n    xy = mask.sum(axis=axis)\n    xy = np.nonzero(xy)\n    xy_min = np.min(xy)\n    xy_max = np.max(xy)\n    return xy_min, xy_max\n\ndef trim_image_to_mask_size(image, mask):\n    x_min, x_max = min_max_mask_coordinates(mask, axis=1)\n    y_min, y_max = min_max_mask_coordinates(mask, axis=0)\n\n    image = image[x_min:x_max, y_min:y_max]\n    mask = mask[x_min:x_max, y_min:y_max]\n    return image, mask\n\n\ndef trim_image_mask_to_min_size(image, mask):\n    side = min(image.shape[0], image.shape[1])\n    image = image[:side, :side]\n    mask = mask[:side, :side]\n    return image, mask","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"WSIS"},{"metadata":{"trusted":true},"cell_type":"code","source":"rows = 10\ncols = 10\noffset = 0\nplt.figure(figsize=(20, rows*(20/cols)))\nplt.subplots_adjust(wspace=0, hspace=0)\n\nfor chart, index in enumerate(range(rows*cols), 1):\n    image_file = images_with_masks[index]\n    mask_file = image_file.replace(\".tiff\", \"_mask.tiff\")\n\n    with openslide.OpenSlide(os.path.join(images_dir, image_file)) as image:\n        with openslide.OpenSlide(os.path.join(masks_dir, mask_file)) as mask:\n            size = image.level_dimensions[-1]\n            mask = np.array(mask.get_thumbnail(size=size))[:,:,0]\n            image = np.array(image.get_thumbnail(size=size))\n            \n            for _ in range(2):\n                image, mask = trim_image_to_mask_size(image, mask)\n                image, mask = trim_image_mask_to_min_size(image, mask)\n            image = image * (mask > 0).reshape(mask.shape + (1,))\n            image[image == 0 ] = 255\n            \n            ax = plt.subplot(rows, cols, chart)\n            ax.imshow(image)\n            ax.set_yticklabels([])\n            ax.set_xticklabels([])\n            ax.set_xticks([])\n            ax.set_yticks([])","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Cancer markers"},{"metadata":{"trusted":true},"cell_type":"code","source":"rows = 10\ncols = 10\noffset = 0\nplt.figure(figsize=(20, rows*(20/cols)))\nplt.subplots_adjust(wspace=0, hspace=0)\n\nfor chart, index in enumerate(range(rows*cols), 1):\n    image_file = images_with_masks[index]\n    mask_file = image_file.replace(\".tiff\", \"_mask.tiff\")\n\n    with openslide.OpenSlide(os.path.join(images_dir, image_file)) as image:\n        with openslide.OpenSlide(os.path.join(masks_dir, mask_file)) as mask:\n            size = image.level_dimensions[-1]\n            mask = np.array(mask.get_thumbnail(size=size))[:,:,0]\n            image = np.array(image.get_thumbnail(size=size))\n            \n            for _ in range(2):\n                image, mask = trim_image_to_mask_size(image, mask)\n                image, mask = trim_image_mask_to_min_size(image, mask)\n            image = image * (mask > 1).reshape(mask.shape + (1,))\n            image[image == 0 ] = 255\n            \n            ax = plt.subplot(rows, cols, chart)\n            ax.imshow(image)\n            ax.set_yticklabels([])\n            ax.set_xticklabels([])\n            ax.set_xticks([])\n            ax.set_yticks([])","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}