{"cells":[{"metadata":{},"cell_type":"markdown","source":"This tutorial refers to using the `fmi` library which can be found [here](https://github.com/asvcode/fmi) and the [fastai](https://github.com/fastai) medical imaging module"},{"metadata":{},"cell_type":"markdown","source":"## Goal"},{"metadata":{},"cell_type":"markdown","source":"- Create a dicom metadata dataframe from the images (using from_dicoms2)\n\n- Within each folder(which represents each patient) we will choose 5 images that represent the best representation of the patient based on what window level and width"},{"metadata":{},"cell_type":"markdown","source":"![dataframe.PNG](attachment:dataframe.PNG)","attachments":{"dataframe.PNG":{"image/png":"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7hlUY4K6RrUuNjPvUP+3FzFjE9uJJ8rY0q+OMetU/V6qxEbcW8c1JmK+5PxezUXa5xhlrEDfzG/Gnj5pU33VuthM/7St/8pj5D+qcac9Gq1fL9s6RjUu6Gtb56Gf9yg206baHq1hH2P8YwNbaZeyutZ8corXaYsSX+IejXE2h5dqNpYqfBND9Ukcib3WUzZKiu2dW5SY0maPffQS51/dt/reH6let2iffZ59Wut5PTuf0qaeN+kbWznXRm3SDvujc6xz7bnxrP+nW1cmok6cUs9BuSDwE529V2f2zvajlFJKbWn0y5tSSimllHpdJt2UOkE1a15JEu5a5V2Abs9zQiml1JtWfzdZKaWUUkqNZdJNqZOUT7uFMz4BUD+CPtr3nhNKKaXelHLPOesep5RSSil163pRSTellFJKKaWUUkoppV6CTLoppZRSSimllFJKKXWyTLoppZRSSimllFJKKXWyTLoppZRSSimllFJKKXWyTLoppZRSSimllFJKKXWyTLoppZRSSimllFJKKXWyhkk3vgpeRERERERERERELuRv82w/pR99+v+JiIiIiIiIiIjIhZh0ExERERERERERORmTbiIiIiIiIiIiIidj0k1ERERERERERORkTLqJiIiIiIiIiIicjEk3ERERERERERGRkzHpJiIiIiIiIiIicjIm3URERERERERERE7GpJuIiIiIiIjcBb/5jf/xs//q1/+bz/78//5/P/vyf/5fPByP2nVo99Zbb70GtkbtZ/xP/8v/9qrvf/Qff+Gz//VP/s9huxFP1VdELsekm4iIiIiIiNw8JJp+6Vd+9SHhdknSrSfYYmNv4g3/P/OzP/8q4UUi7O/+3Jc++5P/6/95rW3nqfqKyHWYdBMREREREZGbh+QYCSden5F0AxJXJLBidwX9q43E8Jz7ish1mHQTERERERGRm4ZPef2Df/jlV5/uOivpBpRv2Zn56wmxEU/VV0Sux6SbiIiIiIiI3DR8qovkE0kojs9Muq3qQvz1T5c9574icj0m3UREREREROSm6Ukmk27bfUXkeky6iYiIiIiIyE1Dgqkmmc5MulG+ZWfmr8c14qn6isj1mHSTm4Z3dPLV2PXdnVo++trs3Jxqm0A59bSb/eNUbGGz9qs3tX7zi53RjY821Sek/+hbh4iltxcRERERuWd4pl49j2/R+we/SEFE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gUuTbnxKbG/f/gkz4Ll8T/9RX8r6X7isoO9svEdtich+TLqJ3Bkm3URERETk3iHRFPYmzip8auxnfvbnH36O6jujxNY1z+XYOpIoW42XMfAvbfz9QOR8TLqJ3BHcmPnzVJNuIiIiInKv8BxM4omflybdjia9+p+I4g+/lzyXH034bY2XcuJIbCJyHibdRERERERE5G4gWZYE0yVJt0uTVLSv/6P56+9/5/AnzJK8I+5R/Yit8SYBeMSmiOzDpJuIiIiIiIjcBSSf6ifULkm6YeOMvxzBzhHflyTc9o6XNibdRM7HpJuIiIiIiIjcBSSX8mmzypEkGjZqIutSjtgheUac/BzVz9gzXj/pJvJ4mHQTERERERGRu+ToJ90uTVD1/8NG8oxPre35v2z5hNvRhNuI0Xgv/XNZEdnGpJuIiIiIiIjcJT0JtZWEWyWotvrSp37arNpY9Z19Wi3tt/xWRm1J6vntpSKPg0k3ERERERERkb+BZNRX3/tnuxJYnZfYF0jEwahORK7DpJuIiIiIiIjI38Cnzy5NQL3Evny6jU+++Sk3kcfBpJuIiIiIiIjIHcKfrtY/cxWRczHpJiIiIiIiIiIicjIm3URERERERERERE7GpJuIiIiIiIiIiMjJmHQTERERERERERE5GZNuIiIiIiIiIiIiJ2PSTURERERERERE5GSGSTellFJKKaWUUkoppdTlMummlFJKKaWUUkoppdTJMummlFJKKaWUUkoppdTJMummlFJKKaWUUkoppdTJMummlFJKKaWUUkoppdTJMummlFJKKaWUUkoppdTJMummlFJKKaWUUkoppdTJMummlFJKKaWUUkoppdTJMummlFJKKaWUUuou9P7773/21a9+9bO//uu//uyXf/mXH473iHZvvfXWa2DriP7oj/7oVd8vfOELn/3whz/825ptPVVfpdTlMummlFJKKaWUUurmRaLp3XfffUi4XZJ06wm22NibeMP/22+//SrhRSLsS1/60mc//vGPH45Xeqq+SqnrZNJNKaWUUkoppdTNi+QYCSd0RtINkbgigRW7K9G/2kgMz7mvUuo6mXRTSimllFJKKXXT4lNeX/nKV159uuuspBuifMvOzF9PiI30VH2VUtfLpJtSSimllFJKqZsWn+oi+UQSCp2ZdFvVRfHXP132nPsqpa6XSTellFJKKaWUUjet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ouWm+emnnz78HN3wE0/qTLoppZRSSin1k0RWTUIdUZ7V9yTA4ittV78zdKVv2sbvnr5Vo/Fii2N/N1DqcWTSTak7k0k3pZRSSil17yLp9O677z5wadKNT4nt7ds/YYZ4Lt/Tf9SXsv4XLivRdzbeo7aUUvtl0k2pO5NJN6WUUkopde8i0RT2Js6q+NTY22+//fBzj0aJrWuey7F1JFG2Gi9j4F/a+PuBUufLpJtSdyRuzPx5qkk3pZRSSil1r+I5mMQTPy9Nuh1NevU/EcUffi95Lj+a8NsaL+XEkdiUUufJpJtSSimllFJKqbsRybIkmC5Jul2apKJ9/R/NH3zwweFPmCV5R9x7tTXeJACP2FRK7ZNJN6WUUkoppZRSdyGST/UTapck3bBxxl+OYOeI70sSbnvHSxuTbkqdL5NuSimllFJKKaXuQiSX8mmzypEkGjZqIutSHbFD8ow4+XlEe8brJ92UejyZdFNKKaWUUkopdZc6+km3SxNU/f+wkTzjU2t7/i9bPuF2NOE20mi8l/65rFJqWybdlFJKKaWUUkrdpXoSaisJt0pQbfWlT/20WbWx6jv7tFrab/mtGrUlqee3lyr1ODLpppRSSimllFJK/Y1IRn3zm9/clcDqeol9EYk4UEqdL5NuSimllFJKKaXU34hPn12agHqJffl0G59881NuSj2OTLoppZRSSimllFJ3KP50tf6Zq1LqXJl0U0oppZRSSimllFLqZJl0U0oppZRSSimllFLqZJl0U0oppZRSSimllFLqZJl0U0oppZRSSimllFLqZJl0U0oppZRSSimllFLqZJl0U0oppZRSSimllFLqZA2Tbv/hP/wHERERERERERERuRCTbiIiIiIiIiIiIidj0k1ERERERERERORkTLqJiIiIiIiIiIicjEk3ERERERERERGRkzHpJiIiIiIiIiIicjIm3URERERERERERE7GpJuIiIiIiIiIiMjJmHQTERERERGRu+Bb3/rWZ7/xG7/x2Y9//OPP/tE/+kcPx6N2Hdq99dZbr4GtUfsZ//pf/+tXff/O3/k7n/3gBz8YthvxVH1F5HJMuomIiIiIiMjNQ6LpnXfeeUi4XZJ06wm22NibeMP/F7/4xVcJLxJhf//v//3P/vIv//K1tp2n6isi12HSTURERERERG4ekmMknHh9RtINSFyRwIrdFfSv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iIiIiDw+Jt1ETuYpk260I+FG+egYTLqJiIiIiIiIPD4m3URO5qmSbvHbP9lGm/oNpibdREREREQ+p7+JvYK29f8wh73P1nlDPP1Gvy/M6H3rm+pH6OPld4cjcYjIMUy6iZzMkaQbr3Pj7HBDnLVJEi03zU8++eTh5+iGn3hSZ9JNREREROQniayahDpCntX3JMDiK21XvzN00jdt43dP38povNji2N8NRB4Hk24id4ZJNxERERG5d0g6vfPOOw9cmnTjU2J7+/ZPmAHP5Xv6j/pS1v/CZQV9Z+M9aktE9mPSTeTOMOkmIiIiIvcOiaawN3FW4VNjX/ziFx9+juo7o8TWNc/l2DqSKFuNlzHwL238/UDkfEy6idwR3Jj581STbiIiIiJyr/AcTOKJn5cm3Y4mvfqfiOIPv5c8lx9N+G2Nl3LiSGwich4m3URERERERORuIFmWBNMlSbdLk1S0r/+j+dvf/vbhT5gleUfco/oRW+NNAvCITRHZh0k3ERERERERuQtIPtVPqF2SdMPGGX85gp0jvi9JuO0dL21Muomcj0k3ERERERERuQtILuXTZpUjSTRs1ETWpRyxQ/KMOPk5qp+xZ7x+0k3k8TDpJiIiIiIiInfJ0U+6XZqg6v+HjeQZn1rb83/Z8gm3owm3EaPxXvrnsiKyjUk3ERERERERuUt6EmorCbdKUG31pU/9tFm1seo7+7Ra2m/5rYzaktTz20tFHgeTbiIiIiIiIiJ/A8mo3/qt39qVwOq8xL5AIg5GdSJyHSbdRERERERERP4GPn12aQLqJfbl02188s1PuYk8DibdRERERERERO4Q/nS1/pmriJyLSTcREREREREREZGTMekmIiIiIiIiIiJyMibdRERERERERERETsakm4iIiIiIiIiIyMmYdBMRERERERERETkZk24iIiIiIiIiIiInM0y6KaWUUkoppZRSSimlLpdJN6WUUkoppZRSSimlTpZJN6WUUkoppZRSSimlTpZJN6WUUkoppZRSSimlTtVnn/3/XEy5ZuJkLBcAAAAASUVORK5CYII="}}},{"metadata":{},"cell_type":"markdown","source":"Load `gdcm` library - use `pe-models` database to access gdcm.tar file"},{"metadata":{},"cell_type":"markdown","source":"## Dependancies"},{"metadata":{"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","trusted":true},"cell_type":"code","source":"!cp ../input/pe-models/gdcm.tar .\n!tar -xvzf gdcm.tar\n!conda install --offline ./gdcm/gdcm-2.8.9-py37h71b2a6d_0.tar.bz2\nprint(\"done\")","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"import libraries"},{"metadata":{"trusted":true},"cell_type":"code","source":"from fastai.torch_core import set_seed\nfrom fastai.vision.all import *\nfrom fastai.medical.imaging import *\nfrom torchvision.utils import save_image\n\nimport gdcm\nmatplotlib.rcParams['image.cmap'] = 'bone'","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Currently the `fmi` package is still under construction and not pip installable. Instead install via the `fmipackage` dataset"},{"metadata":{"trusted":true},"cell_type":"code","source":"!cp -r ../input/fmipackage/fmi-master/* ./","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"from fmi.explore import *\nfrom fmi.preprocessing import *\nfrom fmi.pipeline import *","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"source = '../input/osic-pulmonary-fibrosis-progression'\ntrain_source = '../input/osic-pulmonary-fibrosis-progression/train'\nos_items = get_dicom_files(source, folders='train')\nos_items","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"One of the issues with dicom datasets can be the sheer number of images, in this dataset there are over 33000 images.  Where does one start to get a quick and decent baseline?"},{"metadata":{},"cell_type":"markdown","source":"One of the advantages of dicoms is that they contain a vast amount of metadata.  If you want to learn more about dicoms and medical imaging you can view my [blog](https://asvcode.github.io/MedicalImaging/) for more information"},{"metadata":{},"cell_type":"markdown","source":"## Top 5 DataFrame and Dataset"},{"metadata":{},"cell_type":"markdown","source":"`fastai` provides a very convenient way of getting all the dicom metadata and display it as a dataframe.  This works in parallel and is very quick.  The `fmi` library has a slightly updated version `from_dicoms2` which allows you to specify the value of `dicom_windows`."},{"metadata":{},"cell_type":"markdown","source":"Here we create a dataframe which will include all the information contained in the head of the dicom as well as the max, min, mean and standard deviation of each image.  The dataframe will also contain the percentage of pixels in the chosen window (width and level).  Here we use the `lungs` window"},{"metadata":{},"cell_type":"markdown","source":"> Creating the dataframe could take a while depending on the size of the database.  For convenience the dicom_datframe is provided in the 'pct_5' dataset"},{"metadata":{"trusted":true},"cell_type":"code","source":"dicom_dataframe = pd.DataFrame.from_dicoms2(os_items, windows=dicom_windows.lungs)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"dicom_dataframe.head()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"save the dataframe"},{"metadata":{"trusted":true},"cell_type":"code","source":"dicom_dataframe.to_csv('dicom_dataframe.csv', index=False)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"There are currently `33026` images in this dataset.  It is important to drastically reduce this amout during the exploration stage. One way to do this is to only include images with the highest `img_pct_window` as specified by the window width and level."},{"metadata":{},"cell_type":"markdown","source":"Sort the values by `img_pct_window` and then group them by `PatientID`"},{"metadata":{"trusted":true},"cell_type":"code","source":"dicom_dataframe = pd.read_csv('../input/pct-5/dicom_dataframe.csv', low_memory=False)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"sort_w5 = dicom_dataframe.sort_values(['img_pct_window'],ascending=False).groupby('PatientID').head(5)\nsort_w5","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"The new dataframe now only contains 880 entires sorted by the top 5 `img_pct_window` values for each patient.  The `img_pct_window` value depends on the window width and level chosen when using `from_dicoms2`"},{"metadata":{},"cell_type":"markdown","source":"You can now save the new dataframe for later tasks"},{"metadata":{"trusted":true},"cell_type":"code","source":"sort_w5.to_csv('sort_w5.csv', index=False)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"For more about the `fmi` library: [view on Github](https://github.com/asvcode/fmi)"}],"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}