Describe the bug
In epochs analysis, a common operation is to compute induced response by subtracting the mean epochs. In MNE-python, it is computed by _detrend_offset_decim function in epochs sub-module.
However, the time scale operation seems use self._raw_times as time line instead of self.times.
The two values may be different if DECIM parameter is used when got the epochs, as the self._raw_times is kept unchange and self.times is recomputed according to DECIM parameter. If the mismatch happens, the program will crush immediately, and raise a ValueError says operands could be broadcast together with shapes x, y, x. (x means original times in self._raw_times, and y means new times in self.times)
Steps to reproduce
# %% Importing
import mne
from mne import io
from mne.datasets import sample
# %% Loading
data_path = sample.data_path()
raw_fname = data_path + '/MEG/sample/sample_audvis_raw.fif'
tmin, tmax, event_id = -0.2, 0.5, 2
# Setup for reading the raw data
raw = io.read_raw_fif(raw_fname)
events = mne.find_events(raw, stim_channel='STI 014')
include = []
# Picks MEG channels
picks = mne.pick_types(raw.info, meg=True, eeg=False, eog=True,
stim=False, include=include, exclude='bads')
reject = None # dict(grad=4000e-13, mag=4e-12, eog=150e-6)
# Load epochs
epochs = mne.Epochs(raw, events, event_id, tmin, tmax, picks=picks,
decim=10, # ***********Key to reproduce the bug.
baseline=(None, 0), reject=reject)
# %% Print shape of _raw_times and times
print('Shape of _raw_times is {}'.format(epochs._raw_times.shape))
print('Shape of times is {}'.format(epochs.times.shape))
# %% Bug occurs
induced_evoked = epochs.subtract_evoked().average()
Expected results
The induced_evoked is computed correctly.
Actual results
An error occurs as following:
Subtracting Evoked from Epochs
The following channels are not included in the subtraction: EOG 061
[done]
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
~/Documents/RSVPshuju_analysis/Analysis/Visualize/crush.py in
----> 34 induced_evoked = epochs.subtract_evoked().average()
~/anaconda3/lib/python3.7/site-packages/mne/epochs.py in average(self, picks, method)
940 This would compute the trimmed mean.
941 """
--> 942 return self._compute_aggregate(picks=picks, mode=method)
943
944 @fill_doc
~/anaconda3/lib/python3.7/site-packages/mne/epochs.py in _compute_aggregate(self, picks, mode)
989 data = np.zeros((n_channels, n_times))
990 n_events = 0
--> 991 for e in self:
992 if np.iscomplexobj(e):
993 data = data.astype(np.complex128)
~/anaconda3/lib/python3.7/site-packages/mne/utils/mixin.py in __next__(self, return_event_id)
326 raise StopIteration # signal the end properly
327 epoch_noproj = self._get_epoch_from_raw(self._current)
--> 328 epoch_noproj = self._detrend_offset_decim(epoch_noproj)
329 epoch = self._project_epoch(epoch_noproj)
330 self._current += 1
in _detrend_offset_decim(self, epoch, verbose)
~/anaconda3/lib/python3.7/site-packages/mne/epochs.py in _detrend_offset_decim(self, epoch, verbose)
791 # handle offset
792 if self._offset is not None:
--> 793 epoch += self._offset
794
795 # Decimate if necessary (i.e., epoch not preloaded)
ValueError: operands could not be broadcast together with shapes (306,421) (306,43) (306,421)
Describe the bug
In epochs analysis, a common operation is to compute induced response by subtracting the mean epochs. In MNE-python, it is computed by _detrend_offset_decim function in epochs sub-module.
However, the time scale operation seems use self._raw_times as time line instead of self.times.
The two values may be different if DECIM parameter is used when got the epochs, as the self._raw_times is kept unchange and self.times is recomputed according to DECIM parameter. If the mismatch happens, the program will crush immediately, and raise a ValueError says operands could be broadcast together with shapes x, y, x. (x means original times in self._raw_times, and y means new times in self.times)
Steps to reproduce
Expected results
The induced_evoked is computed correctly.
Actual results
An error occurs as following: