diff --git a/mne/io/edf/edf.py b/mne/io/edf/edf.py index 7a82db8eecc..51e37a7a670 100644 --- a/mne/io/edf/edf.py +++ b/mne/io/edf/edf.py @@ -681,8 +681,9 @@ def _get_info( info["subject_info"]["weight"] = float(edf_info["subject_info"]["weight"]) # Filter settings - _set_prefilter(info, edf_info, "highpass") - _set_prefilter(info, edf_info, "lowpass") + if filt_ch_idxs := [x for x in sel if x not in stim_channel_idxs]: + _set_prefilter(info, edf_info, filt_ch_idxs, "highpass") + _set_prefilter(info, edf_info, filt_ch_idxs, "lowpass") if np.isnan(info["lowpass"]): info["lowpass"] = info["sfreq"] / 2.0 @@ -746,9 +747,10 @@ def _prefilter_float(filt): return np.nan -def _set_prefilter(info, edf_info, key): +def _set_prefilter(info, edf_info, ch_idxs, key): value = 0 if len(values := edf_info.get(key, [])): + values = [x for i, x in enumerate(values) if i in ch_idxs] if len(np.unique(values)) > 1: warn( f"Channels contain different {key} filters. " @@ -936,9 +938,7 @@ def _read_edf_header(fname, exclude, infer_types, include=None): digital_max = np.array([float(_edf_str_num(fid.read(8))) for ch in channels])[ sel ] - prefiltering = np.array([_edf_str(fid.read(80)).strip() for ch in channels])[ - sel - ] + prefiltering = np.array([_edf_str(fid.read(80)).strip() for ch in channels]) highpass, lowpass = _parse_prefilter_string(prefiltering) # number of samples per record diff --git a/mne/io/edf/tests/test_edf.py b/mne/io/edf/tests/test_edf.py index 433b328d7a8..f8b327f4df8 100644 --- a/mne/io/edf/tests/test_edf.py +++ b/mne/io/edf/tests/test_edf.py @@ -710,7 +710,9 @@ def test_edf_set_prefilter(edf_info, hp, lp, hp_warn, lp_warn): else: ctx = nullcontext() with ctx: - _set_prefilter(info, edf_info, "highpass") + _set_prefilter( + info, edf_info, list(range(len(edf_info["highpass"]))), "highpass" + ) if lp_warn: ctx = pytest.warns( @@ -723,7 +725,7 @@ def test_edf_set_prefilter(edf_info, hp, lp, hp_warn, lp_warn): else: ctx = nullcontext() with ctx: - _set_prefilter(info, edf_info, "lowpass") + _set_prefilter(info, edf_info, list(range(len(edf_info["lowpass"]))), "lowpass") assert info["highpass"] == hp assert info["lowpass"] == lp diff --git a/mne/report/tests/test_report.py b/mne/report/tests/test_report.py index e8c4d018460..65d3ceb697a 100644 --- a/mne/report/tests/test_report.py +++ b/mne/report/tests/test_report.py @@ -310,13 +310,12 @@ def test_render_non_fiff(tmp_path): fnames_out.append(fname_out) report = Report() - with pytest.warns(RuntimeWarning, match="Channels contain different"): - report.parse_folder( - data_path=tmp_path, - render_bem=False, - on_error="raise", - raw_butterfly=False, - ) + report.parse_folder( + data_path=tmp_path, + render_bem=False, + on_error="raise", + raw_butterfly=False, + ) # Check correct paths and filenames _, _, content_titles, _ = report._content_as_html()