{"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":"markdown","source":"##kaggle competetion https://www.kaggle.com/c/osic-pulmonary-fibrosis-progression\n\n##Data source https://www.kaggle.com/c/osic-pulmonary-fibrosis-progression/data\n","metadata":{"id":"OOyXlX88Wu0y"}},{"cell_type":"code","source":"#pip install pydicom #installation of pydicom","metadata":{"id":"6EDaLDqBFJrS","outputId":"3d41a932-e26f-4eca-f58b-885ab6fe6499","execution":{"iopub.status.busy":"2021-08-24T07:22:41.486035Z","iopub.execute_input":"2021-08-24T07:22:41.486385Z","iopub.status.idle":"2021-08-24T07:22:48.321757Z","shell.execute_reply.started":"2021-08-24T07:22:41.486354Z","shell.execute_reply":"2021-08-24T07:22:48.320671Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#pip install tensorflow-addons #installation of tensorflow-addons","metadata":{"id":"cOxB0hC_Fyl2","outputId":"3c983a7a-f0b1-4a69-9b7a-6c2f7587ea54","execution":{"iopub.status.busy":"2021-08-24T07:22:51.32801Z","iopub.execute_input":"2021-08-24T07:22:51.328378Z","iopub.status.idle":"2021-08-24T07:22:58.13911Z","shell.execute_reply.started":"2021-08-24T07:22:51.328344Z","shell.execute_reply":"2021-08-24T07:22:58.137975Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#from google.colab import drive # Downloading Datasets into Google Drive via Google Colab\nimport os.path\nimport os\nimport cv2\nimport pydicom\nimport pandas as pd\nimport numpy as np \nimport tensorflow as tf \nimport matplotlib.pyplot as plt \nfrom tqdm.notebook import tqdm \nimport seaborn as sns\nfrom sklearn.model_selection import train_test_split \n\nimport tensorflow.keras.utils\nfrom tensorflow.keras.utils import Sequence\nfrom tensorflow.keras.layers import (Dense, Dropout, Activation, Flatten, Input, BatchNormalization, GlobalAveragePooling2D, Add, Conv2D, AveragePooling2D, \n    LeakyReLU, Concatenate, MaxPooling2D, GlobalMaxPooling2D)\nfrom tensorflow.keras import Model\nfrom tensorflow.keras.optimizers import Nadam\nfrom tensorflow_addons.optimizers import RectifiedAdam\n#from tensorflow.keras.applications import EfficientNetB4\n#from tensorflow.keras.models import model_from_json\n","metadata":{"id":"hiiHIKKnD-lo","execution":{"iopub.status.busy":"2021-09-18T11:56:40.162141Z","iopub.execute_input":"2021-09-18T11:56:40.162613Z","iopub.status.idle":"2021-09-18T11:56:40.171879Z","shell.execute_reply.started":"2021-09-18T11:56:40.162581Z","shell.execute_reply":"2021-09-18T11:56:40.170414Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(os.listdir(\"../input/\"))\nprint(os.listdir(\"../input/efficientnetb4-notoph5\"))","metadata":{"execution":{"iopub.status.busy":"2021-09-18T11:56:45.015026Z","iopub.execute_input":"2021-09-18T11:56:45.015526Z","iopub.status.idle":"2021-09-18T11:56:45.030711Z","shell.execute_reply.started":"2021-09-18T11:56:45.015495Z","shell.execute_reply":"2021-09-18T11:56:45.029530Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"Q = os.listdir('../input/osic-pulmonary-fibrosis-progression')\nprint('Available dataset partitions: ',Q)","metadata":{"id":"ZR-iE0tXEnPG","outputId":"87462a65-fe39-4c23-b0f0-6dd6c760338b","execution":{"iopub.status.busy":"2021-09-18T11:56:49.249103Z","iopub.execute_input":"2021-09-18T11:56:49.249579Z","iopub.status.idle":"2021-09-18T11:56:49.257975Z","shell.execute_reply.started":"2021-09-18T11:56:49.249535Z","shell.execute_reply":"2021-09-18T11:56:49.256725Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train = pd.read_csv('../input/osic-pulmonary-fibrosis-progression/train.csv')\ntrain.head()","metadata":{"execution":{"iopub.status.busy":"2021-09-18T11:56:52.380535Z","iopub.execute_input":"2021-09-18T11:56:52.380905Z","iopub.status.idle":"2021-09-18T11:56:52.423908Z","shell.execute_reply.started":"2021-09-18T11:56:52.380875Z","shell.execute_reply":"2021-09-18T11:56:52.422801Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Reference code from \nhttps://www.kaggle.com/miklgr500/linear-decay-based-on-resnet-cnn/execution \n\nhttps://www.kaggle.com/purnima29/final-model","metadata":{"id":"hjmQAeuIV_iP"}},{"cell_type":"code","source":"# Converting the column into numericals  \ndef get_tab(df):\n    vector = [(df.Age.values[0] - 30) / 30] \n    \n    if df.Sex.values[0] == 'male':\n       vector.append(0)\n    else:\n       vector.append(1)\n    \n    if df.SmokingStatus.values[0] == 'Never smoked':\n        vector.extend([0,0])\n    elif df.SmokingStatus.values[0] == 'Ex-smoker':\n        vector.extend([1,1])\n    elif df.SmokingStatus.values[0] == 'Currently smokes':\n        vector.extend([0,1])\n    else:\n        vector.extend([1,0])\n    return np.array(vector) \n\nA = {} \nTAB = {} \nP = [] \nfor i, p in tqdm(enumerate(train.Patient.unique())):\n    sub = train.loc[train.Patient == p, :] \n    fvc = sub.FVC.values\n    weeks = sub.Weeks.values\n    c = np.vstack([weeks, np.ones(len(weeks))]).T\n    a, b = np.linalg.lstsq(c, fvc)[0]\n    \n    A[p] = a\n    TAB[p] = get_tab(sub)\n    P.append(p)\n\n","metadata":{"id":"89vm6bkEUBhV","outputId":"aca67613-bc6b-48dd-c4ed-f8eacb29e6f9","execution":{"iopub.status.busy":"2021-09-18T11:57:00.492208Z","iopub.execute_input":"2021-09-18T11:57:00.492652Z","iopub.status.idle":"2021-09-18T11:57:00.846755Z","shell.execute_reply.started":"2021-09-18T11:57:00.492624Z","shell.execute_reply":"2021-09-18T11:57:00.845482Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train.Patient.values","metadata":{"execution":{"iopub.status.busy":"2021-09-18T12:16:12.011870Z","iopub.execute_input":"2021-09-18T12:16:12.012219Z","iopub.status.idle":"2021-09-18T12:16:12.021778Z","shell.execute_reply.started":"2021-09-18T12:16:12.012184Z","shell.execute_reply":"2021-09-18T12:16:12.020061Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## CNN for coeff prediction\n\n","metadata":{"id":"Dva8nyUZ6Jdv"}},{"cell_type":"code","source":"\ndef get_img(path):\n    d = pydicom.dcmread(path) \n        \n    # https://www.geeksforgeeks.org/image-resizing-using-opencv-python/\n    # According to model\n    return cv2.resize(d.pixel_array / 2**11, (380, 380)) ","metadata":{"id":"XKJGgnjpVRvq","execution":{"iopub.status.busy":"2021-09-18T12:16:16.825327Z","iopub.execute_input":"2021-09-18T12:16:16.825709Z","iopub.status.idle":"2021-09-18T12:16:16.832191Z","shell.execute_reply.started":"2021-09-18T12:16:16.825665Z","shell.execute_reply":"2021-09-18T12:16:16.830397Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## IGenerator ","metadata":{"id":"WrmP6scm9btA"}},{"cell_type":"code","source":"class IGenerator(Sequence):\n    BAD_ID = ['ID00011637202177653955184', 'ID00052637202186188008618']\n    def __init__(self, keys, a, tab, batch_size=16):\n        self.keys = [k for k in keys if k not in self.BAD_ID]\n        self.a = a\n        self.tab = tab\n        self.batch_size = batch_size\n        \n        self.train_data = {}\n        self.train_data1 = {}\n        self.train_data2= {}\n\n        for p in train.Patient.values:\n            self.train_data[p] = os.listdir(f'../input/osic-pulmonary-fibrosis-progression/train/{p}/')\n                             \n    def __len__(self):\n        return 1000\n    \n    def __getitem__(self, idx):\n        x, y, z, w, u, v = [], [], [], [], [], []\n        a, tab = [], [] \n        keys = np.random.choice(self.keys, size = self.batch_size)\n        for k in keys:\n            try:\n                i = np.random.choice(self.train_data[k], size=1)[0]\n                j = np.random.choice(self.train_data[k], size=1)[0]\n                l = np.random.choice(self.train_data[k], size=1)[0]\n                m = np.random.choice(self.train_data[k], size=1)[0]\n                n = np.random.choice(self.train_data[k], size=1)[0]\n                o = np.random.choice(self.train_data[k], size=1)[0]\n                # for input image 1\n                \n                img1 = get_img(f'../input/osic-pulmonary-fibrosis-progression/train/{k}/{i}')\n                x.append(img1)\n                \n                img2 = get_img(f'../input/osic-pulmonary-fibrosis-progression/train/{k}/{j}')\n                y.append(img2)\n                  \n                img3 = get_img(f'../input/osic-pulmonary-fibrosis-progression/train/{k}/{l}')\n                z.append(img3)\n                \n                img4 = get_img(f'../input/osic-pulmonary-fibrosis-progression/train/{k}/{m}')\n                w.append(img4)\n\n                img5 = get_img(f'../input/osic-pulmonary-fibrosis-progression/train/{k}/{n}')\n                u.append(img5)\n                \n                img6 = get_img(f'../input/osic-pulmonary-fibrosis-progression/train/{k}/{o}')\n                v.append(img6)\n\n                a.append(self.a[k])\n                tab.append(self.tab[k])\n            except:\n                print(k, i)\n       \n        x,y,z,w,u,v,a,tab = np.array(x), np.array(y), np.array(z), np.array(w), np.array(u), np.array(v), np.array(a), np.array(tab)\n        x = np.expand_dims(x, axis=-1)\n        y = np.expand_dims(y, axis=-1)\n        z = np.expand_dims(z, axis=-1)\n        w = np.expand_dims(w, axis=-1)\n        u = np.expand_dims(u, axis=-1)\n        v = np.expand_dims(v, axis=-1)\n        return [x, y, z, w, u, v, tab] , a","metadata":{"id":"oQwbC68y7MEx","execution":{"iopub.status.busy":"2021-09-18T12:16:20.555823Z","iopub.execute_input":"2021-09-18T12:16:20.556320Z","iopub.status.idle":"2021-09-18T12:16:20.745136Z","shell.execute_reply.started":"2021-09-18T12:16:20.556261Z","shell.execute_reply":"2021-09-18T12:16:20.743643Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# EfficientNetB4","metadata":{"id":"LQZCX2R4sAPF"}},{"cell_type":"markdown","source":"## Pass six images\n","metadata":{"id":"QS7Vnkv0W1po"}},{"cell_type":"markdown","source":"# 6 input image concats, pass through EfficientNetB4 + tabular data  Model","metadata":{"id":"bPJH9QswAhx5"}},{"cell_type":"code","source":"# https://www.tensorflow.org/guide/keras/save_and_serialize\nmodel_effnet_B4 = tf.keras.models.load_model(\"../input/efficientnetb4-notoph5/model_6_image_effnet_B4.h5\")","metadata":{"execution":{"iopub.status.busy":"2021-09-18T12:16:29.331884Z","iopub.execute_input":"2021-09-18T12:16:29.332435Z","iopub.status.idle":"2021-09-18T12:16:52.138755Z","shell.execute_reply.started":"2021-09-18T12:16:29.332401Z","shell.execute_reply":"2021-09-18T12:16:52.137589Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model_effnet_B4.summary()","metadata":{"id":"q-1OtPJddTmV","outputId":"395ed239-25c6-4ce6-a8d1-cb1b91a96587","execution":{"iopub.status.busy":"2021-09-18T12:17:00.814098Z","iopub.execute_input":"2021-09-18T12:17:00.814594Z","iopub.status.idle":"2021-09-18T12:17:00.868867Z","shell.execute_reply.started":"2021-09-18T12:17:00.814564Z","shell.execute_reply":"2021-09-18T12:17:00.867709Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"tf.keras.utils.plot_model(model_effnet_B4, 'model_effnet_B4.png', show_shapes=True)","metadata":{"execution":{"iopub.status.busy":"2021-09-18T12:17:06.173398Z","iopub.execute_input":"2021-09-18T12:17:06.173844Z","iopub.status.idle":"2021-09-18T12:17:07.119189Z","shell.execute_reply.started":"2021-09-18T12:17:06.173806Z","shell.execute_reply":"2021-09-18T12:17:07.117395Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model_effnet_B4.compile(optimizer=tensorflow.keras.optimizers.Adam(learning_rate=0.0001), loss='mae')\n\ntr_p, vl_p = train_test_split(P, shuffle=True, train_size= 0.8) ","metadata":{"id":"2BQ55pw_djBZ","execution":{"iopub.status.busy":"2021-09-18T12:17:28.210635Z","iopub.execute_input":"2021-09-18T12:17:28.211050Z","iopub.status.idle":"2021-09-18T12:17:28.243841Z","shell.execute_reply.started":"2021-09-18T12:17:28.211018Z","shell.execute_reply":"2021-09-18T12:17:28.242817Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#https://stackoverflow.com/a/51757115\nes = tf.keras.callbacks.EarlyStopping(monitor=\"val_loss\",min_delta=1e-3,patience=4,verbose=1,mode=\"auto\", baseline=None,restore_best_weights=True,)\n#my_callbacks = [\n    #es,tf.keras.callbacks.ReduceLROnPlateau(factor=0.1, patience=3, min_lr=0.00001, verbose=1),\n    #tf.keras.callbacks.ModelCheckpoint(filepath = '../input/osic-pulmonary-fibrosis-progression/' + 'model_6_image_effnet_B4.h5', verbose=1, save_best_only=True, save_weights_only=False) ]","metadata":{"id":"t_qbpBQMJayV","execution":{"iopub.status.busy":"2021-09-18T12:17:33.828166Z","iopub.execute_input":"2021-09-18T12:17:33.828569Z","iopub.status.idle":"2021-09-18T12:17:33.834779Z","shell.execute_reply.started":"2021-09-18T12:17:33.828540Z","shell.execute_reply":"2021-09-18T12:17:33.833432Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"history_effnet_B4_Pass_2_images = model_effnet_B4.fit_generator(IGenerator(keys=tr_p, \n                               a = A, \n                               tab = TAB), \n                    steps_per_epoch = 200,\n                    validation_data=IGenerator(keys=vl_p, \n                               a = A, \n                               tab = TAB),\n                    validation_steps = 20, \n                    callbacks = [es], \n                    epochs=50)","metadata":{"id":"jS-MazRLQ72X","outputId":"a4dac60e-2ba2-41cb-e5e4-e9253671f9a7","execution":{"iopub.status.busy":"2021-09-18T12:17:44.371156Z","iopub.execute_input":"2021-09-18T12:17:44.371545Z","iopub.status.idle":"2021-09-18T12:43:23.157749Z","shell.execute_reply.started":"2021-09-18T12:17:44.371513Z","shell.execute_reply":"2021-09-18T12:43:23.150599Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# summarize history for loss\nplt.plot(history_effnet_B4_Pass_2_images.history['loss'])\nplt.plot(history_effnet_B4_Pass_2_images.history['val_loss'])\nplt.title('model loss')\nplt.ylabel('loss')\nplt.xlabel('epoch')\nplt.legend(['train', 'test'], loc='upper left')\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2021-08-31T17:00:19.97461Z","iopub.execute_input":"2021-08-31T17:00:19.974971Z","iopub.status.idle":"2021-08-31T17:00:20.192651Z","shell.execute_reply.started":"2021-08-31T17:00:19.974938Z","shell.execute_reply":"2021-08-31T17:00:20.191173Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Generating submission.csv","metadata":{"id":"DxwFfF76Mzuu"}},{"cell_type":"code","source":"def score(fvc_true, fvc_pred, sigma):\n    sigma_clip = np.maximum(sigma,70)\n    delta = np.abs(fvc_true - fvc_pred)\n    delta = np.minimum(delta,1000)\n    sq2 = np.sqrt(2)\n    metric = (delta/sigma_clip)*sq2  + np.log(sigma_clip*sq2 )\n    return np.mean(metric)","metadata":{"id":"LrbmPB3giOnZ","execution":{"iopub.status.busy":"2021-08-31T17:00:20.195302Z","iopub.execute_input":"2021-08-31T17:00:20.195837Z","iopub.status.idle":"2021-08-31T17:00:20.203411Z","shell.execute_reply.started":"2021-08-31T17:00:20.195773Z","shell.execute_reply":"2021-08-31T17:00:20.202084Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from tqdm.notebook import tqdm\n\nmetric = []\nfor q in tqdm(range(1, 10)):\n    m = []\n    for p in vl_p:\n        x,y,z,w,u,v = [], [], [], [], [], []\n        tab = [] \n        \n        if p in ['ID00011637202177653955184', 'ID00052637202186188008618']:\n            continue\n            \n        img_set = os.listdir(f'../input/osic-pulmonary-fibrosis-progression/train/{p}/')\n        img_set = np.random.choice(img_set, size=20)\n        for i in img_set:\n            x.append(get_img(f'../input/osic-pulmonary-fibrosis-progression/train/{p}/{i}')) \n            y.append(get_img(f'../input/osic-pulmonary-fibrosis-progression/train/{p}/{i}'))\n            z.append(get_img(f'../input/osic-pulmonary-fibrosis-progression/train/{p}/{i}'))\n            w.append(get_img(f'../input/osic-pulmonary-fibrosis-progression/train/{p}/{i}'))\n            u.append(get_img(f'../input/osic-pulmonary-fibrosis-progression/train/{p}/{i}'))\n            v.append(get_img(f'../input/osic-pulmonary-fibrosis-progression/train/{p}/{i}'))\n            tab.append(get_tab(train.loc[train.Patient == p, :])) \n    \n         \n        tab = np.array(tab) \n    \n        x = np.expand_dims(x, axis=-1)\n        y = np.expand_dims(y, axis=-1)\n        z = np.expand_dims(z, axis=-1)\n        w = np.expand_dims(w, axis=-1)\n        u = np.expand_dims(u, axis=-1)\n        v = np.expand_dims(v, axis=-1)\n        _a = model_effnet_B4.predict([x,y,z,w,u,v, tab])\n        a = np.quantile(_a, q / 10)\n        \n        percent_true = train.Percent.values[train.Patient == p]\n        fvc_true = train.FVC.values[train.Patient == p]\n        weeks_true = train.Weeks.values[train.Patient == p]\n        \n        fvc = a * (weeks_true - weeks_true[0]) + fvc_true[0]\n        percent = percent_true[0] - a * abs(weeks_true - weeks_true[0])\n        m.append(score(fvc_true, fvc, percent))\n\n    print(np.mean(m))\n    metric.append(np.mean(m))","metadata":{"id":"R5pDv64OihI0","outputId":"8536d615-8473-491a-a800-c642c5b5f6dc","execution":{"iopub.status.busy":"2021-08-31T17:00:20.2061Z","iopub.execute_input":"2021-08-31T17:00:20.206901Z","iopub.status.idle":"2021-08-31T17:05:29.733753Z","shell.execute_reply.started":"2021-08-31T17:00:20.206825Z","shell.execute_reply":"2021-08-31T17:05:29.732466Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"q = (np.argmin(metric) + 1)/ 10\nq","metadata":{"id":"58vW7HDFNcOT","outputId":"0ff509e4-a5bd-4a71-a8eb-0d32737a7a1a","execution":{"iopub.status.busy":"2021-08-31T17:05:29.735682Z","iopub.execute_input":"2021-08-31T17:05:29.736529Z","iopub.status.idle":"2021-08-31T17:05:29.746346Z","shell.execute_reply.started":"2021-08-31T17:05:29.736478Z","shell.execute_reply":"2021-08-31T17:05:29.745024Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sub = pd.read_csv('../input/osic-pulmonary-fibrosis-progression/sample_submission.csv') \nsub.head() ","metadata":{"id":"EUMjidwFld-X","outputId":"9f3c5ee2-27c6-4fd5-f4b9-dec84ba6ee8c","execution":{"iopub.status.busy":"2021-08-31T17:05:41.590874Z","iopub.execute_input":"2021-08-31T17:05:41.591293Z","iopub.status.idle":"2021-08-31T17:05:41.610504Z","shell.execute_reply.started":"2021-08-31T17:05:41.591249Z","shell.execute_reply":"2021-08-31T17:05:41.609402Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test = pd.read_csv('../input/osic-pulmonary-fibrosis-progression/test.csv') \ntest.head()","metadata":{"id":"-7XDudrHlfBx","outputId":"a4afb2db-995c-4f45-e5aa-d78e750427c2","execution":{"iopub.status.busy":"2021-08-31T17:05:46.111647Z","iopub.execute_input":"2021-08-31T17:05:46.112082Z","iopub.status.idle":"2021-08-31T17:05:46.136922Z","shell.execute_reply.started":"2021-08-31T17:05:46.11205Z","shell.execute_reply":"2021-08-31T17:05:46.135736Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"A_test, B_test, P_test,W, FVC= {}, {}, {},{},{} \nSTD, WEEK = {}, {} \nfor p in test.Patient.unique():\n    x,y,z,w,u,v = [], [], [], [], [], []\n    tab = [] \n\n   \n    img_set = os.listdir(f'../input/osic-pulmonary-fibrosis-progression/test/{p}/')\n    img_set = np.random.choice(img_set, size=20)\n    for i in img_set:\n        x.append(get_img(f'../input/osic-pulmonary-fibrosis-progression/test/{p}/{i}')) \n        y.append(get_img(f'../input/osic-pulmonary-fibrosis-progression/test/{p}/{i}'))\n        z.append(get_img(f'../input/osic-pulmonary-fibrosis-progression/test/{p}/{i}')) \n        w.append(get_img(f'../input/osic-pulmonary-fibrosis-progression/test/{p}/{i}'))\n        u.append(get_img(f'../input/osic-pulmonary-fibrosis-progression/test/{p}/{i}')) \n        v.append(get_img(f'../input/osic-pulmonary-fibrosis-progression/test/{p}/{i}'))\n\n        tab.append(get_tab(train.loc[train.Patient == p, :])) \n    tab = np.array(tab) \n            \n    x = np.expand_dims(x, axis=-1) \n    y = np.expand_dims(y, axis=-1)\n    z = np.expand_dims(z, axis=-1) \n    w = np.expand_dims(w, axis=-1)\n    u = np.expand_dims(u, axis=-1) \n    v = np.expand_dims(v, axis=-1) \n\n    _a = model_effnet_B4.predict([x,y,z,w,u,v, tab]) \n    a = np.quantile(_a, q)\n    A_test[p] = a\n    B_test[p] = test.FVC.values[test.Patient == p] - a*test.Weeks.values[test.Patient == p]\n    P_test[p] = test.Percent.values[test.Patient == p] \n    WEEK[p] = test.Weeks.values[test.Patient == p]","metadata":{"id":"PXQkCqCzhwkI","execution":{"iopub.status.busy":"2021-08-31T17:05:50.517519Z","iopub.execute_input":"2021-08-31T17:05:50.517906Z","iopub.status.idle":"2021-08-31T17:05:56.090116Z","shell.execute_reply.started":"2021-08-31T17:05:50.517874Z","shell.execute_reply":"2021-08-31T17:05:56.088954Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"for k in sub.Patient_Week.values:\n    p, w = k.split('_')\n    w = int(w) \n    \n    fvc = A_test[p] * w + B_test[p]\n    sub.loc[sub.Patient_Week == k, 'FVC'] = fvc\n    sub.loc[sub.Patient_Week == k, 'Confidence'] = (\n        P_test[p] - A_test[p] * abs(WEEK[p] - w) \n) \nsub.head()","metadata":{"id":"4MkWbFgSk_mY","outputId":"c9b11bed-57f4-4dbd-d9bf-4a731d9b14f3","execution":{"iopub.status.busy":"2021-08-31T17:06:00.896818Z","iopub.execute_input":"2021-08-31T17:06:00.897181Z","iopub.status.idle":"2021-08-31T17:06:02.035705Z","shell.execute_reply.started":"2021-08-31T17:06:00.89715Z","shell.execute_reply":"2021-08-31T17:06:02.034359Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sub[[\"Patient_Week\",\"FVC\",\"Confidence\"]].to_csv(\"submission.csv\", index=False)","metadata":{"execution":{"iopub.status.busy":"2021-08-31T17:06:11.309401Z","iopub.execute_input":"2021-08-31T17:06:11.309831Z","iopub.status.idle":"2021-08-31T17:06:11.32476Z","shell.execute_reply.started":"2021-08-31T17:06:11.309795Z","shell.execute_reply":"2021-08-31T17:06:11.323556Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sub","metadata":{"execution":{"iopub.status.busy":"2021-08-31T17:06:14.609686Z","iopub.execute_input":"2021-08-31T17:06:14.61012Z","iopub.status.idle":"2021-08-31T17:06:14.630702Z","shell.execute_reply.started":"2021-08-31T17:06:14.610089Z","shell.execute_reply":"2021-08-31T17:06:14.62939Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#\n#effnet_B4_model = tensorflow.keras.models.load_model(\"../input/efficientnetb4-notoph5/model_6_image_effnet_B4.h5\")","metadata":{"execution":{"iopub.status.busy":"2021-08-31T05:42:00.733542Z","iopub.execute_input":"2021-08-31T05:42:00.733871Z","iopub.status.idle":"2021-08-31T05:42:19.504816Z","shell.execute_reply.started":"2021-08-31T05:42:00.73384Z","shell.execute_reply":"2021-08-31T05:42:19.503998Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"## https://www.kaggle.com/rtatman/download-a-csv-file-from-a-kernel\n\n# import the modules we'll need\nfrom IPython.display import HTML\nimport pandas as pd\nimport numpy as np\nimport base64\n\n# function that takes in a dataframe and creates a text link to  \n# download it (will only work for files < 2MB or so)\ndef create_download_link(df, title = \"Download CSV file\", filename = \"submission.csv\"):  \n    csv = df.to_csv()\n    b64 = base64.b64encode(csv.encode())\n    payload = b64.decode()\n    html = '<a download=\"{filename}\" href=\"data:text/csv;base64,{payload}\" target=\"_blank\">{title}</a>'\n    html = html.format(payload=payload,title=title,filename=filename)\n    return HTML(html)\n\n# create a random sample dataframe\ndf = sub\n\n# create a link to download the dataframe\ncreate_download_link(df)\n\n# ↓ ↓ ↓  Yay, download link! ↓ ↓ ↓ \n","metadata":{"execution":{"iopub.status.busy":"2021-08-31T17:06:24.605535Z","iopub.execute_input":"2021-08-31T17:06:24.605936Z","iopub.status.idle":"2021-08-31T17:06:24.625897Z","shell.execute_reply.started":"2021-08-31T17:06:24.605904Z","shell.execute_reply":"2021-08-31T17:06:24.624389Z"},"trusted":true},"execution_count":null,"outputs":[]}]}