{"cells":[{"metadata":{"trusted":true},"cell_type":"code","source":"import pandas as pd\nimport numpy as np\nimport matplotlib.pyplot as plt\n%matplotlib inline\nimport seaborn as sns\nimport plotly.express as px\n\nimport os\nimport glob\nimport pydicom\nfrom typing import Dict\nimport tqdm\n#color\nfrom colorama import Fore, Back, Style\n\nimport gc\n\n\nplt.style.use('fivethirtyeight')","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","trusted":true},"cell_type":"code","source":"train_dir = \"/kaggle/input/rsna-str-pulmonary-embolism-detection/train/\"\ntest_dir = \"/kaggle/input/rsna-str-pulmonary-embolism-detection/test/\"\ntrain = pd.read_csv( \"/kaggle/input/rsna-str-pulmonary-embolism-detection/train.csv\")\ntest = pd.read_csv(\"/kaggle/input/rsna-str-pulmonary-embolism-detection/test.csv\")\nsubmission = pd.read_csv(\"/kaggle/input/rsna-str-pulmonary-embolism-detection/sample_submission.csv\")","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train['path'] = train_dir + train.StudyInstanceUID + \"/\" + train.SeriesInstanceUID + \"/\" + train.SOPInstanceUID + \".dcm\"","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"cols = {\"pe_present_on_image\":\"Pe Present On Image\",\n        \"negative_exam_for_pe\" :  \"Negative Exam For Pe\",\n        \"rv_lv_ratio_gte_1\" : \"Rv Lv Ratio Gte\",\n        \"rv_lv_ratio_lt_1\":\"Rv Lv Ratio Lt\",\n        \"leftsided_pe\" : \"Leftsided Pe\", \n        \"chronic_pe\" : \"Chronic Pe\",\n        \"true_filling_defect_not_pe\" : \"True Filling Defect Not Pe\" ,\n        \"rightsided_pe\" : \"Rightsided Pe\",\n        \"acute_and_chronic_pe\" : \"Acute And Chronic Pe\",\n        \"central_pe\":\"Central Pe\",\n        \"indeterminate\":\"Indeterminate\"}\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"p_sizes = []\nfor d in os.listdir(train_dir):    \n    for sub in os.listdir(train_dir + d):   \n        p_sizes.append(len(os.listdir(train_dir + d + \"/\" + sub)))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"\ndcm = train.path.iloc[0]\nprint('Filename: {}'.format(dcm))\ndcm = pydicom.read_file(dcm)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"\ndef dicom_to_image(filename):\n    dcm = pydicom.read_file(filename)\n    img = dcm.pixel_array\n    img[img == -2000] = 0\n    return img","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"def extract_dicom_meta_data(filename: str) -> Dict:\n    dcm = pydicom.read_file(filename)\n    img=np.array(dcm.pixel_array).flatten()\n    data = {\n        'study_instance_uid': dcm.StudyInstanceUID,\n        'series_instance_uid': dcm.SeriesInstanceUID,\n        'series_number': dcm.SeriesNumber,\n        'instance_number': dcm.InstanceNumber,\n        'specific_character_set': dcm.SpecificCharacterSet,\n        #'image_type': dcm.ImageType,\n        'sop_class_uid': dcm.SOPClassUID,\n        'sop_instance_uid': dcm.SOPInstanceUID,\n        'modality': dcm.Modality,\n        'slice_thickness': dcm.SliceThickness,\n        'kvp': dcm.KVP,\n        'gantry_detector': dcm.GantryDetectorTilt,\n        'table_height': dcm.TableHeight,\n        'rotation_direction': dcm.RotationDirection,\n        'x_ray_tube_current': dcm.XRayTubeCurrent,\n        'exposure': dcm.Exposure,\n        'convolution_kernel' : dcm.ConvolutionKernel,\n        'patient_position' : dcm.PatientPosition,\n        #'image_position_patient' : dcm.ImagePositionPatient,\n        #'image_orientation_patient': dcm.ImageOrientationPatient,\n        'frame_of_reference_uid' : dcm.FrameOfReferenceUID,\n        'samples_per_pixel' : dcm.SamplesPerPixel,\n        'photometric_interpretation' : dcm.PhotometricInterpretation,\n        'rows' : dcm.Rows,\n        'columns' : dcm.Columns,\n        'pixel_spacing' : dcm.PixelSpacing,\n        'bits_allocated' : dcm.BitsAllocated,\n        'bits_stored' : dcm.BitsStored,\n        'high_bit' : dcm.HighBit,\n        'pixel_representation': dcm.PixelRepresentation,\n        'window_center': dcm.WindowCenter,\n        'window_width': dcm.WindowWidth,\n        'rescale_intercept': dcm.RescaleIntercept,\n        'rescale_slope': dcm.RescaleSlope,\n        'pixel_data': dcm.PixelData,\n        'img_min': np.min(img),\n        'img_max': np.max(img),\n        'img_mean': np.mean(img),\n        'img_std': np.std(img)\n        }\n    return data","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"meta_data_df = extract_dicom_meta_data(train.path.iloc[0])\n\n\nmeta_data_df = pd.DataFrame.from_dict(meta_data_df)\nmeta_data_df.shape","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"feats = list(train.columns[3:5])+list(train.columns[8:12])+list(train.columns[13:17])","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"means = train[feats].mean().to_dict()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"submission['label'] = 0.1\nfor feat in means.keys():\n    submission.loc[submission.id.str.contains(feat, regex=False), 'label'] = means[feat]","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"submission.to_csv('submission.csv', index = False)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat":4,"nbformat_minor":4}