{"cells":[{"metadata":{},"cell_type":"markdown","source":"# Sample Gleason Biopsy Pictures\nThe following code will output 10 images for each Data Provider of the PANDA Challenge"},{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"import os\nimport pandas as pd \nimport openslide\nfrom PIL import ImageFont\nfrom PIL import ImageDraw\ntrain = pd.read_csv('/kaggle/input/prostate-cancer-grade-assessment/train.csv')","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","trusted":true},"cell_type":"code","source":"IMAGE_DIR = '/kaggle/input/prostate-cancer-grade-assessment/train_images/'\ndef getSampleImageWithInfo(provider='radboud', fontsize=800):\n    \"\"\"Given a 'provider'  this function will return an sample/random image\n    from the training data, along with a info dict.\n    \n    The info dict is also written in the top left corner of the image\"\"\"\n    query = train.data_provider==provider\n    filename = train[query].image_id.sample().values[0] + '.tiff'\n    info = train[query].sample().to_dict(orient='list')\n    text = out = ' '.join([f'{k.upper()} \\t {info[k][0]} \\n'for k in info])\n    image = openslide.OpenSlide(os.path.join(IMAGE_DIR, filename))\n    \n    #check if image is to big\n    too_big = True\n    i = 0\n    while too_big:\n        w, h = image.level_dimensions[i]\n        if w*h<2**26:\n            too_big = False\n        else:\n            i = i + 1\n            \n    #draw info into image\n    image = image.read_region((0,0), i, image.level_dimensions[i])\n    draw = ImageDraw.Draw(image)\n    font = ImageFont.truetype('/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf', fontsize)\n    draw.text((0, 0), text, (0, 0, 0))\n            \n    return image, info","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"for prvdr in ['radboud', 'karolinska']:\n    for i in range(10):\n        img, info = getSampleImageWithInfo(provider=prvdr)\n        img.save(fp=info['image_id'][0] + '.png')","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}