{"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":"import numpy as np\nimport pandas as pd\nimport os\nimport matplotlib.pyplot as plt\nimport random\n\nimport tensorflow as tf\nfrom tensorflow.keras.utils import to_categorical\nfrom tensorflow.keras.preprocessing.image import load_img, img_to_array\nfrom tensorflow.python.keras.preprocessing.image import ImageDataGenerator\n\nfrom sklearn.metrics import classification_report, log_loss, accuracy_score\nfrom sklearn.model_selection import train_test_split\nfrom tqdm import tqdm","metadata":{"papermill":{"duration":7.647909,"end_time":"2021-05-21T15:24:37.500217","exception":false,"start_time":"2021-05-21T15:24:29.852308","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2021-08-01T15:52:54.844694Z","iopub.execute_input":"2021-08-01T15:52:54.845085Z","iopub.status.idle":"2021-08-01T15:53:00.311033Z","shell.execute_reply.started":"2021-08-01T15:52:54.845004Z","shell.execute_reply":"2021-08-01T15:53:00.310212Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_dir = '../input/aptos2019-blindness-detection/train_images'\ntest_dir = '../input/aptos2019-blindness-detection/test_images'","metadata":{"papermill":{"duration":0.029589,"end_time":"2021-05-21T15:24:37.552405","exception":false,"start_time":"2021-05-21T15:24:37.522816","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2021-08-01T15:53:01.422899Z","iopub.execute_input":"2021-08-01T15:53:01.423255Z","iopub.status.idle":"2021-08-01T15:53:01.426716Z","shell.execute_reply.started":"2021-08-01T15:53:01.423225Z","shell.execute_reply":"2021-08-01T15:53:01.425784Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_csv=pd.read_csv('../input/aptos2019-blindness-detection/train.csv')\ntest_csv=pd.read_csv('../input/aptos2019-blindness-detection/test.csv')","metadata":{"execution":{"iopub.status.busy":"2021-08-01T15:53:02.490835Z","iopub.execute_input":"2021-08-01T15:53:02.491186Z","iopub.status.idle":"2021-08-01T15:53:02.51878Z","shell.execute_reply.started":"2021-08-01T15:53:02.491156Z","shell.execute_reply":"2021-08-01T15:53:02.518031Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train=[]\ntrainlabel=[]\nfor im in tqdm(os.listdir(train_dir)):\n    image=load_img(os.path.join(train_dir,im), grayscale=False, color_mode='rgb', target_size=(60,60))\n    image=img_to_array(image)\n    image=image/255.0\n    train+=[image]\n    trainlabel+=[train_csv[train_csv['id_code']==im[0:-4]]['diagnosis'].iat[0]]","metadata":{"_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","papermill":{"duration":27.570617,"end_time":"2021-05-21T15:25:05.269161","exception":false,"start_time":"2021-05-21T15:24:37.698544","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2021-08-01T15:53:03.637213Z","iopub.execute_input":"2021-08-01T15:53:03.63753Z","iopub.status.idle":"2021-08-01T16:03:43.273299Z","shell.execute_reply.started":"2021-08-01T15:53:03.637501Z","shell.execute_reply":"2021-08-01T16:03:43.272163Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test=[]\nfor im in tqdm(os.listdir(test_dir)):\n    image=load_img(os.path.join(test_dir,im), grayscale=False, color_mode='rgb', target_size=(60,60))\n    image=img_to_array(image)\n    image=image/255.0\n    test+=[image]","metadata":{"execution":{"iopub.status.busy":"2021-08-01T16:03:47.224793Z","iopub.execute_input":"2021-08-01T16:03:47.225139Z","iopub.status.idle":"2021-08-01T16:06:02.313557Z","shell.execute_reply.started":"2021-08-01T16:03:47.225109Z","shell.execute_reply":"2021-08-01T16:06:02.311415Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"fig,axs = plt.subplots(3,3,figsize=(14,14))\nfor i in range(9):\n    r=i//3\n    c=i%3\n    ax=axs[r][c].imshow(train[i])\n    ax=axs[r][c].set_title('Diagnosis: '+str(trainlabel[i]))    \nplt.show()","metadata":{"execution":{"iopub.status.busy":"2021-08-01T16:06:16.091657Z","iopub.execute_input":"2021-08-01T16:06:16.092048Z","iopub.status.idle":"2021-08-01T16:06:17.257912Z","shell.execute_reply.started":"2021-08-01T16:06:16.092015Z","shell.execute_reply":"2021-08-01T16:06:17.256901Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train=np.array(train)\ntrainlabel=np.array(trainlabel)\ntest=np.array(test)","metadata":{"execution":{"iopub.status.busy":"2021-08-01T16:06:19.103004Z","iopub.execute_input":"2021-08-01T16:06:19.10333Z","iopub.status.idle":"2021-08-01T16:06:19.194931Z","shell.execute_reply.started":"2021-08-01T16:06:19.1033Z","shell.execute_reply":"2021-08-01T16:06:19.194075Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"trainlabel2=to_categorical(trainlabel)","metadata":{"papermill":{"duration":0.034057,"end_time":"2021-05-21T15:25:05.622075","exception":false,"start_time":"2021-05-21T15:25:05.588018","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2021-08-01T16:06:20.249728Z","iopub.execute_input":"2021-08-01T16:06:20.250064Z","iopub.status.idle":"2021-08-01T16:06:20.254363Z","shell.execute_reply.started":"2021-08-01T16:06:20.250034Z","shell.execute_reply":"2021-08-01T16:06:20.253541Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"trainx,testx,trainy,testy=train_test_split(train,trainlabel2,test_size=0.2,random_state=44)","metadata":{"papermill":{"duration":0.069249,"end_time":"2021-05-21T15:25:05.713285","exception":false,"start_time":"2021-05-21T15:25:05.644036","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2021-08-01T16:06:21.79761Z","iopub.execute_input":"2021-08-01T16:06:21.797991Z","iopub.status.idle":"2021-08-01T16:06:21.868111Z","shell.execute_reply.started":"2021-08-01T16:06:21.797927Z","shell.execute_reply":"2021-08-01T16:06:21.867096Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"datagen = ImageDataGenerator(horizontal_flip=True,vertical_flip=True,rotation_range=20,zoom_range=0.2,\n                        width_shift_range=0.2,height_shift_range=0.2,shear_range=0.1,fill_mode=\"nearest\")","metadata":{"papermill":{"duration":0.031436,"end_time":"2021-05-21T15:25:05.82455","exception":false,"start_time":"2021-05-21T15:25:05.793114","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2021-08-01T16:06:23.081515Z","iopub.execute_input":"2021-08-01T16:06:23.081927Z","iopub.status.idle":"2021-08-01T16:06:23.087564Z","shell.execute_reply.started":"2021-08-01T16:06:23.081894Z","shell.execute_reply":"2021-08-01T16:06:23.086392Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#densenet_weights_path = '../input/densenet201-imagenet-pretrained-weights/densenet201_weights_tf_dim_ordering_tf_kernels_notop.h5'","metadata":{"execution":{"iopub.status.busy":"2021-05-24T13:31:24.711458Z","iopub.execute_input":"2021-05-24T13:31:24.711844Z","iopub.status.idle":"2021-05-24T13:31:24.719136Z","shell.execute_reply.started":"2021-05-24T13:31:24.711806Z","shell.execute_reply":"2021-05-24T13:31:24.718387Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#pretrained_model3 = tf.keras.applications.DenseNet201(input_shape=(60,60,3),include_top=False,weights=densenet_weights_path,pooling='avg')\n#pretrained_model3.trainable = False","metadata":{"execution":{"iopub.status.busy":"2021-05-24T13:31:24.720853Z","iopub.execute_input":"2021-05-24T13:31:24.721251Z","iopub.status.idle":"2021-05-24T13:31:30.950034Z","shell.execute_reply.started":"2021-05-24T13:31:24.721213Z","shell.execute_reply":"2021-05-24T13:31:30.948843Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from keras import optimizers, applications\nfrom keras.preprocessing.image import ImageDataGenerator\nfrom keras.callbacks import EarlyStopping, ReduceLROnPlateau\nfrom keras.layers import Dense, Dropout, GlobalAveragePooling2D, Input\nimport tensorflow as tf\nfrom tensorflow.keras.preprocessing.image import ImageDataGenerator\nfrom tensorflow.keras.preprocessing import image_dataset_from_directory\nfrom tensorflow.keras.models import Sequential\nfrom tensorflow.keras.layers import *\nfrom tensorflow.keras.callbacks import EarlyStopping, ModelCheckpoint\nfrom tensorflow.keras.applications.resnet50 import ResNet50\nfrom tensorflow.keras.utils import to_categorical\nfrom keras import optimizers\nfrom tensorflow.keras.optimizers import Adam\nfrom keras.callbacks import Callback,ModelCheckpoint,ReduceLROnPlateau\nfrom keras.models import Sequential,load_model\nfrom keras.layers import Dense, Dropout\nfrom keras.wrappers.scikit_learn import KerasClassifier\nimport keras.backend as K\n#import tensorflow_addons as tfa\n#from tensorflow.keras.metrics import Metric\n#from tensorflow_addons.utils.types import AcceptableDTypes, FloatTensorLike\nfrom typeguard import typechecked\nfrom typing import Optional","metadata":{"execution":{"iopub.status.busy":"2021-08-01T16:08:18.847149Z","iopub.execute_input":"2021-08-01T16:08:18.847522Z","iopub.status.idle":"2021-08-01T16:08:18.910926Z","shell.execute_reply.started":"2021-08-01T16:08:18.84749Z","shell.execute_reply":"2021-08-01T16:08:18.910075Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from keras.models import Model","metadata":{"execution":{"iopub.status.busy":"2021-08-01T16:10:22.665744Z","iopub.execute_input":"2021-08-01T16:10:22.666146Z","iopub.status.idle":"2021-08-01T16:10:22.671995Z","shell.execute_reply.started":"2021-08-01T16:10:22.666111Z","shell.execute_reply":"2021-08-01T16:10:22.670851Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def unet(pretrained_weights = None,input_size = (224,224,3)):\n    inputs = Input(input_size)\n    conv1 = Conv2D(64, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(inputs)\n    conv1 = Conv2D(64, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(conv1)\n    pool1 = MaxPooling2D(pool_size=(2, 2))(conv1)\n    conv2 = Conv2D(128, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(pool1)\n    conv2 = Conv2D(128, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(conv2)\n    pool2 = MaxPooling2D(pool_size=(2, 2))(conv2)\n    conv3 = Conv2D(256, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(pool2)\n    conv3 = Conv2D(256, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(conv3)\n    pool3 = MaxPooling2D(pool_size=(2, 2))(conv3)\n    conv4 = Conv2D(512, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(pool3)\n    conv4 = Conv2D(512, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(conv4)\n    drop4 = Dropout(0.5)(conv4)\n    pool4 = MaxPooling2D(pool_size=(2, 2))(drop4)\n\n    conv5 = Conv2D(1024, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(pool4)\n    conv5 = Conv2D(1024, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(conv5)\n    drop5 = Dropout(0.5)(conv5)\n\n    up6 = Conv2D(512, 2, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(UpSampling2D(size = (2,2))(drop5))\n    merge6 = concatenate([drop4,up6], axis = 3)\n    conv6 = Conv2D(512, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(merge6)\n    conv6 = Conv2D(512, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(conv6)\n\n    up7 = Conv2D(256, 2, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(UpSampling2D(size = (2,2))(conv6))\n    merge7 = concatenate([conv3,up7], axis = 3)\n    conv7 = Conv2D(256, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(merge7)\n    conv7 = Conv2D(256, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(conv7)\n\n    up8 = Conv2D(128, 2, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(UpSampling2D(size = (2,2))(conv7))\n    merge8 = concatenate([conv2,up8], axis = 3)\n    conv8 = Conv2D(128, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(merge8)\n    conv8 = Conv2D(128, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(conv8)\n\n    up9 = Conv2D(64, 2, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(UpSampling2D(size = (2,2))(conv8))\n    merge9 = concatenate([conv1,up9], axis = 3)\n    conv9 = Conv2D(64, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(merge9)\n    conv9 = Conv2D(64, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(conv9)\n    conv9 = Conv2D(2, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(conv9)\n    conv10 = Conv2D(1, 1, activation = 'sigmoid')(conv9)\n\n    model = Model(inputs = inputs, outputs = conv10)\n\n    model.compile(optimizer = Adam(lr = 1e-4), loss = 'sparse_categorical_crossentropy', metrics = ['accuracy'])\n    \n    #model.summary()\n\n    if(pretrained_weights):\n    \tmodel.load_weights(pretrained_weights)\n\n    return model\n    model = Model(inputs = inputs, outputs = conv10)\n\n    model.compile(optimizer = Adam(lr = 1e-4), loss = 'sparse_categorical_crossentropy', metrics = ['accuracy'])\n    \n    #model.summary()\n\n    if(pretrained_weights):\n    \tmodel.load_weights(pretrained_weights)\n\n    return model","metadata":{"execution":{"iopub.status.busy":"2021-08-01T17:01:00.208277Z","iopub.execute_input":"2021-08-01T17:01:00.208686Z","iopub.status.idle":"2021-08-01T17:01:00.245522Z","shell.execute_reply.started":"2021-08-01T17:01:00.208649Z","shell.execute_reply":"2021-08-01T17:01:00.244084Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"pretrained_model3 = unet()","metadata":{"execution":{"iopub.status.busy":"2021-08-01T17:01:02.074429Z","iopub.execute_input":"2021-08-01T17:01:02.074788Z","iopub.status.idle":"2021-08-01T17:01:02.305065Z","shell.execute_reply.started":"2021-08-01T17:01:02.074756Z","shell.execute_reply":"2021-08-01T17:01:02.304127Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"papermill":{"duration":0.108919,"end_time":"2021-05-21T15:25:15.707006","exception":false,"start_time":"2021-05-21T15:25:15.598087","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2021-08-01T16:18:52.016432Z","iopub.execute_input":"2021-08-01T16:18:52.016744Z","iopub.status.idle":"2021-08-01T16:18:52.061186Z","shell.execute_reply.started":"2021-08-01T16:18:52.016715Z","shell.execute_reply":"2021-08-01T16:18:52.060328Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"pretrained_model3.compile(optimizer='adam',loss='categorical_crossentropy',metrics=['accuracy'])","metadata":{"papermill":{"duration":0.062633,"end_time":"2021-05-21T15:25:15.796628","exception":false,"start_time":"2021-05-21T15:25:15.733995","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2021-08-01T17:01:07.023411Z","iopub.execute_input":"2021-08-01T17:01:07.023733Z","iopub.status.idle":"2021-08-01T17:01:07.03739Z","shell.execute_reply.started":"2021-08-01T17:01:07.023704Z","shell.execute_reply":"2021-08-01T17:01:07.036378Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(trainx.shape)\nprint(trainy.shape)","metadata":{"execution":{"iopub.status.busy":"2021-08-01T17:01:15.890269Z","iopub.execute_input":"2021-08-01T17:01:15.890623Z","iopub.status.idle":"2021-08-01T17:01:15.89527Z","shell.execute_reply.started":"2021-08-01T17:01:15.890588Z","shell.execute_reply":"2021-08-01T17:01:15.89435Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(testx.shape)\nprint(testy.shape)","metadata":{"execution":{"iopub.status.busy":"2021-08-01T17:01:22.303584Z","iopub.execute_input":"2021-08-01T17:01:22.304026Z","iopub.status.idle":"2021-08-01T17:01:22.312965Z","shell.execute_reply.started":"2021-08-01T17:01:22.303954Z","shell.execute_reply":"2021-08-01T17:01:22.312068Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"his=model.fit(datagen.flow(trainx,trainy,batch_size=32),validation_data=(testx,testy),epochs=50)","metadata":{"papermill":{"duration":534.362111,"end_time":"2021-05-21T15:34:10.186041","exception":false,"start_time":"2021-05-21T15:25:15.82393","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2021-08-01T17:01:23.562148Z","iopub.execute_input":"2021-08-01T17:01:23.56248Z","iopub.status.idle":"2021-08-01T17:01:23.839385Z","shell.execute_reply.started":"2021-08-01T17:01:23.56245Z","shell.execute_reply":"2021-08-01T17:01:23.837472Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"get_acc = his.history['accuracy']\nvalue_acc = his.history['val_accuracy']\nget_loss = his.history['loss']\nvalidation_loss = his.history['val_loss']\n\nepochs = range(len(get_acc))\nplt.plot(epochs, get_acc, 'r', label='Accuracy of Training data')\nplt.plot(epochs, value_acc, 'b', label='Accuracy of Validation data')\nplt.title('Training vs validation accuracy')\nplt.legend(loc=0)\nplt.figure()\nplt.show()","metadata":{"papermill":{"duration":0.716241,"end_time":"2021-05-21T15:34:19.187418","exception":false,"start_time":"2021-05-21T15:34:18.471177","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2021-05-24T13:35:59.963233Z","iopub.execute_input":"2021-05-24T13:35:59.963636Z","iopub.status.idle":"2021-05-24T13:36:00.13458Z","shell.execute_reply.started":"2021-05-24T13:35:59.963588Z","shell.execute_reply":"2021-05-24T13:36:00.133675Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"epochs = range(len(get_loss))\nplt.plot(epochs, get_loss, 'r', label='Loss of Training data')\nplt.plot(epochs, validation_loss, 'b', label='Loss of Validation data')\nplt.title('Training vs validation loss')\nplt.legend(loc=0)\nplt.figure()\nplt.show()","metadata":{"papermill":{"duration":0.760146,"end_time":"2021-05-21T15:34:20.450507","exception":false,"start_time":"2021-05-21T15:34:19.690361","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2021-05-24T13:36:00.135857Z","iopub.execute_input":"2021-05-24T13:36:00.136224Z","iopub.status.idle":"2021-05-24T13:36:00.292747Z","shell.execute_reply.started":"2021-05-24T13:36:00.136188Z","shell.execute_reply":"2021-05-24T13:36:00.291813Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"pred2=model.predict(test)\nprint(test.shape)\nprint(pred2.shape)\n\nPRED=[]\nfor item in pred2:\n    value2=np.argmax(item)      \n    PRED+=[value2]","metadata":{"papermill":{"duration":4.670931,"end_time":"2021-05-21T15:34:28.822575","exception":false,"start_time":"2021-05-21T15:34:24.151644","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2021-05-24T13:36:00.294115Z","iopub.execute_input":"2021-05-24T13:36:00.294458Z","iopub.status.idle":"2021-05-24T13:36:04.985925Z","shell.execute_reply.started":"2021-05-24T13:36:00.294421Z","shell.execute_reply":"2021-05-24T13:36:04.98509Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sample=pd.read_csv('../input/aptos2019-blindness-detection/sample_submission.csv')\nsample","metadata":{"execution":{"iopub.status.busy":"2021-05-24T13:36:04.988593Z","iopub.execute_input":"2021-05-24T13:36:04.988868Z","iopub.status.idle":"2021-05-24T13:36:05.027348Z","shell.execute_reply.started":"2021-05-24T13:36:04.988841Z","shell.execute_reply":"2021-05-24T13:36:05.026581Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"submit=sample\nsubmit['diagnosis']=PRED\nsubmit.to_csv('submission.csv',index=False)\nsubmit","metadata":{"execution":{"iopub.status.busy":"2021-05-24T13:36:05.028619Z","iopub.execute_input":"2021-05-24T13:36:05.028974Z","iopub.status.idle":"2021-05-24T13:36:05.830432Z","shell.execute_reply.started":"2021-05-24T13:36:05.028935Z","shell.execute_reply":"2021-05-24T13:36:05.829608Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"papermill":{"duration":0.511451,"end_time":"2021-05-21T15:34:31.952055","exception":false,"start_time":"2021-05-21T15:34:31.440604","status":"completed"},"tags":[]},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}