{"cells":[{"metadata":{"trusted":true},"cell_type":"code","source":"import os\nimport pandas as pd\nimport numpy as np\nfrom pathlib import Path\nfrom PIL import Image\nfrom tqdm.notebook import tqdm","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","trusted":true},"cell_type":"code","source":"data_path = Path('../input/prostate-cancer-grade-assessment/')\nos.listdir(data_path)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"!cd ../input/prostate-cancer-grade-assessment/; du -h","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"That's right, the images are a whopping 347 GB! This is expected with thousands of Whole-slide images (WSIs)."},{"metadata":{"trusted":true},"cell_type":"code","source":"os.listdir(data_path/'train_images')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"import pandas as pd\ntrain_df = pd.read_csv(data_path/'train.csv')\ntrain_df.head(10)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"print('Number of whole-slide images in training set: ', len(train_df))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"sample_image = train_df.iloc[np.random.choice(len(train_df))].image_id\nprint(sample_image)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"import openslide","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"openslide_image = openslide.OpenSlide(str(data_path/'train_images'/(sample_image+'.tiff')))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"openslide_image.properties","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"img = openslide_image.read_region(location=(0,0),level=0,size=(openslide_image.level_dimensions[0][0],openslide_image.level_dimensions[0][1]))\nimg","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"Image.fromarray(np.array(img.resize((512,512)))[:,:,:3])","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"for i in tqdm(train_df['image_id'],total=len(train_df)):\n    openslide_image = openslide.OpenSlide(str(data_path/'train_images'/(i+'.tiff')))\n    img = openslide_image.read_region(location=(0,0),level=2,size=(openslide_image.level_dimensions[2][0],openslide_image.level_dimensions[2][1]))\n    Image.fromarray(np.array(img.resize((512,512)))[:,:,:3]).save(i+'.jpeg')\n    ","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}