{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.13","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"nvidiaTeslaT4","dataSources":[{"sourceId":10338,"databundleVersionId":862042,"sourceType":"competition"}],"dockerImageVersionId":30646,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":true}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import pandas as pd\nimport cv2\nimport matplotlib.pyplot as plt","metadata":{"execution":{"iopub.status.busy":"2024-03-01T20:11:03.657197Z","iopub.execute_input":"2024-03-01T20:11:03.657995Z","iopub.status.idle":"2024-03-01T20:11:04.282677Z","shell.execute_reply.started":"2024-03-01T20:11:03.657964Z","shell.execute_reply":"2024-03-01T20:11:04.281893Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df = pd.read_csv(\"/kaggle/input/rsna-pneumonia-detection-challenge/stage_2_train_labels.csv\")","metadata":{"execution":{"iopub.status.busy":"2024-03-01T20:11:04.284305Z","iopub.execute_input":"2024-03-01T20:11:04.284732Z","iopub.status.idle":"2024-03-01T20:11:04.351557Z","shell.execute_reply.started":"2024-03-01T20:11:04.284703Z","shell.execute_reply":"2024-03-01T20:11:04.350649Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df.head()","metadata":{"execution":{"iopub.status.busy":"2024-03-01T20:11:04.352922Z","iopub.execute_input":"2024-03-01T20:11:04.353532Z","iopub.status.idle":"2024-03-01T20:11:04.373006Z","shell.execute_reply.started":"2024-03-01T20:11:04.353499Z","shell.execute_reply":"2024-03-01T20:11:04.372185Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!pip install pydicom","metadata":{"execution":{"iopub.status.busy":"2024-03-01T20:11:04.374889Z","iopub.execute_input":"2024-03-01T20:11:04.375148Z","iopub.status.idle":"2024-03-01T20:11:18.530235Z","shell.execute_reply.started":"2024-03-01T20:11:04.375126Z","shell.execute_reply":"2024-03-01T20:11:18.529236Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import os\nimport numpy as np\nimport pydicom\nfrom PIL import Image\nimport warnings\nwarnings.filterwarnings(\"ignore\")\n\nfor dcm_path in os.listdir(\"/kaggle/input/rsna-pneumonia-detection-challenge/stage_2_train_images\"):\n    im = pydicom.dcmread(f\"/kaggle/input/rsna-pneumonia-detection-challenge/stage_2_train_images/{dcm_path}\")\n    im = im.pixel_array.astype(float)\n\n    rescaled_image = (np.maximum(im,0)/im.max())*255\n    final_image = np.uint8(rescaled_image)\n\n    final_image = Image.fromarray(final_image)\n    final_image = final_image.resize((1024, 1024))\n    #final_image.show()\n    final_image.save(f\"{dcm_path[:-4]}.jpg\")","metadata":{"execution":{"iopub.status.busy":"2024-03-01T20:13:27.149433Z","iopub.execute_input":"2024-03-01T20:13:27.150355Z","iopub.status.idle":"2024-03-01T20:23:41.471376Z","shell.execute_reply.started":"2024-03-01T20:13:27.150321Z","shell.execute_reply":"2024-03-01T20:23:41.470510Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### Faster-RCNN","metadata":{}},{"cell_type":"code","source":"import numpy as np\nimport pandas as pd\nimport os","metadata":{"execution":{"iopub.status.busy":"2024-03-01T20:24:12.058436Z","iopub.execute_input":"2024-03-01T20:24:12.059304Z","iopub.status.idle":"2024-03-01T20:24:12.063309Z","shell.execute_reply.started":"2024-03-01T20:24:12.059273Z","shell.execute_reply":"2024-03-01T20:24:12.062390Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import random\nfrom PIL import Image, ImageDraw\nfrom collections import Counter\nimport matplotlib.pyplot as plt\nfrom sklearn.model_selection import train_test_split\n\nimport torch\nimport torchvision\nfrom torchvision import transforms as T\nfrom torchvision.models.detection.faster_rcnn import FastRCNNPredictor","metadata":{"execution":{"iopub.status.busy":"2024-03-01T20:24:13.194621Z","iopub.execute_input":"2024-03-01T20:24:13.195288Z","iopub.status.idle":"2024-03-01T20:24:20.416943Z","shell.execute_reply.started":"2024-03-01T20:24:13.195255Z","shell.execute_reply":"2024-03-01T20:24:20.416166Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df = df[df[\"x\"].isnull() != True]\ndf","metadata":{"execution":{"iopub.status.busy":"2024-03-01T20:24:20.418487Z","iopub.execute_input":"2024-03-01T20:24:20.419132Z","iopub.status.idle":"2024-03-01T20:24:20.452961Z","shell.execute_reply.started":"2024-03-01T20:24:20.419104Z","shell.execute_reply":"2024-03-01T20:24:20.452039Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df.info()\ndf.head()","metadata":{"execution":{"iopub.status.busy":"2024-03-01T20:24:20.454102Z","iopub.execute_input":"2024-03-01T20:24:20.454386Z","iopub.status.idle":"2024-03-01T20:24:20.489631Z","shell.execute_reply.started":"2024-03-01T20:24:20.454361Z","shell.execute_reply":"2024-03-01T20:24:20.488805Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"unique_imgs = df.patientId.unique()","metadata":{"execution":{"iopub.status.busy":"2024-03-01T20:24:20.491695Z","iopub.execute_input":"2024-03-01T20:24:20.492452Z","iopub.status.idle":"2024-03-01T20:24:20.498467Z","shell.execute_reply.started":"2024-03-01T20:24:20.492418Z","shell.execute_reply":"2024-03-01T20:24:20.497613Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"unique_imgs","metadata":{"execution":{"iopub.status.busy":"2024-03-01T20:24:20.499612Z","iopub.execute_input":"2024-03-01T20:24:20.499974Z","iopub.status.idle":"2024-03-01T20:24:20.510048Z","shell.execute_reply.started":"2024-03-01T20:24:20.499942Z","shell.execute_reply":"2024-03-01T20:24:20.509144Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df.loc[:, \"x2\"] = df[\"x\"] + df[\"width\"]\ndf.loc[:, \"y2\"] = df[\"y\"] + df[\"height\"]","metadata":{"execution":{"iopub.status.busy":"2024-03-01T20:24:27.452900Z","iopub.execute_input":"2024-03-01T20:24:27.453317Z","iopub.status.idle":"2024-03-01T20:24:27.460882Z","shell.execute_reply.started":"2024-03-01T20:24:27.453286Z","shell.execute_reply":"2024-03-01T20:24:27.459978Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df.drop([\"width\",\"height\",\"Target\"], axis = 1, inplace=True)","metadata":{"execution":{"iopub.status.busy":"2024-03-01T20:24:28.553402Z","iopub.execute_input":"2024-03-01T20:24:28.553899Z","iopub.status.idle":"2024-03-01T20:24:28.560462Z","shell.execute_reply.started":"2024-03-01T20:24:28.553867Z","shell.execute_reply":"2024-03-01T20:24:28.559426Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df.rename(columns = {'patientId':'image_id'}, inplace = True) ","metadata":{"execution":{"iopub.status.busy":"2024-03-01T20:24:29.993267Z","iopub.execute_input":"2024-03-01T20:24:29.994254Z","iopub.status.idle":"2024-03-01T20:24:29.999649Z","shell.execute_reply.started":"2024-03-01T20:24:29.994211Z","shell.execute_reply":"2024-03-01T20:24:29.998709Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df.head()","metadata":{"execution":{"iopub.status.busy":"2024-03-01T20:24:31.604600Z","iopub.execute_input":"2024-03-01T20:24:31.604999Z","iopub.status.idle":"2024-03-01T20:24:31.619082Z","shell.execute_reply.started":"2024-03-01T20:24:31.604970Z","shell.execute_reply":"2024-03-01T20:24:31.618105Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"class CustDat(torch.utils.data.Dataset):\n    def __init__(self, df, unique_imgs, indices):\n        self.df = df\n        self.unique_imgs = unique_imgs\n        self.indices = indices\n        \n    def __len__(self):\n        return len(self.indices)\n    \n    def __getitem__(self, idx):\n        image_name = self.unique_imgs[self.indices[idx]]\n        boxes = self.df[self.df.image_id == image_name].values[:, 1:].astype(\"float\")\n        img = Image.open(\"/kaggle/working/\"+image_name+\".jpg\").convert(\"RGB\")\n        labels = torch.ones((boxes.shape[0]), dtype = torch.int64)\n        target = {}\n        target[\"boxes\"] = torch.tensor(boxes)\n        target[\"label\"] = labels\n        \n        return T.ToTensor()(img), target","metadata":{"execution":{"iopub.status.busy":"2024-03-01T20:24:35.160175Z","iopub.execute_input":"2024-03-01T20:24:35.160849Z","iopub.status.idle":"2024-03-01T20:24:35.168666Z","shell.execute_reply.started":"2024-03-01T20:24:35.160802Z","shell.execute_reply":"2024-03-01T20:24:35.167713Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_ids, val_ids = train_test_split(range(unique_imgs.shape[0]), test_size = 0.1)","metadata":{"execution":{"iopub.status.busy":"2024-03-01T20:24:42.369761Z","iopub.execute_input":"2024-03-01T20:24:42.370164Z","iopub.status.idle":"2024-03-01T20:24:42.376882Z","shell.execute_reply.started":"2024-03-01T20:24:42.370135Z","shell.execute_reply":"2024-03-01T20:24:42.375892Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def custom_collate(data):\n    return data","metadata":{"execution":{"iopub.status.busy":"2024-03-01T20:24:43.721612Z","iopub.execute_input":"2024-03-01T20:24:43.721985Z","iopub.status.idle":"2024-03-01T20:24:43.726315Z","shell.execute_reply.started":"2024-03-01T20:24:43.721956Z","shell.execute_reply":"2024-03-01T20:24:43.725432Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_d1 = torch.utils.data.DataLoader(CustDat(df, unique_imgs, train_ids),\n                                      batch_size=16,\n                                      shuffle=True,\n                                      collate_fn=custom_collate,\n                                      pin_memory=True if torch.cuda.is_available() else False)\n\nval_d1 = torch.utils.data.DataLoader(CustDat(df, unique_imgs, val_ids),\n                                      batch_size=8,\n                                      shuffle=False,\n                                      collate_fn=custom_collate,\n                                      pin_memory=True if torch.cuda.is_available() else False)","metadata":{"execution":{"iopub.status.busy":"2024-03-01T20:24:48.612993Z","iopub.execute_input":"2024-03-01T20:24:48.613364Z","iopub.status.idle":"2024-03-01T20:24:48.669272Z","shell.execute_reply.started":"2024-03-01T20:24:48.613333Z","shell.execute_reply":"2024-03-01T20:24:48.668005Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model = torchvision.models.detection.fasterrcnn_resnet50_fpn(pretrained=True)\nnum_classes = 2\nin_features = model.roi_heads.box_predictor.cls_score.in_features\nmodel.roi_heads.box_predictor = FastRCNNPredictor(in_features, num_classes)","metadata":{"execution":{"iopub.status.busy":"2024-03-01T20:24:50.686230Z","iopub.execute_input":"2024-03-01T20:24:50.686588Z","iopub.status.idle":"2024-03-01T20:24:52.715646Z","shell.execute_reply.started":"2024-03-01T20:24:50.686561Z","shell.execute_reply":"2024-03-01T20:24:52.714687Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"device = torch.device(\"cuda\") if torch.cuda.is_available() else \"cpu\"","metadata":{"execution":{"iopub.status.busy":"2024-03-01T20:24:54.831778Z","iopub.execute_input":"2024-03-01T20:24:54.832458Z","iopub.status.idle":"2024-03-01T20:24:54.837257Z","shell.execute_reply.started":"2024-03-01T20:24:54.832428Z","shell.execute_reply":"2024-03-01T20:24:54.836219Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"device","metadata":{"execution":{"iopub.status.busy":"2024-03-01T20:24:55.729618Z","iopub.execute_input":"2024-03-01T20:24:55.730000Z","iopub.status.idle":"2024-03-01T20:24:55.735821Z","shell.execute_reply.started":"2024-03-01T20:24:55.729970Z","shell.execute_reply":"2024-03-01T20:24:55.734908Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"optimizer = torch.optim.SGD(model.parameters(), lr=0.001)\nnum_epochs = 5","metadata":{"execution":{"iopub.status.busy":"2024-03-01T20:24:57.209549Z","iopub.execute_input":"2024-03-01T20:24:57.209890Z","iopub.status.idle":"2024-03-01T20:24:57.215900Z","shell.execute_reply.started":"2024-03-01T20:24:57.209863Z","shell.execute_reply":"2024-03-01T20:24:57.214800Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model.to(device)\nfor epoch in range(num_epochs):\n    epoch_loss = 0\n    for data in train_d1:\n        imgs = []\n        targets = []\n        for d in data:\n            imgs.append(d[0].to(device))\n            targ = {}\n            targ[\"boxes\"] = d[1][\"boxes\"].to(device)\n            targ[\"labels\"] = d[1][\"label\"].to(device)\n            targets.append(targ)\n        loss_dict = model(imgs, targets)\n        loss = sum(v for v in loss_dict.values())\n        epoch_loss += loss.cpu().detach().numpy()\n        optimizer.zero_grad()\n        loss.backward()\n        optimizer.step()\n    print(epoch_loss)","metadata":{"execution":{"iopub.status.busy":"2024-03-01T20:25:02.146352Z","iopub.execute_input":"2024-03-01T20:25:02.146746Z","iopub.status.idle":"2024-03-01T21:37:01.672155Z","shell.execute_reply.started":"2024-03-01T20:25:02.146719Z","shell.execute_reply":"2024-03-01T21:37:01.671124Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model.eval()\ndata = iter(val_d1).__next__()","metadata":{"execution":{"iopub.status.busy":"2024-03-01T21:39:16.834476Z","iopub.execute_input":"2024-03-01T21:39:16.835085Z","iopub.status.idle":"2024-03-01T21:39:16.964191Z","shell.execute_reply.started":"2024-03-01T21:39:16.835053Z","shell.execute_reply":"2024-03-01T21:39:16.962433Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"img = data[0][0]","metadata":{"execution":{"iopub.status.busy":"2024-03-01T21:39:19.162902Z","iopub.execute_input":"2024-03-01T21:39:19.163689Z","iopub.status.idle":"2024-03-01T21:39:19.168417Z","shell.execute_reply.started":"2024-03-01T21:39:19.163656Z","shell.execute_reply":"2024-03-01T21:39:19.167183Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"img = data[0][0]\nboxes = data[0][1][\"boxes\"]\nlabels = data[0][1][\"label\"]","metadata":{"execution":{"iopub.status.busy":"2024-03-01T21:39:21.266208Z","iopub.execute_input":"2024-03-01T21:39:21.266959Z","iopub.status.idle":"2024-03-01T21:39:21.271765Z","shell.execute_reply.started":"2024-03-01T21:39:21.266924Z","shell.execute_reply":"2024-03-01T21:39:21.270773Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"output = model([img.to(device)])","metadata":{"execution":{"iopub.status.busy":"2024-03-01T21:39:23.138123Z","iopub.execute_input":"2024-03-01T21:39:23.139087Z","iopub.status.idle":"2024-03-01T21:39:23.263142Z","shell.execute_reply.started":"2024-03-01T21:39:23.139052Z","shell.execute_reply":"2024-03-01T21:39:23.262226Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"output","metadata":{"execution":{"iopub.status.busy":"2024-03-01T21:39:25.301245Z","iopub.execute_input":"2024-03-01T21:39:25.302171Z","iopub.status.idle":"2024-03-01T21:39:25.314955Z","shell.execute_reply.started":"2024-03-01T21:39:25.302130Z","shell.execute_reply":"2024-03-01T21:39:25.313968Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"out_bbox = output[0][\"boxes\"]\nout_scores = output[0][\"scores\"]","metadata":{"execution":{"iopub.status.busy":"2024-03-01T21:39:27.513738Z","iopub.execute_input":"2024-03-01T21:39:27.514635Z","iopub.status.idle":"2024-03-01T21:39:27.518905Z","shell.execute_reply.started":"2024-03-01T21:39:27.514601Z","shell.execute_reply":"2024-03-01T21:39:27.517883Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"keep = torchvision.ops.nms(out_bbox, out_scores, 0.45)","metadata":{"execution":{"iopub.status.busy":"2024-03-01T21:39:28.963266Z","iopub.execute_input":"2024-03-01T21:39:28.963629Z","iopub.status.idle":"2024-03-01T21:39:28.969012Z","shell.execute_reply.started":"2024-03-01T21:39:28.963601Z","shell.execute_reply":"2024-03-01T21:39:28.967724Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"out_bbox.shape, keep.shape","metadata":{"execution":{"iopub.status.busy":"2024-03-01T21:39:30.788179Z","iopub.execute_input":"2024-03-01T21:39:30.788917Z","iopub.status.idle":"2024-03-01T21:39:30.794893Z","shell.execute_reply.started":"2024-03-01T21:39:30.788874Z","shell.execute_reply":"2024-03-01T21:39:30.793992Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"im = (img.permute(1, 2, 0).cpu().detach().numpy() * 255).astype(\"uint8\") ","metadata":{"execution":{"iopub.status.busy":"2024-03-01T21:39:32.331153Z","iopub.execute_input":"2024-03-01T21:39:32.331523Z","iopub.status.idle":"2024-03-01T21:39:32.340152Z","shell.execute_reply.started":"2024-03-01T21:39:32.331494Z","shell.execute_reply":"2024-03-01T21:39:32.339212Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"im","metadata":{"execution":{"iopub.status.busy":"2024-03-01T21:39:33.738697Z","iopub.execute_input":"2024-03-01T21:39:33.739079Z","iopub.status.idle":"2024-03-01T21:39:33.746255Z","shell.execute_reply.started":"2024-03-01T21:39:33.739049Z","shell.execute_reply":"2024-03-01T21:39:33.745352Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"vsample = Image.fromarray(im)","metadata":{"execution":{"iopub.status.busy":"2024-03-01T21:39:36.082858Z","iopub.execute_input":"2024-03-01T21:39:36.083249Z","iopub.status.idle":"2024-03-01T21:39:36.106332Z","shell.execute_reply.started":"2024-03-01T21:39:36.083218Z","shell.execute_reply":"2024-03-01T21:39:36.105327Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"draw = ImageDraw.Draw(vsample)\nfor box in boxes:\n    draw.rectangle(list(box), fill=None, outline = \"red\")\nvsample","metadata":{"execution":{"iopub.status.busy":"2024-03-01T21:39:37.161422Z","iopub.execute_input":"2024-03-01T21:39:37.161784Z","iopub.status.idle":"2024-03-01T21:39:37.420662Z","shell.execute_reply.started":"2024-03-01T21:39:37.161749Z","shell.execute_reply":"2024-03-01T21:39:37.419746Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}