{"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":"# This Python 3 environment comes with many helpful analytics libraries installed\n# It is defined by the kaggle/python Docker image: https://github.com/kaggle/docker-python\n# For example, here's several helpful packages to load\n\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\nimport tensorflow as tf\nimport os\nimport matplotlib.pyplot as plt\nimport cv2","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2021-08-01T14:26:23.355354Z","iopub.execute_input":"2021-08-01T14:26:23.355791Z","iopub.status.idle":"2021-08-01T14:26:29.424483Z","shell.execute_reply.started":"2021-08-01T14:26:23.355673Z","shell.execute_reply":"2021-08-01T14:26:29.423383Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!cp /kaggle/input/gdcm-conda-install/gdcm.tar .\n!tar -xvzf gdcm.tar\n!conda install --offline ./gdcm/gdcm-2.8.9-py37h71b2a6d_0.tar.bz2","metadata":{"execution":{"iopub.status.busy":"2021-08-01T14:26:29.428642Z","iopub.execute_input":"2021-08-01T14:26:29.428952Z","iopub.status.idle":"2021-08-01T14:27:02.666313Z","shell.execute_reply.started":"2021-08-01T14:26:29.428922Z","shell.execute_reply":"2021-08-01T14:27:02.664989Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"root_path = \"/kaggle/input/siim-covid19-detection/\"","metadata":{"execution":{"iopub.status.busy":"2021-08-01T14:27:02.671365Z","iopub.execute_input":"2021-08-01T14:27:02.671709Z","iopub.status.idle":"2021-08-01T14:27:02.680416Z","shell.execute_reply.started":"2021-08-01T14:27:02.671675Z","shell.execute_reply":"2021-08-01T14:27:02.679174Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_image = pd.read_csv(os.path.join(root_path, \"train_image_level.csv\"))\ndf_study = pd.read_csv(os.path.join(root_path, \"train_study_level.csv\"))","metadata":{"execution":{"iopub.status.busy":"2021-08-01T14:27:02.682634Z","iopub.execute_input":"2021-08-01T14:27:02.683140Z","iopub.status.idle":"2021-08-01T14:27:02.802302Z","shell.execute_reply.started":"2021-08-01T14:27:02.683097Z","shell.execute_reply":"2021-08-01T14:27:02.801051Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Load Data","metadata":{"execution":{"iopub.status.busy":"2021-07-15T17:43:42.899032Z","iopub.execute_input":"2021-07-15T17:43:42.899412Z","iopub.status.idle":"2021-07-15T17:43:42.907396Z","shell.execute_reply.started":"2021-07-15T17:43:42.899376Z","shell.execute_reply":"2021-07-15T17:43:42.906098Z"}}},{"cell_type":"code","source":"train_path = os.path.join(root_path, \"train\")\ntest_path = os.path.join(root_path, \"test\")","metadata":{"execution":{"iopub.status.busy":"2021-08-01T14:27:02.803888Z","iopub.execute_input":"2021-08-01T14:27:02.804324Z","iopub.status.idle":"2021-08-01T14:27:02.814356Z","shell.execute_reply.started":"2021-08-01T14:27:02.804281Z","shell.execute_reply":"2021-08-01T14:27:02.813023Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_filenames = [os.path.join(dirname,filename) for dirname,_,filenames in os.walk(train_path) for filename in filenames]\ntest_filenames = [os.path.join(dirname,filename) for dirname,_,filenames in os.walk(test_path) for filename in filenames]","metadata":{"execution":{"iopub.status.busy":"2021-08-01T14:27:02.816143Z","iopub.execute_input":"2021-08-01T14:27:02.816747Z","iopub.status.idle":"2021-08-01T14:27:41.924428Z","shell.execute_reply.started":"2021-08-01T14:27:02.816618Z","shell.execute_reply":"2021-08-01T14:27:41.923237Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_dict = {x.split('/')[-1].replace('.dcm','_image'): x for x in train_filenames}\ntest_dict = {x.split('/')[-1].replace('.dcm','_image'): x for x in test_filenames}","metadata":{"execution":{"iopub.status.busy":"2021-08-01T14:27:41.926146Z","iopub.execute_input":"2021-08-01T14:27:41.926577Z","iopub.status.idle":"2021-08-01T14:27:41.942709Z","shell.execute_reply.started":"2021-08-01T14:27:41.926536Z","shell.execute_reply":"2021-08-01T14:27:41.941092Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_image['path'] = df_image[\"id\"].map(train_dict)\ndf_image['id']=df_image['id'].apply(lambda x: x.replace('_image',''))\ndf_image['simplified_path']=df_image['path'].apply(lambda x: '/'.join(x.split('/')[5:]))\n\ndf_study = df_study.rename(columns={'id':'StudyInstanceUID'}, inplace=False)\ndf_study['StudyInstanceUID'] = df_study['StudyInstanceUID'].apply(lambda x: x.replace('_study',''))","metadata":{"execution":{"iopub.status.busy":"2021-08-01T14:27:41.948459Z","iopub.execute_input":"2021-08-01T14:27:41.949240Z","iopub.status.idle":"2021-08-01T14:27:41.993189Z","shell.execute_reply.started":"2021-08-01T14:27:41.949192Z","shell.execute_reply":"2021-08-01T14:27:41.992057Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_train = df_image.merge(df_study, how='inner', on='StudyInstanceUID')","metadata":{"execution":{"iopub.status.busy":"2021-08-01T14:27:41.997629Z","iopub.execute_input":"2021-08-01T14:27:41.997942Z","iopub.status.idle":"2021-08-01T14:27:42.026200Z","shell.execute_reply.started":"2021-08-01T14:27:41.997911Z","shell.execute_reply":"2021-08-01T14:27:42.025100Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"columns_reordered=['id',\n 'StudyInstanceUID',\n 'boxes',\n 'label',\n 'Negative for Pneumonia',\n 'Typical Appearance',\n 'Indeterminate Appearance',\n 'Atypical Appearance',\n 'path',\n 'simplified_path']\ndf_train = df_train[columns_reordered]","metadata":{"execution":{"iopub.status.busy":"2021-08-01T14:27:42.027716Z","iopub.execute_input":"2021-08-01T14:27:42.028171Z","iopub.status.idle":"2021-08-01T14:27:42.039810Z","shell.execute_reply.started":"2021-08-01T14:27:42.028128Z","shell.execute_reply":"2021-08-01T14:27:42.038236Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Create data","metadata":{"execution":{"iopub.status.busy":"2021-07-15T19:05:26.61004Z","iopub.execute_input":"2021-07-15T19:05:26.610858Z","iopub.status.idle":"2021-07-15T19:05:26.630208Z","shell.execute_reply.started":"2021-07-15T19:05:26.610816Z","shell.execute_reply":"2021-07-15T19:05:26.629083Z"}}},{"cell_type":"markdown","source":"### Split and store images","metadata":{}},{"cell_type":"code","source":"from sklearn.model_selection import train_test_split\nx_train, x_valid = train_test_split(list(df_train[\"path\"]), test_size=0.2, random_state=42, shuffle=True)","metadata":{"execution":{"iopub.status.busy":"2021-08-01T14:27:42.042242Z","iopub.execute_input":"2021-08-01T14:27:42.042908Z","iopub.status.idle":"2021-08-01T14:27:42.746114Z","shell.execute_reply.started":"2021-08-01T14:27:42.042861Z","shell.execute_reply":"2021-08-01T14:27:42.744930Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"os.makedirs(\"dataset_det/train\", exist_ok=True)\nos.makedirs(\"dataset_det/valid\", exist_ok=True)\nos.makedirs(\"dataset_det/test\", exist_ok=True)","metadata":{"execution":{"iopub.status.busy":"2021-08-01T14:27:42.750275Z","iopub.execute_input":"2021-08-01T14:27:42.750648Z","iopub.status.idle":"2021-08-01T14:27:42.756638Z","shell.execute_reply.started":"2021-08-01T14:27:42.750615Z","shell.execute_reply":"2021-08-01T14:27:42.755377Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### Convert to png","metadata":{}},{"cell_type":"code","source":"import os\n\nfrom PIL import Image\nimport pandas as pd\nfrom tqdm.auto import tqdm","metadata":{"execution":{"iopub.status.busy":"2021-08-01T14:27:42.758339Z","iopub.execute_input":"2021-08-01T14:27:42.759068Z","iopub.status.idle":"2021-08-01T14:27:42.857180Z","shell.execute_reply.started":"2021-08-01T14:27:42.759021Z","shell.execute_reply":"2021-08-01T14:27:42.855941Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"orig_shapes = {\"train\" : list(), \"valid\" : list(), \"test\" : list()}","metadata":{"execution":{"iopub.status.busy":"2021-08-01T14:27:42.858928Z","iopub.execute_input":"2021-08-01T14:27:42.859430Z","iopub.status.idle":"2021-08-01T14:27:42.867371Z","shell.execute_reply.started":"2021-08-01T14:27:42.859389Z","shell.execute_reply":"2021-08-01T14:27:42.865634Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import numpy as np\nimport pydicom\nfrom pydicom.pixel_data_handlers.util import apply_voi_lut\n\ndef read_xray(path, voi_lut = True, fix_monochrome = True):\n    # Original from: https://www.kaggle.com/raddar/convert-dicom-to-np-array-the-correct-way\n    dicom = pydicom.read_file(path)\n    \n    # VOI LUT (if available by DICOM device) is used to transform raw DICOM data to \n    # \"human-friendly\" view\n    if voi_lut:\n        data = apply_voi_lut(dicom.pixel_array, dicom)\n    else:\n        data = dicom.pixel_array\n               \n    # depending on this value, X-ray may look inverted - fix that:\n    if fix_monochrome and dicom.PhotometricInterpretation == \"MONOCHROME1\":\n        data = np.amax(data) - data\n        \n    data = data - np.min(data)\n    data = data / np.max(data)\n    data = (data * 255).astype(np.uint8)\n        \n    return data","metadata":{"execution":{"iopub.status.busy":"2021-08-01T14:27:42.869265Z","iopub.execute_input":"2021-08-01T14:27:42.870648Z","iopub.status.idle":"2021-08-01T14:27:43.417808Z","shell.execute_reply.started":"2021-08-01T14:27:42.870612Z","shell.execute_reply":"2021-08-01T14:27:43.416378Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def resize(array, size, keep_ratio=False, resample=Image.LANCZOS):\n    # Original from: https://www.kaggle.com/xhlulu/vinbigdata-process-and-resize-to-image\n    im = Image.fromarray(array)\n    \n    if keep_ratio:\n        im.thumbnail((size, size), resample)\n    else:\n        im = im.resize((size, size), resample)\n    \n    return im","metadata":{"execution":{"iopub.status.busy":"2021-08-01T14:27:43.419981Z","iopub.execute_input":"2021-08-01T14:27:43.420511Z","iopub.status.idle":"2021-08-01T14:27:43.428689Z","shell.execute_reply.started":"2021-08-01T14:27:43.420463Z","shell.execute_reply":"2021-08-01T14:27:43.426955Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def save_dcm_as_png(source, dest, mode = \"train\", size = 832):\n    image = read_xray(source)\n\n    orig_shapes[mode].append((image.shape[1], image.shape[0]))\n    \n    image = resize(image, size)\n    image.save(dest)","metadata":{"execution":{"iopub.status.busy":"2021-08-01T14:27:43.430674Z","iopub.execute_input":"2021-08-01T14:27:43.431412Z","iopub.status.idle":"2021-08-01T14:27:43.442712Z","shell.execute_reply.started":"2021-08-01T14:27:43.431354Z","shell.execute_reply":"2021-08-01T14:27:43.441325Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"for x in x_train:\n    save_dcm_as_png(x, \n                    os.path.join(\"dataset_det/train\",\n                                 x.split(\"/\")[-1][:-3] + \"png\"),\n                   mode = \"train\")","metadata":{"execution":{"iopub.status.busy":"2021-08-01T14:27:43.444672Z","iopub.execute_input":"2021-08-01T14:27:43.445278Z","iopub.status.idle":"2021-08-01T15:15:09.131129Z","shell.execute_reply.started":"2021-08-01T14:27:43.445227Z","shell.execute_reply":"2021-08-01T15:15:09.129812Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"for x in x_valid:\n    save_dcm_as_png(x, \n                    os.path.join(\"dataset_det/valid\", \n                                    x.split(\"/\")[-1][:-3] + \"png\"),\n                   mode = \"valid\")","metadata":{"execution":{"iopub.status.busy":"2021-08-01T15:15:09.133017Z","iopub.execute_input":"2021-08-01T15:15:09.133500Z","iopub.status.idle":"2021-08-01T15:26:51.256665Z","shell.execute_reply.started":"2021-08-01T15:15:09.133444Z","shell.execute_reply":"2021-08-01T15:26:51.255485Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"\"\"\"for x in test_filenames:\n    save_dcm_as_png(x, os.path.join(\"dataset_det/test\", \n                                    x.split(\"/\")[-1][:-3] + \"png\"),\n                   mode = \"test\")\"\"\"","metadata":{"execution":{"iopub.status.busy":"2021-08-01T15:26:51.258463Z","iopub.execute_input":"2021-08-01T15:26:51.258844Z","iopub.status.idle":"2021-08-01T15:26:51.270156Z","shell.execute_reply.started":"2021-08-01T15:26:51.258804Z","shell.execute_reply":"2021-08-01T15:26:51.268395Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!cp -R dataset_det dataset_class","metadata":{"execution":{"iopub.status.busy":"2021-08-01T15:26:51.272058Z","iopub.execute_input":"2021-08-01T15:26:51.272684Z","iopub.status.idle":"2021-08-01T15:27:08.363764Z","shell.execute_reply.started":"2021-08-01T15:26:51.272611Z","shell.execute_reply":"2021-08-01T15:27:08.362487Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### Create Labels","metadata":{}},{"cell_type":"code","source":"import csv\nimport math","metadata":{"execution":{"iopub.status.busy":"2021-08-01T15:27:08.365871Z","iopub.execute_input":"2021-08-01T15:27:08.366380Z","iopub.status.idle":"2021-08-01T15:27:08.371985Z","shell.execute_reply.started":"2021-08-01T15:27:08.366325Z","shell.execute_reply":"2021-08-01T15:27:08.370682Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### Image level - Detection","metadata":{}},{"cell_type":"code","source":"def isNaN(string):\n    return string != string\n\n#csv format\ndef create_labels_for_det(input_size = 832, mode = \"train\"):\n    \n    if mode == \"train\":\n        filenames = x_train\n    elif mode == \"valid\":\n        filenames = x_valid\n    \n    labels = []\n    csv_columns = [\"path\", \"xmin\", \"ymin\", \"xmax\", \"ymax\", \"class\"]\n    csv_file = \"./dataset_det/{}.csv\".format(mode)\n    \n    for i, x in enumerate(filenames):\n        _id = x.split(\"/\")[-1][:-4]\n\n        raw_boxes = list(df_train.loc[df_train[\"id\"] == _id][\"boxes\"])[0]\n        \n        if not isNaN (raw_boxes):\n            boxes = eval(raw_boxes)\n\n            orig_w, orig_h = orig_shapes[mode][i]\n\n            for box in boxes:\n                d = {}\n                w = (box[\"width\"] / orig_w) * input_size \n                h = (box[\"height\"] / orig_h) * input_size\n\n                xmin = (box[\"x\"] / orig_w) * input_size\n                ymin = (box[\"y\"] / orig_h) * input_size\n\n                xmax = xmin + w\n                ymax = ymin + h\n\n                d[\"path\"] = \"./{}/{}.png\".format(mode, _id) \n                d[\"xmin\"] = xmin\n                d[\"xmax\"] = xmax\n                d[\"ymin\"] = ymin\n                d[\"ymax\"] = ymax\n                d[\"class\"] = \"opacity\"\n                labels.append(d)\n        else:\n            os.remove(\"dataset_det/{}/{}.png\".format(mode, _id))\n    try:\n        with open(csv_file, 'w') as csvfile:\n            writer = csv.DictWriter(csvfile, fieldnames=csv_columns)\n            #writer.writeheader()\n            for entry in labels:\n                writer.writerow(entry)\n    except IOError:\n        print(\"I/O error\")","metadata":{"execution":{"iopub.status.busy":"2021-08-01T15:27:08.379316Z","iopub.execute_input":"2021-08-01T15:27:08.379685Z","iopub.status.idle":"2021-08-01T15:27:08.397100Z","shell.execute_reply.started":"2021-08-01T15:27:08.379655Z","shell.execute_reply":"2021-08-01T15:27:08.395828Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"create_labels_for_det(mode = \"valid\")\ncreate_labels_for_det(mode = \"train\")","metadata":{"execution":{"iopub.status.busy":"2021-08-01T15:27:08.399555Z","iopub.execute_input":"2021-08-01T15:27:08.400055Z","iopub.status.idle":"2021-08-01T15:27:18.701411Z","shell.execute_reply.started":"2021-08-01T15:27:08.400010Z","shell.execute_reply":"2021-08-01T15:27:18.700306Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"d = {\"class\" : \"opacity\", \"id\" : 0}\ncsv_columns = list(d.keys())\nd = [d]\nd","metadata":{"execution":{"iopub.status.busy":"2021-08-01T15:27:18.703048Z","iopub.execute_input":"2021-08-01T15:27:18.703698Z","iopub.status.idle":"2021-08-01T15:27:18.712702Z","shell.execute_reply.started":"2021-08-01T15:27:18.703650Z","shell.execute_reply":"2021-08-01T15:27:18.711254Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"try:\n    with open(\"./dataset_det/classes.csv\", 'w') as csvfile:\n        writer = csv.DictWriter(csvfile, fieldnames=csv_columns)\n        #writer.writeheader()\n        for entry in d:\n            writer.writerow(entry)\nexcept IOError:\n    print(\"I/O error\")","metadata":{"execution":{"iopub.status.busy":"2021-08-01T15:27:18.714600Z","iopub.execute_input":"2021-08-01T15:27:18.715151Z","iopub.status.idle":"2021-08-01T15:27:18.723822Z","shell.execute_reply.started":"2021-08-01T15:27:18.715107Z","shell.execute_reply":"2021-08-01T15:27:18.722419Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### Study level - Classification","metadata":{}},{"cell_type":"code","source":"classes = list(df_train.columns)[4:8]\nclasses","metadata":{"execution":{"iopub.status.busy":"2021-08-01T15:27:18.726237Z","iopub.execute_input":"2021-08-01T15:27:18.726760Z","iopub.status.idle":"2021-08-01T15:27:18.744169Z","shell.execute_reply.started":"2021-08-01T15:27:18.726717Z","shell.execute_reply":"2021-08-01T15:27:18.743046Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def create_labels_for_class(mode = \"train\"):\n    \n    if mode == \"train\":\n        filenames = x_train\n    elif mode == \"valid\":\n        filenames = x_valid\n    \n    labels = []\n    csv_columns = [\"path\", \"class\"]\n    csv_file = \"./dataset_class/{}.csv\".format(mode)\n    \n    for i, x in enumerate(filenames):\n        _id = x.split(\"/\")[-1][:-4]\n\n        gt = [list(df_train.loc[df_train[\"id\"] == _id][c])[0] for c in classes]\n        c = classes[np.argmax(gt)]\n        \n        d = {}\n        d[\"path\"] = \"./{}/{}.png\".format(mode, _id) \n        d[\"class\"] = c\n\n        labels.append(d)\n    try:\n        with open(csv_file, 'w') as csvfile:\n            writer = csv.DictWriter(csvfile, fieldnames=csv_columns)\n            #writer.writeheader()\n            for entry in labels:\n                writer.writerow(entry)\n    except IOError:\n        print(\"I/O error\")","metadata":{"execution":{"iopub.status.busy":"2021-08-01T15:27:18.745896Z","iopub.execute_input":"2021-08-01T15:27:18.746475Z","iopub.status.idle":"2021-08-01T15:27:18.757351Z","shell.execute_reply.started":"2021-08-01T15:27:18.746433Z","shell.execute_reply":"2021-08-01T15:27:18.755657Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"create_labels_for_class(mode = \"train\")\ncreate_labels_for_class(mode = \"valid\")","metadata":{"execution":{"iopub.status.busy":"2021-08-01T15:27:18.759223Z","iopub.execute_input":"2021-08-01T15:27:18.759707Z","iopub.status.idle":"2021-08-01T15:27:57.633579Z","shell.execute_reply.started":"2021-08-01T15:27:18.759661Z","shell.execute_reply":"2021-08-01T15:27:57.632460Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### Prepare zip file for dowload","metadata":{}},{"cell_type":"code","source":"!mkdir dataset\n!mv ./dataset_det ./dataset\n!mv ./dataset_class ./dataset","metadata":{"execution":{"iopub.status.busy":"2021-08-01T15:27:57.635356Z","iopub.execute_input":"2021-08-01T15:27:57.635976Z","iopub.status.idle":"2021-08-01T15:28:00.166604Z","shell.execute_reply.started":"2021-08-01T15:27:57.635918Z","shell.execute_reply":"2021-08-01T15:28:00.165141Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!cp ../input/siim-covid19-detection/train_image_level.csv ./dataset\n!cp ../input/siim-covid19-detection/train_study_level.csv ./dataset","metadata":{"execution":{"iopub.status.busy":"2021-08-01T15:28:00.172690Z","iopub.execute_input":"2021-08-01T15:28:00.173062Z","iopub.status.idle":"2021-08-01T15:28:01.986852Z","shell.execute_reply.started":"2021-08-01T15:28:00.173004Z","shell.execute_reply":"2021-08-01T15:28:01.985583Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!cp ../input/siim-covid19-detection/train_image_level.csv ./dataset","metadata":{"execution":{"iopub.status.busy":"2021-08-01T15:28:01.991498Z","iopub.execute_input":"2021-08-01T15:28:01.991799Z","iopub.status.idle":"2021-08-01T15:28:02.767816Z","shell.execute_reply.started":"2021-08-01T15:28:01.991766Z","shell.execute_reply":"2021-08-01T15:28:02.766312Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!zip -r dataset_siim_covid.zip ./dataset","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"<a href=\"./dataset_siim_covid.zip\"> Download File </a>","metadata":{}}]}