{"cells":[{"metadata":{"trusted":true},"cell_type":"code","source":"from fastai.vision.all import *\nimport pandas as pd\nimport numpy as np\nfrom tqdm.autonotebook import tqdm\nimport imageio","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"df = pd.read_csv('../input/hpa-public-data-negative-sample-dataset-2/df_negative.csv')\ndf['fname'] = df['Image'].apply(lambda r: r.split('/')[-1])\ndf.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"path = Path('../input/hpa-public-data-negative-sample-dataset-2/negative_cells')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"def get_size(fname):\n    try:\n        size = PILImage.create(path/f'{fname}_blue.png').shape[0]\n        return size\n    except: \n        return -1\n    \nget_size('1615_A8_5')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"df['size'] = df['fname'].apply(get_size)\ndf.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"df['size'].value_counts()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"df = df[df['size'] != -1]","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"df = df.reset_index(drop=True)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"len(df)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"!pip install -q \"../input/pycocotools/pycocotools-2.0-cp37-cp37m-linux_x86_64.whl\"\n!pip install -q \"../input/hpapytorchzoozip/pytorch_zoo-master\"\n!pip install -q \"../input/hpacellsegmentatormaster/HPA-Cell-Segmentation-master\"","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"def build_image_names(image_id: str) -> list:\n    mt = str(path/f'{image_id}_red.png')   \n    er = str(path/f'{image_id}_yellow.png') \n    nu = str(path/f'{image_id}_blue.png')\n    return [[mt], [er], [nu]]\nbuild_image_names('738_G1_3')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"import hpacellseg.cellsegmentator as cellsegmentator\nfrom hpacellseg.utils import label_cell, label_nuclei\n\nNUC_MODEL = '../input/hpacellsegmentatormodelweights/dpn_unet_nuclei_v1.pth'\nCELL_MODEL = '../input/hpacellsegmentatormodelweights/dpn_unet_cell_3ch_v1.pth'\n\nsegmentator = cellsegmentator.CellSegmentator(\n    NUC_MODEL,\n    CELL_MODEL,\n    scale_factor=0.25,\n    device='cuda',\n    padding=True,\n    multi_channel_model=True\n)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"sdf = df.sample(frac=1, random_state=42)\nsdf['size'].value_counts()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"sub_dfs = []\nfor dim in sdf['size'].unique():\n    x = sdf[sdf['size'] == dim].copy().reset_index(drop=True)\n    sub_dfs.append(x)","execution_count":null,"outputs":[]},{"metadata":{"_kg_hide-input":false,"trusted":true},"cell_type":"code","source":"cell_dir = 'cells'\nnucl_dir = 'nucls'\nos.makedirs(cell_dir, exist_ok=True)\nos.makedirs(nucl_dir, exist_ok=True)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"bs = 8\nfor sub in sub_dfs:\n    print(f'Starting prediction for image size: {sub[\"size\"].loc[0]}')\n    for start in range(0, len(sub), bs):\n        if start + bs > len(sub): end = len(sub)\n        else: end = start + bs\n            \n        images = []\n        image_ids = []\n        for row in range(start, end):\n            image_id = sub['fname'].loc[row]\n            image_ids.append(image_id)\n            img = build_image_names(image_id=image_id)\n            images.append(img)\n                    \n        images = np.stack(images).squeeze()\n        images = np.transpose(images).tolist()\n               \n        nuc_segmentations = segmentator.pred_nuclei(images[2])\n        cell_segmentations = segmentator.pred_cells(images)\n        \n        print('Worked OK!')\n        break\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"","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}