{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.13","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":30732,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import pandas as pd\ndf = pd.read_parquet('/kaggle/input/hms-harmful-brain-activity-classification/train_eegs/1000913311.parquet')\n\ndf","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2024-06-13T10:08:14.373307Z","iopub.execute_input":"2024-06-13T10:08:14.373712Z","iopub.status.idle":"2024-06-13T10:08:14.41301Z","shell.execute_reply.started":"2024-06-13T10:08:14.373683Z","shell.execute_reply":"2024-06-13T10:08:14.411701Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import pandas as pd\nimport matplotlib.pyplot as plt\nfrom scipy import signal\n\n# Load the data\ndf = pd.read_parquet('/kaggle/input/hms-harmful-brain-activity-classification/train_eegs/1000913311.parquet')\n\n# List of columns to plot\ncolumns_to_plot = ['Fp1', 'F3', 'C3', 'P3', 'F7', 'T3', 'T5', 'O1', 'Fz', 'Cz', 'Pz', 'Fp2', 'F4', 'C4', 'P4', 'F8', 'T4', 'T6', 'O2', 'EKG']\n\n# Sampling frequency (Hz) - modify as per your data's actual sampling rate\nfs = 200\n\n# Function to plot the spectrogram for a given column\ndef plot_spectrogram(column):\n    f, t, Sxx = signal.spectrogram(df[column], fs)\n    plt.figure(figsize=(12, 6))\n    plt.pcolormesh(t, f, 10 * np.log10(Sxx), shading='gouraud')\n    plt.title(f'Spectrogram of {column}')\n    plt.ylabel('Frequency [Hz]')\n    plt.xlabel('Time [s]')\n    plt.colorbar(label='Intensity [dB]')\n    plt.show()\n\n# Plot spectrograms for each column\nfor column in columns_to_plot:\n    plot_spectrogram(column)\n","metadata":{"execution":{"iopub.status.busy":"2024-06-13T10:18:35.468347Z","iopub.execute_input":"2024-06-13T10:18:35.468748Z","iopub.status.idle":"2024-06-13T10:18:47.946654Z","shell.execute_reply.started":"2024-06-13T10:18:35.468717Z","shell.execute_reply":"2024-06-13T10:18:47.94549Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import pandas as pd\nimport numpy as np\nimport matplotlib.pyplot as plt\nfrom scipy import signal\n\n# Load the data\ndf = pd.read_parquet('/kaggle/input/hms-harmful-brain-activity-classification/train_eegs/1000913311.parquet')\n\n# Columns to combine\ncolumns_to_combine = ['Fp1', 'F7', 'T3', 'O1']\n\n# Sampling frequency (Hz) - modify as per your data's actual sampling rate\nfs = 200\n\n# Initialize lists to hold spectrogram components\nfrequencies = None\ntimes = None\nspectrograms = []\n\n# Compute spectrogram for each column and store the results\nfor column in columns_to_combine:\n    f, t, Sxx = signal.spectrogram(df[column], fs)\n    if frequencies is None and times is None:\n        frequencies = f\n        times = t\n    spectrograms.append(Sxx)\n\n# Convert list of spectrograms to a numpy array for easier manipulation\nspectrograms = np.array(spectrograms)\n\n# Average the spectrograms\naverage_spectrogram = np.mean(spectrograms, axis=0)\n\n# Plot the combined spectrogram\nplt.figure(figsize=(12, 6))\nplt.pcolormesh(times, frequencies, 10 * np.log10(average_spectrogram), shading='gouraud')\nplt.title('Combined Spectrogram of Fp1, F7, T3, O1')\nplt.ylabel('Frequency [Hz]')\nplt.xlabel('Time [s]')\nplt.colorbar(label='Intensity [dB]')\nplt.show()\n","metadata":{"execution":{"iopub.status.busy":"2024-06-13T10:19:00.105362Z","iopub.execute_input":"2024-06-13T10:19:00.105825Z","iopub.status.idle":"2024-06-13T10:19:00.921605Z","shell.execute_reply.started":"2024-06-13T10:19:00.10579Z","shell.execute_reply":"2024-06-13T10:19:00.920309Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import numpy as np\nfrom scipy import signal\nimport matplotlib.pyplot as plt\n\nimport pandas as pd\ndf = pd.read_parquet('/kaggle/input/hms-harmful-brain-activity-classification/train_eegs/1000913311.parquet')\n\n# Sampling rate (Hz)\nsampling_rate = 200\n\n# Parameters for spectrogram calculation\nwindow_length = 200  # Adjust window length as needed\nnperseg = window_length  # Sets nperseg equal to window_length\n\n# Loop through each channel and EKG signal\nfor channel, signal in df.items():\n    # Convert data to NumPy array\n    signal_data = signal.get_window(\"hann\") * signal  # Apply Hanning window (optional)\n    signal_data = signal_data.to_numpy()  # Convert to NumPy array\n\n    # Calculate spectrogram\n    f, t, Sxx = signal.spectrogram(signal_data, fs=sampling_rate, window=\"hann\", nperseg=nperseg)\n\n    # Plot spectrogram\n    plt.figure()\n    plt.pcolormesh(t, f, Sxx, shading=\"auto\")\n    plt.xlabel(\"Time (s)\")\n    plt.ylabel(\"Frequency (Hz)\")\n    plt.title(f\"Spectrogram of {channel}\")\n    plt.colorbar(label=\"Power\")\n    plt.tight_layout()\n    plt.show()\n","metadata":{"execution":{"iopub.status.busy":"2024-06-13T10:14:21.232683Z","iopub.execute_input":"2024-06-13T10:14:21.233106Z","iopub.status.idle":"2024-06-13T10:14:21.277228Z","shell.execute_reply.started":"2024-06-13T10:14:21.233074Z","shell.execute_reply":"2024-06-13T10:14:21.275599Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"\nimport pandas as pd\nimport matplotlib.pyplot as plt\n\n\n# Load the data\ndf = pd.read_parquet('//kaggle/input/hms-harmful-brain-activity-classification/train_spectrograms/1000086677.parquet')\n\n\n# Assuming 'time' is a column representing the time points\ntime_column = 'time'\n\n# Create separate plots for each column\nfor column in columns_to_plot:\n    plt.figure(figsize=(12, 6))\n    plt.plot(df[column])\n    plt.title(f'EEG Signal: {column}')\n    plt.xlabel('Time')\n    plt.ylabel('Amplitude')\n    plt.grid(True)\n    plt.show()","metadata":{"execution":{"iopub.status.busy":"2024-06-13T09:23:43.978363Z","iopub.execute_input":"2024-06-13T09:23:43.979539Z","iopub.status.idle":"2024-06-13T09:23:49.235705Z","shell.execute_reply.started":"2024-06-13T09:23:43.979489Z","shell.execute_reply":"2024-06-13T09:23:49.234566Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import pandas as pd\nimport matplotlib.pyplot as plt\n\n# Load the data\ndf = pd.read_parquet('/kaggle/input/hms-harmful-brain-activity-classification/train_eegs/1000913311.parquet')\n\n# List of columns to plot\ncolumns_to_plot = ['Fp1', 'F3', 'C3', 'P3', 'F7', 'T3', 'T5', 'O1', 'Fz', 'Cz', 'Pz','Fp2','F4','C4','P4','F8','T4','T6','O2','EKG']\n# Create separate plots for each column\nfor column in columns_to_plot:\n    plt.figure(figsize=(12, 6))\n    plt.plot(df[column])\n    plt.title(f'EEG Signal: {column}')\n    plt.xlabel('Time')\n    plt.ylabel('Amplitude')\n    plt.grid(True)\n    plt.show()","metadata":{"execution":{"iopub.status.busy":"2024-06-12T10:50:20.436175Z","iopub.execute_input":"2024-06-12T10:50:20.436627Z","iopub.status.idle":"2024-06-12T10:50:33.419942Z","shell.execute_reply.started":"2024-06-12T10:50:20.436589Z","shell.execute_reply":"2024-06-12T10:50:33.418768Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import pandas as pd\nimport numpy as np\nimport matplotlib.pyplot as plt\nfrom scipy import signal\n\n# Load the data\ndf = pd.read_parquet('/kaggle/input/hms-harmful-brain-activity-classification/train_eegs/1000913311.parquet')\n\n# Combine the signals from Fp1 and F7 by averaging their values\ndf['Fp1_F7_combined'] = (df['Fp1'] + df['F7']) / 2\n\n# Plot the combined EEG signal\nplt.figure(figsize=(12, 6))\nplt.plot(df['Fp1_F7_combined'])\nplt.title('Combined EEG Signal: Fp1 and F7')\nplt.xlabel('Time')\nplt.ylabel('Amplitude')\nplt.grid(True)\nplt.show()\n\n# Sampling frequency (Hz) - modify as per your data's actual sampling rate\nfs = 200\n\n# Compute and plot the spectrogram of the combined signal\nf, t, Sxx = signal.spectrogram(df['Fp1_F7_combined'], fs)\nplt.figure(figsize=(12, 6))\nplt.pcolormesh(t, f, 10 * np.log10(Sxx), shading='gouraud')\nplt.title('Spectrogram of Combined Signal: Fp1 and F7')\nplt.ylabel('Frequency [Hz]')\nplt.xlabel('Time [s]')\nplt.colorbar(label='Intensity [dB]')\nplt.show()\n","metadata":{"execution":{"iopub.status.busy":"2024-06-13T10:21:41.544923Z","iopub.execute_input":"2024-06-13T10:21:41.545433Z","iopub.status.idle":"2024-06-13T10:21:42.763065Z","shell.execute_reply.started":"2024-06-13T10:21:41.545398Z","shell.execute_reply":"2024-06-13T10:21:42.761912Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import pandas as pd\nimport numpy as np\nimport matplotlib.pyplot as plt\nfrom scipy import signal\n\n# Load the data\ndf = pd.read_parquet('/kaggle/input/hms-harmful-brain-activity-classification/train_eegs/1000913311.parquet')\n\n# Combine the signals from F7 and T3 by subtracting T3 from F7\ndf['T3_T5_combined'] = df['T3'] - df['T5']\n\n# Plot the combined EEG signal\nplt.figure(figsize=(12, 6))\nplt.plot(df['T3_T5_combined'])\nplt.title('Combined EEG Signal: T3 - T5')\nplt.xlabel('Time')\nplt.ylabel('Amplitude')\nplt.grid(True)\nplt.show()\n\n# Sampling frequency (Hz) - modify as per your data's actual sampling rate\nfs = 256\n\n# Compute and plot the spectrogram of the combined signal\nf, t, Sxx = signal.spectrogram(df['T3_T5_combined'], fs)\nplt.figure(figsize=(12, 6))\nplt.pcolormesh(t, f, 10 * np.log10(Sxx), shading='gouraud')\nplt.title('Spectrogram of Combined Signal: T3-T5')\nplt.ylabel('Frequency [Hz]')\nplt.xlabel('Time [s]')\nplt.colorbar(label='Intensity [dB]')\nplt.show()\n","metadata":{"execution":{"iopub.status.busy":"2024-06-13T10:24:15.165709Z","iopub.execute_input":"2024-06-13T10:24:15.166116Z","iopub.status.idle":"2024-06-13T10:24:16.242516Z","shell.execute_reply.started":"2024-06-13T10:24:15.166085Z","shell.execute_reply":"2024-06-13T10:24:16.241392Z"},"trusted":true},"execution_count":null,"outputs":[]}]}