{"cells":[{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"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)\n\n# Input data files are available in the read-only \"../input/\" directory\n# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory\n\nimport os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))\n\n# You can write up to 20GB to the current directory (/kaggle/working/) that gets preserved as output when you create a version using \"Save & Run All\" \n# You can also write temporary files to /kaggle/temp/, but they won't be saved outside of the current session","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","trusted":true},"cell_type":"code","source":"import matplotlib.pyplot as plt\nimport seaborn as sns\nimport cv2\nimport tifffile","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## Data Loading\n"},{"metadata":{"trusted":true},"cell_type":"code","source":"base_path = '/kaggle/input/hubmap-kidney-segmentation/'\nprint(os.listdir(base_path))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"#load the training data\ntrain = pd.read_csv(base_path+'train.csv')\ntrain.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"#load the saple submssion\nss = pd.read_csv(base_path+'sample_submission.csv')\nss.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"print(f'Number of train images: {train.shape[0]}')\nprint(f'Number of test images: {ss.shape[0]}')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"#Loading the additioanl information regarding the image files suchas patient id, targe annotation paths etc\ninfo = pd.read_csv(base_path + 'HuBMAP-20-dataset_information.csv')\ninfo.head(10)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## Sample Image Exploration"},{"metadata":{"trusted":true},"cell_type":"code","source":"#Load one of the tiff images\nsample_img = tifffile.imread(base_path + \"train/0486052bb.tiff\")\nplt.figure(figsize=(16, 16))\nplt.imshow(sample_img);","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"print('Sample Image Size: ', sample_img.shape)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"#Get the masks, viz. those points with 0 as their pixel value\nmask = np.zeros_like(sample_img, dtype=np.bool)[:, :, 0].T.reshape(-1)\n\n#Extract the annotation\nannotation = train[train[\"id\"] == \"0486052bb\"][\"encoding\"].values[0]\n\n#Since its an str object, split it and convert its dtype to int\nannotation = list(map(int, annotation.split()))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"for i in range(0, len(annotation), 2):\n    mask[annotation[i] - 1 : annotation[i] - 1 + annotation[i + 1]] = 1","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"#Visualise the mask\nmask = mask.reshape(sample_img[:, :, 0].T.shape).T\nplt.figure(figsize=(16, 16))\nplt.imshow(mask);","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"plt.figure(figsize=(8, 8))\nplt.imshow(sample_img[5000:15000, 5000:10000, :])\nplt.imshow(mask[5000:15000, 5000:10000], alpha=0.5)\nplt.title('Overalyed version of mask on the image');","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"pd.read_json(base_path + \"train/0486052bb-anatomical-structure.json\")","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"pd.read_json(base_path + \"train/0486052bb.json\")","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"#splitting the information table for train and test images\n\ninfo['split'] = 'test'\ninfo.loc[info[\"image_file\"].isin(os.listdir(base_path + \"train\")), \"split\"] = \"train\"","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"info.head(2)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## EDA"},{"metadata":{"trusted":true},"cell_type":"code","source":"sns.countplot(info['sex']);","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"sns.countplot(info['laterality']);","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"sns.countplot(info['ethnicity']);","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"sns.countplot(info['age']);","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"sns.distplot(info['weight_kilograms']);","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"sns.distplot(info['height_centimeters']);","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"sns.distplot(info['bmi_kg/m^2']);","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"sns.countplot(info['percent_cortex']);","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"sns.countplot(info['percent_medulla']);","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]}],"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":4,"nbformat_minor":4}