{"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_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"!pip install '/kaggle/input/competitionpackages/wheels/torch-1.7.1+cu110-cp37-cp37m-linux_x86_64.whl' --no-deps\n!pip install '/kaggle/input/competitionpackages/wheels/torchvision-0.8.2+cu110-cp37-cp37m-linux_x86_64.whl' --no-deps\n!pip install '/kaggle/input/competitionpackages/wheels/torchaudio-0.7.2-cp37-cp37m-manylinux1_x86_64.whl' --no-deps","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2021-12-01T05:08:56.095817Z","iopub.execute_input":"2021-12-01T05:08:56.096166Z","iopub.status.idle":"2021-12-01T05:10:01.897631Z","shell.execute_reply.started":"2021-12-01T05:08:56.096132Z","shell.execute_reply":"2021-12-01T05:10:01.896693Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!pip install '/kaggle/input/1145141919810/mmdetectionv2180/addict-2.4.0-py3-none-any.whl' --no-deps\n!pip install '/kaggle/input/1145141919810/mmdetectionv2180/yapf-0.31.0-py2.py3-none-any.whl' --no-deps\n!pip install '/kaggle/input/1145141919810/mmdetectionv2180/terminal-0.4.0-py3-none-any.whl' --no-deps\n!pip install '/kaggle/input/1145141919810/mmdetectionv2180/terminaltables-3.1.0-py3-none-any.whl' --no-deps\n!pip install '/kaggle/input/1145141919810/mmdetectionv2180/mmcv_full-1_3_17-cu110-torch1_7_1/mmcv_full-1.3.17-cp37-cp37m-manylinux1_x86_64.whl' --no-deps\n!pip install '/kaggle/input/1145141919810/mmdetectionv2180/pycocotools-2.0.2/pycocotools-2.0.2' --no-deps\n!pip install '/kaggle/input/1145141919810/mmdetectionv2180/mmpycocotools-12.0.3/mmpycocotools-12.0.3' --no-deps","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2021-12-01T05:10:01.900139Z","iopub.execute_input":"2021-12-01T05:10:01.900449Z","iopub.status.idle":"2021-12-01T05:12:47.78546Z","shell.execute_reply.started":"2021-12-01T05:10:01.900411Z","shell.execute_reply":"2021-12-01T05:12:47.784604Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!rm -rf mmdetection\n\n!cp -r /kaggle/input/1145141919810/mmdetectionv2180/mmdetection-2.18.0 /kaggle/working/\n!mv /kaggle/working/mmdetection-2.18.0 /kaggle/working/mmdetection\n%cd /kaggle/working/mmdetection\n!pip install -e .\n#!rm /kaggle/working/mmdetection/configs/_base_/datasets/coco_instance.py\n#!mv /kaggle/input/cocoinstance/coco_instance.py /kaggle/working/mmdetection/configs/_base_/datasets","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2021-12-01T05:12:47.788975Z","iopub.execute_input":"2021-12-01T05:12:47.789216Z","iopub.status.idle":"2021-12-01T05:13:24.269895Z","shell.execute_reply.started":"2021-12-01T05:12:47.789188Z","shell.execute_reply":"2021-12-01T05:13:24.268859Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import torch\nimport torch.nn as nn\nimport torchvision.transforms as transforms\nimport torch.nn.functional as F\nimport sklearn\nimport torchvision\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.preprocessing import LabelEncoder\nimport numpy as np\nimport cupy as cp\nimport gc\nimport pandas as pd\nimport os\nimport matplotlib.pyplot as plt\nimport PIL\nimport json\nfrom PIL import Image, ImageEnhance\nimport albumentations as A\nimport mmdet\nimport mmcv\nfrom albumentations.pytorch import ToTensorV2\nimport seaborn as sns\nimport glob\nfrom pathlib import Path\nimport pycocotools\nfrom pycocotools import mask\nimport numpy.random\nimport random\nimport cv2\nimport re\nimport shutil\nfrom mmdet.datasets import build_dataset\nfrom mmdet.models import build_detector\nfrom mmdet.apis import train_detector\nfrom mmdet.apis import inference_detector, init_detector, show_result_pyplot, set_random_seed","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2021-12-01T05:13:24.272208Z","iopub.execute_input":"2021-12-01T05:13:24.272531Z","iopub.status.idle":"2021-12-01T05:13:24.285646Z","shell.execute_reply.started":"2021-12-01T05:13:24.272486Z","shell.execute_reply":"2021-12-01T05:13:24.284817Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"%cd ..","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2021-12-01T05:13:24.289166Z","iopub.execute_input":"2021-12-01T05:13:24.289487Z","iopub.status.idle":"2021-12-01T05:13:24.301722Z","shell.execute_reply.started":"2021-12-01T05:13:24.289447Z","shell.execute_reply":"2021-12-01T05:13:24.300879Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"IMG_WIDTH = 704\nIMG_HEIGHT = 520","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2021-12-01T05:13:24.303775Z","iopub.execute_input":"2021-12-01T05:13:24.304938Z","iopub.status.idle":"2021-12-01T05:13:24.309996Z","shell.execute_reply.started":"2021-12-01T05:13:24.304899Z","shell.execute_reply":"2021-12-01T05:13:24.309048Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def rle_decode(mask_rle, shape):\n    '''\n    mask_rle: run-length as string formated (start length)\n    shape: (height,width) of array to return \n    Returns numpy array, 1 - mask, 0 - background\n\n    '''\n    s = mask_rle.split()\n    starts, lengths = [np.asarray(x, dtype=int) for x in (s[0:][::2], s[1:][::2])]\n    starts -= 1\n    ends = starts + lengths\n    img = np.zeros(shape[0]*shape[1], dtype=np.uint8)\n    for lo, hi in zip(starts, ends):\n        img[lo:hi] = 1\n    return img.reshape(shape)\n\ndef rle_encode(img):\n    '''\n    img: numpy array, 1 - mask, 0 - background\n    Returns run length as string formated\n    '''\n    pixels = img.flatten()\n    pixels = np.concatenate([[0], pixels, [0]])\n    runs = np.where(pixels[1:] != pixels[:-1])[0] + 1\n    runs[1::2] -= runs[::2]\n    return ' '.join(str(x) for x in runs)","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2021-12-01T05:13:24.311542Z","iopub.execute_input":"2021-12-01T05:13:24.311798Z","iopub.status.idle":"2021-12-01T05:13:24.321611Z","shell.execute_reply.started":"2021-12-01T05:13:24.311765Z","shell.execute_reply":"2021-12-01T05:13:24.320568Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def rle_encoding(x):\n    dots = np.where(x.flatten() == 1)[0]\n    run_lengths = []\n    prev = -2\n    for b in dots:\n        if (b>prev+1): run_lengths.extend((b + 1, 0))\n        run_lengths[-1] += 1\n        prev = b\n    return ' '.join(map(str, run_lengths))","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2021-12-01T05:13:24.323539Z","iopub.execute_input":"2021-12-01T05:13:24.323817Z","iopub.status.idle":"2021-12-01T05:13:24.331642Z","shell.execute_reply.started":"2021-12-01T05:13:24.323781Z","shell.execute_reply":"2021-12-01T05:13:24.330925Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def get_mask_from_result(result):\n    d = {True : 1, False : 0}\n    u,inv = np.unique(result,return_inverse = True)\n    mk = cp.array([d[x] for x in u])[inv].reshape(result.shape)\n#     print(mk.shape)\n    return mk","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2021-12-01T05:13:24.333321Z","iopub.execute_input":"2021-12-01T05:13:24.333843Z","iopub.status.idle":"2021-12-01T05:13:24.342754Z","shell.execute_reply.started":"2021-12-01T05:13:24.333793Z","shell.execute_reply":"2021-12-01T05:13:24.341861Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def does_overlap(mask, other_masks):\n    for other_mask in other_masks:\n        if np.sum(np.logical_and(mask, other_mask)) > 0:\n            #import pdb; pdb.set_trace()\n            #print(\"Found overlapping masks!\")\n            return True\n    return False\n\n\ndef remove_overlapping_pixels(mask, other_masks):\n    for other_mask in other_masks:\n        if np.sum(np.logical_and(mask, other_mask)) > 0:\n            print(\"Overlap detected\")\n            mask[np.logical_and(mask, other_mask)] = 0\n    return mask","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2021-12-01T05:13:24.344074Z","iopub.execute_input":"2021-12-01T05:13:24.344913Z","iopub.status.idle":"2021-12-01T05:13:24.352129Z","shell.execute_reply.started":"2021-12-01T05:13:24.344876Z","shell.execute_reply":"2021-12-01T05:13:24.35129Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**model**","metadata":{}},{"cell_type":"code","source":"# %%writefile labels.txt\n# shsy5y\n# cort\n# astro","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2021-12-01T05:13:24.353281Z","iopub.execute_input":"2021-12-01T05:13:24.35403Z","iopub.status.idle":"2021-12-01T05:13:24.361079Z","shell.execute_reply.started":"2021-12-01T05:13:24.353994Z","shell.execute_reply":"2021-12-01T05:13:24.360267Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from mmcv import Config\ncfg = Config.fromfile('/kaggle/working/mmdetection/configs/cascade_rcnn/cascade_mask_rcnn_x101_64x4d_fpn_20e_coco.py')","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2021-12-01T05:13:24.362713Z","iopub.execute_input":"2021-12-01T05:13:24.363224Z","iopub.status.idle":"2021-12-01T05:13:24.392275Z","shell.execute_reply.started":"2021-12-01T05:13:24.363185Z","shell.execute_reply":"2021-12-01T05:13:24.391523Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"cfg.dataset_type = 'CocoDataset'\ncfg.classes = '/kaggle/working/labels.txt'\ncfg.data_root = '/kaggle/working'\n\nfor head in cfg.model.roi_head.bbox_head:\n    head.num_classes = 3\n    \ncfg.model.roi_head.mask_head.num_classes=3\n\ncfg.data.test.type = 'CocoDataset'\ncfg.data.test.classes = 'labels.txt'\ncfg.data.test.data_root = '../input/livecellshsy5y'\ncfg.data.test.ann_file = 'annotations_val.json'\ncfg.data.test.img_prefix = '/kaggle/input/sartorius-cell-instance-segmentation/LIVECell_dataset_2021/images/livecell_train_val_images/SHSY5Y/'\n\ncfg.data.train.type = 'CocoDataset'\ncfg.data.train.data_root = '../input/livecellshsy5y'\ncfg.data.train.ann_file = 'annotations_train.json'\ncfg.data.train.img_prefix = '/kaggle/input/sartorius-cell-instance-segmentation/LIVECell_dataset_2021/images/livecell_train_val_images/SHSY5Y/'\ncfg.data.train.classes = 'labels.txt'\n\ncfg.data.val.type = 'CocoDataset'\ncfg.data.val.data_root = '../input/livecellshsy5y'\ncfg.data.val.ann_file = 'annotations_val.json'\ncfg.data.val.img_prefix = '/kaggle/input/sartorius-cell-instance-segmentation/LIVECell_dataset_2021/images/livecell_train_val_images/SHSY5Y/'\ncfg.data.val.classes = 'labels.txt'\n\ncfg.train_pipeline = [\n    dict(type='LoadImageFromFile'),\n    dict(type='LoadAnnotations', with_bbox=True, with_mask=True),\n    dict(type='RandomFlip', flip_ratio=0.5),\n    dict(type='Resize', img_scale=[(1333, 800), (2666, 1600)], keep_ratio=True),\n    dict(\n        type='Normalize',\n        mean=[123.675, 116.28, 103.53],\n        std=[58.395, 57.12, 57.375],\n        to_rgb=True),\n    dict(type='Pad', size_divisor=32),\n    dict(type='DefaultFormatBundle'), \n    dict(type='Collect', keys=['img', 'gt_masks'])\n]\n\ncfg.val_pipeline = [\n    dict(type='LoadImageFromFile'),\n    dict(type='LoadAnnotations', with_bbox=True, with_mask=True),\n    dict(type='RandomFlip', flip_ratio=0.5),\n\n    dict(\n        type='Normalize',\n        mean=[123.675, 116.28, 103.53],\n        std=[58.395, 57.12, 57.375],\n        to_rgb=True),\n    dict(type='Pad', size_divisor=32),\n    dict(type='DefaultFormatBundle'), \n    dict(type='Collect', keys=['img', 'gt_masks'])\n    #\"\"\", 'gt_bboxes', 'gt_masks', 'gt_labels']\"\"\")\n]\n\ncfg.test_pipeline = [\n    dict(type='LoadImageFromWebcam'),\n    dict(type='LoadImageFromFile'),\n    dict(type='LoadAnnotations',with_mask=True),\n    dict(type='Resize', img_scale=[(480, 1333), (520, 1333),\n                                   (640, 1333), (704, 1333),\n                                   (768, 1333)], multiscale_mode='value', keep_ratio=True),\n    dict(\n        type='Normalize',\n        mean=[128, 128, 128],\n        std=[11.58, 11.58, 11.58],\n        to_rgb=True),\n    dict(type='Pad', size_divisor=32),\n    dict(type='DefaultFormatBundle'),\n    dict(type='Collect', keys=['img'])\n]\n\ncfg.work_dir = '/kaggle/working/model_output/cascade_mask_rcnn'\n\ncfg.data.samples_per_gpu = 2\ncfg.data.workers_per_gpu = 2\n\ncfg.data.train.pipeline = cfg.train_pipeline\ncfg.model.test_cfg.rcnn.max_per_img = 540\n#cfg.data.test.pipeline = cfg.test_pipeline\n#cfg.data.test.pipeline[0] = dict(type = 'LoadImageFromWebcam')\n\ncfg.evaluation.metric = 'segm'\ncfg.evaluation.interval = 4\n\ncfg.checkpoint_config.interval = 4\ncfg.runner.max_epochs = 12\ncfg.log_config.interval = 50\n\ncfg.seed = 0\nset_random_seed(0, deterministic=False)\ncfg.gpu_ids = range(1)\n# cfg.fp16 = dict(loss_scale=512.0)\n# meta = dict()\n# meta['config'] = cfg.pretty_text\nprint(f'Config:\\n{cfg.pretty_text}')","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2021-12-01T05:13:24.393763Z","iopub.execute_input":"2021-12-01T05:13:24.394459Z","iopub.status.idle":"2021-12-01T05:13:25.206482Z","shell.execute_reply.started":"2021-12-01T05:13:24.39442Z","shell.execute_reply":"2021-12-01T05:13:25.205707Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**inference**","metadata":{}},{"cell_type":"code","source":"masks = []\nfiles = []","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2021-12-01T05:13:25.209735Z","iopub.execute_input":"2021-12-01T05:13:25.210485Z","iopub.status.idle":"2021-12-01T05:13:25.213951Z","shell.execute_reply.started":"2021-12-01T05:13:25.210444Z","shell.execute_reply":"2021-12-01T05:13:25.213258Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"confidence_thresholds = {0: 0.15, 1: 0.55, 2: 0.35}","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2021-12-01T05:13:25.215115Z","iopub.execute_input":"2021-12-01T05:13:25.21581Z","iopub.status.idle":"2021-12-01T05:13:25.223907Z","shell.execute_reply.started":"2021-12-01T05:13:25.215773Z","shell.execute_reply":"2021-12-01T05:13:25.223073Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# datasets = [build_dataset(cfg.data.train)]\nmodel = init_detector(cfg, '../input/epoch-9/sys5h_epoch6.pth')\n\nfor file in sorted(os.listdir('../input/sartorius-cell-instance-segmentation/LIVECell_dataset_2021/images/livecell_train_val_images/SHSY5Y/')):\n    img = mmcv.imread('../input/sartorius-cell-instance-segmentation/LIVECell_dataset_2021/images/livecell_train_val_images/SHSY5Y/' + file)\n    result = inference_detector(model, img)\n    show_result_pyplot(model, img, result)\n    msk = []\n    for i, classe in enumerate(result[0]):\n        if classe.shape != (0, 5):\n            bbs = classe\n#             print(bbs)\n            sgs = result[1][i]\n            for bb, sg in zip(bbs,sgs):\n                box = bb[:4]\n                cnf = bb[4]\n                if cnf >= confidence_thresholds[i]:\n                    mask = get_mask_from_result(sg)\n                    mask = remove_overlapping_pixels(mask, msk)\n                    msk.append(mask)\n                \n    for mk in msk:\n            rle_mask = rle_encoding(mk)\n            masks.append(rle_mask)\n            files.append(str(file.split('.')[0]))","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2021-12-01T05:13:25.225166Z","iopub.execute_input":"2021-12-01T05:13:25.225557Z","iopub.status.idle":"2021-12-01T05:13:39.627621Z","shell.execute_reply.started":"2021-12-01T05:13:25.225521Z","shell.execute_reply":"2021-12-01T05:13:39.625362Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"files = pd.Series(files, name='id')\npreds = pd.Series(masks, name='predicted')","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2021-12-01T05:13:39.630455Z","iopub.status.idle":"2021-12-01T05:13:39.633878Z","shell.execute_reply.started":"2021-12-01T05:13:39.633606Z","shell.execute_reply":"2021-12-01T05:13:39.633633Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"submission_df = pd.concat([files, preds], axis=1)","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2021-12-01T05:13:39.637709Z","iopub.status.idle":"2021-12-01T05:13:39.639752Z","shell.execute_reply.started":"2021-12-01T05:13:39.63949Z","shell.execute_reply":"2021-12-01T05:13:39.639518Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"submission_df.to_csv('submission.csv', index=False)","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2021-12-01T05:13:39.643324Z","iopub.status.idle":"2021-12-01T05:13:39.643978Z","shell.execute_reply.started":"2021-12-01T05:13:39.643726Z","shell.execute_reply":"2021-12-01T05:13:39.643751Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"submission_df","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2021-12-01T05:13:39.648056Z","iopub.status.idle":"2021-12-01T05:13:39.648661Z","shell.execute_reply.started":"2021-12-01T05:13:39.648434Z","shell.execute_reply":"2021-12-01T05:13:39.648459Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"shutil.rmtree('/kaggle/working/mmdetection')","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2021-12-01T05:13:39.649901Z","iopub.status.idle":"2021-12-01T05:13:39.65053Z","shell.execute_reply.started":"2021-12-01T05:13:39.650292Z","shell.execute_reply":"2021-12-01T05:13:39.650317Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"execution_count":null,"outputs":[]}]}