{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.12","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"none","dataSources":[{"sourceId":59093,"databundleVersionId":7469972,"sourceType":"competition"}],"dockerImageVersionId":30635,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import pandas as pd\nimport numpy as np\nimport os\n\nmetadata = pd.read_csv('/kaggle/input/hms-harmful-brain-activity-classification/train.csv')\neeg_path = '/kaggle/input/hms-harmful-brain-activity-classification/train_eegs'\n\neegids = np.unique(metadata['eeg_id'])\n\neeg_summary = pd.DataFrame()\nfor eegid in eegids:\n    record = {}\n    eeg_data = pd.read_parquet(os.path.join(eeg_path, str(eegid) + '.parquet'))\n    record['eeg_id'] = eegid\n    eeg_traces = pd.DataFrame()\n    eeg_traces['Fp1-F7'] = eeg_data['Fp1'] - eeg_data['F7']\n    eeg_traces['F7-T3'] = eeg_data['F7'] - eeg_data['T3']\n    eeg_traces['T3-T5'] = eeg_data['T3'] - eeg_data['T5']\n    eeg_traces['T5-O1'] = eeg_data['T5'] - eeg_data['O1']\n    eeg_traces['Fp2-F8'] = eeg_data['Fp2'] - eeg_data['F8']\n    eeg_traces['F8-T4'] = eeg_data['F8'] - eeg_data['T4']\n    eeg_traces['T4-T6'] = eeg_data['T4'] - eeg_data['T6']\n    eeg_traces['T6-O2'] = eeg_data['T6'] - eeg_data['O2']\n    eeg_traces['Fp1-F3'] = eeg_data['Fp1'] - eeg_data['F3']\n    eeg_traces['F3-C3'] = eeg_data['F3'] - eeg_data['C3']\n    eeg_traces['C3-P3'] = eeg_data['C3'] - eeg_data['P3']\n    eeg_traces['P3-O1'] = eeg_data['P3'] - eeg_data['O1']\n    eeg_traces['Fp2-F4'] = eeg_data['Fp2'] - eeg_data['F4']\n    eeg_traces['F4-C4'] = eeg_data['F4'] - eeg_data['C4']\n    eeg_traces['C4-P4'] = eeg_data['C4'] - eeg_data['P4']\n    eeg_traces['P4-O2'] = eeg_data['P4'] - eeg_data['O2']\n    eeg_traces['Fz-Cz'] = eeg_data['Fz'] - eeg_data['Cz']\n    eeg_traces['Cz-Pz'] = eeg_data['Cz'] - eeg_data['Pz']\n    record['min_eeg_val'] = np.min(eeg_traces)\n    record['max_eeg_val'] = np.max(eeg_traces)\n    record['mean_eeg'] = np.mean(eeg_traces)\n    record['std_eeg'] = np.std(eeg_traces.values, axis=(0,1))\n    record['range_eeg_val'] = record['max_eeg_val'] - record['min_eeg_val']\n    record['min_ekg_val'] = np.min(eeg_data.iloc[:, -1:])\n    record['max_ekg_val'] = np.max(eeg_data.iloc[:, -1:])\n    record['mean_ekg'] = np.mean(eeg_data.iloc[:, -1:])\n    record['std_ekg'] = np.std(eeg_data.iloc[:,-1:].values)\n    record['range_ekg_val'] = record['max_ekg_val'] - record['min_ekg_val']\n    record['nbr_nan_rows'] = len(np.unique(np.where(eeg_data.isna())[0]))\n    print(record)\n    eeg_summary = pd.concat([eeg_summary, pd.DataFrame([record])], axis=0, ignore_index=True)\n\neeg_summary.to_csv('eeg_extended_summary.csv')","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","_kg_hide-output":true,"execution":{"iopub.status.busy":"2024-01-17T09:32:45.001514Z","iopub.execute_input":"2024-01-17T09:32:45.001946Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# **Large EEG ranges (in μV)**","metadata":{}},{"cell_type":"code","source":"print('EEG range > 2000 μV or 2 mV:', len(eeg_summary.loc[eeg_summary['range_eeg_val'] > 2000, 'eeg_id'].values.flatten().tolist()))\nprint('EEG range > 10000 μV or 10 mV:', len(eeg_summary.loc[eeg_summary['range_eeg_val'] > 10000, 'eeg_id'].values.flatten().tolist()))\nprint(eeg_summary.loc[eeg_summary['range_eeg_val'] > 10000, 'eeg_id'].values.flatten().tolist())","metadata":{"execution":{"iopub.status.busy":"2024-01-17T09:57:51.327649Z","iopub.execute_input":"2024-01-17T09:57:51.328182Z","iopub.status.idle":"2024-01-17T09:57:51.343077Z","shell.execute_reply.started":"2024-01-17T09:57:51.328146Z","shell.execute_reply":"2024-01-17T09:57:51.341880Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# **EKG with std. dev. = 0**","metadata":{}},{"cell_type":"code","source":"print('EKG with mean = min = max = 9999 μV:', len(eeg_summary.loc[eeg_summary['mean_ekg'] == 9999, 'eeg_id'].values.flatten().tolist()))\nprint(eeg_summary.loc[eeg_summary['mean_ekg'] == 9999, 'eeg_id'].values.flatten().tolist())","metadata":{"execution":{"iopub.status.busy":"2024-01-17T09:58:51.002704Z","iopub.execute_input":"2024-01-17T09:58:51.003095Z","iopub.status.idle":"2024-01-17T09:58:51.012487Z","shell.execute_reply.started":"2024-01-17T09:58:51.003064Z","shell.execute_reply":"2024-01-17T09:58:51.011085Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print('EKG with mean = min = max = 0 μV:', len(eeg_summary.loc[eeg_summary['mean_ekg'] == 0, 'eeg_id'].values.flatten().tolist()))\nprint(eeg_summary.loc[eeg_summary['mean_ekg'] == 0, 'eeg_id'].values.flatten().tolist())","metadata":{"execution":{"iopub.status.busy":"2024-01-17T09:59:00.920650Z","iopub.execute_input":"2024-01-17T09:59:00.921163Z","iopub.status.idle":"2024-01-17T09:59:00.932242Z","shell.execute_reply.started":"2024-01-17T09:59:00.921106Z","shell.execute_reply":"2024-01-17T09:59:00.930863Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# **Large EKG ranges (in μV)**","metadata":{}},{"cell_type":"code","source":"print('EKG range > 10000 μV or 10 mV:', len(eeg_summary.loc[eeg_summary['range_ekg_val'] > 10000, 'eeg_id'].values.flatten().tolist()))\nprint(eeg_summary.loc[eeg_summary['range_ekg_val'] > 10000, 'eeg_id'].values.flatten().tolist())","metadata":{"execution":{"iopub.status.busy":"2024-01-17T10:02:22.998180Z","iopub.execute_input":"2024-01-17T10:02:22.998785Z","iopub.status.idle":"2024-01-17T10:02:23.009978Z","shell.execute_reply.started":"2024-01-17T10:02:22.998740Z","shell.execute_reply":"2024-01-17T10:02:23.008572Z"},"trusted":true},"execution_count":null,"outputs":[]}]}