diff --git a/neurokit/analysis/suppressions.py b/neurokit/analysis/suppressions.py index 7d75735..2616fbf 100644 --- a/neurokit/analysis/suppressions.py +++ b/neurokit/analysis/suppressions.py @@ -64,10 +64,9 @@ def _detect_suppressions(recording: Recording, if threshold is None: threshold = _find_threshold(rec.data.loc[:, channels]) - envelope = rec.data.loc[:, channels].abs().values.max(axis=1) - envelope = savgol_filter(envelope, 3, 1) + envelope = np.nanmax(rec.data.loc[:, channels].abs().values, axis=1) with np.errstate(invalid='ignore'): - ies_mask = envelope < threshold + ies_mask = envelope <= threshold min_length = math.floor(min_duration * rec.frequency) dilate_len = math.floor((min_duration + min_gap) * rec.frequency) gap_len = math.floor(min_gap * rec.frequency) diff --git a/tests/analysis/test_suppressions.py b/tests/analysis/test_suppressions.py index 0559a34..ac3a5c9 100644 --- a/tests/analysis/test_suppressions.py +++ b/tests/analysis/test_suppressions.py @@ -165,3 +165,23 @@ def test_artifacts(): analyzer = SuppressionAnalyzer(rec) detections = analyzer.detect_ies(threshold=5.5) assert len(detections) == 0 + + +def test_artifact_in_suppression(): + rec = simulated_eeg_recording(channels=['EEG_1'], duration=10, + frequency=100) + rec = rec.filter(1) + # Add suppression + rec.data.iloc[200:600] /= rec.data.iloc[200:600].values.max() / 5 + + # Add artifact + artifacts = EventSeries(name='artifacts') + artifacts.add(3.2, 4.8, code='test') + rec.es.add(artifacts) + analyzer = SuppressionAnalyzer(rec) + detections = analyzer.detect_ies(threshold=5.5) + assert len(detections) == 2 + # The suppressions must not overlap with the artifact + sec = pd.Timedelta('1s') + assert detections.loc[0].end < 3.2 * sec + assert detections.loc[1].end > 4.8 * sec