{"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":"<a id='introduction'></a>\n## Introduction\n\n---\nThe process is as follows:\n1. [Explore the data](#explore_data)\n    \n    1.1 [Normal](#normal_case)\n    \n    1.2 [Pneumonia](#pneumonia_case)\n    \n    1.3 [COVID-19](#covid19_case)\n    \n    1.4 [CONCAT ALL DATA](#concat_pd) \n  \n2. [Preparing Train, Validation & Test Data](#Preparing_data)\n3. [Set Up GPU](#GPU)\n4. [Creating Model Class](#ModelClass)\n5. [Train and Evaluate Model](#Train_model)    \n6. [Accuracy and Loss Plots](#Accuracy_loss_plots)\n7. [Predicting on Test Set](#Predict_test)\n8. [Model Evaluation Metrics](#Evaluation_metrics)\n9. [Plot Predictions against Actual Labels](#Plot_predictions)\n10. [Conclusion](#Conclusion)<br><br>\n\n---\n\n\nThe work follows (Lee, 2020), and divide the datasets (total: 6) into 3 classes by patient-level:\n\n![image.png](attachment:2d110378-698c-4625-9688-77f5ebe40e9c.png)\n\n\n* Normal  (607)\n    1. RSNA pneumonia detetion challenge\n        *         No Lung Opacity / Not Normal    11821\n        *         Lung Opacity                     9555\n        *         Normal                           8851\n  \n* Pneumonia (**607** Deceased)\n    1. RSNA pneumonia detetion challenge (Canceled)\n    7. Chestx-ray8 (data)\n    6. Chest X-Ray Images (chest-xray-pneumonia)\n\n* COVID-19 (607)\n    2. COVID-19 image data collection [2] (covid-chestxray-dataset) (468)\n        * COVID\n    3. Figure 1 COVID-19 Chest X-ray [3] (figure1covidchestxraydataset) (35)\n        * COVID\n    4. Actualmed COVID-19 Chest X-rays [4] (actualmedcovidchestxraydataset) (58)\n        * COVID\n    5. COVID-19 Radiography Database [5] (covid19-radiography-database) (46)\n        * Normal\n        * Lung Opacity\n        * Viral Pneumonia\n\n\n* unused datasets\n    6. Chest X-Ray Images (chest-xray-pneumonia)\n    7. Chestx-ray8 (data)","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19"},"attachments":{"2d110378-698c-4625-9688-77f5ebe40e9c.png":{"image/png":"iVBORw0KGgoAAAANSUhEUgAABDUAAAHiCAYAAAD4c/fRAAAgAElEQVR4Aey9bUxbV9r364/zwdItPvIhUiSEDkeKVEUcPiTKGcEjJWcqJBK1Qpy0kUWqRhDNRJAZBdr7KbRqoaPWo2ngTEs6d31maqVTZ6ZWpiG5oZ24HUgfyBS3dZT4ZJwmpNDEHSBAuB1upxj2/2jtN++9vW28eUkM/CNF3sZ7r32t31p7vfz3ta7lAv+RAAmQAAmQAAmQAAmQAAmQAAmQAAmQwAYk4NqANtNkEiABEiABEiABEiABEiABEiABEiABEgBFDVYCEiABEiABEiABEiABEiABEiABEiCBDUmAosaGLDYaTQIkQAIkQAIkQAIkQAIkQAIkQAIkQFGDdYAESIAESIAESIAESIAESIAESIAESGBDEqCosSGLjUaTAAmQAAmQAAmQAAmQAAmQAAmQAAlQ1GAdIAESIAESIAESIAESIAESIAESIAES2JAEKGpsyGKj0SRAAiRAAiRAAiRAAiRAAiRAAiRAAhQ1WAdIgARIgARIgARIgARIgARIgARIgAQ2JAGKGhuy2Gg0CZAACZAACZAACZAACZAACZAACZAARQ3WARIgARIgARIgARIgARIgARIgARIggQ1JgKLGhiw2Gk0CJEACJEACJEACJEACJEACJEACJEBRg3WABEiABEiABEiABEiABEiABEiABEhgQxKgqLEhi41GkwAJkAAJkAAJkAAJkAAJkAAJkAAJUNRgHSABEiABEiABEiABEiABEiABEiABEtiQBChqbMhio9EkQAIkQAIkQAIkQAIkQAIkQAIkQAIUNVgHSIAESIAESIAESIAESIAESIAESIAENiQBihobsthoNAmQAAmQAAmQAAmQAAmQAAmQAAmQAEUN1gESIAESIAESIAESIAESIAESIAESIIENSYCixoYsNhpNAiRAAiRAAiRAAiRAAiRAAiRAAiRAUYN1gARIgARIgARIgARIgARIgARIgARIYEMSoKixIYuNRpMACZAACZAACZAACZAACZAACZAACVDUYB0gARIgARIgARIgARIgARIgARIgARLYkAQoamzIYqPRJEACJEACJEACJEACJEACJEACJEACFDVYB0iABEiABEiABEiABEiABEiABEiABDYkAYoaG7LYaPRjJSAtIrUorcIECanU4iqu56Uk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cwQdoR/IiARIgARIgARIgARIgARIwAEBihoOYPFUEiABEiABEiABEiABEiABEiABEiCBwiFAUaNwyoKWkAAJkAAJkAAJkAAJkAAJkAAJkAAJOCBAUcMBLJ5KAiRAAiRAAiRAAiRAAiRAAiRAAiRQOAQoahROWdASEiABEiABEiABEiABEiABEiABEiABBwQoajiAxVNJgARIgARIgARIgARIgARIgARIgAQKhwBFjcIpC1pCAiRAAiRAAiRAAiRAAiRAAiRAAiTggABFDQeweCoJkAAJkAAJkAAJkAAJkAAJkAAJkEDhEKCoUThlQUtIgARIgARIgARIgARIgARIgARIgAQcEKCo4QAWTyUBEiABEiABEiABEiABEiABEiABEigcAhQ1CqcsaAkJkAAJkAAJkAAJkAAJkAAJkAAJkIADAhQ1HMDiqSRAAiRAAiRAAiRAAiRAAiRAAiRAAoVDgKJG4ZQFLSEBEiABEiABEiABEiABEiABEiABEnBAgKKGA1g8lQRIgARIgARIgARIgARIgARIgARIoHAIUNQonLKgJSRAAiRAAiRAAiRAAiRAAiRAAiRAAg4IUNRwAIunkgAJkAAJkAAJkAAJkAAJkAAJkAAJFA4BihqFUxa0hARIgARIgARIgARIgARIgARIgARIwAEBihoOYPFUEiABEiABEiABEiABEiABEiABEiCBwiFAUaNwyoKWkAAJkAAJkAAJkAAJkAAJkAAJkAAJOCBAUcMBLJ5KAiRAAiRAAiRAAiRAAiRAAiRAAiRQOAQoahROWdASEiABEiABEiABEiABEiABEiABEiABBwQoajiAxVNJgARIgARIgARIgARIgARIgARIgAQKh8BjEzVcLhf4nwxYB1gHWAdYB1gHWAdYB1gHWAdYB1gHWAdYB9a/DhSODLG2llDUoLhCcYl1gHWAdYB1gHWAdYB1gHWAdYB1gHWAdWCT14G1lRIKJzWKGpu84lLxXH/Fk4zJmHWAdYB1gHWAdYB1gHWAdYB1gHWg0OtA4cgQa2vJYxM11jYbTI0ESIAESIAESIAESIAESIAESIAESGCrEaCosdVKnPklARIgARIgARIgARIgARIgARIggU1CgKLGJilIZoMESIAESIAESIAESIAESIAESIAEthoBihpbrcSZXxIgARIgARIgARIgARIgARIgARLYJAQoamyS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AkRg3RMgUWPdZyElgAgQASJgRmAR8bEv4NqeB4ENwr1DBk/9ZvfQb0SACBABImBJIHELvW3PoThvJ+re+QzhaEwWNxIxRMNf4SOXE2U17QiM3CdBwxIinSACRIAILD8BEjWWnymFSASIABF4uAQWwvDud8LpPIAm13G43b9HS/0+OJ374Qrcebhxo6cTASJABNY1gQRiI0F0f/AOWpsOwOl0oqa+Be6O0wiERkk8Xtd5S5EnAkRgvRIgUWO95hzFmwgQASJABIgAESACRIAIEAEiQASIwAYnQKLGBi8AlHwiQASIABEgAkSACBABIkAEiAARIALrlQCJGus15yjeRIAIEAEiQASIABEgAkSACBABIkAENjgBEjU2eAGg5BMBIkAEiAARIAJEgAgQASJABIgAEVivBEjUWK85R/EmAkSACBABIkAEiAARIAJEgAgQASKwwQmQqLHBCwAlnwgQASJABIgAESACRIAIEAEiQASIwHolQKLGes05ijcRIAJEgAgQASJABIgAESACRIAIEIENToBEjQ1eACj5RIAIEAEiQASIABEgAkSACBABIkAE1iuBhyZqCIIA+iMGVAaoDFAZoDJAZYDKAJUBKgNUBqgMUBmgMkBlYOXLwHoVLdLF+6GJGukiRueJABEgAkSACBABIkAEiAARIAJEgAgQASJgR4BEDTs6dI4IEAEiQASIABEgAkSACBABIkAEiAARWLMESNRYs1lDESMCRIAIEAEiQASIABEgAkSACBABIkAE7AiQqGFHh84RASJABIgAESACRIAIEAEiQASIABEgAmuWAIkaazZrKGJEgAgQASJABIgAESACRIAIEAEiQASIgB0BEjXs6NA5IkAEiAARIAJEgAgQASJABIgAESACRGDNEiBRY81mDUWMCBABIkAEiAARIAJEgAgQASJABIgAEbAjQKKGHR06RwSIABEgAkSACBABIkAEiAARIAJEgAisWQIkaqzZrKGIEQEiQASIABEgAkSACBABIkAEiAARIAJ2BEjUsKND54gAESACRIAIEAEiQASIABEgAkSACBCBNUuARI01mzUUMSJABIgAESACRIAIEAEiQASIABEgAkTAjgCJGnZ06BwRIAJEgAgQASKQSkCMY+LHa4jGxdRz9Ms6JiAiERtBMPgz4quZisQMRq/+jGmr4pTu/GrGdU08axHx6TFE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U98Cd8dpBEKjJB6v56yluBMBIrBuCZCosW6zjiJOBIgAESACRIAIEAEiQASIABEgAkRgYxMgUWNj5z+lnggQASJABIgAESACRIAIEAEiQASIwLolQKLGus06ijgRIAJEgAgQASJABIgAESACRIAIEIGNTYBEjY2d/5R6IkAEiAARIAJEgAgQASJABIgAESAC65YAiRrrNuso4kSACBABIkAEiAARIAJEgAgQASJABDY2ARI1Nnb+U+qJABEgAkSACBABIkAEiAARIAJEgAisWwIkaqzbrKOIEwEiQASIABEgAkSACBABIkAEiAAR2NgEHpqoIQgC6I8YUBmgMkBlgMoAlQEqA1QGqAxQGaAyQGWAygCVgZUvA4+q9PHQRI1HFSiliwgQASJABIgAESACRIAIEAEiQASIABFYHQIkaqwOZ3oKESACRIAIEAEiQASIABEgAkSACBABIrDMBEjUWGagFBwRIAJEgAgQASJABIgAESACRIAIEAEisDoESNRYHc70FCJABIgAESACRIAIEAEiQASIABEgAkRgmQmQqLHMQCk4IkAEiAARIAJEgAgQASJABIgAESACRGB1CJCosTqc6SlEgAgQASJABIgAESACRIAIEAEiQASIwDITIFFjmYFScESACBABIkAEiAARIAJEgAgQASJABIjA6hAgUWN1ONNTiAARIAJEgAgQASJABIgAESACRIAIEIFlJkCixjIDpeCIAxWW5gAAIABJREFUABEgAkSACBABIkAEiAARIAJEgAgQgdUhQKLG6nCmpxABIkAEiAARIAJEgAgQASJABIgAESACy0yARI1lBkrBEQEiQASIABEgAkSACBABIkAEiAARIAKrQ4BEjdXhTE8hAkSACBABIrA2CYhxTPx4DdG4uDbjt+ZilUBs9EfcmE5YxCzdeYvb6GdzAmIc03eiiEa1f3cRS6x2eV1EfHrMEI87mIhZlQPz5NCvRIAIEAEisPwESNRYfqYUIhEgAitBgE28IgPo9JxAS30tKksKIAgCBMGB/JKnUVN/FG96Pkb3wA+I2g4yRSSmr2Gg8324mw6gurwIDl04L+EdXwCh0RmkDlXvIOB6DpUlhdIznU4nnNUVKCl9Gk7nC/CGZ1NTvhCGd78TzqpKVFZXy/HOL0GlK4CJiQBcTuU3KQ4sPQIERxHKq53Y7w1jQbr/GZQXbZaf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YSBHAeHIfF1DhnaJQCwBEjViedAeESACRIAIxBEgUSMOCR0gAkSACBABIpAJAdnDey622W9B7ZYzPjX5S2+KoUjjE6AjRGB9ECBRY320M9WSCBABIrACAiRqrAAe3UoEiAARIAJEIEpAjmKTivXFJNyNxeByrOgaz1J0mmhBaIsIrB0Cc31ozmNLtTaj4cJw8ggwq15zHpHpftjKcoUIOmk5PV31slEGRIAIEIH1SYBEjfXZ7lRrIkAEiAARyDoBHgseGzZxyaPf8ONd2Jubh/L2b6GKOZL1ElGCROC5JzDRhTrBobPa0a6O09BVr6hsXaUuhwlF7V7RofOq508ZEAEiQASIgBEBEjWMyNBxIkAEiAARIALpElj0w7GzAJxRaF4WVCXsx7n6EhRY3sdQXFSOdDOk64kAESACRIAIEAEisL4JkKixvtufak8EiAARIAJZJSCG1Gy3bEFOyV6c7BlCMMSWl/CIhILw9X6I1p2VsLS7EQgn9rqR1WJRYkSACBABIkAEiAARWKMESNRYow1L1SICRIAIEIGnSCAyi4CnG2c7j6CxzgKz+VVYm23odLrhHdOEeX2KxaSsiQARIAJEgAgQASLwvBMgUeN5b0EqPxEgAkSACBABIkAEiAARIAJEgAgQgXVKgESNddrwVG0iQASIABEgAkSACBABIkAEiAARIALPOwESNZ73FqTyEwEiQASIABEgAkSACBABIkAEiAARWKcESNRYpw1P1SYCRIAIEAEiQASIABEgAkSACBABIvC8EyBR43lvQSo/ESACRIAIEAEiQASIABEgAkSACBCBdUqARI112vBUbSJABIgAESACRIAIEAEiQASIABEgAs87ARI1nvcWpPITASJABIgAESACRIAIEAEiQASIABFYpwRI1FinDU/VJgJEgAgQASJABIgAESACRIAIEAEi8LwTIFHjeW9BKj8ReEYIcBwH+k8MqA9QH6A+QH2A+gD1AeoD1AeoDzybfeAZmTZkvRgkamQdKSVIBIgAESACRIAIEAEiQASIABEgAkSACDwJAiRqPAnKlAcRIAJEgAgQASJABIgAESACRIAIEAEikHUCJGpkHSklSASIABEgAkSACBABIkAEiAARIAJEgAg8CQIkajwJypQHESACRIAIEAEiQASIABEgAkSACBABIpB1AiRqZB0pJUgEiAARIAJEgAgQASJABIgAESACRIAIPAkCJGo8CcqUBxEgAkSACBABIkAEiAARIAJEgAgQASKQdQIkamQdKSVIBIgAESACRIAIEAEiQASIABEgAkSACDwJAiRqPAnKlAcRIAJEgAgQASJABIgAESACRIAIEAEikHUCJGpkHSklSASIABEgAkSACBABIkAEiAARIAJEgAg8CQIkajwJypQHESACRIAIEAEiQASIABEgAkSACBABIpB1AiRqZB0pJUgEiAARIAJEgAgQASJABIgAESACRIAIPAkCJGo8CcqUBxEgAkSACBABIpCYQGQWAY8Xd8J84uvo7NoiwIcx8yCIYFD9/yFCkSfdD5YRnhnXlOMBJkORtcWbakMEiAARWIMESNRYg41KVSICzzWBSTdazbtQXVoAjuNS/F+MRvfkc13tJ1f4Rcz43bA3WtHpnctOtnwYk/4BdNmPodlaq2o7E/JLd8BibcFx+5/RPfA9ggknCIuYGbmGLrsNjXW/REVxrtT+BSitroW15QScbi/GdNN4AHfrblSXFgp5ms1mmHdVorRsB8zmN+DwzcfXdckHxx4zzDXVqN4l9bn8UlS3ujFp1A9NxajYZcYehw9Lwv2voKI4T8yz7k10XLiOCTYZ48OYHv0LXLZXUWJi/ZixqEZdow1215e4EZxH9qZsPCIzfrjtB7Cr04ul+Jo+sSN8eAL+gS7Yj7fAatmB0nxTbBs2H4P9XDcG/EFx0hq6ha5OG5qtO6Vr6+AKro1JJD8zjKvdLjg6j6CxrgYVNUfhDi4kbotIAO5T78Bms8F2rBujT7MxE5c0e2eDLpiVZz0b67tgNh+Fe/JJV34ePscbMJvZmJafPRzybR6sjR6ZvSajlIhA6gR4RCaH4Ru9pxEM1SLmKHw3xhDK3o9i6sWjK9cMARI11kxTUkWIwBojwE9hoG2bOCHKa4DzVkDzgzgKn6cPl840ozKnGnZ/OApgcRhdB7ajpOYEBqef9ItxtBjP1FZkCv7ej3DUsgUmYQJRCpsntMIiLmDCewE2lmZ+JRranejx+DGmfHEdhe9aD1ynfwtziTRJKGqHN65JlhAadeNk3VbkFO/EwVOf4OrQaLS9x/zw9DjR3lCJfFb2/JfR4rqJab0vuYs+2Ks2SP3mEPrmUnlLeoSB1q3gcurgDKj6EaOj7od659k1kWE4LYXS5D1FIc60BZbjlzESioORRpswgaoXHx2VhZNUJmDLCAc9uNDxJuqqS5HP5aK4Yjea2j/GwNhc5kJLZBxelw2WkjzkV+xDu/MKPH7VmB0dwjW3C6fftigiT1G7F0vhIHweDwavtKMmh7FbQ6JGyI8vLnyMM62voEAYcyYU1LsQ0Ou3QquHEXBZUWDaAVvvbQQnQ+tjMr0wgNYNrO1fQLP7gUGdFxH0j6LjTD8qDnfjZ/sv4e/arsJ67hYuDs8b3MMj/HAcFz71YM/ve/CL/Zfws7e+wP86fR32a5OYSDD0+LAP9pp8cNwG1DjvZD4u0hjNdCkReC4I8PMIei6go2m3JP4VoLTGilb7Z/BO6Im2EQRddcl/H80uBJ8LAFTIZ5UAiRrPastQuYjAuieg+iHMt8Fj+KlsDC6zNebrbsRjEye/XCHquu6vb5LLQQz821uoFr48FqLCug/m4hxw3ApFjcg99Np+iQIuD2VN5zE0vZiYc+QB+m07kFPXhYmYKxcQdP8elfkbUNrwIbyJ0uHnMNb3LswF7Ot/HspaPkcwboK4hKnu/cgVJpEVaPemINzwo3DuLMDG1n7E23Ok0g9D8NhKxZe2ajt8GksSPjyDB0Em8HwOZ/s+VCjWCyYU1LSjf8Kwc8eQiu48RnDgPRysLoGJWYBUvIZG82Yh/8RflSXWBS+hyfkXBIRyLiM8OYRLrC3zd+BI34M0J3A8IsEvYavZBM70IprOG4hNSuF5RCauwlZZEjs2Ix7Y8p9tUYMP34PH9R4u+NK0cOIfYci+RxI2NmNf930dxjwiARfqC0pQ7xo1mKQrENfWRrK2XwrB/ec+/B0TJXT/X0Ht5UnEjvQlBK/fQOVbRvdcwt+/+z2G/stI9JTHdD7MrrG1xZtqQwQyJcD/hP532O8+B06yWtxVUSx9KOHAFdTB4Y8diYDqN1T4XTYQ/mucGDMajpmWl+5bVwRI1FhXzU2VJQLPEwHVD2GaogbCt/BR/QsoqDyGgfVuqcH/AMf2Mlhs59E/Mo0ImAjEvkCuQNSI3EVPy0swGQoL+v2MiU3FMabcS5gdPIZyE4ecmvfwfUq+FJYQ8p5ApbCkIw9lbVcxrX0Rmu1FcyETPkwGQkVs+fiAEztNL6NTd7KaSj+UJ0AcuKRfm3hEpm/ifNOL0ougCQW1TowsaisRW8bYvQWMOiwosdhwvn8YM5FoGY1FDR7hoT+h0lQIi3M4ftLM30f3vs3gCpvQPZ6qyMIEjc/RUpYHzvQSWnruxqcbW3Bpj/Eyx1oKJZvY6qbzBA8uedFexPpUhuNGbc2z+fcYmNWYCURG4arfjJIDVzCRTld4gghWLatkbf9wBOb9V2D+ZAy+h4+FPsY/DmPUP4xDts9FoaPxKjrvPFYV8a9w/fFz/P0fh+D+cQ6iQVQE08Gf8OcPZIHkMio/m4TGNktKQx7TJGqooNLmOifAjzpQxcRr5yCC4WWJBrMY/ATN7HeA42Da7sCIfEq4Qvx9ymvuQ5py8DqnTdVPlwCJGukSo+uJABF4QgSiEzUuoagxj6BvGJNxX+yfUDGf+WwimAstqL4Mr1TUmMewoxY57IuL3uQsAY+I5xh2On6IlmX+G9g2M6uRF2HzPEpwp/bUI3hsL4qWEabtaPfOai5QnS88jL7ZmDcszbVh+O3VMO10IqA7mUylH8oToFREDSl7YRJbLNaB24Im93iUi6aE8bs8InNziGpA0TIaihp8AK7aQnB5RktyeMwPHMFGbgO2O24jETGlPIt+OHYy3zc52NzWj1ldfsrVqg3G69dwjKpMlZNNbFV3P5VNpXy/jC13yoXhsei3o0oQ4zagyu5D1LZJXHZSWH4Mg1qxI+X0n+MLFbb6S4+Whm/iH98dRkCjA7Ea8zMB7DvIrDG68T8+exj1J7M0ifbDA3D+pCPQ8XPo/o8eUQx52wefbmeXxzSJGs9xz6KiZ5UAs4J8C684/DriNY+wtwNlggXH6+iKWdsl/j4Z/jZltYyU2HomQKLGem59qjsReKYJRCdqiUWNZ7oSz2DhViZq8FM9aBKsIApR6wqkMRHXoljEfddeURzZZodfd2KhvSe6L1pXiGasuY1uxMoaPBZ9p1AumLoWoaE7wZKKx9fRvqUI9V33DOqSSj+UJ0BpiBpQT3K5BKJKtM7GW9EyGr44TnShjk2oE1mSzLrRmMuBq3JgNKlAsYQp90EUMsY5e+G6H52iG5czwZkkE9sEdz6ZU1kp3yy87dtFCx3FPwuPxREnagtr0OGdMeiDT6aKTy2XhGx5zF6/jt1f/9WAzSK8n3wlChR/HImuyZ+7iwMnVfuayj0eHsL/JSxlGYDrod7DRx7TJGpo0NHuuiUQgtd+Cm6j5ZLyOM59E+6YDwkkaqzbLvOEK06ixhMGTtkRASKQKoHoRM1Y1JiF/8vvENR7J2UROXzfwBtUmySr8hacXX0Ge2sDzMKa0AKUmg9Eo1eoLo3djCAUuI5rt2On0dFreERCQfi+vqFfLjAfBrdwzTcpvaSz/WF4vbdjI4Mo5fsVKotzYSquxJ6mDlzwjut8JYnmnnxrJaLGYwScr4qTMlN9jB+T5PlqrhD8WLBlMBw2tA5A9c1ec6HBLltWUyWau+paH6jSz6l14b7uJF2yTkhozZFKP5QnQElEA21V1HXI+TW6p3Q+RWvv0d2PltFI1FD8zCQSNeSXUkNrDlXmKr4miwtBXb6q65NtynkrjkKZQ9Pv0H22EzbbH9Dp+ARf3AiqrFN0EkxrzEgRYxw2NO6pRDETfPJLUWM9jJPOL+Gf0XzhjyufTv4pHOKnv0JLCbNOMqGwqQdTj5m1y2bsdPhVlhspJJToEuHZ9y18k1Id2P7tG/DKEWdi7mVhTO/B7/XA4/kOvjtTiRnH3JulnYRsmbPPGYyG9B7yLP9lBL8eEESNvzkdwJRcpMdzuBVUW6jJJ6S/wpKWS/hZ0zfo/qte55XHNIkaGnK0SwR0CfDjXajPyUN5+7ca31QkaugCo4NZJ0CiRtaRUoJEgAhkh0B0omYsaozBVdcedSK6HITnYzuON78mCAFG69/50E04GypQ3vz/wDcZBg8mVFzFKUsROCEaxCsQQoKysKDmN+H0B+Hv+QCdbfthFkLNxr/oLgcH8TELafr6dmmCpHZu+ljwFs7CXL5eKTrVEiaf/CP4nPtRKvmHqJKWZvChW7jQsgMl5nfRO/oIESaETHwDOyufqRz7Ph1ewQRoJaLGT+i2bhKXTGzthC/TOTjrIFPdsArRLjKNLiBPOpi1ht6SgAjGu6yiJYjpVTgDeuLWQ/Q1l2Kz7RvNS5i6B6fSD1VlSSQaqJMVtlX3cVXo1As7G3eP3oFoGY1EjSVvO4qYVcWGNgws6E3iAMiWGoqwoJeXdExpvxxs7bwZNftPcEvCUzET2zkE+09IDmHVTuUKUXnkK12fE+mOGX7iSxwq2wLLqatRh6nTIxhw/BqlJrXfDCau3MDl0/ukcSqHHGXPBjN2271pCnKLCHbtk5yGbsXuuu3YmDAiSkJq0ZMGzz7xWVcu+W9Rj5NFTA9dRIccUUiwamKsTcivPIwL/kcqywg51KlYZ+HZaLHi4MH9aHM/kMqwhMkvTqBxf7307LSgzvpr2JTz0aLGbcW0vUZMirtYeyAC/+U+YfnJv1yeTm3ZFJNC7t7CvzBLjd/dMrASk8dm/LNeWwLaJwLrngA/A29HDQot72MoLqIX+336Faoct7EYCsBz8T3YGtlzoh6NbZ1w9voxQ8uH130XygYAEjWyQZHSIAJEYBUIRCdq+qJGBKF73WjeohIP+BmMfuuBp/8MrMISCfXkRCqi7BBx8zvwzMdO7qJLKzagotkOl8sF12deTLIvwL5v4Rm8CFslCxca/6LLz4ziW88g+h0Nokl+jB+QCGZGvfB4voLDKkepuIpA90GUKJMJKc3F23DWFsGks75eKd+KzP1XIGos3UTnVvaVOU2LBJ3eseTrxFah7vEsdS7XObSIMWet5JNCp53ZHYrD0Fxss9+Km/DwU91oyDVyECpnmawfsuvkCVC6XFRpZ+qAUihmNB0jUSMqWBj571AtJ0lB1Fh5+8l8pb/KxLYSB48fxj7bp/COzSLCJMfQCHo7aiUhoBStAzOxN6c9ZmYw0FpqsMyG+WPZHXViujSK7uOdcPzZBjNbmsNtQ6P9Y/HZ4LqAz7wTqsl/bLEM9xRfJFlausMy0nv29fvQ3SRF5RHGmuyzYgnTvb/F5m2/g/v+vFB+PjyNu77P0W5mwi4HU5Ud/hjntSw6yzlYBCEygXUVfwfOmvwkoWs1ZJS2l8unOZ9ol38E5/HL+FmT0TISvZuXEPiqH7/Y/zleNVzWIo/pTJ9PevnSMSKw1ggwS1Mfek5asfPQJQQU56HqerLfp9fwwh4rLHJod+W9RxRSC8z/Du/MSr6SqPOj7fVKgESN9dryVG8iIBH48ssv8Ytf/AL/9E//hJkZzWThqVKKTtSESXTMj6Dq622MeCAX2HjivjziwHYTB31P3I8w0LpVcHyo//U5hRfdoAtmVlbdckXrlPtSDd5450uMhZfBh++gu2UXmtz3EHDuRg6Xj53OUZ3J0iTcjcy55Eq+jhuzkekZ/lUmH+lO3uNTVJZD6AhE8VfrHYmyNLLIAVQOQ7d0wPtYLWKJlhy5hg5C5TxV+ei2KbtO7hfpclGlvcqWGgCzSmF9m4Xd2wO796FqGdMipr3voa4kX/yin8iaQ8Ky8vaT+SoJSiFdC1BzyouQuqnYJfw43E1bBEuCTbZBlXXEQvpjRo5kous7ZAmT7vNwT2pesJW+n8HEW1NVgMe85x1sFp5pBdldeqJENyrAS1UNeKc3gDC/jHDgElpebJHWurN+t1/X14winOr2x+h4yqnvwri2jVg95/vRuumXsPvjgyPHYZAPZMyWx7z/P7Fl/xW8+tVM6tZrCz/B9ttu/P2JHzBiaBgij2kSNeRmor9EIErgPrrqCqWPCvL7GFvC2wL7VfbMiV4JiB8gTGVvwjkYQEiwyoggNOZFd7ssVptQuO+S/jNFnRRtE4EEBEjUSACHThGBtUrgwoULgpAhiwVDQ0M4deqU8gO1adOmZ0DgUE34NjSj+24QwaD6fwD+v9hRt1FlqaE0mNHEfQkTXa8LEzf9L9rRPPXPp/Cim6KowZWfgk/9JTQyj9DcDckS4kW0e/WCn6msE9Ja5qCAAZRJj4F1g/pS7bY8GWSTsRUuP1GWQ3AmFLV7M1i+EG0rjquFc0zPUaXaYajmC7/gE2JLAgehcuVV+aymqLHKPjVYbfjpq2iTwu5xXAHK6g7iqO13aK6rRGWTC0M9R5DP2lZ3si/zEP9G228lApsqzaQT22XMut9ELiufuu8r1kNpjBnlniJYOr/EyIxe31GVjW0mLZ/m+kS7fBDuAyoLioJ96AqmUIZEaSrn5GdfLso7b6om+rERc/jwHOZ0Tb5l4bQYje5JJVVxQzWedJd0MaGwAZuYr5CYSY0mGe1uhmz5/xpHh+1z/OOZAIIaDUqbRXR/Ad5P+/CLw9+i+2Gim1J41kcTpS0isL4ILD+A92uf5AdMstZQBIoi1Dpvq549EUzeGIQ/blkKQ6aKpsZVw+7XD7C8vuBSbTMlQKJGpuToPiLwHBNgVhlMxGBiBhM2FhYW4PP58A//8A8YGRkR/h47duwp1zCVyaTGp4ZSYvnFXjtxj4oaOdbuqFM55T5ZNNgEa/dPytHoRgovuimKGrqiiXwvtwt2H/Olof2nYpLCxFN7t7hvxEb/6tijqq8zK5qEA5CjcXAc9NsiNuf4vXn4OqtEIW6TDR4jPxGKQ0sTCpt7lSgpgsXOpiMY0CxBis9HxTzroobcnyQhYWEIjtcsKn8uah8GNmOv84iWUbdfKZWSnGOeOSL5dpGc43bdxHTksbScJ0WRYsXtpxRK3EhhYqtYh6hFjYzGzDz89lckPxPsK2MBSmteR/NxO1xuD0b1RI4UyqepkcGuGL61oORtfHXThb0FJtFpaKKvlI/T6ReZjO8IQhN34PP0odt1Bq017AusgYWCHBpYL/SvMNZeTjM8c4aCET+Pvg+/wn9793sM/VeqCsoyJv7zOv75YD/+404CJ6JCy8lj04CDQevSYSKwbgnwUxho2yb+JsdFQElARQntbvTeleBeOkUEVARI1FDBoE0isF4IMFGDiRhMzFCLGidPnhQQsL//+q//iuvXrz9FJNGJmv5SDla0h/B8eAWjcR/cjF/sl/12bGNfe/X8UkSG4bQUwlTeAa/uZDeFF115kqU7AY7WSW/yqUzaWPn0/puKUbHLDHNdI1odHmS2WMiYTfLGDsNvr5bKliRUarLElm/Bvi03/RcgJV3ZaakJG1v7Ezr6VByG5u6XIoyE4G2vwpb269BzH6pkIWxE28y4H8r9QmNFEJtQ/J4S/WQDtjtuYabvsOiPJa7tpUgZhnO3aBn1+lV8xjpH+Hvoqt8IzrQLjpEUYtHEtJ/MVSfdVA+lIBoo40MlaijH4phJY8hozEQeYujTP6C+rCB+rJnK0eC8GbsEJoXyJa+qHL51O2yDU+ARRsBZJzqz5crQ0qfnn2MZs2n1i1TH9xJCgWtwdRxCY0sHnD0e+McmEYrIfdloMr+Eqe79osVMzJIu0Ypj23YHRowClRgBSpvtAoYuD2BLWoIGj9Cd71H724EUBA1W0GQcjCpDx4nA+iUQ9bWk/aCUiMkU+pqZrzGjZ06ie+kcEYgSIFEjyoK2iMC6IZCKqPHzn/8ceXl5YD43ns6/6ETNeDJpVLIEL/b8A/QeegkmzoQCcwd6/FMqZ4SvoqTy93AHjSZ1KbzoZkXUyMa6/QzYGN2iOs7fd6FWchYY70xQdWHSzQWMOHZJX8szEEjkSB2mV5Kv31cchm4Ul5uwL0NbLKlN3lVWEMb9UO4X6YkafMCJnSzyjZ7AlpSf+oLoWMlM1OCx6LejypRMPFHnuYj7rr3ShHwDquw+lbmx+roUt1OY2CoChq6okeGYEcKdeuB22WFrNKM0n1lOMEFEE40mhfIlrWn4BjorC7C5rR+zskC16IO9ijkf5nSdAydNM+6CBM8+5doQ/OcbhSgvTd1jGoswuS8nmGAoX1ZfVFllMH8br+j66VCyNdpIi20Ega//gv9+/FYaFhpAZHwEe5u/xqmkFhpyIVPgIF9Kf4kAERAJyO8/aS0lkcea0RJCgksEUiNAokZqnOgqIrCmCKQiavT09GBychJ/+7d/+5TqHp2oGU8mjYqW5MU+Mg7vhZNoqpbCk+aXosZ6BGcuD2FSd525nI/842v8ws+POVHDJkUZWGoo93Kb0dw3JWea5b9J2CTNbRbe9u2KGGFx+JDpKtioU0IOpso/YSjWu1iCksgT6jyU265FJ4iGd0QdHJp2fohb/UdQVOvCfXliaXgfO5FKP5T7RRqiBj+BvpYycNwGVHbeyJihWPRoGTMSNcJDsNcUwFTWht6J+EVPhnjmv0V7eZ4oAhTUweEPGV6a9EQKE1s9USOzMTOP4OhPusz5kBenapj1hmaMp1C+hHXkpzBoq4Kp5G30TatNy3jMeztQLoR1zkZfSD6+ZWEyR3cMyH1ZU/+Yys3B1/mysGxGtpISxvKLf4iLKBVzm9FOymyXEPzuOsp/dx3uhP4wYjOKPBzDod/14tB3IY2AE3td7F4qHGLvoD0isHYJLCPk68VAEt8//KgDVez9R7biijxCcDLZG4Lkx0cnIt3a5Uk1Ww0CJGqsBlVKkwg8YwSYtQUTMtiSkjt37gjbyZafPHjwQFme8nSqE52o6QsEiUqV5MWen0PAfQy1e8/oxFRPlK78omvkd0Dl9CoDUQOKSX86X8wTlVfvXBI2erdojvEhDzqE0LYcONOLaHLdijXV11xvvBvBeHeTtOQiD2VtVzGdgtDAT1zBgZJcFFjOwp+SEKJycMgVo7T0hTS+KKfSD+V+kaKowc/Cf/Y1FDBroZTrYExRLbykLWpE7qKn5SWYWESUoUc6EXcS5buEkPcEKoUJOQdT2Vtw+dNNQ0o/hYmtnqiR2ZgZg8vWhaBu1eT21jiWTaF8uskJB5cw3fc2SoyWmCgCF7PaqYVjOI3IIXGZJhvfUb9Cun0lcgeueib2JhI1AFkY4XKs6Bqfx31XA17O1FonJbZPUtBgUOUxnZhDHH46QATWKIFl/3vYZfsmwVJP+WNDKQ64g2Ko6KkevLn7AwyrnaJr+Iih1TdjX8g8I/IAACAASURBVPf9NH9/NAnR7ronQKLGuu8CBGA9EGAhW99//320trYKUU+Y9YUsajDnoMy3BnMQ+vHHHws4mE8Ndkz2ufF0GMmTCyOrh0SlSvRiPw+/41Xkc0Wwdt1N48sdy092JMqB23wEfVOqiAVMKOl+G1VlL6AoQ0sNNjmNTvKLYLHf0BELmLPHYdwYnc3wBSARm0RM1ed4RIJX0WEukkz181Bq/Xe4haU86utU28zM39cD++EzsV9z+UcYsu9BgWDyX4jK1s8wouslnaUl57sZJfVn0xOkFMGIA1d4GH2zqS78T6UfyhOg5KIGHxqGW/ASzwSN0/BOp2EZocIZuxkto+5ENfZiaW8Z4WA/7PUvoKCyDRdHMu1PCwj2n4BZcHjJRK5yWE+74ddztinlzIfH4XPbcdjuib4gpzCx1RU1MhkzLPpJ9bHYfigz4h+ir+WFeMshpXwVaPdKFin8Y4QXkvUjHpH7XWgozEVJy1eGoh0/fgn7CsWlLzmWcwgktBiTC6v3N9n4Zj4xfi0uG9r8ewzMylYjPCLTN3H+QA1KipivmySTef4BuhvY+M9D+R/ex4kdDXDdVz0P9YpmdExha7SESBY0vsOnd/6K4MO5+P/jM/D6x+H5cU6xwJEtNFoGJjGmd8/Dv8I/PA6PfxrBmHDPrKDymE7CwahOdJwIrDUCj6+jfetOtA9O6rw3sd/mS2gqKdG8tzD/VbXGgoUgqtdge8c3KVhcrjWgVJ9sEyBRI9tEKT0i8AwSYOu12VKS5eVlnD17VpiIMlGD7S8tyS+1ULbZ0pOnLmqoPWnn1MEZSGbCqAIfuQV7JTOL11vGITuYZOvmc1Fc8YpOtAkL6preRdfQw7gf7+WAE6/IPiWKa7C/9Shstrexv/oFlLdcQmDkY5jZBD3vEPrmtGYHLOrCToF/XpMbj7SnWRXYJN/xOkqEr9+5KDH/FqfPXULfoAeDfZ/hbPsbqK45msDvh4pD3CaPyFQvWjfngOMKYTn7vSaefNwNiQ9EfoLn7JuoUPwQ5KK4+g20dTpw3uWCS/j/EezHW4RoGzkltbD16n2NWUBwwA5rqbiUwVTyKo5+dAUef0AK43sPo0NX0XWqEZVlu2H7lEXr0IOXqLiyk9NkjkU1aaTSDyN+OGryRYGnwga3Um4pBPGoDx6h7RpRXZwLLr8KjfarGAsnmxBrymK0GxlHX6vodT7H8gGGE6YbQSjgwUWZpcuDYMLrjTJVH+cRmRjE2aYqMSQs6/+mElTvP4JOx8dSP3DB5bTjePNrqCzOR4n5OHpVpsz8Izea8tiY3GnoI0URNbSRf9IdMwsDaN2Qh9KG99Hnn5DGAAtL6Efv6ddRVqXnVyf63DCVmHHw6NvYX1OHU0N6oZejbPjQDdgtReDilp1ErxG31E5DjQRN7T06+8qzrwRNbj3HowAf/FSJupJf0YhO55/haN8PS307LvkDGLCxcLMbUOO8k0A45TE/cAQbBTEyzTGlLXZCUWMZ074b+OfGS/jZ/hT+/3FEsMDh/xpEW9vl1O7ZPwDXQ+1YJFFD20y0v94JSM9AUxnq213ol3/nxvzwXDqB+qrX0dkX0LxTSFaSTOzu/ARXh0bF33R2T88HaLW8itaLt3U+3qx31lT/TAiQqJEJNbqHCDxnBNiyE4vFIogYTMj4zW9+I1hmGFWDXcP+P3r0SJioGV23Kscn3Wg170J1qSYqgRTFYI/Dh6gMoynBkg+OPZp7hfv2oNX9QLqYTcCuw9X2imQdIEVJEF7ONdu6puALmPCcQ9vr21Esmd2zSWrT2UFMRHhE1/hzMBVXYNceB3xL8/A53oC5ujQ66eNMyC/dAbP5DTh8WnPzRcz4e+E8eRhWcwWKTUx8McPa0glX/zBm0p3QC1zMmvzFugplNKv5aJimsMuHg7jhPofOtkbUqevI2JutaD7+ProG/JhMMnmW0znZYoW5oljy21GA0upaWFtOwOm+saIJuBj5RrOswKh+qfbD0Hc4bdmiCg+q6UPCBJ9FralHY9tJnL10DSMJrBiMihN/XOpT5h0q55ZS3nLEj1Y3JlU38qFbcDXXob7VnlJ7qG5NcZNZf9yA29mJtsa6mDHM+pnZ2oLj9i4MKEICAIHzK6hgYo88BvNLUa0zLhRRQx47MfVLY8yE/Oi229BYVx1ll18Gc6MN9ovfGvQx9iXyK3RYxXFvKt4FmzuRpRdrH6tUrxRNqxf9cOyUn3tszB+Be9LwaRfbJnrPPhaqtnoXzMIzSH35EkL+i7AJdTEhv6wBnT1+6bkSFW84g3ZQUmJfbrcwgfRldPoSizvKPXobiUSNv95F029SEDNkwUMQNebhPtOToqDB0iZRQ69Z6BgRiCUQwbTvEuy2pujvvKkYla+3JXhusg814/B8YEPjnkrxnUnwYXYYJ529CS36YvOmPSKQnACJGskZ0RVE4LknMDMzIyw7GRwcFOqyuLioWGUkqhyz5nh6jkITlWwF5/g5jPWdQn1NExwDPyIUIxAsIzx9B97udsmc3oRNtkEYxUJZQSnoViJABIjAc05AtH7SdziaRtUSiRppJJPdS8lSI7s8KTUiQASIwOoSIFFjdflS6kTgmSFw7NgxIUQrW1aS6r++vj7BqWiq1z/718mRO7ahbWAqgWm17PAquY+EZ7/OVEIiQASIwGoQYOvlX0WTezzBszSFfEnUSAESXUIEiAARIAKJCJCokYgOnSMCa4wAi4DCnIWypSWp/GNLVg4dOpTKpc/HNXN9aGbr9rfZ4U+CQDZ1z2vuwwoMq58PLlRKIkAEiEC6BOb70fpShmFc1XmRqKGmQdtEgAgQASKQAQESNTKARrcQgeeVAAvnyiKh9Pf3J63CvXv38POf/1wIAZv04uflgqBLdOJpdhmEc5QrsoxZ95vI5Taivuveyr5CyknSXyJABIjAmiHAoqgcxC7n6Mqfj7LYzG1Gw4VhjaPBpwGMRYLph62M+XnJQ5Xjh5XX8WlUg/IkAkSACKwjAiRqrKPGpqoSAUbgvffeE8SKoaEhQyDMQSgL9Wq1Wg2veS5PLAzCtskEbuMRDMwniJ7B30PX3k0wlXfAm+i65xICFZoIEAEisDIC/Ow12F4+DPdUio5ME2U30YU62emy7CyWMwrvmiihlZ6T/Wionf2aUNTuNXZOvdIs6X4iQASIABHICgESNbKCkRIhAs8XAVnYYEtRmIAhh28Nh8NgfjSYoMEipqy9f/MYdtQih4UzdQ7HhWsV6svPYeTc6ygo2AP70CP6Qrf2OgHViAgQgbQJzMJ3+QqGph8jMnMLnza/jKrOG0gj0HbaOdINRIAIEAEiQARSJUCiRqqk6DoisMYIXL9+HVVVVdEwitIXsk2bNgnWHGusutHqRO6ht303SnK2ou7k5/AFQ6K4EQkh6PsKH7WaUW7pgDswR4JGlBptEQEisJ4JKOFbmRWDCQWW9zEUyoKVxnpmSnUnAkSACBCBrBEgUSNrKCkhIkAEnh8CEYQCHnSfPYm2xnqYzWZYrM2wdZ6D2zumCfP6/NSKSkoEiAARWA0C/LQHjhYrLHVNsDm+xCgJGquBmdIkAkSACBCBDAmQqJEhOLqNCBABIkAEiAARIAJEgAgQASJABIgAEXi6BEjUeLr8hdz58AT8A12wH2+B1bIDpfkmaUlAAUqra2FtPgb7uW4M+INJviAvYmbkGrrsNjTW/RIVxcxzNzMVldJpOQGn24uxUERT6wdwt+5GdWkh8kt3CF+tzbsqUVrGtt+AwzevuR7Akg+OPWaYa6pRvWsXqksLwOWXorrVjUksYdJ9FGazui6i4y1TcQV2SWku+RzYs6sCxSZWPjPqmjpwwTsuLAXgw1MYHXTBZtkCk1KHOjTa7HB9cQPBcJJ4nPElTnBkETN+N+yNVnR6KXhnAlB0iggQASJABIgAESACRIAIEAEi8EwRIFHjaTZHZBxelw2WkjzkV+xDu/MKPP4AgsGg+H90CNfcLpx+24ISwTO4kRfuJYRG3ThZtxU5xTtx8NQnuDo0Gk1nzA9PjxPtDZXIZwJB/stocd3EdEQT/WHRB3vVBlEIyTuEvjnNeV1WjzDQuhVcTh2cgXiXYfxsP9o25whp5ljOIaDNEzwigXOw5Ki9jSffNpXsxvHuHxBKpYi65QYQmYK/9yMcVYSTUtg8IaOrxeP8PIKeC+hoqhOFHFMxKva8ifZzAxjLqtCSuBh0lggQASJABIgAESACRIAIEAEiQAQAEjWeSi/gEQl+CVvNJnCmF9F0XkdgiCkXj8jEVdgqS1DXdT/mDLCAoPv3qMzfgNKGD+GdXtScV+3ycxjrexfmAmYJkoeyls8RjBEZWNz5/cgVLCMq0O5NMsFnSfOjcO4swMbWfujYcwAYg8ucL4ga+TaPfrSJiAe2fCZkbEC1/YbGGmUZ4ZlxBJnAoxZmhDJuQs07VzGRrrCxHMTAv72FasGSpRAV1n0wFzPhJYmoEbkLd9sOFJS9CedgQCwnH8ak7zPYaoqQX2lD34TWCkbFnzaJABEgAkSACBABIkAEiAARIAJEIKsESNTIKs5UEmOCxudoKcsDZ3oJLT139Sf6cUmx+OlmjSXBEmYHj6HcxCGn5j18H05ldr+EkPcEKgXLjzyUtV3FtPq22V40FzLRw5RAqIgWjg84sdP0Mjp9Rss20hE18mF2jUUT191axPTQeTQxfoKwUYRa520kkHLiU+F/gGN7GSy28+gfmUZEEV4SiRohDHXWwGRkkTJ+CfsKc1C47xLG1Tzjc6cjRIAIEAEiQASIABEgAkSACBABIpAlAiRqZAlkysks+uHYWQCOy8Hmtn7MpjwBZqLGr+EYXYhmNf8NbMLSjhdh8zyKHk+69Qge24uiKGDajnbvrOoO1bnCw+ibTeS7Igy/vRqmnU4EDOuRbVGDFZUtWXGhXrA44cAVHoR7Kp3QchHMhRZU4TrlMhqLGvx9F2pzOOQ190FfvpnBQGspONMuOEZUbaQiS5tEgAgQASJABIgAESACRIAIEAEikF0CJGpkl2eS1JYw5T6IQmZhkLMXrvtp2Rdo0l7Efdde5LC0ttnhT6Q9aO5ku6KFhei7IrfRjaiswWPRdwrlkhVEQ/cD1eRfk5AQt74I9V33jK9RrCA4JF9+koqlhlyGefjtr0hORPOx0zmaoAzyPUZ/k4kaS5joeh0mLlH5ljHrfhO5XB6qHD+soCxGZaTjRIAIEAEiQASIABEgAkSACBABIqAlQKKGlshq7gv+J0T/EiaLC0FD64YUCqFKa0PrANK2DWBLMKqkJRxap6CqtHNqXbivW04e8wNHsDGpNYcsGGRb1GDuPByoEsQXDjnWbkylgE3/ErmMRpYazEqmFFxCUQOIeGyCI1Zjaw793NfKUXE5UHInr3QdMaI+QH2A+gD1AeoD1AeoD1AfoD7w5PvAWpl3aOtBooaWyGruT3XDKkT5yMHWzptIZ8FEXLGUtDagxnknA8sAeaLOBtMvY5e1IILxLqtoBWJ6Fc7A47jsgYfoay7FZts3Bg5C5VtkwSD7ogYUB6McuK2d8GUMVC6jkagxB2+7uFzHWECSLTU4cGYXgnL16S8RIAJEgAgQASJABIgAESACRIAIrBoBEjVWDW18wku+TmwVLAsSLWOIv0/vyMrTWsSYs1ZytqkzmVcchuZim/0WtKtb+KluNOQmchAql1oWDFZB1FAtbeHybfBkHHhELqMOB6EaKsHCyH8HPw530xaRJ4kacuPTXyJABIgAESACRIAIEAEiQASIwKoSIFFjVfHGJi4vT0i2jCH2Lv29lacVQdBVZyxqQOUwdEsHvI/Va1BES47chA5C5XLLgsEqixqraqkBQBF5TCiw2GND50Yewmt/DSX5LCwsB2NrDpkJ/SUCRIAIEAEiQASIABEgAkSACBCBbBAgUSMbFFNMY8nbjiLBUmPly0+iaZlQ1O7NYCmLWtSohXNM67RU7TC0FK0DM9FaCj43tiRxECpf/mREjdX1qcHqsoTp/qMoE0LhcuDyt6Gu+XewHT2IuvIdaHJdQ89R5neDHIXKLU9/iQARIAJEgAgQASJABIgAESACq02ARI3VJqxOf6ILddKkeGWTcAArTmsevs4q0VJjkw2eBbUlhlRoxWGoCYXNvUqElOURB7ZvOoKBeZ171PUVtldR1FB8akhCwuMhOF6zwGw2x/+32OCeMFqfIpfRaPmJXKlFzPi/wJnWX6GyOBdcfhnMTe+ia+ghIvwdOGs2gOOq0Ombl2+gv0SACBABIkAEiAARIAJEgAgQASKwigRI1FhFuHFJL9+CfVuuKCTk7kf3VMaeLYGYtN6Ee1br9SIud82Bn9Bt3QSOM2Fja7+Bs0+Vw1ClvCF426uwpf069NyHajIBVH4vshvSVRX9xLQLjpF5zPYdFsPlShFRoh6VTShs6sGUoQaTqqgRXzv5CD/ehfocDqbtDoyk2xRyIvSXCBABIkAEiAARIAJEgAgQASJABNIiQKJGWrhWevEi7rv2ilFFuA2osvugXfSReg4LGHHsgkmYwBehoftBehFQZt1ozOXAmV6B3Z/AskDxJbFRXG4y/w1sWyxwjKQaRFYWDLLtU+MxAs5Xhfobh51NlaZcxmSWGkbpzcNvfwUmbgua3OPptYNRknScCBABIkAEiAARIAJEgAgQASJABJISIFEjKaIsXzD/LdrL80RrjYI6OPyhjDPgp3rQVGgS0jJV/glDYUNTBE0esriSh3LbNcwmvC3qMNS080Pc6j+ColoX7ie8R52dLBhkV9Tgp79CS0kOOFMNOocyZyiWVC5jJqIGj/D376EmJw9lh77ERMpc1IxomwgQASJABIgAESACRIAIEAEiQAQyIUCiRibUVnTPEkLeE6iUfGuYyt6Cy/8ow6/7EYx3N0lLLvJQ1nYV0ylMqvmJKzhQkosCy1n4kwohaoehxSgtfSFNqxBZMMieqMGHfDhbVwyOK4LF4UN4Re3BbpbLmK6owSMS/BwtZRtQYHkfQ6EVLCdacR0oASJABIgAESACRIAIEAEiQASIwPojQKLGU2nzBQT7T8BcIFpZcKZyWE+74Z8xXozCh8fhc9tx2O6J9X/BP8KQfQ8KhGUohahs/QwjhpNrNgm/ig7zZpTUn019Eq7231F4GH1p+e+QBYNsiBpLCI32oN1cJAoaf/KkJOIkb2K5jGmIGvw8ggN21JcUJWGePHe6gggQASJABIgAESACRIAIEAEiQAQyI0CiRmbcsnAXj8jEIM42VSFfdmxpKkH1/iPodHwMl8sl/nfacbz5NVQW56PEfBy9QT3hY0GYYFtLxWUtppJXcfSjK/D4AwgGgwgG72F06Cq6TjWismw3bJ/exHQkBZMOpZZh+O3VSZyKKhfHbPCz/WjbnCMskcmxnEMgLl8ekZGzqBEsV/JQYfsc/jFWZvn/PYz6POi79AHaG2tQbDIhv6IJ9qsBJDUyiSmJ0Q6PyFQvWoUyFsJy9vvE6UZmEfBcxKnGHSiz2ODy3Et8vVG2dJwIEAEiQASIABEgAkSACBABIkAEVkyARI0VI1xpAssIB2/A7exEW2MdqksLRH8bHAdTcQXM1hYct3dhwD+RdPLMh4O44T6Hky1WmCuKJSeiBSitroW15QSc7hsIhjMLzbHst2MbV4rWgZkUKryESfdRmM07UJovWaNIwg2r0y7zG3AIYU+XEfLaYSmRIsLI4o7mr3BPXSPaOj/ApYFhzMQJIykUSXvJkg+OPWaYq0ujolJMGfeg1f1AddcSQv4LaLb8Cq0ptofqZtokAtknEJnF2K0fMZOOPpn9UmQvRT6MydvDCGZHrcxeuSildUiARyQUgMfzYxaWN65DfOukynx4Bg+UDzDSh5jJEIyCx68elmWEZ8ZVH4NYWR5gMvTkS7J6daSUiQARIAKJCZCokZgPnSUCROAZJMAHnNi5Md2lUM9gRdIs0nLQgwuOTtgE661ccPk2eJ7n99aQH26nHe2t+2EWBN06uIIrqxAfnoB/oAv24y2wWtTCqiTwNh+D/Vw3BvxBhBIJpJFpjLB0bE2o21WBYskPEpdfimqLFS0nz8HtHdNJ4wHcrbtRXVqI/NIdMJvNMO+qRGkZ25YFXU3DyyJrTTWqd+0SxW2WT6sbk0hNJF7yObBHKCerpxl1TR244B0XJlh8eAqjgy7YLFtUYncdGm12uL7IXOzW1ELaXcSM3w17oxWd3jn9S57I0WWEJ/0Y6Hofx5utsKgFbKkNm4/bca77GvxBNhFdRsj/GTptzbDWSGK32YXgEynr6mfCzwzjarcLjs4jaKyrQUXNUbiDSaKYRQJwn3oHNpsNtmPdGCW3UaqGiiDoqlM+QgnPBTbWhTGruuyJbM7D53gDZvMrqCiOfiTKt3megsDyRCpMmTw1AguYvP09RrVinnp/1IcbY6EMfQU+tYpRxmuAAIkaa6ARqQpEYH0RmIOv82VwnBRmeB1Vnp8ZxbeeQfQ7m1DCLIued1EjHITP48HgJZvkPHkFokZkHF6XDZaSPORX7EO7U70EL4jg6BCuuV04/bYFJYJAYUJRuxdx8zR+FqPuk6gryUdx9Vs41XUVQ6P3lK+gY34PepzH0VBRKCzJy688DNfQw/jJw6IP9qoN4qQn7xD65lIxqXmEgdat4HLq4AzEu0BOaTlf4BwsOVx0sqWxfON09k0lu3G8+weEUimi0XiLTMHf+xGOKsJJCj6KmG8izwV0NElWiqZiVOx5E+3nBjCWoVUhwJZ2XofL9ipKTIWoaDgOZ49HtayRLWm8Brfr3/G2WRZ5XkS7N4Rw8BY8nmu40v5LMfT6WhI1Qn58ceFjnGl9RfLBZUJBvUtnSajcwGEEXFYUmHbA1nsbwadigSCX5Vn8y2NhoA0b2HjaeAjuKb2lwazciwj6R9Fxph8Vh7vxs/2X8HdtV2E9dwsXh+fjnxtSVfnHIXj+vyEc6OzF/9l4CT976wv8r9PXYb82iYm4h1aUDx/2wV6TD47bgBrnHZpYRtHQVlYIyD7oEv3G5MPsGovPjf1GuM/CJluls+e9uQGtZ75I6FMwPiE6QgT0CZCooc+FjhIBIvCsEpj/BjbJT4tpuwMjma2oSrF2bHmYB64Tn8D3eCUzvhSzS/WyoAvmtSBqyPWNeGDLZy9JmYgazAHyl7DVbAJnehFN55P5DGKT3quwVZagruu+XALxb+Qu3G07kG8qR8NH3oS+h/hwAH0dteIE0fQSWnruaiYoS5jq3o9cQUSoECbNsZnp7PGjcO4swMbW/liH0Mql0RdKw6+wCssNqLbf0FiSSGbqTODpcaK9oVK1/G4Tat65mn5Y6uUgBv7tLVQLX4gLUWHdB3Mx86OURNSQWBeUvQnnYEAsJ1uC5PsMtpoi5Ffa0DeRrtXOAoK9x1BTYAKLLHZeT2xSWLKNBUz0H0NlzuvoUs0UIx6byOWZFTVW8FyKcS6+Gfu67+tMfHlEAi7UF5Sg3jWq6dcxANf1TtJ+shSC+899+Lv9lwQxgwkasf+voPbyJLRB6fmZIP738SvCtb84/BX+7z9eVQQRdv/fv3sbfsPfoxA8tlJwnMHEcl23GFV+5QSiv0F6Arl4LF5Q40M34KgvR1nDGQyMTonL6ZmPusGP0FSWB1PZ2+hJZjm28sJTCmucAIkaa7yBqXpEYG0RECeKG4qLsSmdyWKGEJa87Sh6FsUDEjWkFpXDKueB0xUWjBqevfibYfOophP8FAZtVTBxBaixD6XmS4GfgbejWlzSYapAW/9k7ARxthfNhcyvkCmBUBEto7CsyvQyOn1GyzaiL5TJRY1UJjWLmB46L7xUii+jRah13obRN+doSVVb/A9wbC+DxXYe/SPTiKQUIjuEoc4amIwsUsYvYV9hDgr3XcJ4ylriAoI9b6PMxKX3gsxEoOLYZVxJJ6uq6j+NzRU/lyLDcFqYpREHbvPvMTCr+fQfGYWrfjNKDlxJX+R6GkCeUp5J+8nDEZj3X4H5kzH4Hj4WxCH+cRij/mEcsn0uChyNV9F557GqBksY7fkav2jzwOkPRZ9DS2H4B77DPzOrjf2X8T97ZqCv55OooYJJm1knwH6DytHcN5V6yvwE+lrKwJV1wBvnM4sJqMy60ITC5l7Mpp4qXUkE4giQqBGHhA4QASLwzBIQvmS/gIbPvsSZ7cy0f3V/CJWX1ioHRlOeXD0BeiRqiJAX/XDsZM6Vc7C5rR+zKbcRe/H/NRyjsk8BHvOed7BZmOS9A898ygkBasuh8g54Y+59BI/tRXHymDQcthhlyrTTiYBh9tkWNRhG+au85NS58CDcU5pJbsIuHcFcaEEl5shlNLbU4O+7UJvDIa+5D/ryzQwGWkvBmXbBMSK3UaJC8FgcPoudwrKbbWgbmFKVJ9F9AJiosTN2fCvj/hm11FDKl/Fzicei344qYRnWBlTZfSohS1x2Ulh+DINasSMJyvV2WmkHg36yNHwT//juMAI6w4mfCWDfQSZQdON/fPZQtQxuHt32a3Do+hZ6DO8nvaIFx6k7mNAFTqKGLhY6mCUC7PleEftBIEnKfNAFi4mDoRDP34GzZgO4onZ4dcZKkuTpNBFQCJCooaCgDSJABJ5tAjweezuwZeMRDMwv4L5rr7juPceKrvF0zdRTq2myl9bUUlmFq0jUALCEKfdBFDIhImcvXPfTsi+IbRQ+AFct+3Kdi232WwZfQGNvie49RsD5quSAsxiN7snoKfBY9J1COSsjV4SG7gfGk+3H19G+pQj1XfeMr1GsIBK8ICrLT1Kx1JCLOg+//RWpDvnY6RxNUAb5HqO/yUSNJUx0vQ5TQvP4Zcy630Qul4cqxw/Jy8KPw920RRCPcmpduG8oChmVOfb4MzvupWJmp3yz8LZvF9tcsZjhsTjiRG1hDTq8M8m5x2Jbd3uJ24HH7PXr2P31Xw04LsL7yVeitcYfR6IOaRcn8R/n5+16SAAAIABJREFU7xoIFkDEf0NYzvJ/nLlr8FWbRI111xGfaIXTFzXkcZJT36VveSeLGhmLtE8UAGX2DBMgUeMZbhwqGhEgAmoCD9HXXIot7dfBjHX5qW405LLJ4gZsd9xOcyLK0l1GePpHwVGlx3cHEzrh7+QfY87gS5xYughCgeu4dtvIcJKFhwzC9/UNBPXthcWyzNyD3+uBx/MdfHekNafq6qu3k4oa6jLxiEz68IXLjnbbH9Dp+BR9/inVOnnN+bPd8ATnDV7EpUIIDh4/g731V6gszoWpuBJ7VNE21EWN3xZ5+L3fwuu/hxnmEFKZiKfhU0Ow2mEO8TiYLC4EVzCRFZd9sL60Fa0Dj+KLnOQIP+pAlSBc6FgfqMppPOHmMT9wBBuTWnPIgkG2RQ1AXYccazfSMC7W0JHLaGSpkdqkSx57xtYc0Wyj7VcAiyuQuO9GbzPckvNWxr3Q37txtvMPsNk64fj0S9zI6hhhEWO+gMPWhD1COHYT8kt3iqHYv/DHhW2OK59hTRKf4Ke/QksJ839iQmFTD6YeM8unzdjp8KssNxKnkewsHx6H79otTErjk0Unuu29IUWc0dzNhzFz1w+vhz0HfbgzHV5xW2pykHbT462fBntsJfK9wiP8cAajIaOH/jKCXw8IosbfnA6kON6WMX7tL/ibxl60D6uXrKhLmNr4Ut9B20QgdQLpixrLfju2sd9HgyWiouWekX+f1EtGVxIBEjWoDxABIvBcEBB++HJfhTMgv8xJJursx3JLB7yGjtM01RM8cJ9RRT5gk1n2g7sFls6/YJq9fLNJzI3LOG0tF79kshCQLFyf8L8Bdu89+Hs+QGebHIo0/qv4cnAQH9uPofn17WI4UN1IJcynwUV0xDhsZOUxgUXVuOB/pP9SrytqzOqU6Q5CfpfKZ4JcV9mx5RJCPicaSvNEBtLEnL18HOrVtyrgQ7dwoWUHSszvonf0kRAKMzzxDeyWInCmcuz7dNhgQiQ5NxSiUkjlYPnlV6LhDwexSxCo0hA1prphFZYb5GBr502V+bamvZPuMj8tvxatfrhaOMcysPhQRBkOXNzXpgjGu6xi+iZ1/1UXTBTsNtu+MXAQKl8rCwbZFzWiwhIHbmsnfBmbActlNBI15uBtF5fkbGgdgP7iEtlSg4MiLMgI4v6q268Knb75uCvSPRAzWY3cR7/sEFYeH0K/3YEjfdkYIxFM9LahrHA3TvX/qDhMnR7th6OhHCb1cyPpc0nlIyalSi8i2LVPioayFbvrtmNjwogoKSUK/Wef5lmjHieRhxjq6pAiCqmeDVwhKlsuwB+SO6MculR+Fpthtlhx8OB+tLkfSIVbwuQXJ9C4v156XltQZ/01bMr5NHgnqW5MP0lybfzpCPyX+4TlJ/9yeTolUZ7/r3F02Ny6zkWj6ZOoEWVBW9knwJ7vu+EYnUMo4MFFuw2NdRaY6xrR1vln9MZ8MJFyX74D16tF0ntWOayn3VK0Ex6R6W9hr30FTa5bK4u+lf2KUorPIQESNZ7DRqMiE4H1R0A0j8+NMV+UlqMIE42taO57mASLHCVjG8ztn8MXDImO28IT8Pd/hJbKQshfqJdGu3G804E/28xi9IrSRthdLriE/5fhnZxF0PctPIMXYatkvj3iRQ0l/KqjQVwioZ6cCCVdwnTvb7F52+/gvi9aRvDhadz1fY52s/gCYKqyw7+oY4KgK2rMa8qUh5f2H8De+g70+ILCZCkS+gGXWl4ShZqCvTj9yQnj83pWA4u34awtgklnvT0/1YMm5hRTZykIH/oB3cf3oNzCyjIuej7nw5i+cx2X7U2oyJf8OaQR/WTJ14mtQtvHs0/SETSn5+HrrJJEnTREFXUqsvmsMNmNdTopXKY4DNVf3iJaHSVyECpnJgsGqyBqqJa2rCxUsFxGI1FDJVgY+e9QLSdJLmpkof1kvNJfZbL60gEcP3QAtq7vMCZYckUQGv0SHdL45ISlcJrxme4Yme9H68YN+stsmL+W8nfgkVbXJX8uZbAMT/FLk4VlXBK/+GffUfQHLqFJsAqRRAvF+m0Cvc0vYVtbD+4LYXxZhJ678PV0wFzAngtanx+yY0ExHUNhTBiT+fFha9PgrekWcbtKP1HqEneJ8QH+EZzHL+NnTQNwPTSy5pBvj2DyxzGc/FM/Dg/ORp2Hyqdj/pKoEYODdrJMgD3fK7Bnv1kKja4WIdl2EcynPBrrMvnda1P04wn7mHH0EPZUNcGZNEpVlqtAya1ZAiRqrNmmpYoRgTVEQHgRfSFeuFi+DYfgMJSD4XpNCQM/ew228nxDh5LsBbXY5lEty0hmXswSTuEFUleAYPdGEHTt1/WzoAgEnMGXZ8M01WXikLPzLIa1oojAUhQREp/frPFwvoCAczdyOCOfC5NwNxYLTjtjLCekSV5OzXv4Ps7zOSvvMsI/foz6NC01lAmFjqDEUk39n9yG7IUsQ1EjqSCgchgaZ1UkWnLkJnQQKtdGFgxWWdRYVUsNAIrIY0KBxQ7vtMo6JvIQXvtrKMlnyyI4GE5aZSTKGFxJ+ymJCRtK38rZhVM3462louOzHDaPetlZ+mNEjGRi5DvkAdyOXqi9tLACKuXLZDIdW1XBUaziJJcryOrSE8jPqdwyVL3xLnrH5sDzcwh0/xYvNrklnxBjcL16EN1xzmlVPnPi+mN0PBk+99lzbtMvYffHWu5kwjsOmXQg83bgMe//T2zZfwWvfjVjYNkGYOYO6oVoJ6pQsG99AfMH3+Pq+KK+FZ8yHlYq9hrVmo6vawKCWLgRZU0fYTAwK74vRWYx5v1/lY8xHKe/lIQP30G3/FFF+CDBntmFqGi044vRWYP+vK5pU+XTJECiRprA6HIiQASeNAHJfH+zXlSKxajD0ISREmRHiL9URbzQ1GPGg4/dgRgz4OQvrfKEOMELpPxiH2epAfDhOcxFNF96hWLJAoHW8aRU5gRpJhda5LSNymxwfukmOreyieaLaPfqxaxYxJizVvwSo0y25IlJEieZyvKN1EUFJawlt9LlJ9HlEMZ10/SVuN2o2MDVODEW16Rqh6GlaB2YiaYg+NzYksRBqHx5NB9DT/IKS6P2ldPS/o2mLVssaa9IbV9Ox8hSg6WyhOn+o0L4VWHpV/421DX/DrajB1FXvgNNrmvoOVoKLiVHoer2MxABUyu4clXycZ+9MaJYHBXsRmfvMGZ0nwdK0YSN5OWLvT7hHh+E+wBjzSYYHLiCfegKqkSmhDcnOSk/pzitFZI6Ys4ywqH5GDFZSXXWjUYmdua+Cfes2ppBNZ50l3Sx34wGbGJ+QjRjMRPeSnk0G5m2g7iM5HP845kAgvLKGk3abHf54SS+/nEO4uob0Vqj/Y9XROeivxmAUzdCSgq/STp50SEikBIBfgI3vr6tv1REbfW1zQ6/esiyZXydr6Gsqg1dN2/Be9mOg9UlknNqY38bKZWJLiICEgESNagrEAEi8GwTEKwxClHeeVP3i1b0q2mO4kQ0rkLyhFxHWIi7VnUg+UtrCi+Q8ot90rwjCE3cgc/Th27XGbTWsGgcBhPThGkmK1OG5+U8uV2w+5gvDe0/ZnlSJ06MlPXyP6HbykxOE4hJLBllIp66qIGJLtQJISk5ZdmQtkSp7cvRONikbhOs3T+ldpv6Krl/cSZssg3q+4lQHIbGhiFeHnFg+yYW0Ucz+1Knr2zLgsEqWGoobSBZDTweguM1i+SXQOXDgPmVsdjgnojvAWIx5TImEjXYlaKzxjOSs1kuvwzmpnfRxUyRleU8qYgUWWg/ha+4kfG4z2SMLPpgr2JL2CRRIb8UNdYWHLe74PaM6oocycunqZDhrhi+taDkbXx104W9wnIPEwr3XdKPUsDSSadfyDySPvtUBYyEMDHqg6evG64PWlFjZMGlRCzScRQtjLWXYfPoOP3NgLeqdDGbGbUDP4++D7/Cf3v3ewz9VypjPiZL8PMP0PbbbkHY0I+Akuz5Hpse7RGB7BFQhUbP+XXU+op/gN5DLyG35t9xU/GPI/kuu3Ym6tPL9EqcZVX2ykYprQcCJGqsh1amOhKB55aA6kdSfulP9FfPDwSruzwBTuflOiUz7xReIBO+2C8hFLgGV8chNLZ0wNnjgX9sEqFIknT///beNyaOK+/zrZfzoqUR0n3jF1xZYtHDC+tGFmIle31HsJJzEyFB5AixTlALZ2OBNROBExmSPIZYE/Ao7rmTwExMMpN+krScCZ5xy/sYe00SehKTCDJxJ4E1/Tid2DgQux0ggEmbbUxDfVenqqu7urqq/7nB0HyRUFdVV53zO59zqrrO9/zO7yRNM8W1Kd2Tza+PvsBb8beVorLOrgQM63B5ofgirIyga6eY6pJCrIh2qFOcp2/Hq1fhfHib2hncdiT2AqU/J83taHR2ScK2Fs0tPs2LxWnRoKUGL4y4JHQBQ6P2BjHSVW0txsVdL3Y0wSD3okZ09RPF42kRC4PH1FgwCfUdWSnDsj+m2ZhK1EgoXPSAPNWHxgIJtsdcuK4f7YueEb8RV3/N/Qmj8/Fnp96LtvWox5HxmhzeIxDB8q7gnOMQKqKxZSICh1jZp/wIen3xU2BS22e012xfW771MTguz0JGCBO9DZGAuRVoH5w2cQdfzaxdJH1O6WySg5gYdqO77Xm0d/diwOvH5EwQ4aTPBREg9oga8yhuSpfqxfGwZdvJnLfO0rjNzOthCWMfDGN3loKGmnkYvguXVG+NF0fhTfD0MG+bcYZzhwTWisDdQbQViueX9lu+iuDw71AmPWIuMorn360+NIt4XFktqb5WBWG6m5EARY3NWGu0mQS2CgElYOAelLRdisy/Ni94bEnHHeZu/NrLtX70wDypuKOpX1rTeIHU8k4QVILwn2lBua0crf2TBs+HFOlapinMT3Ftlt9HWURfVuJQme9EOyU1cPpD5ueIo9HztBch61Nj3+imHiUEE4ydldaWLjaLFBUc0rpSiQmy4HlB6VxZBnbVkorGkoi0UxEIcnc9XNfN1wDRLot9aoJBrkWNe5jofUpxBbZedjZmRfItzcZsRQ1tqthutHqmTDrWJrlHR+2FG/P9j/ZF23rWokYm7ThWHmW5U68HbrGigL0CRZqgZIgpkdq+WJqWW6FR9FQVx8cY0nkxmAUDtkzL6oukz6nIRaFvcEas8lJ2FP0Bw32Q6rkg7p9d6pS4mFeGiLfxhGmsIqOZ6fI2XqftZ1YPYUx89k/8P69dzcpDQ8tTxCDSloL9xe+uxrv4Kyelev7HUuIWCeScgHbP7uzCiCK4zWKwbRekwpcweNdKCb8LX88+ZYDCclplzg1lgvlIgKJGPtYqy0QCeUJAXb+8El0jKZYqlG+jvzmyYohZwMWlYXRsF6MHxuCXyUGlfmlN/QIpT/aiVnRODKKGWjYJ5p3IFOkm7SykuDZLUSNajkwYyt/BVS2Wi7UKLhrhH62fDDuDi1+ia29kOdriBrj8KdqJZXVrsT9EG9mOqp7RFCsM6BLSOtS26siIt+67hM1YgEPb/r/i6tBx7Dzgxi2rd72E6zXBILeihjz3CdrFyhS2WvSMZctQM1azMRtRQ0bom7dRW1CIipc+xnTaXGQsjnRjrzIdSQQfPQW/aVBazcbkn9ne91ndI6EfMR6ID2apWreC4JW/oFZZtjj+vkhtX/LyQZ7FZUc1bGUvY3BOP9Sv55jhfWCWZdLnlLhAEyZLcMA9kShgaR0kSyFV6wzZsKNjSFkOWZmO+Mgf4LWazpUFb7OiiWPp18MKAl99jb2/+xqen/S8jSkvwef9EYGk7X4F4wOfKUvB/pd/n4a2wHkspVTP/9iZ3CKB9AnICM9PYSbVc1WJg1OA2PLkkd8Dw/tPfL7a1NUsp3/GJ8a9LUyAosYWrnwWnQQ2NgH1hdVmJlIkGC5jcfg4digjm2YiyE8YbNujjAQU1J/GRBrB+EQWqV9atRdIq2CVi7jmOqC6dMf9qMfiAJiOTIRvwN0oYlFsoJga0ekeqaYf6CtHTK+oVLjbqt7EmOkL0QrmBl9GmVJ38Z03fUrm2ysIjryOqkhsDVvFi3D74131za8zOSrfQv/hXep0FlslOodmEjtZCZeFMe1pR5m0E/UuXxpCiC7AoVSK8vJfpTWiHMtWEwxyJ2rIQR9ONYhVa9ItQ8wa8y3NxkxFDbHs34dor9iO4vp3MKafe22eUfxReR4j3TWRwHOFqGh1w59pGpEU07/vDfdnNvdIoA8O92R8WaJ7EZaGpWNT2xdNwGRDu98sppjI0xhsr1Dvg4IDcF0zE1xMkjU7lFLUuIW+BhE7yKytyAjfPJtyVSRNHJYKmtA3tYhb7mbsc/pM4y8pJmbB26xo4lh69ZCuoKGkCP8HX8DhN3is6A2Qf4b79Q/xi2NfwjNvNjdL+00ytE19GtwmgYwJCOG/A0+7/Nb3FiJTwkpa0T+lxVxagNexF5KtEW7TwLbCkHkMd5RDslriO2NbecFWJUBRY6vWPMtNAhudgLL0aDH2946n0bkUAey+Rtdu4Yps1umOzB9XAuEVoqL9IiZCZi+E8VCiL626OdvyUghL0ZE03Yofu45jcFa3aoCydOHLqK74FXYmeGqIH//nVLFj1ysYXtBG79T53meer0XZThEvwuLFNGlnIdVLbbbfhzHV3xqJs7AT9c5RkwjoYjTnGkajy7PJWL52CvuV0WYz7suYG3kbhw49jyOPCo+LTEUNUV9LCAy9DrtSt2L6wV40veWBf15XF/HVCjk0BZ/HiWNOrzK6q30tB0fhrFc9fqSix9Fx3iLKu3JBJN+SX6HRZcZCS9XwGe34SpCsYsAYLontaoJBLkSNFQTHByLL8O1E/ZtezEXbdSzHzLc0G806qhapyYsIDDvRWLYTVR0XcD1LMQIiwn73ARQrApmIR3EYb3n8psE2VUtWEZrxweN0wKkLKhm97zOcfiKWac70HlnxvYkaxxdx7VCjJC9cQvuOogTPoah9ls8lLQXjpzZ/fRvK2j+xrG956iIOK3PcJWQiAhtziy7pGifo6s/SAgkXxE+DwTLmxs7g+Zo92KkIlkmeC1EvvULs/cM7eP3xZrhvWd/72fDWW6zfjtaDZTvRBI2vcO7Gzwj8dDfxf2oeI/4peL+/q4ii966N4f91jOHyz2a/TysIXP4S//lfh/BvN5YsfhdTPd/1JeA2CWRAQLxjPfqCTrDQXxsRpavs6PaKGD3an4zQ2Juosm1HVbfX9J1BfUfYhea+CcM0XC0NfpJAegQoaqTHiWeRAAmsJwH5Dq68UYcCaQ86hk0i2JvacgfDHao3hmSrQffIvO6HVVyg7/zaUFR5GF2nLmDwsheXBy/i9Fsvo/GlD+Nd3qMBILehzP4CTnQ8i9on/oKxe7Gf7NWJXjyhdNol2EprcaTjBByOl3Gk5lfYK8ST63+HXXSyDHNK5cC56GoDRZUt6On9G1xdR1Df2IWL/gkMO8Qyi9tR23vDUA4ZYb8TVUqaL8JzRxNEIlDkaXhay5TlMKucVxNfElJ9H52eUoiE6+U7GHM9gzKloyGY/BZvnb4YYXgBp7qeRU3tCXji5sYv4vqZw5FrbCiqaEDHW+/DfeZddDXXod7xMQKhy3AUiakf+7OMfi4jPH0Zp1qrY3EIbGWoOXIcPa6/w+12q/+9TrzW9mtUlRahzP4aLpktXRm+hWHnYZRrZax/Be8rAVwDCATE/zjGPv13vNHyOCrqHTgnVuswbY9WB0PwO2sU8U1zmbc603hcXhhCpxJDwKqzKSN8/RRqFdsLUen4EP5JzW7xeRPjPi8GL76HrpZalNrEfdAK56cTMHWiMRqQcl9GePYSOhQbS1B/6pvk6YYXMOE9H2Xp9t5Mfn7K/MUJS5j2vofWSuEBINpU5L7sPAnXmUg7cJ9Br/NVtD3zGEoLdsMu2mD0ll7BHc+LKBTXVjnhN/Xq0jqOkZVi9HZldI/IWBruxHbbXjS/ewn+mZB6r8shzPg/xluNlajuHEDAaEMazyW9Sdp2VLRLmHainaF96oOGWgmY2rlWnymeU8plywj0HY6IUCWobHkdveK5cPhpNL52Ef6Zochz4QB6J62ECr2XXmwairlVWfI2TyyFp8Yq5nyj+K8tF9WgnkdSfP7xOgIin58n0NR6Eb/s/Bxdn92Gf0oVQiZ/mMLF85/jsTf/A4NTy4bfBL2BWtu0EMT1p3KbBDIiEPGeLW9GT9+nGBu/qfwmTvq9GHi/E/X7j+P89YXEtqk9Ewv2oOHkh/BFnnPK4MLASTTsqkKr+6qJ4JGRcTyZBEBRg42ABEhgAxFYhM/1LOoqS3Xrl4tVNQ6iw3Pb3M4VH1wH7bDXlMc6tKJDoqzGcQKeGX2nfxWhwJc47+xEk70SpbZtKK18AvVNx3Cy91OMJ4wQLyFw6SSaqoQ921Ba+3tDh12YJDpRp9EpOkhKZ1LEz6hG66nLmA7LiM2zF52rStQddMGnmLSCoP88HE3iOtHZb0bPgDaqrI1girTKUWN/Fi7fIlZ8Lhy0P45y3SoJSpp2Uc6b8HQcjGcnFaO8pg4HXT6s4HaK7zW82kux6BDqr9e+F0txXkLvyWM6hnY0tffAPXTNYlR8GXO+D+DsaEJteXGko1mHE5onRHTufHx5tRzT/xT1OwpPbw86WxpQE8lL7dhWwq4sldmHYf90is6zls7raG+yo7I0ssqKqIv6JrSfPA3PaCBFGtZWq6t1JFspRX/tCmY8J2A31LtWprpI2xABBIMjTtSXRWyNdOi1jr32qbSXhhZ09ryHi8NW9aXPP41tq3tQERQqUWc33r+i7Z9FW/1v0OFMpz7SsMF4ivD+GPWgt+c4WhpqdPeMuOftaGp7Fc6+4ZiQgAjnOvFcUMUQ4fVVVP447NF7VsvEeI88bXg+pXuPrCLo/xBORysaos8vkacdLY63cd5S5EnnuaTZKj7Fc7Up0o534XD/rcSOh/50sb3sh2u/eq+KVQlKK48bnqXGC2L7Zs8p9TlmjzyLYudCvgN/36uRZ2wxKprewIB/VhUKo+KNVT1E0ol66e1Dj++uLnHjZra8jemo+0k9NX7+Aa3/mkLI0Asdmqghh+D75zdwvDuMms4PFUHkl8cu4ZnTV3H+22AaU9y0tklRw7zWePR+CMgzl/GeoxUHlXc0cV/uR1P76+i9pL27WKW+hOmRC3B2NERWeRLPlKfR2n0W3sBi6ueRVbI8TgI6AhQ1dDC4SQIkQAIkQAIkQAIksJkIqN5P5kGX164cSUWNtcs2RcoUNVIA4tckQAJ5SoCiRp5WLItFAiRAAiRAAiRAAvlPQAQkfir9JYBzBISiRo5AMhkSIAESyAEBiho5gMgkSIAESIAESIAESIAEHgABEVT60STLuK6RSRQ11ggskyUBEiCBLAhQ1MgCGi8hARIgARIgARIgARJ40ATESlJHUZfuKlk5M1fG3cGX1ICyJc/h7MTdDRAXQKyeNQRHhYirYxLENmdlZ0IkQAIksPEIUNTYeHVCi0iABEiABEiABEiABFIQkBc+h2PfMXhm9QGhU1yUk69XMN33TCygtRaY13J515xkapGIFkdDC3ArPm3Y2TWC9aZiYSAPkwAJkMCaE6CoseaImQEJkAAJkAAJkAAJkMD9E1iA74OPMDZ3D+H5qzjXtg/VPaNprApy/zkzBRIgARIggY1LgKLGxq0bWkYCJEACJEACJEACJKARiC7fqnojFNe/g7GEpbi1k/lJAiRAAiSwVQhQ1NgqNc1ykgAJkAAJkAAJkMAmJiDPeeFqb0J9Qyscro8xTkFjE9cmTScBEiCB3BGgqJE7lkyJBEiABEiABEiABEiABEiABEiABEhgHQlQ1FhH2MyKBEiABEiABEiABEiABEiABEiABEggdwQoauSOJVMiARIgARIgARIgARIgARIgARIgARJYRwIUNdYRNrMiARIgARIgARIgARIgARIgARIgARLIHQGKGrljyZRIgARIgARIgARIgARIgARIgARIgATWkQBFjXWEzaxIgARIgARIgARIgARIgARIgARIgARyR4CiRu5YMiUSIAESIAESIAESIAESIAESIAESIIF1JEBRYx1hMysSIAESIAESIAESIAESIAESIAESIIHcEaCokTuWTIkEtjQBSZLAfzJgG2AbYBtgG2AbYBtgG2AbYBvYmG0gXzsrFDXytWZZLhIgARIgARIgARIgARIgARIgARLIcwIUNfK8glk8EiABEiABEiABEiABEiABEiABEshXAhQ18rVmWS4SIAESIAESIAESIAESIAESIAESyHMCFDXyvIJZPBIgARIgARIgARIgARIgARIgARLIVwIUNfK1ZlkuEiABEiABEiABEiABEiABEiABEshzAhQ18ryCWTwSIAESIAESIAESIAESIAESIAESyFcCFDXytWZZLhIgARIgARIgARIgARIgARIgARLIcwIUNfK8glk8EiABEiABEiABEiABEiABEiABEshXAhQ18rVmWS4SIAESIAESIAESIAESIAESIAESyHMCFDXyvIJZPBIgARIgARIgARIgARIgARIgARLIVwIUNfK1ZlkuEiABEiABEiABEiABEiABEiABEshzAhQ18ryCWTwSIAESIIG1JrCK0Mx1+AOLa53RFklfRjg4Aa/3e4S2SIkfeDHDQQR8X8I3E37gpqytAasIzU8hEAjo/m9jJrj+5ZZD87gdZ0cAgZkg1t+StSXO1EmABEhgPQhQ1FgPysyDBEjg/gnIIcz4h9HnfBVtTQdQU14MSZIgSTYUlT+O+qZ2vOb8G/qHv0Eg6QuqjPD8NQz3vQ1HSyPqKkthi0vnGE72ejAyuWDycnkbno6nUVNeouRpt9thr6tCecXj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xOhzwUG4vrkTvzLL/RY92fXR5VvV5WAfiKCTzD5+RwIkQAIkQAIksCYEKGqsCVYmSgIkQAIkQAJrTCC8gAlvP071HEdLQz3s9qfQ1OZAT68HI5OGZV7X2BSR/IrPhYN2O+wNLehwOOA40Yamejvs9hPwzKy9T70854WrvQn1Da1wuD7G+Hp7qKwDY2ZBAiRAAiRAAiSQSICiRiITHiEBEiABEiABEiABEiABEiABEiABEtgEBChqbIJKookkQAIkQAIkQAIkQAIkQAIkQAIkQAKJBChqJDLhERIgARIgARIgARIgARIgARIgARIggU1AgKLGJqgkmkgCJEACJEACJEACJEACJEACJEACJJBIgKJGIhMeIQESIAESIAESIAESIAESIAESIAES2AQEKGpsgkqiiSRAAiRAAiRAAiRAAiRAAiRAAiRAAokEKGokMuEREiABEiABEiABEiABEiABEiABEiCBTUDggYkakiSB/2TANsA2wDbANsA2wDbANsA2wDbANsA2wDbANrD2bWAT6BNZmfjARI2srOVFJEACJEACJEACJEACJEACJEACJEACJBAhQFGDTYEESIAESIAESIAESIAESIAESIAESGBTEqCosSmrjUaTAAmQAAmQAAmQAAmQAAmQAAmQAAlQ1GAbIAESIAESIAESIAESIAESIAESIAES2JQEKGpsymqj0SRAAiRAAiRAAiRAAiRAAiRAAiRAAhQ12AZIgARIgARIgARIgARIgARIgARIgAQ2JQGKGpuy2mg0CZAACZAACZAACZAACZAACZAACZAARQ22ARIgARIgARIgARIgARIgARIgARIggU1JgKLGpqw2Gk0CJEACJEACJEACJEACJEACJEACJEBRg22ABEiABEiABEiABEiABEiABEiABEhgUxKgqLEpq41GkwAJkAAJkAAJkAAJkAAJkAAJkAAJUNRgG8gDAmEEJ7/FjflwHpSFRSABEiABEiABEiABEiABEiABEkiXAEWNdEnlxXlhBD54HY4zQ/BPBhAIJPmfvIqhM8dRW2yDJEnKf5HDiw0jG6wG4D3rQo+jDc9UlcImlcPhDeZFLbEQJEACJEACJEACJEACJLA+BGSE5/3wOJ9HXc8IVtYn0wxy2ej2ZVAUnrpmBChqrBnajZhwGAF3Q1Sk0MSKdD83lKghz2P8Sy+8Q39FS1kBJIoa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"}}},{"cell_type":"markdown","source":"## Import Libraries","metadata":{}},{"cell_type":"code","source":"import os\nfrom pathlib import Path\nfrom glob import glob\n\nimport random\nimport numpy as np\nimport pandas as pd\n\n# import math\nfrom imageio import imread\nimport pydicom as dcm\nimport cv2\n\nimport seaborn as sns\nimport matplotlib.pyplot as plt\nimport plotly.express as px","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:03.756960Z","iopub.execute_input":"2021-10-15T14:17:03.757317Z","iopub.status.idle":"2021-10-15T14:17:05.228638Z","shell.execute_reply.started":"2021-10-15T14:17:03.757241Z","shell.execute_reply":"2021-10-15T14:17:05.227414Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Path","metadata":{"execution":{"iopub.status.busy":"2021-10-13T08:11:15.454268Z","iopub.execute_input":"2021-10-13T08:11:15.45493Z","iopub.status.idle":"2021-10-13T08:11:15.462497Z","shell.execute_reply.started":"2021-10-13T08:11:15.454878Z","shell.execute_reply":"2021-10-13T08:11:15.460954Z"}}},{"cell_type":"code","source":"RSNA = \"../input/rsna-pneumonia-detection-challenge\"\nCHEST_XARY_PNEUMONIA = \"../input/chest-xray-pneumonia\"\nNIH_CHEST = \"../input/data\"\n\nCOVID19_COLLECTION = \"../input/covid-chest-xray\"\nCOVID19_FIG1 = \"../input/figure1covidchestxraydataset\"\nCOVID19_ACTUALMED = \"../input/actualmedcovidchestxraydataset\"\nCOVID19_RADIOGRAPHY = \"../input/covid19-radiography-database/COVID-19_Radiography_Dataset\"\n","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:05.231030Z","iopub.execute_input":"2021-10-15T14:17:05.231376Z","iopub.status.idle":"2021-10-15T14:17:05.235789Z","shell.execute_reply.started":"2021-10-15T14:17:05.231342Z","shell.execute_reply":"2021-10-15T14:17:05.235031Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"<a id='explore_data'></a>\n# 1. Explore the data\n\nto divided the datasets at patient-level\n\n\n![Data Processing Pipeline](https://i.ibb.co/311dStF/PA-AP-AP-ERECT.png)","metadata":{}},{"cell_type":"markdown","source":"<a id='normal_case'></a>\n## 1.1 Normal\n\n* RSNA [1]\n\n\n*Note Chest-XRay-Pneumonia [6] can not divided on patient-level by Normal case*","metadata":{}},{"cell_type":"markdown","source":"### 1.1.1 RSNA\n\n#### What are Lung Opacity?\n\nis lung opacity equals pneumonia?\n> I love this competition! But the title \"Pneumonia Detection\" for the competition is misleading because you actually have to do \"Lung Opacities Detection\", and **lung opacities are not the same as pneumonia**. Lung opacities are vague, fuzzy clouds of white in the darkness of the lungs, which makes detecting them a real challenge. [kernel](https://www.kaggle.com/zahaviguy/what-are-lung-opacities\n\nShows the difference between following two things:\n\n**Normal vs. Lung Opacity images**\nhttps://www.kaggle.com/zahaviguy/what-are-lung-opacities#Normal-vs.-Lung-Opacity-images\n\nCurrently, we will not use the `train_labels_df`, * Using the EDA pipeline of [RSNA Pneumonia Detection EDA](https://www.kaggle.com/gpreda/rsna-pneumonia-detection-eda)","metadata":{}},{"cell_type":"markdown","source":"#### read csv file","metadata":{}},{"cell_type":"code","source":"class_info_df = pd.read_csv(RSNA+'/stage_2_detailed_class_info.csv')\ntrain_labels_df = pd.read_csv(RSNA+'/stage_2_train_labels.csv')\ntest_class_df = pd.read_csv(RSNA+'/stage_2_sample_submission.csv')\ntest_class_df = test_class_df.drop('PredictionString',1)","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:05.237510Z","iopub.execute_input":"2021-10-15T14:17:05.238034Z","iopub.status.idle":"2021-10-15T14:17:05.337045Z","shell.execute_reply.started":"2021-10-15T14:17:05.237997Z","shell.execute_reply":"2021-10-15T14:17:05.336104Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(f\"Detailed class info -  rows: {class_info_df.shape[0]}, columns: {class_info_df.shape[1]}\")\nprint(f\"Train labels -  rows: {train_labels_df.shape[0]}, columns: {train_labels_df.shape[1]}\")","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:05.338554Z","iopub.execute_input":"2021-10-15T14:17:05.338852Z","iopub.status.idle":"2021-10-15T14:17:05.345140Z","shell.execute_reply.started":"2021-10-15T14:17:05.338823Z","shell.execute_reply":"2021-10-15T14:17:05.343983Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Let's explore the two loaded files. We will take out a 5 rows samples from each dataset.\n# class_info_df.sample(10)","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:05.346562Z","iopub.execute_input":"2021-10-15T14:17:05.346955Z","iopub.status.idle":"2021-10-15T14:17:05.354734Z","shell.execute_reply.started":"2021-10-15T14:17:05.346917Z","shell.execute_reply":"2021-10-15T14:17:05.353888Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"##using Path to load images\n\ntrain_images = os.path.join(RSNA, 'stage_2_train_images')\ntest_images = os.path.join(RSNA, 'stage_2_test_images')\n\n\nimage_path_train= list(glob(train_images + '/*.dcm'))\nimage_path_test= list(glob(test_images + '/*.dcm'))\n\nprint(\"Number of images in train set:\", len(image_path_train),\n      \"\\nNumber of images in test set:\", len(image_path_test))","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:05.356165Z","iopub.execute_input":"2021-10-15T14:17:05.356520Z","iopub.status.idle":"2021-10-15T14:17:05.502356Z","shell.execute_reply.started":"2021-10-15T14:17:05.356478Z","shell.execute_reply":"2021-10-15T14:17:05.501249Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"> Only a reduced number of images are present in the training set (**26684**), compared with the number of images in the train_df data (**30227**). {`class_info_df.shape[0]`}\n\n*It might be that we do have duplicated entries in the train and class datasets.* Let's check this.\n","metadata":{}},{"cell_type":"markdown","source":"#### check redundant meta data","metadata":{}},{"cell_type":"code","source":"# train_class_df = train_labels_df.merge(class_info_df, left_on='patientId', right_on='patientId', how='inner')\n\nprint(f\"{train_labels_df.shape[0]} labels in train_labes_df in total, unique patientId in  train_labels_df: {train_labels_df['patientId'].nunique()}\")\n\nprint(f\"{class_info_df.shape[0]} labels in class_info_df in total, unique patientId in  class_info_df: {class_info_df['patientId'].nunique()}\")","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:05.503769Z","iopub.execute_input":"2021-10-15T14:17:05.504142Z","iopub.status.idle":"2021-10-15T14:17:05.539296Z","shell.execute_reply.started":"2021-10-15T14:17:05.504110Z","shell.execute_reply":"2021-10-15T14:17:05.538126Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"> We confirmed that the number of unique patientsId are equal with the number of DICOM images in the class_info set. What entries are duplicated. We want to check how are these distributed accross classes and Target value.","metadata":{}},{"cell_type":"code","source":"tmp = class_info_df.groupby(['patientId', 'class'])['patientId'].count()\ndf = pd.DataFrame(data={'Exams': tmp.values}, index=tmp.index).reset_index()\ntmp = df.groupby(['Exams','class']).count()\ndf2 = pd.DataFrame(data=tmp.values, index=tmp.index).reset_index()\ndf2.columns = ['Exams', 'Class', 'Entries']\n\n# df2 = pd.concat([row_sum, df2], axis = 1)\ndf2.loc[7] = [df2['Exams'].sum(), 'NA', df2['Entries'].sum()]\n\ndf2","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:05.542170Z","iopub.execute_input":"2021-10-15T14:17:05.542483Z","iopub.status.idle":"2021-10-15T14:17:05.641951Z","shell.execute_reply.started":"2021-10-15T14:17:05.542451Z","shell.execute_reply":"2021-10-15T14:17:05.640693Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### Map to filepath for each patient\n\nThe image in RSNA is the DICOM data, **The files names are the patients IDs**","metadata":{}},{"cell_type":"markdown","source":"Thanks to Kmada's [kernel](https://www.kaggle.com/portgasray/kmader-s-age-bone-with-am), we know how to extend a new column by mapping the filepath","metadata":{}},{"cell_type":"code","source":"class_info_df['filepath'] = class_info_df['patientId'].map(lambda x: os.path.join(RSNA,\n                                                         'stage_2_train_images', \n                                                         '{}.dcm'.format(x)))","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:05.644014Z","iopub.execute_input":"2021-10-15T14:17:05.644341Z","iopub.status.idle":"2021-10-15T14:17:05.748157Z","shell.execute_reply.started":"2021-10-15T14:17:05.644309Z","shell.execute_reply":"2021-10-15T14:17:05.747247Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"class_info_df.sample(10)","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:05.749391Z","iopub.execute_input":"2021-10-15T14:17:05.749998Z","iopub.status.idle":"2021-10-15T14:17:05.769014Z","shell.execute_reply.started":"2021-10-15T14:17:05.749953Z","shell.execute_reply":"2021-10-15T14:17:05.767968Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### Sanity Check","metadata":{}},{"cell_type":"code","source":"## check whether filepath is N/A\nclass_info_df[class_info_df['filepath'] == '']['patientId']\n\nequals_num = 0\n## check all the patientId equals to the filepath extracted Id\nfor i in range(class_info_df.shape[0]):\n    example = class_info_df['filepath'].iloc[i]\n    patientId = class_info_df['patientId'].iloc[i]\n    extract_patientId = os.path.split(os.path.split(example)[1])[1].split('.')[0]\n    if (extract_patientId == patientId):\n        equals_num += 1\n\nequals_num == class_info_df.shape[0]","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:05.770400Z","iopub.execute_input":"2021-10-15T14:17:05.770803Z","iopub.status.idle":"2021-10-15T14:17:06.676908Z","shell.execute_reply.started":"2021-10-15T14:17:05.770769Z","shell.execute_reply":"2021-10-15T14:17:06.675909Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#we want to get the patient numbers\nclass_info_df['patientId'].unique().shape[0], train_labels_df['patientId'].unique().shape[0]","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:06.678428Z","iopub.execute_input":"2021-10-15T14:17:06.678915Z","iopub.status.idle":"2021-10-15T14:17:06.704005Z","shell.execute_reply.started":"2021-10-15T14:17:06.678852Z","shell.execute_reply":"2021-10-15T14:17:06.702735Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# dist = all_data_df.target.map({0:'Target 0', 1:'Target 1'})\nprint(class_info_df['class'].value_counts(dropna=False))\ndist = class_info_df['class'].value_counts()\nfig = px.pie(dist,\n             values='class',\n             names=dist.index,\n             hole=.4,title=\"Class Distribution\")\nfig.update_traces(textinfo='percent+label', pull=0.05)\nfig.show()","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:06.705472Z","iopub.execute_input":"2021-10-15T14:17:06.705821Z","iopub.status.idle":"2021-10-15T14:17:06.996784Z","shell.execute_reply.started":"2021-10-15T14:17:06.705788Z","shell.execute_reply":"2021-10-15T14:17:06.995755Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"rsna_normal_df = class_info_df[class_info_df['class'] == 'Normal']\nrsna_normal_df.shape[0], rsna_normal_df['patientId'].nunique()","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:06.998219Z","iopub.execute_input":"2021-10-15T14:17:06.998531Z","iopub.status.idle":"2021-10-15T14:17:07.016128Z","shell.execute_reply.started":"2021-10-15T14:17:06.998498Z","shell.execute_reply":"2021-10-15T14:17:07.015158Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### DICOM meta data","metadata":{}},{"cell_type":"code","source":"dicom_file_path = rsna_normal_df.iloc[1].filepath\ndicom_file_dataset = dcm.read_file(dicom_file_path)\ndicom_file_dataset","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:07.017383Z","iopub.execute_input":"2021-10-15T14:17:07.017911Z","iopub.status.idle":"2021-10-15T14:17:07.031522Z","shell.execute_reply.started":"2021-10-15T14:17:07.017848Z","shell.execute_reply":"2021-10-15T14:17:07.030305Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"* Patient sex;\n* Patient age;\n* Modality;\n* Body part examined;\n* View position;\n* Rows & Columns;\n* Pixel Spacing.","metadata":{}},{"cell_type":"markdown","source":"#### Display the DICOM images on Normal","metadata":{}},{"cell_type":"code","source":"dcm.dcmread(rsna_normal_df.iloc[1].filepath).pixel_array.shape","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:07.032704Z","iopub.execute_input":"2021-10-15T14:17:07.033019Z","iopub.status.idle":"2021-10-15T14:17:07.062060Z","shell.execute_reply.started":"2021-10-15T14:17:07.032989Z","shell.execute_reply":"2021-10-15T14:17:07.060998Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"num_rows = 4\nnum_cols = 4\nnum_images = num_rows * num_cols\n\ndf = rsna_normal_df\n#subplot the figures from test data\nplt.figure(figsize=(2*2*num_cols, 2.2*2*num_rows))\nfor i in range(num_images):\n    plt.subplot(num_rows, num_cols, i+1)\n    imagePath =  df.iloc[i].filepath\n    data_row_img_data = dcm.read_file(imagePath)\n    modality = data_row_img_data.Modality\n    age = data_row_img_data.PatientAge\n    sex = data_row_img_data.PatientSex\n    data_row_img = dcm.dcmread(imagePath)\n    \n    plt.xlabel('ID: {}\\nModality: {} Age: {} Sex: {}\\nClass: {}'.format(\n        df.iloc[i].patientId,\n        modality, age, sex, df.iloc[i]['class']))\n    plt.imshow(data_row_img.pixel_array, cmap='gray') #original: plt.cm.bone #optional: cmap='gray'\n    plt.grid(False)\n    \nplt.show()","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:07.063479Z","iopub.execute_input":"2021-10-15T14:17:07.063845Z","iopub.status.idle":"2021-10-15T14:17:11.322913Z","shell.execute_reply.started":"2021-10-15T14:17:07.063811Z","shell.execute_reply":"2021-10-15T14:17:11.322027Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"<a id='pneumonia_case'></a>\n## 1.2 Pneumonia\n\n* Chest-XRay-Pneumonia [6] **Note this datasets only divided on patient-level by Pneumonia case**\n* ChestX-ray8 (**data**)\n\n---\n\n**Ouput Patient**\n\n1. chest_xray_pneumonia_df: 1674\n2. ChestX_ray_pneumonia_df: 285","metadata":{}},{"cell_type":"markdown","source":"### 1.2.1 Chest-Xray only for Pneumonia\n\nThere's no patient level on normal case\n\n\n* maybe create the *csv file* by `Path` follows the [kernel](https://www.kaggle.com/portgasray/cnn-x-ray-98-test-set-addressing-class-imbalance)\n","metadata":{}},{"cell_type":"code","source":"# CHEST_XARY_PNEUMONIA\n\nbase_dir = os.path.join(CHEST_XARY_PNEUMONIA, 'chest_xray')\n\ntrain_dir= Path(base_dir + '/train')\ntest_dir = Path(base_dir + '/test')\nval_dir  = Path(base_dir + '/val')\n","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:11.324134Z","iopub.execute_input":"2021-10-15T14:17:11.324583Z","iopub.status.idle":"2021-10-15T14:17:11.329413Z","shell.execute_reply.started":"2021-10-15T14:17:11.324540Z","shell.execute_reply":"2021-10-15T14:17:11.328598Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#create the lists of filespaths from the 3 directories: train,test and val\nfiles_path_train= list(train_dir.glob(r'*/*.jpeg'))\nfiles_path_test= list(test_dir.glob(r'*/*.jpeg'))\nfiles_path_val = list(val_dir.glob(r'*/*.jpeg'))\n","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:11.330585Z","iopub.execute_input":"2021-10-15T14:17:11.331121Z","iopub.status.idle":"2021-10-15T14:17:11.386772Z","shell.execute_reply.started":"2021-10-15T14:17:11.331079Z","shell.execute_reply":"2021-10-15T14:17:11.385510Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#create the lists of lables for each filepath\nlabels_train= list(map(lambda x: os.path.split(os.path.split(x)[0])[1], files_path_train)) \nlabels_test = list(map(lambda x: os.path.split(os.path.split(x)[0])[1], files_path_test))\nlabels_val= list(map(lambda x: os.path.split(os.path.split(x)[0])[1], files_path_val))","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:11.388265Z","iopub.execute_input":"2021-10-15T14:17:11.388625Z","iopub.status.idle":"2021-10-15T14:17:11.430787Z","shell.execute_reply.started":"2021-10-15T14:17:11.388589Z","shell.execute_reply":"2021-10-15T14:17:11.429592Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(files_path_train[0])\n\nx = files_path_train[0]\nos.path.split(os.path.split(x)[1])[1].split('.')[0]","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:11.434799Z","iopub.execute_input":"2021-10-15T14:17:11.435267Z","iopub.status.idle":"2021-10-15T14:17:11.444267Z","shell.execute_reply.started":"2021-10-15T14:17:11.435231Z","shell.execute_reply":"2021-10-15T14:17:11.443061Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"## create the lists of patient id for each filepath\npatient_train = list(map(lambda x: os.path.split(os.path.split(x)[1])[1].split('.')[0], files_path_train)) \npatient_test = list(map(lambda x: os.path.split(os.path.split(x)[1])[1].split('.')[0], files_path_test)) \npatient_val = list(map(lambda x: os.path.split(os.path.split(x)[1])[1].split('.')[0], files_path_val)) ","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:11.446234Z","iopub.execute_input":"2021-10-15T14:17:11.446773Z","iopub.status.idle":"2021-10-15T14:17:11.482166Z","shell.execute_reply.started":"2021-10-15T14:17:11.446717Z","shell.execute_reply":"2021-10-15T14:17:11.481158Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#create the columns for the dataframes\npatient_train = pd.Series(patient_train, name= 'patientId')\npatient_test = pd.Series(patient_test, name= 'patientId')\npatient_val = pd.Series(patient_val, name= 'patientId')\n\nlabels_train= pd.Series(labels_train, name= 'class')\nlabels_test= pd.Series(labels_test, name= 'class')\nlabels_val = pd.Series(labels_val, name= 'class')\n\nimages_train= pd.Series(files_path_train, name= 'filepath').astype(str)\nimages_test = pd.Series(files_path_test, name= 'filepath').astype(str)\nimages_val = pd.Series(files_path_val, name= 'filepath').astype(str)\n\n#create the dataframes\ntrain_df= pd.concat([patient_train, labels_train, images_train], axis=1)\ntest_df = pd.concat([patient_test, labels_test, images_test], axis=1)\nval_df= pd.concat([patient_val, labels_val, images_val], axis=1)\n\n# train_df[train_df['target']=='NORMAL'].head(10)\ntrain_df.shape[0], test_df.shape[0], val_df.shape[0]","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:11.483286Z","iopub.execute_input":"2021-10-15T14:17:11.483617Z","iopub.status.idle":"2021-10-15T14:17:11.509130Z","shell.execute_reply.started":"2021-10-15T14:17:11.483586Z","shell.execute_reply":"2021-10-15T14:17:11.508058Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"## distribution of test train and val\nfig = px.bar([train_df.shape[0], val_df.shape[0], test_df.shape[0]],\n             x = ['train', 'val', 'test'],\n             y = [train_df.shape[0], val_df.shape[0], test_df.shape[0]],\n             barmode=\"group\",\n             title=\"Train Distribution\")\nfig.show()","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:11.510689Z","iopub.execute_input":"2021-10-15T14:17:11.511077Z","iopub.status.idle":"2021-10-15T14:17:11.597007Z","shell.execute_reply.started":"2021-10-15T14:17:11.511039Z","shell.execute_reply":"2021-10-15T14:17:11.595815Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#concat to one dataframe\nCHEST_XARY_PNEUMONIA\nchest_xray_df = pd.concat([train_df, test_df, val_df])\n\n##sanity check\nchest_xray_df.shape[0] == train_df.shape[0] + test_df.shape[0] + val_df.shape[0], chest_xray_df.shape[0] ","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:11.598595Z","iopub.execute_input":"2021-10-15T14:17:11.599049Z","iopub.status.idle":"2021-10-15T14:17:11.609279Z","shell.execute_reply.started":"2021-10-15T14:17:11.598999Z","shell.execute_reply":"2021-10-15T14:17:11.608162Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# dist = all_data_df.target.map({0:'Target 0', 1:'Target 1'})\ndist = chest_xray_df['class'].value_counts(dropna=False)\nfig = px.pie(dist,\n             values='class',\n             names=dist.index,\n             hole=.4,title=\"Class Distribution\")\nfig.update_traces(textinfo='percent+label', pull=0.05)\nfig.show()","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:11.616150Z","iopub.execute_input":"2021-10-15T14:17:11.616510Z","iopub.status.idle":"2021-10-15T14:17:11.678825Z","shell.execute_reply.started":"2021-10-15T14:17:11.616474Z","shell.execute_reply":"2021-10-15T14:17:11.677729Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"## selected data for pneumonia case\nchest_xray_pneumonia_df = chest_xray_df[chest_xray_df[\"class\"] ==\"PNEUMONIA\"]","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:11.682297Z","iopub.execute_input":"2021-10-15T14:17:11.682883Z","iopub.status.idle":"2021-10-15T14:17:11.692942Z","shell.execute_reply.started":"2021-10-15T14:17:11.682816Z","shell.execute_reply":"2021-10-15T14:17:11.691651Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"chest_xray_pneumonia_df['patientId'] = chest_xray_pneumonia_df['patientId'].map(lambda x: os.path.split(os.path.split(x)[1])[1].split('_')[0].replace('person',''))\nchest_xray_pneumonia_df.sample(5)","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:11.694820Z","iopub.execute_input":"2021-10-15T14:17:11.695186Z","iopub.status.idle":"2021-10-15T14:17:11.733768Z","shell.execute_reply.started":"2021-10-15T14:17:11.695150Z","shell.execute_reply":"2021-10-15T14:17:11.732795Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"chest_xray_pneumonia_df['patientId'].nunique() == chest_xray_pneumonia_df.shape[0]\n\nprint(f\"{chest_xray_pneumonia_df.shape[0]} rows in chest_xray_pneumonia_df in total, unique patientId in chest_xray_pneumonia_df: {chest_xray_pneumonia_df['patientId'].nunique()}\")","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:11.734932Z","iopub.execute_input":"2021-10-15T14:17:11.735196Z","iopub.status.idle":"2021-10-15T14:17:11.743019Z","shell.execute_reply.started":"2021-10-15T14:17:11.735170Z","shell.execute_reply":"2021-10-15T14:17:11.742039Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### Display the Chest-Xray images on Pneumonia","metadata":{}},{"cell_type":"code","source":"imread(chest_xray_pneumonia_df.iloc[1].filepath).shape","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:11.744327Z","iopub.execute_input":"2021-10-15T14:17:11.744629Z","iopub.status.idle":"2021-10-15T14:17:11.769742Z","shell.execute_reply.started":"2021-10-15T14:17:11.744600Z","shell.execute_reply":"2021-10-15T14:17:11.768562Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"num_rows = 4\nnum_cols = 4\nnum_images = num_rows * num_cols\n\ndf = chest_xray_pneumonia_df\n\n#subplot the figures from test data\nplt.figure(figsize=(2*2*num_cols, 2.2*2*num_rows))\nfor i in range(num_images):\n    plt.subplot(num_rows, num_cols, i+1)\n    \n    #get the path from dataframe\n    imagePath =  df.iloc[i].filepath\n    #read from path\n    img = imread(imagePath)\n    \n    plt.xlabel('ID: {}\\n Class: {}'.format(\n        df.iloc[i].patientId,\n        df.iloc[i]['class']))\n    plt.imshow(img, cmap='gray')\n    plt.grid(False)\n    \nplt.show()","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:11.773063Z","iopub.execute_input":"2021-10-15T14:17:11.773382Z","iopub.status.idle":"2021-10-15T14:17:16.070458Z","shell.execute_reply.started":"2021-10-15T14:17:11.773352Z","shell.execute_reply":"2021-10-15T14:17:16.069128Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### 1.2.2 Chestx-ray8\n\nThanks to the following kernels:\n\n1. [ChestX-ray8 [EDA, Beginner Code]](https://www.kaggle.com/mohamed3abdelrazik/chestx-ray8-eda-beginner-code)\n\n2. [NIH EDA](https://www.kaggle.com/tejasharitsavk/nih-eda)\n\n\n> There are 15 classes (14 diseases, and one for \"No findings\"). Images can be classified as \"No findings\" or one or more disease classes:\n\n* Atelectasis\n* Consolidation\n* Infiltration\n* Pneumothorax\n* Edema\n* Emphysema\n* Fibrosis\n* Effusion\n* Pneumonia\n* Pleural_thickening\n* Cardiomegaly\n* Nodule Mass\n* Hernia","metadata":{}},{"cell_type":"code","source":"ChestXray_DATAFRAME  = \"../input/chestxray8-dataframe\"\n\n##All images by glob\nimage_path = list(glob(NIH_CHEST+'/images_*/images/*.png'))\n\n#the official csv file\nChestX_ray8_df = pd.read_csv(NIH_CHEST + \"/Data_Entry_2017.csv\")\n\n#the third party csv file \nChestXray8_dataframe_df = pd.read_csv(os.path.join(ChestXray_DATAFRAME, 'train_df.csv'))\n#the discussed bad labels, which need to be removed\nChestXray8_bad_labels_df = pd.read_csv(os.path.join(ChestXray_DATAFRAME, 'cxr14_bad_labels.csv'))\n\nprint('the original ChestXray8')\nChestX_ray8_df.sample(10)","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:16.072011Z","iopub.execute_input":"2021-10-15T14:17:16.072348Z","iopub.status.idle":"2021-10-15T14:17:17.090039Z","shell.execute_reply.started":"2021-10-15T14:17:16.072312Z","shell.execute_reply":"2021-10-15T14:17:17.089067Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"ChestXray8_dataframe_df.head(5)","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:17.091440Z","iopub.execute_input":"2021-10-15T14:17:17.091747Z","iopub.status.idle":"2021-10-15T14:17:17.112752Z","shell.execute_reply.started":"2021-10-15T14:17:17.091716Z","shell.execute_reply":"2021-10-15T14:17:17.111726Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(f\"Number for images found in data folder: {len(image_path)},\\n \\\n      labels in ChestX-ray8: {ChestX_ray8_df.shape[0]},\\n \\\n      ChestXray8_dataframe_df: {ChestXray8_dataframe_df.shape[0]}, \\n \\\n      All bad labels in ChestXray8: {ChestXray8_bad_labels_df.shape[0]}, \\n \\\n      the unique patient number in ChestXray8_dataframe_df: {ChestXray8_dataframe_df['Patient ID'].nunique()}, \\n \\\n      the unique patient number in ChestX_ray8_df {ChestX_ray8_df['Patient ID'].nunique()}\")","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:17.114184Z","iopub.execute_input":"2021-10-15T14:17:17.114502Z","iopub.status.idle":"2021-10-15T14:17:17.128237Z","shell.execute_reply.started":"2021-10-15T14:17:17.114469Z","shell.execute_reply":"2021-10-15T14:17:17.126832Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# all classes of ChestX-ray8 and the Pneumonia case\nprint(f\"the total labels in ChectX-ray8: {len(ChestX_ray8_df['Finding Labels'].unique())}, \\\n      the unique labels in ChestX_ray8: {ChestX_ray8_df[ChestX_ray8_df['Finding Labels'] == 'Pneumonia'].shape[0]}\")","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:17.129808Z","iopub.execute_input":"2021-10-15T14:17:17.130142Z","iopub.status.idle":"2021-10-15T14:17:17.164990Z","shell.execute_reply.started":"2021-10-15T14:17:17.130109Z","shell.execute_reply":"2021-10-15T14:17:17.163952Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### preprocessing the ChestXray8\n\n* remove the unused column 'Unnamed: 11'\n* add new column as 'class'\n* drop the 'No Finding' column in the ChestXray8_dataframe_df (**chestxray8-dataframe**)\n* rename some columns as below in **ChestX_ray8_df** (data) & **ChestXray8_dataframe_df** (chestxray8-dataframe)\n    * Image Index --> Index\n    * Patient ID --> patientId\n* remove the bad labels in **ChestX_ray8_df** corresponding to **ChestXray8_bad_labels_df**","metadata":{}},{"cell_type":"code","source":"ChestX_ray8_df.drop(columns=[\"Unnamed: 11\"], inplace=True)\n# ChestX_ray8_df[\"class\"] = ChestX_ray8_df[\"Finding Labels\"].apply(lambda x: x.split(\"|\"))\n\nChestXray8_dataframe_df.drop(['No Finding'], axis = 1, inplace = True)\n\nChestX_ray8_df.rename(columns={\"Image Index\": \"Index\"}, inplace = True)\nChestX_ray8_df.rename(columns={\"Patient ID\": \"patientId\"}, inplace = True)\nChestX_ray8_df.rename(columns={\"Finding Labels\": \"class\"}, inplace = True )","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:17.166450Z","iopub.execute_input":"2021-10-15T14:17:17.166781Z","iopub.status.idle":"2021-10-15T14:17:17.196189Z","shell.execute_reply.started":"2021-10-15T14:17:17.166747Z","shell.execute_reply":"2021-10-15T14:17:17.194930Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"> You oboserve that in main datasetData_Entry_2017.csv contains 112120 rows but in modified dataset train_df.csv contains only 111863 images. It turns out some of the images are problematic as discussed in this datasets discussion [thread](https://www.kaggle.com/nih-chest-xrays/data/discussion/55461). They are inverted, not-frontal or somehow badly rotated. Therefore they are removed. So we need to do a little bit of peprocessing here to deal with that matter and we are good to go.","metadata":{}},{"cell_type":"code","source":"ChestXray8_bad_labels_df.head(5)","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:17.197798Z","iopub.execute_input":"2021-10-15T14:17:17.198262Z","iopub.status.idle":"2021-10-15T14:17:17.213989Z","shell.execute_reply.started":"2021-10-15T14:17:17.198212Z","shell.execute_reply":"2021-10-15T14:17:17.212715Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"ChestX_ray8_df = ChestX_ray8_df[~ChestX_ray8_df.Index.isin(ChestXray8_bad_labels_df.Index)]\n\nChestX_ray8_df.shape[0]","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:17.215790Z","iopub.execute_input":"2021-10-15T14:17:17.216384Z","iopub.status.idle":"2021-10-15T14:17:17.251700Z","shell.execute_reply.started":"2021-10-15T14:17:17.216335Z","shell.execute_reply":"2021-10-15T14:17:17.250391Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"ChestX_ray8_df.sample(5)","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:17.254997Z","iopub.execute_input":"2021-10-15T14:17:17.255324Z","iopub.status.idle":"2021-10-15T14:17:17.281715Z","shell.execute_reply.started":"2021-10-15T14:17:17.255294Z","shell.execute_reply":"2021-10-15T14:17:17.280728Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### Map the filepath to csv image index","metadata":{}},{"cell_type":"code","source":"index_path_map = pd.DataFrame({'Index':list(map(lambda x:os.path.split(x)[1], image_path)), 'filepath': image_path})\nindex_path_map.head()","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:17.282964Z","iopub.execute_input":"2021-10-15T14:17:17.283243Z","iopub.status.idle":"2021-10-15T14:17:17.526004Z","shell.execute_reply.started":"2021-10-15T14:17:17.283215Z","shell.execute_reply":"2021-10-15T14:17:17.525169Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Merge the absolute path of the images to the main dataframe\nChestXray8_df = pd.merge(ChestX_ray8_df, index_path_map, on='Index', how='left')","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:17.527056Z","iopub.execute_input":"2021-10-15T14:17:17.527454Z","iopub.status.idle":"2021-10-15T14:17:17.681355Z","shell.execute_reply.started":"2021-10-15T14:17:17.527425Z","shell.execute_reply":"2021-10-15T14:17:17.680330Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"labels = [\"Atelectasis\", \"Consolidation\", \"Infiltration\", \"Pneumothorax\", \"Edema\", \"Emphysema\", \"Fibrosis\", \"Effusion\", \"Pneumonia\",\n\"Pleural_thickening\", \"Cardiomegaly\", \"Nodule Mass\", \"Hernia\", \"No Finding\"]\nprint(labels)","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:17.682548Z","iopub.execute_input":"2021-10-15T14:17:17.683029Z","iopub.status.idle":"2021-10-15T14:17:17.687884Z","shell.execute_reply.started":"2021-10-15T14:17:17.682994Z","shell.execute_reply":"2021-10-15T14:17:17.687170Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print (ChestXray8_df.columns), ChestXray8_df.iloc[1]['class']","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:17.688835Z","iopub.execute_input":"2021-10-15T14:17:17.689242Z","iopub.status.idle":"2021-10-15T14:17:17.705313Z","shell.execute_reply.started":"2021-10-15T14:17:17.689213Z","shell.execute_reply":"2021-10-15T14:17:17.704044Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#contains the pneumonia case\nChestX_ray_pneumonia_df = ChestXray8_df[ChestXray8_df['class'].map(lambda x: 'Pneumonia' in x)]\nChestX_ray_pneumonia_df.shape[0]","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:17.707100Z","iopub.execute_input":"2021-10-15T14:17:17.707656Z","iopub.status.idle":"2021-10-15T14:17:17.770764Z","shell.execute_reply.started":"2021-10-15T14:17:17.707607Z","shell.execute_reply":"2021-10-15T14:17:17.769802Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"ChestX_ray_pneumonia_df['class'].nunique(), ChestX_ray_pneumonia_df['patientId'].nunique()","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:17.771897Z","iopub.execute_input":"2021-10-15T14:17:17.772318Z","iopub.status.idle":"2021-10-15T14:17:17.779431Z","shell.execute_reply.started":"2021-10-15T14:17:17.772288Z","shell.execute_reply":"2021-10-15T14:17:17.778650Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#only the pneumonia case\nChestXray8_pneumonia_df = ChestXray8_df[ChestXray8_df['class'] == 'Pneumonia']\n\nChestXray8_pneumonia_df.shape[0], ChestXray8_pneumonia_df['patientId'].nunique()","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:17.780432Z","iopub.execute_input":"2021-10-15T14:17:17.780923Z","iopub.status.idle":"2021-10-15T14:17:17.813095Z","shell.execute_reply.started":"2021-10-15T14:17:17.780885Z","shell.execute_reply":"2021-10-15T14:17:17.811908Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"ChestXray8_pneumonia_df = ChestXray8_pneumonia_df[['patientId', 'filepath', 'class']]","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:17.814360Z","iopub.execute_input":"2021-10-15T14:17:17.814649Z","iopub.status.idle":"2021-10-15T14:17:17.820412Z","shell.execute_reply.started":"2021-10-15T14:17:17.814622Z","shell.execute_reply":"2021-10-15T14:17:17.819349Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"ChestXray8_pneumonia_df.head(5)","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:17.823306Z","iopub.execute_input":"2021-10-15T14:17:17.824069Z","iopub.status.idle":"2021-10-15T14:17:17.840023Z","shell.execute_reply.started":"2021-10-15T14:17:17.824017Z","shell.execute_reply":"2021-10-15T14:17:17.839196Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### Display the ChestX-ray8 images on Pneumonia","metadata":{}},{"cell_type":"code","source":"imread(ChestXray8_pneumonia_df.iloc[1].filepath).shape","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:17.841422Z","iopub.execute_input":"2021-10-15T14:17:17.841992Z","iopub.status.idle":"2021-10-15T14:17:17.872661Z","shell.execute_reply.started":"2021-10-15T14:17:17.841958Z","shell.execute_reply":"2021-10-15T14:17:17.871948Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"num_rows = 4\nnum_cols = 4\nnum_images = num_rows * num_cols\n\ndf = ChestXray8_pneumonia_df\n\n#subplot the figures from test data\nplt.figure(figsize=(2*2*num_cols, 2.2*2*num_rows))\nfor i in range(num_images):\n    plt.subplot(num_rows, num_cols, i+1)\n    \n    #get the path from dataframe\n    imagePath =  df.iloc[i].filepath\n    #read from path\n    img = imread(imagePath)\n    \n    plt.xlabel('ID: {}\\n Class: {}'.format(\n        df.iloc[i].patientId,\n        df.iloc[i]['class']))\n    plt.imshow(img, cmap='gray')\n    plt.grid(False)\n    \nplt.show()","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:17.873954Z","iopub.execute_input":"2021-10-15T14:17:17.874455Z","iopub.status.idle":"2021-10-15T14:17:21.909408Z","shell.execute_reply.started":"2021-10-15T14:17:17.874420Z","shell.execute_reply":"2021-10-15T14:17:21.908318Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"<a id='covid19_case'></a>\n## 1.3 COVID-19\n\n* COVID-19 (607)\n    2. COVID-19 image data collection [2] (covid-chest-xray) (468)\n    3. Figure 1 COVID-19 Chest X-ray [3] (figure1covidchestxraydataset) (35)\n    4. Actualmed COVID-19 Chest X-rays [4] (actualmedcovidchestxraydataset) (58)\n    5. COVID-19 Radiography Database [5] (covid19-radiography-database) (46)\n    \n#### Questions\n\n1. Shall filter out no-**PA** view?\n\n![PA_AP_AP-ERECT](https://i.ibb.co/zPzThC7/Data-Processing-Pipeline-2x.png)","metadata":{}},{"cell_type":"markdown","source":"### 1.3.1 COVID-19 image data collection\n\nThanks to the kernel [Lungs X-ray Class COVID-Pneumonia](https://www.kaggle.com/jcastanonv/lungs-x-ray-class-covid-pneumonia)\n\n* Remove the error raw without name in the image folder\n* Filtering the `finding` and `view`\n","metadata":{}},{"cell_type":"code","source":"print(COVID19_COLLECTION)\n\n# ext = ['png', 'jpg', 'gif', 'jpeg', 'JPG', 'PNG', 'JPG', 'GIF']    # Add image formats here\n# new = []\n# [new.extend(glob(COVID19_COLLECTION + '/images/' + '*.' +  e)) for e in ext]\n\ncovid19_collection_images_path = list(glob(COVID19_COLLECTION +'/images/*'))\ncovid19_collection_images = list(map(lambda x : os.path.split(x)[1], covid19_collection_images_path))\nlen(covid19_collection_images_path), covid19_collection_images_path[1]\n\n# list(set(covid19_collection_images_path) -  set(new))\n\n# len(set(new))\n# new[:1],  covid19_collection_images_path[:1]","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:21.910769Z","iopub.execute_input":"2021-10-15T14:17:21.911113Z","iopub.status.idle":"2021-10-15T14:17:21.928218Z","shell.execute_reply.started":"2021-10-15T14:17:21.911072Z","shell.execute_reply":"2021-10-15T14:17:21.927230Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"meta = pd.read_csv(os.path.join(COVID19_COLLECTION, 'metadata.csv'))\nmeta.shape[0]","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:21.929522Z","iopub.execute_input":"2021-10-15T14:17:21.929836Z","iopub.status.idle":"2021-10-15T14:17:21.949005Z","shell.execute_reply.started":"2021-10-15T14:17:21.929804Z","shell.execute_reply":"2021-10-15T14:17:21.947996Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### EDA of COVID-19 Collection","metadata":{}},{"cell_type":"code","source":"fig = px.bar(meta['finding'].value_counts(),\n             x = list(meta['finding'].unique()),\n             y = meta['finding'].value_counts(),\n             barmode=\"group\",\n             title=\"Finding Distribution\")\nfig.show()","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:21.950364Z","iopub.execute_input":"2021-10-15T14:17:21.950695Z","iopub.status.idle":"2021-10-15T14:17:22.025419Z","shell.execute_reply.started":"2021-10-15T14:17:21.950664Z","shell.execute_reply":"2021-10-15T14:17:22.024076Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"meta.sample(5)","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:22.027200Z","iopub.execute_input":"2021-10-15T14:17:22.027622Z","iopub.status.idle":"2021-10-15T14:17:22.061719Z","shell.execute_reply.started":"2021-10-15T14:17:22.027575Z","shell.execute_reply":"2021-10-15T14:17:22.060472Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(list(meta.columns))\n# meta[['patientid','view', 'finding', 'filename']].sample(5)","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:22.063446Z","iopub.execute_input":"2021-10-15T14:17:22.063750Z","iopub.status.idle":"2021-10-15T14:17:22.072802Z","shell.execute_reply.started":"2021-10-15T14:17:22.063720Z","shell.execute_reply":"2021-10-15T14:17:22.071314Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### Filtering\n\n**WHY PA?**\n\n1. research the kernel: [COVID-19 detection with Heat-map visualization](https://www.kaggle.com/basu369victor/covid-19-detection-with-heat-map-visualization) \n> we, are going to train our model against the only \"PA\" view of the lungs X-ray images.\n\n","metadata":{}},{"cell_type":"code","source":"meta['view'].value_counts(dropna=False)","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:22.074233Z","iopub.execute_input":"2021-10-15T14:17:22.074661Z","iopub.status.idle":"2021-10-15T14:17:22.089000Z","shell.execute_reply.started":"2021-10-15T14:17:22.074618Z","shell.execute_reply":"2021-10-15T14:17:22.087647Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"## remove the the data not in images folder\nnew_meta = meta[meta['filename'].isin(covid19_collection_images)]\n\n#sanity check\nexist_num = 0\n## check all the patientId equals to the filepath extracted Id\nfor i in range(meta.shape[0]):\n    example = meta['filename'].iloc[i]\n    if example in covid19_collection_images:\n        exist_num += 1\n\nexist_num == new_meta.shape[0]\n\n# for x in new_meta['filename']:\n#     if x.split('.')[-1]=='gz':\n#         print('1')","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:22.090452Z","iopub.execute_input":"2021-10-15T14:17:22.090829Z","iopub.status.idle":"2021-10-15T14:17:22.107732Z","shell.execute_reply.started":"2021-10-15T14:17:22.090783Z","shell.execute_reply":"2021-10-15T14:17:22.106617Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"## select the finding == 'COVID-19' && view = 'PA'\nnew_meta = new_meta[(new_meta['finding'] == 'COVID-19') & (new_meta['view'] == 'PA')]\nnew_meta.shape[0]","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:22.109191Z","iopub.execute_input":"2021-10-15T14:17:22.109591Z","iopub.status.idle":"2021-10-15T14:17:22.122697Z","shell.execute_reply.started":"2021-10-15T14:17:22.109550Z","shell.execute_reply":"2021-10-15T14:17:22.121624Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"After remove the unused row, which do not exist path in the images folder, and filtering `finding == 'COVID-19'` and `view == 'PA'`, we get the number of useful data **141** compare to the original **372**","metadata":{}},{"cell_type":"markdown","source":"#### rename the dataframe with selected columns","metadata":{}},{"cell_type":"code","source":"new_meta = new_meta[['patientid', 'finding', 'filename']]\n\nnew_meta.rename(columns={\"patientid\": \"patientId\"}, inplace = True)\nnew_meta.rename(columns={\"finding\": \"class\"}, inplace = True)\n\n##map filename to filepath\nnew_meta['filepath'] = new_meta['filename'].map(lambda x: os.path.join(COVID19_COLLECTION, 'images', x))\nnew_meta.drop(['filename'], axis = 1, inplace = True)\n\nprint(new_meta['filepath'].iloc[0])\nnew_meta.head(5)","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:22.124093Z","iopub.execute_input":"2021-10-15T14:17:22.124412Z","iopub.status.idle":"2021-10-15T14:17:22.146455Z","shell.execute_reply.started":"2021-10-15T14:17:22.124371Z","shell.execute_reply":"2021-10-15T14:17:22.145226Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"covid_chest_xray_df = new_meta\ncovid_chest_xray_df.shape[0]","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:22.147818Z","iopub.execute_input":"2021-10-15T14:17:22.148214Z","iopub.status.idle":"2021-10-15T14:17:22.156691Z","shell.execute_reply.started":"2021-10-15T14:17:22.148175Z","shell.execute_reply":"2021-10-15T14:17:22.155729Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### Display the images","metadata":{}},{"cell_type":"code","source":"imread(covid_chest_xray_df.iloc[1].filepath).shape","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:22.158019Z","iopub.execute_input":"2021-10-15T14:17:22.158343Z","iopub.status.idle":"2021-10-15T14:17:22.195052Z","shell.execute_reply.started":"2021-10-15T14:17:22.158311Z","shell.execute_reply":"2021-10-15T14:17:22.193977Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"num_rows = 4\nnum_cols = 4\nnum_images = num_rows * num_cols\n\ndf = covid_chest_xray_df\n\n#subplot the figures from test data\nplt.figure(figsize=(2*2*num_cols, 2.2*2*num_rows))\nfor i in range(num_images):\n    plt.subplot(num_rows, num_cols, i+1)\n    \n    #get the path from dataframe\n    imagePath =  df.iloc[i].filepath\n    #read from path\n    img = imread(imagePath)\n    \n    plt.xlabel('ID: {}\\n Class: {}'.format(\n        df.iloc[i].patientId,\n        df.iloc[i]['class']))\n    plt.imshow(img, cmap='gray')\n    plt.grid(False)\n    \nplt.show()","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:22.196551Z","iopub.execute_input":"2021-10-15T14:17:22.196998Z","iopub.status.idle":"2021-10-15T14:17:27.572245Z","shell.execute_reply.started":"2021-10-15T14:17:22.196948Z","shell.execute_reply":"2021-10-15T14:17:27.571056Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### 1.3.2 Figure 1 COVID-19 Chest X-ray [3]\n\n* corresponding to `figure1covidchestxraydataset`\n\n1. read csv file\n2. EDA the data\n3. remove non-exist meta data\n4. rename the column name\n5. map patientId to filepath\n6. Info image shape\n7. display the images\n","metadata":{}},{"cell_type":"code","source":"## read csv file\nCOVID19_FIG1 = \"../input/figure1covidchestxraydataset\"\nmeta = pd.read_csv(os.path.join(COVID19_FIG1, 'metadata.csv'))\n\nprint(meta.shape[0])\nmeta.head(5)","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:27.573655Z","iopub.execute_input":"2021-10-15T14:17:27.573984Z","iopub.status.idle":"2021-10-15T14:17:27.605630Z","shell.execute_reply.started":"2021-10-15T14:17:27.573950Z","shell.execute_reply":"2021-10-15T14:17:27.604689Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### EDA","metadata":{}},{"cell_type":"code","source":"dist = meta['finding'].value_counts(dropna=False)\nfig = px.pie(dist,\n             values='finding',\n             names=dist.index,\n             hole=.4,title=\"Finding Distribution\")\nfig.update_traces(textinfo='percent+label', pull=0.05)\nfig.show()","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:27.607078Z","iopub.execute_input":"2021-10-15T14:17:27.607392Z","iopub.status.idle":"2021-10-15T14:17:27.668561Z","shell.execute_reply.started":"2021-10-15T14:17:27.607361Z","shell.execute_reply":"2021-10-15T14:17:27.667393Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(meta['view'].value_counts(dropna=False))\ndist = meta['view'].value_counts(dropna=False)\nfig = px.pie(dist,\n             values='view',\n             names=dist.index,\n             hole=.4,title=\"View Distribution\")\nfig.update_traces(textinfo='percent+label', pull=0.05)\nfig.show()","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:27.670128Z","iopub.execute_input":"2021-10-15T14:17:27.670430Z","iopub.status.idle":"2021-10-15T14:17:27.733706Z","shell.execute_reply.started":"2021-10-15T14:17:27.670400Z","shell.execute_reply":"2021-10-15T14:17:27.732537Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"## images path \nimages_path = list(glob(COVID19_FIG1 + '/images/*'))\n## images extracted from images path\nimage2patientId = list(map(lambda x: os.path.split(x)[1].split('.')[0], images_path))\n\n##create a pd for image & image path\npatientId_filepath_map = pd.DataFrame({'patientid': image2patientId, 'filepath': images_path})\npatientId_filepath_map.head(5)","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:27.735295Z","iopub.execute_input":"2021-10-15T14:17:27.735618Z","iopub.status.idle":"2021-10-15T14:17:27.752139Z","shell.execute_reply.started":"2021-10-15T14:17:27.735587Z","shell.execute_reply":"2021-10-15T14:17:27.751049Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"## map the patientId to filepath\nmeta = pd.merge(meta, patientId_filepath_map, on='patientid', how='left')\n\n## filtering out non `covid-19` and `PA` view data\nmeta = meta[(meta['finding'] == 'COVID-19') & (meta['view'] == 'PA')]","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:27.753586Z","iopub.execute_input":"2021-10-15T14:17:27.753935Z","iopub.status.idle":"2021-10-15T14:17:27.766367Z","shell.execute_reply.started":"2021-10-15T14:17:27.753902Z","shell.execute_reply":"2021-10-15T14:17:27.765143Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"## rename the columns\nmeta.rename(columns={\"patientid\": \"patientId\"}, inplace = True)\nmeta.rename(columns={\"finding\": \"class\"}, inplace = True)","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:27.767660Z","iopub.execute_input":"2021-10-15T14:17:27.768113Z","iopub.status.idle":"2021-10-15T14:17:27.778992Z","shell.execute_reply.started":"2021-10-15T14:17:27.768074Z","shell.execute_reply":"2021-10-15T14:17:27.777811Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"### selected columns\nmeta = meta[['patientId', 'class', 'filepath']]","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:27.780826Z","iopub.execute_input":"2021-10-15T14:17:27.781391Z","iopub.status.idle":"2021-10-15T14:17:27.790681Z","shell.execute_reply.started":"2021-10-15T14:17:27.781351Z","shell.execute_reply":"2021-10-15T14:17:27.789409Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"fig1_covid19_df = meta\nfig1_covid19_df.shape[0]","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:27.792611Z","iopub.execute_input":"2021-10-15T14:17:27.793047Z","iopub.status.idle":"2021-10-15T14:17:27.805538Z","shell.execute_reply.started":"2021-10-15T14:17:27.793010Z","shell.execute_reply":"2021-10-15T14:17:27.804416Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### Display the images on Fig1","metadata":{}},{"cell_type":"code","source":"df = fig1_covid19_df\nnum_rows = 1\nnum_cols = 2\n\n#subplot the figures from test data\nplt.figure(figsize=(2*2*num_cols, 2.2*2*num_rows))\nfor i in range(num_rows * num_cols):\n    plt.subplot(num_rows, num_cols, i+1)\n    \n    #get the path from dataframe\n    imagePath =  df.iloc[i].filepath\n    #read from path\n    img = imread(imagePath)\n    \n    plt.xlabel('ID: {}\\n Class: {}'.format(\n        df.iloc[i].patientId,\n        df.iloc[i]['class']))\n    plt.imshow(img, cmap='gray')\n    plt.grid(False)\n    \nplt.show()","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:27.807043Z","iopub.execute_input":"2021-10-15T14:17:27.807378Z","iopub.status.idle":"2021-10-15T14:17:28.289313Z","shell.execute_reply.started":"2021-10-15T14:17:27.807342Z","shell.execute_reply":"2021-10-15T14:17:28.288280Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### 1.3.3 Actualmed COVID-19 Chest X-rays\n    4. Actualmed COVID-19 Chest X-rays [4] (actualmedcovidchestxraydataset) (58)","metadata":{}},{"cell_type":"markdown","source":"#### read csv file","metadata":{}},{"cell_type":"code","source":"COVID19_ACTUALMED = \"../input/actualmedcovidchestxraydataset\"\nmeta = pd.read_csv(os.path.join(COVID19_ACTUALMED, 'metadata.csv'))\nprint(meta.shape[0], list(meta.columns))\n\nmeta.head(5)\n# meta.iloc[1].imagename","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:28.290739Z","iopub.execute_input":"2021-10-15T14:17:28.291110Z","iopub.status.idle":"2021-10-15T14:17:28.319969Z","shell.execute_reply.started":"2021-10-15T14:17:28.291072Z","shell.execute_reply":"2021-10-15T14:17:28.319120Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### EDA","metadata":{}},{"cell_type":"code","source":"print(meta['view'].value_counts(dropna=False))\ndist = meta['view'].value_counts(dropna=False)\nfig = px.pie(dist,\n             values='view',\n             names=dist.index,\n             hole=.4,title=\"View Distribution\")\nfig.update_traces(textinfo='percent+label', pull=0.05)\nfig.show()","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:28.321013Z","iopub.execute_input":"2021-10-15T14:17:28.321416Z","iopub.status.idle":"2021-10-15T14:17:28.378569Z","shell.execute_reply.started":"2021-10-15T14:17:28.321385Z","shell.execute_reply":"2021-10-15T14:17:28.377886Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(meta['finding'].value_counts(dropna=False))\ndist = meta['finding'].value_counts(dropna=False)\nfig = px.pie(dist,\n             values='finding',\n             names=dist.index,\n             hole=.4,title=\"Finding Distribution\")\nfig.update_traces(textinfo='percent+label', pull=0.05)\nfig.show()","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:28.379705Z","iopub.execute_input":"2021-10-15T14:17:28.380144Z","iopub.status.idle":"2021-10-15T14:17:28.440094Z","shell.execute_reply.started":"2021-10-15T14:17:28.380103Z","shell.execute_reply":"2021-10-15T14:17:28.439001Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### Mapping","metadata":{}},{"cell_type":"code","source":"## image path\nCOVID19_ACTUALMED\nactualmed_image_paths = list(glob(COVID19_ACTUALMED + '/images/*'))\n\n## image list\nactualmed_images = list(map(lambda x: os.path.split(x)[1] , actualmed_image_paths))\nlen(actualmed_image_paths), actualmed_image_paths[1], actualmed_images[1]\n\n##create a pd for imagename & image path\nimagename_filepath_map = pd.DataFrame({'imagename': actualmed_images, 'filepath': actualmed_image_paths})\nprint(imagename_filepath_map.shape[0] == meta.shape[0], imagename_filepath_map.shape[0])\nimagename_filepath_map.head(5)","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:28.441665Z","iopub.execute_input":"2021-10-15T14:17:28.442118Z","iopub.status.idle":"2021-10-15T14:17:28.459415Z","shell.execute_reply.started":"2021-10-15T14:17:28.442072Z","shell.execute_reply":"2021-10-15T14:17:28.458651Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"## map imagename with filepath\nmeta = pd.merge(meta, imagename_filepath_map, on='imagename', how='left')","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:28.460463Z","iopub.execute_input":"2021-10-15T14:17:28.460843Z","iopub.status.idle":"2021-10-15T14:17:28.470331Z","shell.execute_reply.started":"2021-10-15T14:17:28.460814Z","shell.execute_reply":"2021-10-15T14:17:28.469180Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### Filtering","metadata":{}},{"cell_type":"code","source":"## select: finding equals COVID-19, view equals PA\nmeta = meta[(meta['finding'] == 'COVID-19') & (meta['view'] == 'PA') ]\n## only three columns\nmeta = meta[['patientid', 'finding', 'filepath']]","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:28.471570Z","iopub.execute_input":"2021-10-15T14:17:28.471843Z","iopub.status.idle":"2021-10-15T14:17:28.490172Z","shell.execute_reply.started":"2021-10-15T14:17:28.471817Z","shell.execute_reply":"2021-10-15T14:17:28.489132Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### rename","metadata":{}},{"cell_type":"code","source":"## rename the columns\nmeta.rename(columns={\"patientid\": \"patientId\"}, inplace = True)\nmeta.rename(columns={\"finding\": \"class\"}, inplace = True)","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:28.491594Z","iopub.execute_input":"2021-10-15T14:17:28.491965Z","iopub.status.idle":"2021-10-15T14:17:28.504801Z","shell.execute_reply.started":"2021-10-15T14:17:28.491928Z","shell.execute_reply":"2021-10-15T14:17:28.503594Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"actualmed_covid_df = meta\nactualmed_covid_df.shape[0]","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:28.506598Z","iopub.execute_input":"2021-10-15T14:17:28.507322Z","iopub.status.idle":"2021-10-15T14:17:28.518879Z","shell.execute_reply.started":"2021-10-15T14:17:28.507275Z","shell.execute_reply":"2021-10-15T14:17:28.517933Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### Display the images on Actualmed Covid-19","metadata":{}},{"cell_type":"code","source":"df = actualmed_covid_df\nnum_rows = 4\nnum_cols = 4\n\n#subplot the figures from test data\nplt.figure(figsize=(2*2*num_cols, 2.2*2*num_rows))\nfor i in range(num_rows * num_cols):\n    plt.subplot(num_rows, num_cols, i+1)\n    \n    #get the path from dataframe\n    imagePath =  df.iloc[i].filepath\n    #read from path\n    img = imread(imagePath)\n    \n    plt.xlabel('ID: {}\\n Class: {}'.format(\n        df.iloc[i].patientId,\n        df.iloc[i]['class']))\n    plt.imshow(img, cmap='gray')\n    plt.grid(False)\n    \nplt.show()","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:28.527659Z","iopub.execute_input":"2021-10-15T14:17:28.528429Z","iopub.status.idle":"2021-10-15T14:17:40.087561Z","shell.execute_reply.started":"2021-10-15T14:17:28.528382Z","shell.execute_reply":"2021-10-15T14:17:40.086668Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### 1.3.4 COVID-19 Radiography Database\n\n    5. COVID-19 Radiography Database [5] (covid19-radiography-database) (46)\n    # COVID19_RADIOGRAPHY = \"../input/covid19-radiography-database/COVID-19_Radiography_Dataset\"","metadata":{}},{"cell_type":"code","source":"!pip install openpyxl","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:40.089015Z","iopub.execute_input":"2021-10-15T14:17:40.089444Z","iopub.status.idle":"2021-10-15T14:17:47.357580Z","shell.execute_reply.started":"2021-10-15T14:17:40.089411Z","shell.execute_reply":"2021-10-15T14:17:47.356209Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#read csv file\nmeta = pd.read_excel(os.path.join(COVID19_RADIOGRAPHY, 'COVID.metadata.xlsx'))\nprint(meta.shape[0])\nmeta.sample(10)","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:47.359664Z","iopub.execute_input":"2021-10-15T14:17:47.360147Z","iopub.status.idle":"2021-10-15T14:17:48.248512Z","shell.execute_reply.started":"2021-10-15T14:17:47.360092Z","shell.execute_reply":"2021-10-15T14:17:48.247660Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#QUICK EAD - NO NEED","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:48.249602Z","iopub.execute_input":"2021-10-15T14:17:48.250108Z","iopub.status.idle":"2021-10-15T14:17:48.253720Z","shell.execute_reply.started":"2021-10-15T14:17:48.250058Z","shell.execute_reply":"2021-10-15T14:17:48.252346Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"## Mapping \n## image path\nimage_paths = list(glob(COVID19_RADIOGRAPHY + '/COVID/*'))\n## image list\nimages_name = list(map(lambda x: os.path.split(x)[1].split('.')[0], image_paths))\n\n## create a pd for imagename & image path\nimage_filepath_map = pd.DataFrame({'FILE NAME': images_name, 'filepath': image_paths})\nprint(image_filepath_map.shape[0] == meta.shape[0], image_filepath_map.shape[0])\nmeta = pd.merge(meta, image_filepath_map, on='FILE NAME', how='left')\nmeta.head(5)","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:48.255184Z","iopub.execute_input":"2021-10-15T14:17:48.255473Z","iopub.status.idle":"2021-10-15T14:17:48.315707Z","shell.execute_reply.started":"2021-10-15T14:17:48.255445Z","shell.execute_reply":"2021-10-15T14:17:48.314526Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"## only three columns\nmeta = meta[['FILE NAME', 'filepath']]\n## rename the columns\nmeta.rename(columns={\"FILE NAME\": \"patientId\"}, inplace = True)\n## adding new column\nmeta['class'] = 'COVID-19'","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:48.317126Z","iopub.execute_input":"2021-10-15T14:17:48.317427Z","iopub.status.idle":"2021-10-15T14:17:48.326241Z","shell.execute_reply.started":"2021-10-15T14:17:48.317398Z","shell.execute_reply":"2021-10-15T14:17:48.325058Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"covid19_radiography_df = meta","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:48.327546Z","iopub.execute_input":"2021-10-15T14:17:48.327831Z","iopub.status.idle":"2021-10-15T14:17:48.333476Z","shell.execute_reply.started":"2021-10-15T14:17:48.327803Z","shell.execute_reply":"2021-10-15T14:17:48.332453Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df = covid19_radiography_df\nnum_rows = 4\nnum_cols = 4\n\n#subplot the figures from test data\nplt.figure(figsize=(2*2*num_cols, 2.2*2*num_rows))\nfor i in range(num_rows * num_cols):\n    plt.subplot(num_rows, num_cols, i+1)\n    \n    #get the path from dataframe\n    imagePath =  df.iloc[i].filepath\n    #read from path\n    img = imread(imagePath)\n    \n    plt.xlabel('ID: {}\\n Class: {}'.format(\n        df.iloc[i].patientId,\n        df.iloc[i]['class']))\n    plt.imshow(img, cmap='gray')\n    plt.grid(False)\n    \nplt.show()","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:48.334720Z","iopub.execute_input":"2021-10-15T14:17:48.335045Z","iopub.status.idle":"2021-10-15T14:17:50.641874Z","shell.execute_reply.started":"2021-10-15T14:17:48.335014Z","shell.execute_reply":"2021-10-15T14:17:50.640874Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"<a id='concat_pd'></a>\n### 1.4 COMBINE A FULL PD\n\n* rsna_normal_df\n* chest_xray_pneumonia_df\n* ChestXray8_pneumonia_df\n* covid_chest_xray_df\n* fig1_covid19_df\n* actualmed_covid_df\n* covid19_radiography_df","metadata":{}},{"cell_type":"markdown","source":"#### Fine-tune\n1. normal --> NORMAL (RSNA)\n2. Pneumonia --> PNEUMONIA (ChestX-ray8)","metadata":{}},{"cell_type":"code","source":"#Normal to NORMAL\nrsna_normal_df.drop(['class'], axis = 1, inplace=True)\nrsna_normal_df['class'] = 'NORMAL'\n\n# Pneumonia to PNEUMONIA\nChestXray8_pneumonia_df.drop(['class'], axis = 1, inplace=True)\nChestXray8_pneumonia_df['class'] = 'PNEUMONIA'","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:50.643244Z","iopub.execute_input":"2021-10-15T14:17:50.643552Z","iopub.status.idle":"2021-10-15T14:17:50.657015Z","shell.execute_reply.started":"2021-10-15T14:17:50.643517Z","shell.execute_reply":"2021-10-15T14:17:50.655888Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#PNEUMONIA\nchest_xray_pneumonia_df.head(5), ChestXray8_pneumonia_df.head(5)","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:19:27.579906Z","iopub.execute_input":"2021-10-15T14:19:27.580322Z","iopub.status.idle":"2021-10-15T14:19:27.591128Z","shell.execute_reply.started":"2021-10-15T14:19:27.580287Z","shell.execute_reply":"2021-10-15T14:19:27.590413Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#COVID-19\ncovid_chest_xray_df.head(5)","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:50.682794Z","iopub.execute_input":"2021-10-15T14:17:50.683228Z","iopub.status.idle":"2021-10-15T14:17:50.694188Z","shell.execute_reply.started":"2021-10-15T14:17:50.683182Z","shell.execute_reply":"2021-10-15T14:17:50.693278Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"fig1_covid19_df.head(5)","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:50.695300Z","iopub.execute_input":"2021-10-15T14:17:50.695814Z","iopub.status.idle":"2021-10-15T14:17:50.711759Z","shell.execute_reply.started":"2021-10-15T14:17:50.695778Z","shell.execute_reply":"2021-10-15T14:17:50.710941Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"actualmed_covid_df.head(5)","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:50.712884Z","iopub.execute_input":"2021-10-15T14:17:50.713357Z","iopub.status.idle":"2021-10-15T14:17:50.731433Z","shell.execute_reply.started":"2021-10-15T14:17:50.713323Z","shell.execute_reply":"2021-10-15T14:17:50.730309Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"covid19_radiography_df.head(5)","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:17:50.732819Z","iopub.execute_input":"2021-10-15T14:17:50.733189Z","iopub.status.idle":"2021-10-15T14:17:50.753988Z","shell.execute_reply.started":"2021-10-15T14:17:50.733144Z","shell.execute_reply":"2021-10-15T14:17:50.752995Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"pneumonia_df = pd.concat([chest_xray_pneumonia_df, ChestXray8_pneumonia_df])\n\ncovid19_df = pd.concat([covid_chest_xray_df, fig1_covid19_df, actualmed_covid_df, covid19_radiography_df])\n\nall_df = pd.concat([rsna_normal_df,\n                   pneumonia_df,\n                   covid19_df])\nall_df.shape[0]","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:20:25.456661Z","iopub.execute_input":"2021-10-15T14:20:25.457043Z","iopub.status.idle":"2021-10-15T14:20:25.475683Z","shell.execute_reply.started":"2021-10-15T14:20:25.457011Z","shell.execute_reply":"2021-10-15T14:20:25.474261Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(all_df['class'].value_counts())\ndist = all_df['class'].value_counts()\nfig = px.pie(dist,\n             values='class',\n             names=dist.index,\n             hole=.4,title=\"Class Distribution\")\nfig.update_traces(textinfo='percent+label', pull=0.05)\nfig.show()","metadata":{"execution":{"iopub.status.busy":"2021-10-15T14:22:01.921042Z","iopub.execute_input":"2021-10-15T14:22:01.921466Z","iopub.status.idle":"2021-10-15T14:22:01.992531Z","shell.execute_reply.started":"2021-10-15T14:22:01.921429Z","shell.execute_reply":"2021-10-15T14:22:01.991470Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## ","metadata":{}},{"cell_type":"markdown","source":"# Reference\n\n[1] Radiological Society of North America. RSNA Pneumonia Detection Challenge; Radiological Society of North America: Oak Brook, IL, USA, 2018\n\n[2] Cohen, J.P.; Morrison, P.; Dao, L. COVID-19 image data collection. arXiv 2020, arXiv:2003.11597. Available online: https://github.com/ieee8023/covid-chestxray-dataset\n\n[3] Chung, A. Figure 1 COVID-19 Chest X-ray Data Initiative. 2020. Available online: https://github.com/agchung/Figure1-COVID-chestxray-dataset (accessed on 4 May 2020).\n\n[4] Chung, A. Actualmed COVID-19 Chest X-ray Data Initiative. 2020. Available online: https://github.com/agchung/Actualmed-COVID-chestxray-dataset (accessed on 6 May 2020).\n\n[5] Rahman, T.; Chowdhury, M.; Khandakar, A. COVID-19 Radiography Database; Kaggle: San Francisco, CA, USA, 2020.\n\n[6] Kermany, Daniel; Zhang, Kang; Goldbaum, Michael (2018), “Labeled Optical Coherence Tomography (OCT) and Chest X-Ray Images for Classification”, Mendeley Data, V2, doi: 10.17632/rscbjbr9sj.2 Available online: https://www.kaggle.com/paultimothymooney/chest-xray-pneumonia\n\n[7] Wang, X., Peng, Y., Lu, L., Lu, Z., Bagheri, M. and Summers, R. M., “Chestx-ray8: Hospital-scale chest x-ray database and benchmarks on weakly-supervised classification and localization of common thorax diseases,” Proc. IEEE Conf. Comput. Vis. pattern Recognit., 2097–2106 (2017). Available online: https://www.kaggle.com/nih-chest-xrays/data","metadata":{}}]}