{"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":7457433,"sourceType":"competition"}],"dockerImageVersionId":30626,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# ⚙️ Setup","metadata":{}},{"cell_type":"code","source":"# Do imports\nimport numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt\nimport time\nfrom tqdm.notebook import tqdm\n\nimport os","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2024-01-09T21:06:23.671597Z","iopub.execute_input":"2024-01-09T21:06:23.671919Z","iopub.status.idle":"2024-01-09T21:06:24.052543Z","shell.execute_reply.started":"2024-01-09T21:06:23.671894Z","shell.execute_reply":"2024-01-09T21:06:24.051168Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"comp_path = '/kaggle/input/hms-harmful-brain-activity-classification'\ntrain_spect_dir = '/'.join([comp_path, 'train_spectrograms'])\ntrain_spect_path_list = [entry.path for entry in os.scandir(train_spect_dir)]","metadata":{"execution":{"iopub.status.busy":"2024-01-09T21:06:24.054576Z","iopub.execute_input":"2024-01-09T21:06:24.055519Z","iopub.status.idle":"2024-01-09T21:06:24.225705Z","shell.execute_reply.started":"2024-01-09T21:06:24.055488Z","shell.execute_reply":"2024-01-09T21:06:24.224829Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# 🌈 View Spectrograms\nThe spectrogram data file contains a set of frequencies over time for 4 measurements:\n* LL\n* RL\n* RP\n* LP\n\nWe can plot each of these separately as an image to see how the frequency changes over time.","metadata":{}},{"cell_type":"code","source":"def plot_spectrogram(spectrogram_path):\n    sample_spect = pd.read_parquet(spectrogram_path)\n    \n    split_spect = {\n        \"LL\": sample_spect.filter(regex='^LL', axis=1),\n        \"RL\": sample_spect.filter(regex='^RL', axis=1),\n        \"RP\": sample_spect.filter(regex='^RP', axis=1),\n        \"LP\": sample_spect.filter(regex='^LP', axis=1),\n    }\n    \n    fig, axes = plt.subplots(nrows=2, ncols=2, figsize=(15, 12))\n    axes = axes.flatten()\n    label_interval = 5\n    for i, split_name in enumerate(split_spect.keys()):\n        ax = axes[i]\n        img = ax.imshow(np.log(split_spect[split_name]).T, cmap='viridis', aspect='auto', origin='lower')  # You can choose any colormap (cmap) that suits your preferences\n        cbar = fig.colorbar(img, ax=ax)\n        cbar.set_label('Log(Value)')\n        ax.set_title(split_name)\n        ax.set_ylabel(\"Frequency (Hz)\")\n        ax.set_xlabel(\"Time\")\n\n        ax.set_yticks(np.arange(len(split_spect[split_name].columns)))\n        ax.set_yticklabels([column_name[3:] for column_name in split_spect[split_name].columns])\n        frequencies = [column_name[3:] for column_name in split_spect[split_name].columns]\n        ax.set_yticks(np.arange(0, len(split_spect[split_name].columns), label_interval))\n        ax.set_yticklabels(frequencies[::label_interval])\n    plt.tight_layout()\n    plt.show()","metadata":{"execution":{"iopub.status.busy":"2024-01-09T21:06:48.351583Z","iopub.execute_input":"2024-01-09T21:06:48.351935Z","iopub.status.idle":"2024-01-09T21:06:48.361002Z","shell.execute_reply.started":"2024-01-09T21:06:48.351905Z","shell.execute_reply":"2024-01-09T21:06:48.360380Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plot_spectrogram(train_spect_path_list[35])","metadata":{"execution":{"iopub.status.busy":"2024-01-09T21:09:11.708810Z","iopub.execute_input":"2024-01-09T21:09:11.709313Z","iopub.status.idle":"2024-01-09T21:09:14.135948Z","shell.execute_reply.started":"2024-01-09T21:09:11.709272Z","shell.execute_reply":"2024-01-09T21:09:14.134828Z"},"trusted":true},"execution_count":null,"outputs":[]}]}