{"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":30698,"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\n\ndata_sample_path = \"/kaggle/input/hms-harmful-brain-activity-classification/train_eegs/1000913311.parquet\"\ndf = pd.read_parquet(data_sample_path)\ndf.head()","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2024-05-04T05:00:32.392871Z","iopub.execute_input":"2024-05-04T05:00:32.395347Z","iopub.status.idle":"2024-05-04T05:00:32.452947Z","shell.execute_reply.started":"2024-05-04T05:00:32.395260Z","shell.execute_reply":"2024-05-04T05:00:32.452093Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"seq = np.array(df['Fp1'])\nseq","metadata":{"execution":{"iopub.status.busy":"2024-05-04T05:00:32.454570Z","iopub.execute_input":"2024-05-04T05:00:32.455210Z","iopub.status.idle":"2024-05-04T05:00:32.462340Z","shell.execute_reply.started":"2024-05-04T05:00:32.455177Z","shell.execute_reply":"2024-05-04T05:00:32.461470Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import pandas as pd\nimport numpy as np\nimport matplotlib.pyplot as plt\n\n# Assuming df is your DataFrame and 'Fp1' is the column you want to plot\nseq = np.array(df['Fp1'])\n\n# Plotting the sequence\nplt.figure(figsize=(10, 5))\nplt.plot(seq)\nplt.title('Sequence from Fp1')\nplt.xlabel('Index')\nplt.ylabel('Value')\nplt.grid(True)\nplt.show()\n","metadata":{"execution":{"iopub.status.busy":"2024-05-04T05:00:32.463807Z","iopub.execute_input":"2024-05-04T05:00:32.464339Z","iopub.status.idle":"2024-05-04T05:00:33.063145Z","shell.execute_reply.started":"2024-05-04T05:00:32.464310Z","shell.execute_reply":"2024-05-04T05:00:33.061785Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import numpy as np\nimport matplotlib.pyplot as plt\n\n# Original Sequence \nseq = np.array(df['Fp1'])[0:500]\n\n\n# Fourier Transform\nfft_seq = np.fft.fft(seq)\n\n# Cut High Frequency\nn_cut = 10\nfft_seq_modified = fft_seq.copy()\nfft_seq_modified[n_cut:] = 0\n\n# Inverse Flourier Series\nifft_seq_modified = np.fft.ifft(fft_seq_modified)\n\n\n## PLOT ##\nplt.figure(figsize=(20, 10))\nplt.subplot(2, 2, 1)\nplt.plot(seq, label='Original Sequence')\nplt.title('Original Sequence')\nplt.xlabel('Index')\nplt.ylabel('Value')\nplt.legend()\nplt.grid(True)\n\n\nplt.subplot(2, 2, 2)\nplt.plot(fft_seq, label='Magnitude Spectrum', color='green')\nplt.title('Magnitude Spectrum (Original)')\nplt.xlabel('Frequency Index')\nplt.ylabel('Magnitude')\nplt.legend()\nplt.grid(True)\n\n# Modified Magnitude Spectrum (After Removing High Magnitude Components)\nplt.subplot(2, 2, 3)\nplt.plot(fft_seq_modified, label='Modified Magnitude Spectrum', color='blue')\nplt.title('Magnitude Spectrum (Modified)')\nplt.xlabel('Frequency Index')\nplt.ylabel('Magnitude')\nplt.legend()\nplt.grid(True)\n\n# Inverse Fourier Transform Sequence (Modified)\nplt.subplot(2, 2, 4)\nplt.plot(ifft_seq_modified.real, label='Modified Inverse Fourier Transform', color='red')\nplt.title('Inverse Fourier Transform Sequence (Modified)')\nplt.xlabel('Index')\nplt.ylabel('Value')\nplt.legend()\nplt.grid(True)\n\nplt.tight_layout()\nplt.show()\n","metadata":{"execution":{"iopub.status.busy":"2024-05-04T05:00:33.066757Z","iopub.execute_input":"2024-05-04T05:00:33.068303Z","iopub.status.idle":"2024-05-04T05:00:34.573881Z","shell.execute_reply.started":"2024-05-04T05:00:33.068261Z","shell.execute_reply":"2024-05-04T05:00:34.572128Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import numpy as np\nimport matplotlib.pyplot as plt\nfrom scipy.signal import butter, filtfilt\n\n# Sampling frequency\nfs = 200  # 200 samples per second\n\n# Butterworth bandpass filter\ndef butter_bandpass(lowcut, highcut, fs, order=5):\n    nyq = 0.5 * fs\n    low = lowcut / nyq\n    high = highcut / nyq\n    b, a = butter(order, [low, high], btype='band')\n    return b, a\n\ndef butter_bandpass_filter(data, lowcut, highcut, fs, order=5):\n    b, a = butter_bandpass(lowcut, highcut, fs, order=order)\n    y = filtfilt(b, a, data)\n    return y\n\n# Signal (assuming 'df' is your DataFrame and 'Fp1' is the column with your data)\nseq = np.array(df['Fp1'])\n\n# Define your frequency bands\nbands = {\n    \"Delta\": (0.5, 4),\n    \"Theta\": (4, 8),\n    \"Alpha\": (8, 12),\n    \"Beta\": (12, 30),\n    \"Gamma\": (30, 45)\n}\n\n# Filtering the signal in each band\nfiltered_signals = {}\nfor band, (low, high) in bands.items():\n    filtered_signals[band] = butter_bandpass_filter(seq, low, high, fs, order=4)\n\n# Plotting each band signal in a separate subplot\nfig, axs = plt.subplots(nrows=6, ncols=1, figsize=(12, 18), sharex=True)  # Creating 6 rows for plots\n\n# Plot original signal\naxs[0].plot(seq[:1000], label='Original Signal', color='k')\naxs[0].set_title('Original Signal')\naxs[0].legend()\n\n# Plot each filtered signal\nfor ax, (band, signal) in zip(axs[1:], filtered_signals.items()):\n    ax.plot(signal[:1000], label=f'{band} band')\n    ax.set_title(f'{band} Band')\n    ax.legend()\n\n# Labeling\nfor ax in axs:\n    ax.set_xlabel('Sample Number')\n    ax.set_ylabel('Amplitude')\n\n# Adjust layout\nplt.tight_layout()\nplt.show()\n","metadata":{"execution":{"iopub.status.busy":"2024-05-04T05:07:58.367923Z","iopub.execute_input":"2024-05-04T05:07:58.368630Z","iopub.status.idle":"2024-05-04T05:08:00.386262Z","shell.execute_reply.started":"2024-05-04T05:07:58.368573Z","shell.execute_reply":"2024-05-04T05:08:00.384787Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}