Hi,
I am trying to clean data before extracting PSD, so here is my process:
-
Events.
There are no events in theedf
file (AFAIK), so I usemake_fixed_length_events
:
events = mne.make_fixed_length_events(edf, duration=1, overlap=0.5)
events.shape=(2301, 3)
.
Does this make sense?
- Guess
flat
andreject
forEpochs
(take the geometric mean of the absolute values of the signals and go up and down 2 orders of magnitude):
edf_df = edf.to_data_frame() # 575,516 rows
mean_abs_signal = np.abs(edf_df[edf.ch_names]).mean(axis=1)
mean_signal_multiplicative = np.exp(np.log(mean_abs_signal).mean())
signal_lo = mean_signal_multiplicative / 100
signal_hi = mean_signal_multiplicative * 100
About 3.9% of mean_abs_signal
is outside of [signal_lo,signal_hi]
.
Does this make sense?
- Create
Epochs
(cf. example):
tmin, tmax = -1, 4
edf_e = mne.Epochs(edf, events=events, preload=True,
tmin=tmin-0.5, tmax=tmax+0.5,
flat=dict(eeg=signal_lo), reject=dict(eeg=signal_hi),
baseline=(None,None), detrend=0, event_repeated="merge")
this prints
Not setting metadata
2301 matching events found
Setting baseline interval to [-1.5, 4.5] sec
Applying baseline correction (mode: mean)
0 projection items activated
Using data from preloaded Raw for 2301 events and 3001 original time points ...
Rejecting flat epoch based on EEG : ['EEG Fp1-Ref', 'EEG Fpz-Ref', 'EEG Fp2-Ref', 'EEG F7-Ref', 'EEG F3-Ref', 'EEG Fz-Ref', 'EEG F4-Ref', 'EEG F8-Ref', 'EEG FC5-Ref', 'EEG FC1-Ref', 'EEG FC2-Ref', 'EEG FC6-Ref', 'EEG AFz-Ref', 'EEG T7-Ref', 'EEG C3-Ref', 'EEG Cz-Ref', 'EEG C4-Ref', 'EEG T8-Ref', 'EEG FT10-Ref', 'EEG CP5-Ref', 'EEG CP1-Ref', 'EEG CP2-Ref', 'EEG CP6-Ref', 'EEG P7-Ref', 'EEG P3-Ref', 'EEG Pz-Ref', 'EEG P4-Ref', 'EEG P8-Ref', 'EEG FT9-Ref', 'EEG O1-Ref', 'EEG Oz-Ref', 'EEG O2-Ref']
...[repeated 2300 times]
2301 bad epochs dropped
and now len(edf_e)=0
, i.e., all epochs are dropped.
Is my file really all junk, or am I doing something wrong?
MNE version 1.0.3 on linux Pop!_OS 22.04 LTS