Skip to content

Commit 8cf5ee4

Browse files
committed
Worked- Smoothing is donw only once after fft is calculated then the same smoothened value is being passed to calculate the band power.
1 parent 4f41625 commit 8cf5ee4

File tree

1 file changed

+4
-19
lines changed

1 file changed

+4
-19
lines changed

ffteeg.py

Lines changed: 4 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
import time
1111

1212
# Constants
13-
FFT_WINDOW_SIZE = 500
14-
SMOOTHING_WINDOW_SIZE = 128
13+
FFT_WINDOW_SIZE = 512
14+
SMOOTHING_WINDOW_SIZE = 10
1515
DISPLAY_DURATION = 4 # seconds
1616
BAND_RANGES = {'delta': (0.5, 4), 'theta': (4, 8), 'alpha': (8, 12), 'beta': (12, 30), 'gamma': (30, 45)}
1717

@@ -22,7 +22,7 @@ def __init__(self, num_channels, sampling_rate):
2222

2323
# Initialize filters
2424
self.b_notch, self.a_notch = iirnotch(50, 30, self.sampling_rate)
25-
self.b_band, self.a_band = butter(4, [0.5 / (self.sampling_rate / 2), 48.0 / (self.sampling_rate / 2)], btype='band')
25+
self.b_band, self.a_band = butter(4, [0.5 / (self.sampling_rate / 2), 45.0 / (self.sampling_rate / 2)], btype='band')
2626
self.zi_notch = [lfilter_zi(self.b_notch, self.a_notch) * 0 for _ in range(num_channels)]
2727
self.zi_band = [lfilter_zi(self.b_band, self.a_band) * 0 for _ in range(num_channels)]
2828

@@ -124,17 +124,6 @@ def compute_band_powers(self, channel, time_data):
124124
# Return relative powers
125125
return {'delta': delta / total_power,'theta': theta / total_power,'alpha': alpha / total_power,'beta': beta / total_power,'gamma': gamma / total_power}
126126

127-
class BandPowerSmoother:
128-
def __init__(self):
129-
self.buffers = {band: deque(maxlen=SMOOTHING_WINDOW_SIZE) for band in BAND_RANGES}
130-
131-
def update(self, band_powers):
132-
for band, power in band_powers.items():
133-
self.buffers[band].append(power)
134-
135-
def get_smoothed(self):
136-
return {band: np.mean(buffer) if buffer else 0 for band, buffer in self.buffers.items()}
137-
138127
class SettingBox(QDialog):
139128
def __init__(self, num_channels, selected_eeg, selected_bp, parent=None):
140129
super().__init__(parent)
@@ -199,7 +188,6 @@ def __init__(self):
199188
# Data processing components
200189
self.data_processor = DataProcessor(self.num_channels, self.sampling_rate)
201190
self.fft_analyzer = FFTAnalyzer(self.num_channels, self.sampling_rate)
202-
self.band_smoother = BandPowerSmoother()
203191

204192
self.selected_eeg_channels = list(range(self.num_channels))
205193
self.selected_bp_channel = 0
@@ -425,10 +413,7 @@ def update_brainpower_plot(self):
425413
band_powers = self.fft_analyzer.compute_band_powers(ch, time_data)
426414

427415
if band_powers is not None:
428-
self.band_smoother.update(band_powers)
429-
smoothed_powers = self.band_smoother.get_smoothed()
430-
431-
relative_powers = [smoothed_powers['delta'], smoothed_powers['theta'], smoothed_powers['alpha'], smoothed_powers['beta'], smoothed_powers['gamma']]
416+
relative_powers = [band_powers['delta'], band_powers['theta'], band_powers['alpha'], band_powers['beta'], band_powers['gamma']]
432417
self.brainwave_bars.setOpts(height=relative_powers)
433418

434419
if __name__ == "__main__":

0 commit comments

Comments
 (0)