Note

Go to the end to download the full example code.

Decoding source space data#

Decoding to MEG data in source space on the left cortical surface. Here univariate feature selection is employed for speed purposes to confine the classification to a small number of potentially relevant features. The classifier then is trained to selected features of epochs in source space.

# Author: Denis A. Engemann <denis.engemann@gmail.com>
# Alexandre Gramfort <alexandre.gramfort@inria.fr>
# Jean-Rémi King <jeanremi.king@gmail.com>
# Eric Larson <larson.eric.d@gmail.com>
#
# License: BSD-3-Clause
# Copyright the MNE-Python contributors.
importmatplotlib.pyplotasplt
importnumpyasnp
fromsklearn.feature_selectionimport SelectKBest , f_classif
fromsklearn.linear_modelimport LogisticRegression
fromsklearn.pipelineimport make_pipeline
fromsklearn.preprocessingimport StandardScaler
importmne
frommne.decodingimport LinearModel , SlidingEstimator , cross_val_multiscore , get_coef
frommne.minimum_normimport apply_inverse_epochs , read_inverse_operator
print(__doc__)
data_path = mne.datasets.sample.data_path ()
meg_path = data_path / "MEG" / "sample"
fname_fwd = meg_path / "sample_audvis-meg-oct-6-fwd.fif"
fname_evoked = meg_path / "sample_audvis-ave.fif"
subjects_dir = data_path / "subjects"

Set parameters

raw_fname = meg_path / "sample_audvis_filt-0-40_raw.fif"
event_fname = meg_path / "sample_audvis_filt-0-40_raw-eve.fif"
fname_cov = meg_path / "sample_audvis-cov.fif"
fname_inv = meg_path / "sample_audvis-meg-oct-6-meg-inv.fif"
tmin , tmax = -0.2, 0.8
event_id = dict(aud_r=2, vis_r=4) # load contra-lateral conditions
# Setup for reading the raw data
raw = mne.io.read_raw_fif (raw_fname , preload=True)
raw.filter (None, 10.0, fir_design="firwin")
events = mne.read_events (event_fname )
# Set up pick list: MEG - bad channels (modify to your needs)
raw.info ["bads"] += ["MEG 2443"] # mark bads
picks = mne.pick_types (
 raw.info , meg=True, eeg=False, stim=True, eog=True, exclude="bads"
)
# Read epochs
epochs = mne.Epochs (
 raw ,
 events ,
 event_id ,
 tmin ,
 tmax ,
 proj=True,
 picks =picks ,
 baseline=(None, 0),
 preload=True,
 reject=dict(grad=4000e-13, eog=150e-6),
 decim=5,
) # decimate to save memory and increase speed
Opening raw data file /home/circleci/mne_data/MNE-sample-data/MEG/sample/sample_audvis_filt-0-40_raw.fif...
 Read a total of 4 projection items:
 PCA-v1 (1 x 102) idle
 PCA-v2 (1 x 102) idle
 PCA-v3 (1 x 102) idle
 Average EEG reference (1 x 60) idle
 Range : 6450 ... 48149 = 42.956 ... 320.665 secs
Ready.
Reading 0 ... 41699 = 0.000 ... 277.709 secs...
Filtering raw data in 1 contiguous segment
Setting up low-pass filter at 10 Hz
FIR filter parameters
---------------------
Designing a one-pass, zero-phase, non-causal lowpass filter:
- Windowed time-domain design (firwin) method
- Hamming window with 0.0194 passband ripple and 53 dB stopband attenuation
- Upper passband edge: 10.00 Hz
- Upper transition bandwidth: 2.50 Hz (-6 dB cutoff frequency: 11.25 Hz)
- Filter length: 199 samples (1.325 s)
Not setting metadata
143 matching events found
Setting baseline interval to [-0.19979521315838786, 0.0] s
Applying baseline correction (mode: mean)
Created an SSP operator (subspace dimension = 3)
3 projection items activated
Using data from preloaded Raw for 143 events and 151 original time points (prior to decimation) ...
 Rejecting epoch based on EOG : ['EOG 061']
 Rejecting epoch based on EOG : ['EOG 061']
 Rejecting epoch based on EOG : ['EOG 061']
 Rejecting epoch based on EOG : ['EOG 061']
 Rejecting epoch based on EOG : ['EOG 061']
 Rejecting epoch based on EOG : ['EOG 061']
 Rejecting epoch based on EOG : ['EOG 061']
 Rejecting epoch based on EOG : ['EOG 061']
 Rejecting epoch based on EOG : ['EOG 061']
 Rejecting epoch based on EOG : ['EOG 061']
 Rejecting epoch based on EOG : ['EOG 061']
 Rejecting epoch based on EOG : ['EOG 061']
 Rejecting epoch based on EOG : ['EOG 061']
 Rejecting epoch based on EOG : ['EOG 061']
 Rejecting epoch based on EOG : ['EOG 061']
 Rejecting epoch based on EOG : ['EOG 061']
 Rejecting epoch based on EOG : ['EOG 061']
 Rejecting epoch based on EOG : ['EOG 061']
 Rejecting epoch based on EOG : ['EOG 061']
 Rejecting epoch based on EOG : ['EOG 061']
 Rejecting epoch based on EOG : ['EOG 061']
 Rejecting epoch based on EOG : ['EOG 061']
 Rejecting epoch based on EOG : ['EOG 061']
 Rejecting epoch based on EOG : ['EOG 061']
 Rejecting epoch based on EOG : ['EOG 061']
 Rejecting epoch based on EOG : ['EOG 061']
 Rejecting epoch based on EOG : ['EOG 061']
 Rejecting epoch based on EOG : ['EOG 061']
28 bad epochs dropped

Compute inverse solution

snr = 3.0
noise_cov = mne.read_cov (fname_cov )
inverse_operator = read_inverse_operator (fname_inv )
stcs = apply_inverse_epochs (
 epochs ,
 inverse_operator ,
 lambda2=1.0 / snr **2,
 verbose=False,
 method="dSPM",
 pick_ori="normal",
)
 366 x 366 full covariance (kind = 1) found.
 Read a total of 4 projection items:
 PCA-v1 (1 x 102) active
 PCA-v2 (1 x 102) active
 PCA-v3 (1 x 102) active
 Average EEG reference (1 x 60) active
Reading inverse operator decomposition from /home/circleci/mne_data/MNE-sample-data/MEG/sample/sample_audvis-meg-oct-6-meg-inv.fif...
 Reading inverse operator info...
 [done]
 Reading inverse operator decomposition...
 [done]
 305 x 305 full covariance (kind = 1) found.
 Read a total of 4 projection items:
 PCA-v1 (1 x 102) active
 PCA-v2 (1 x 102) active
 PCA-v3 (1 x 102) active
 Average EEG reference (1 x 60) active
 Noise covariance matrix read.
 22494 x 22494 diagonal covariance (kind = 2) found.
 Source covariance matrix read.
 22494 x 22494 diagonal covariance (kind = 6) found.
 Orientation priors read.
 22494 x 22494 diagonal covariance (kind = 5) found.
 Depth priors read.
 Did not find the desired covariance matrix (kind = 3)
 Reading a source space...
 Computing patch statistics...
 Patch information added...
 Distance information added...
 [done]
 Reading a source space...
 Computing patch statistics...
 Patch information added...
 Distance information added...
 [done]
 2 source spaces read
 Read a total of 4 projection items:
 PCA-v1 (1 x 102) active
 PCA-v2 (1 x 102) active
 PCA-v3 (1 x 102) active
 Average EEG reference (1 x 60) active
 Source spaces transformed to the inverse solution coordinate frame

Decoding in sensor space using a logistic regression

# Retrieve source space data into an array
X = np.array ([stc.lh_data for stc in stcs ]) # only keep left hemisphere
y = epochs.events [:, 2]
# prepare a series of classifier applied at each time sample
clf = make_pipeline (
 StandardScaler (), # z-score normalization
 SelectKBest (f_classif , k=500), # select features for speed
 LinearModel (LogisticRegression (C=1, solver="liblinear")),
)
time_decod = SlidingEstimator (clf , scoring="roc_auc")
# Run cross-validated decoding analyses:
scores = cross_val_multiscore (time_decod , X , y , cv=5, n_jobs=None)
# Plot average decoding scores of 5 splits
fig , ax = plt.subplots (1)
ax.plot (epochs.times , scores .mean(0), label="score")
ax.axhline (0.5, color="k", linestyle="--", label="chance")
ax.axvline (0, color="k")
plt.legend ()
decoding spatio temporal source
 0%| | Fitting SlidingEstimator : 0/31 [00:00<?, ?it/s]
 3%|▎ | Fitting SlidingEstimator : 1/31 [00:00<00:02, 14.28it/s]
 6%|▋ | Fitting SlidingEstimator : 2/31 [00:00<00:01, 19.45it/s]
 10%|▉ | Fitting SlidingEstimator : 3/31 [00:00<00:01, 22.13it/s]
 13%|█▎ | Fitting SlidingEstimator : 4/31 [00:00<00:01, 19.56it/s]
 16%|█▌ | Fitting SlidingEstimator : 5/31 [00:00<00:01, 21.12it/s]
 19%|█▉ | Fitting SlidingEstimator : 6/31 [00:00<00:01, 22.34it/s]
 23%|██▎ | Fitting SlidingEstimator : 7/31 [00:00<00:01, 23.24it/s]
 26%|██▌ | Fitting SlidingEstimator : 8/31 [00:00<00:01, 21.45it/s]
 29%|██▉ | Fitting SlidingEstimator : 9/31 [00:00<00:00, 22.28it/s]
 32%|███▏ | Fitting SlidingEstimator : 10/31 [00:00<00:00, 22.97it/s]
 35%|███▌ | Fitting SlidingEstimator : 11/31 [00:00<00:00, 23.59it/s]
 39%|███▊ | Fitting SlidingEstimator : 12/31 [00:00<00:00, 24.09it/s]
 42%|████▏ | Fitting SlidingEstimator : 13/31 [00:00<00:00, 22.65it/s]
 45%|████▌ | Fitting SlidingEstimator : 14/31 [00:00<00:00, 23.19it/s]
 48%|████▊ | Fitting SlidingEstimator : 15/31 [00:00<00:00, 23.65it/s]
 52%|█████▏ | Fitting SlidingEstimator : 16/31 [00:00<00:00, 24.08it/s]
 55%|█████▍ | Fitting SlidingEstimator : 17/31 [00:00<00:00, 22.86it/s]
 58%|█████▊ | Fitting SlidingEstimator : 18/31 [00:00<00:00, 23.29it/s]
 61%|██████▏ | Fitting SlidingEstimator : 19/31 [00:00<00:00, 23.70it/s]
 65%|██████▍ | Fitting SlidingEstimator : 20/31 [00:00<00:00, 24.05it/s]
 68%|██████▊ | Fitting SlidingEstimator : 21/31 [00:00<00:00, 24.40it/s]
 71%|███████ | Fitting SlidingEstimator : 22/31 [00:00<00:00, 23.22it/s]
 74%|███████▍ | Fitting SlidingEstimator : 23/31 [00:00<00:00, 23.59it/s]
 77%|███████▋ | Fitting SlidingEstimator : 24/31 [00:01<00:00, 23.93it/s]
 81%|████████ | Fitting SlidingEstimator : 25/31 [00:01<00:00, 22.97it/s]
 84%|████████▍ | Fitting SlidingEstimator : 26/31 [00:01<00:00, 23.33it/s]
 87%|████████▋ | Fitting SlidingEstimator : 27/31 [00:01<00:00, 23.67it/s]
 90%|█████████ | Fitting SlidingEstimator : 28/31 [00:01<00:00, 22.79it/s]
 94%|█████████▎| Fitting SlidingEstimator : 29/31 [00:01<00:00, 23.13it/s]
 97%|█████████▋| Fitting SlidingEstimator : 30/31 [00:01<00:00, 23.44it/s]
100%|██████████| Fitting SlidingEstimator : 31/31 [00:01<00:00, 23.59it/s]
100%|██████████| Fitting SlidingEstimator : 31/31 [00:01<00:00, 23.37it/s]
 0%| | Fitting SlidingEstimator : 0/31 [00:00<?, ?it/s]
 3%|▎ | Fitting SlidingEstimator : 1/31 [00:00<00:02, 14.27it/s]
 6%|▋ | Fitting SlidingEstimator : 2/31 [00:00<00:01, 19.44it/s]
 10%|▉ | Fitting SlidingEstimator : 3/31 [00:00<00:01, 22.12it/s]
 13%|█▎ | Fitting SlidingEstimator : 4/31 [00:00<00:01, 19.56it/s]
 16%|█▌ | Fitting SlidingEstimator : 5/31 [00:00<00:01, 21.15it/s]
 19%|█▉ | Fitting SlidingEstimator : 6/31 [00:00<00:01, 22.37it/s]
 23%|██▎ | Fitting SlidingEstimator : 7/31 [00:00<00:01, 23.32it/s]
 26%|██▌ | Fitting SlidingEstimator : 8/31 [00:00<00:00, 24.10it/s]
 29%|██▉ | Fitting SlidingEstimator : 9/31 [00:00<00:00, 24.73it/s]
 32%|███▏ | Fitting SlidingEstimator : 10/31 [00:00<00:00, 25.25it/s]
 35%|███▌ | Fitting SlidingEstimator : 11/31 [00:00<00:00, 25.63it/s]
 39%|███▊ | Fitting SlidingEstimator : 12/31 [00:00<00:00, 26.02it/s]
 42%|████▏ | Fitting SlidingEstimator : 13/31 [00:00<00:00, 26.36it/s]
 45%|████▌ | Fitting SlidingEstimator : 14/31 [00:00<00:00, 26.66it/s]
 48%|████▊ | Fitting SlidingEstimator : 15/31 [00:00<00:00, 26.89it/s]
 52%|█████▏ | Fitting SlidingEstimator : 16/31 [00:00<00:00, 27.12it/s]
 55%|█████▍ | Fitting SlidingEstimator : 17/31 [00:00<00:00, 27.28it/s]
 58%|█████▊ | Fitting SlidingEstimator : 18/31 [00:00<00:00, 27.46it/s]
 61%|██████▏ | Fitting SlidingEstimator : 19/31 [00:00<00:00, 27.63it/s]
 65%|██████▍ | Fitting SlidingEstimator : 20/31 [00:00<00:00, 25.91it/s]
 68%|██████▊ | Fitting SlidingEstimator : 21/31 [00:00<00:00, 26.11it/s]
 71%|███████ | Fitting SlidingEstimator : 22/31 [00:00<00:00, 26.35it/s]
 74%|███████▍ | Fitting SlidingEstimator : 23/31 [00:00<00:00, 26.56it/s]
 77%|███████▋ | Fitting SlidingEstimator : 24/31 [00:00<00:00, 26.77it/s]
 81%|████████ | Fitting SlidingEstimator : 25/31 [00:00<00:00, 26.95it/s]
 84%|████████▍ | Fitting SlidingEstimator : 26/31 [00:00<00:00, 27.09it/s]
 87%|████████▋ | Fitting SlidingEstimator : 27/31 [00:01<00:00, 25.68it/s]
 90%|█████████ | Fitting SlidingEstimator : 28/31 [00:01<00:00, 25.91it/s]
 94%|█████████▎| Fitting SlidingEstimator : 29/31 [00:01<00:00, 26.11it/s]
 97%|█████████▋| Fitting SlidingEstimator : 30/31 [00:01<00:00, 26.31it/s]
100%|██████████| Fitting SlidingEstimator : 31/31 [00:01<00:00, 26.63it/s]
100%|██████████| Fitting SlidingEstimator : 31/31 [00:01<00:00, 26.23it/s]
 0%| | Fitting SlidingEstimator : 0/31 [00:00<?, ?it/s]
 3%|▎ | Fitting SlidingEstimator : 1/31 [00:00<00:02, 14.37it/s]
 6%|▋ | Fitting SlidingEstimator : 2/31 [00:00<00:01, 19.55it/s]
 10%|▉ | Fitting SlidingEstimator : 3/31 [00:00<00:01, 22.22it/s]
 13%|█▎ | Fitting SlidingEstimator : 4/31 [00:00<00:01, 23.83it/s]
 16%|█▌ | Fitting SlidingEstimator : 5/31 [00:00<00:01, 21.04it/s]
 19%|█▉ | Fitting SlidingEstimator : 6/31 [00:00<00:01, 22.27it/s]
 23%|██▎ | Fitting SlidingEstimator : 7/31 [00:00<00:01, 23.24it/s]
 26%|██▌ | Fitting SlidingEstimator : 8/31 [00:00<00:00, 24.01it/s]
 29%|██▉ | Fitting SlidingEstimator : 9/31 [00:00<00:00, 24.62it/s]
 32%|███▏ | Fitting SlidingEstimator : 10/31 [00:00<00:00, 25.16it/s]
 35%|███▌ | Fitting SlidingEstimator : 11/31 [00:00<00:00, 25.56it/s]
 39%|███▊ | Fitting SlidingEstimator : 12/31 [00:00<00:00, 25.96it/s]
 42%|████▏ | Fitting SlidingEstimator : 13/31 [00:00<00:00, 26.30it/s]
 45%|████▌ | Fitting SlidingEstimator : 14/31 [00:00<00:00, 26.59it/s]
 48%|████▊ | Fitting SlidingEstimator : 15/31 [00:00<00:00, 26.83it/s]
 52%|█████▏ | Fitting SlidingEstimator : 16/31 [00:00<00:00, 27.07it/s]
 55%|█████▍ | Fitting SlidingEstimator : 17/31 [00:00<00:00, 27.23it/s]
 58%|█████▊ | Fitting SlidingEstimator : 18/31 [00:00<00:00, 27.42it/s]
 61%|██████▏ | Fitting SlidingEstimator : 19/31 [00:00<00:00, 27.59it/s]
 65%|██████▍ | Fitting SlidingEstimator : 20/31 [00:00<00:00, 27.75it/s]
 68%|██████▊ | Fitting SlidingEstimator : 21/31 [00:00<00:00, 27.86it/s]
 71%|███████ | Fitting SlidingEstimator : 22/31 [00:00<00:00, 26.17it/s]
 74%|███████▍ | Fitting SlidingEstimator : 23/31 [00:00<00:00, 26.40it/s]
 77%|███████▋ | Fitting SlidingEstimator : 24/31 [00:00<00:00, 26.61it/s]
 81%|████████ | Fitting SlidingEstimator : 25/31 [00:00<00:00, 26.77it/s]
 84%|████████▍ | Fitting SlidingEstimator : 26/31 [00:00<00:00, 26.95it/s]
 87%|████████▋ | Fitting SlidingEstimator : 27/31 [00:01<00:00, 25.57it/s]
 90%|█████████ | Fitting SlidingEstimator : 28/31 [00:01<00:00, 25.78it/s]
 94%|█████████▎| Fitting SlidingEstimator : 29/31 [00:01<00:00, 26.00it/s]
 97%|█████████▋| Fitting SlidingEstimator : 30/31 [00:01<00:00, 26.21it/s]
100%|██████████| Fitting SlidingEstimator : 31/31 [00:01<00:00, 26.63it/s]
 0%| | Fitting SlidingEstimator : 0/31 [00:00<?, ?it/s]
 3%|▎ | Fitting SlidingEstimator : 1/31 [00:00<00:02, 14.28it/s]
 6%|▋ | Fitting SlidingEstimator : 2/31 [00:00<00:01, 19.46it/s]
 10%|▉ | Fitting SlidingEstimator : 3/31 [00:00<00:01, 22.11it/s]
 13%|█▎ | Fitting SlidingEstimator : 4/31 [00:00<00:01, 23.74it/s]
 16%|█▌ | Fitting SlidingEstimator : 5/31 [00:00<00:01, 21.00it/s]
 19%|█▉ | Fitting SlidingEstimator : 6/31 [00:00<00:01, 22.23it/s]
 23%|██▎ | Fitting SlidingEstimator : 7/31 [00:00<00:01, 23.19it/s]
 26%|██▌ | Fitting SlidingEstimator : 8/31 [00:00<00:00, 23.97it/s]
 29%|██▉ | Fitting SlidingEstimator : 9/31 [00:00<00:00, 24.61it/s]
 32%|███▏ | Fitting SlidingEstimator : 10/31 [00:00<00:00, 25.15it/s]
 35%|███▌ | Fitting SlidingEstimator : 11/31 [00:00<00:00, 25.54it/s]
 39%|███▊ | Fitting SlidingEstimator : 12/31 [00:00<00:00, 25.94it/s]
 42%|████▏ | Fitting SlidingEstimator : 13/31 [00:00<00:00, 26.28it/s]
 45%|████▌ | Fitting SlidingEstimator : 14/31 [00:00<00:00, 26.58it/s]
 48%|████▊ | Fitting SlidingEstimator : 15/31 [00:00<00:00, 26.82it/s]
 52%|█████▏ | Fitting SlidingEstimator : 16/31 [00:00<00:00, 27.06it/s]
 55%|█████▍ | Fitting SlidingEstimator : 17/31 [00:00<00:00, 25.25it/s]
 58%|█████▊ | Fitting SlidingEstimator : 18/31 [00:00<00:00, 25.57it/s]
 61%|██████▏ | Fitting SlidingEstimator : 19/31 [00:00<00:00, 25.86it/s]
 65%|██████▍ | Fitting SlidingEstimator : 20/31 [00:00<00:00, 26.09it/s]
 68%|██████▊ | Fitting SlidingEstimator : 21/31 [00:00<00:00, 26.33it/s]
 71%|███████ | Fitting SlidingEstimator : 22/31 [00:00<00:00, 26.56it/s]
 74%|███████▍ | Fitting SlidingEstimator : 23/31 [00:00<00:00, 26.76it/s]
 77%|███████▋ | Fitting SlidingEstimator : 24/31 [00:00<00:00, 26.93it/s]
 81%|████████ | Fitting SlidingEstimator : 25/31 [00:00<00:00, 27.11it/s]
 84%|████████▍ | Fitting SlidingEstimator : 26/31 [00:00<00:00, 27.23it/s]
 87%|████████▋ | Fitting SlidingEstimator : 27/31 [00:01<00:00, 27.39it/s]
 90%|█████████ | Fitting SlidingEstimator : 28/31 [00:01<00:00, 27.53it/s]
 94%|█████████▎| Fitting SlidingEstimator : 29/31 [00:01<00:00, 27.66it/s]
 97%|█████████▋| Fitting SlidingEstimator : 30/31 [00:01<00:00, 26.21it/s]
100%|██████████| Fitting SlidingEstimator : 31/31 [00:01<00:00, 26.67it/s]
 0%| | Fitting SlidingEstimator : 0/31 [00:00<?, ?it/s]
 3%|▎ | Fitting SlidingEstimator : 1/31 [00:00<00:01, 27.15it/s]
 6%|▋ | Fitting SlidingEstimator : 2/31 [00:00<00:01, 19.10it/s]
 10%|▉ | Fitting SlidingEstimator : 3/31 [00:00<00:01, 21.84it/s]
 13%|█▎ | Fitting SlidingEstimator : 4/31 [00:00<00:01, 23.52it/s]
 16%|█▌ | Fitting SlidingEstimator : 5/31 [00:00<00:01, 24.66it/s]
 19%|█▉ | Fitting SlidingEstimator : 6/31 [00:00<00:00, 25.48it/s]
 23%|██▎ | Fitting SlidingEstimator : 7/31 [00:00<00:00, 26.10it/s]
 26%|██▌ | Fitting SlidingEstimator : 8/31 [00:00<00:00, 26.58it/s]
 29%|██▉ | Fitting SlidingEstimator : 9/31 [00:00<00:00, 26.97it/s]
 32%|███▏ | Fitting SlidingEstimator : 10/31 [00:00<00:00, 27.28it/s]
 35%|███▌ | Fitting SlidingEstimator : 11/31 [00:00<00:00, 27.54it/s]
 39%|███▊ | Fitting SlidingEstimator : 12/31 [00:00<00:00, 27.68it/s]
 42%|████▏ | Fitting SlidingEstimator : 13/31 [00:00<00:00, 27.88it/s]
 45%|████▌ | Fitting SlidingEstimator : 14/31 [00:00<00:00, 28.05it/s]
 48%|████▊ | Fitting SlidingEstimator : 15/31 [00:00<00:00, 28.20it/s]
 52%|█████▏ | Fitting SlidingEstimator : 16/31 [00:00<00:00, 26.09it/s]
 55%|█████▍ | Fitting SlidingEstimator : 17/31 [00:00<00:00, 26.36it/s]
 58%|█████▊ | Fitting SlidingEstimator : 18/31 [00:00<00:00, 26.60it/s]
 61%|██████▏ | Fitting SlidingEstimator : 19/31 [00:00<00:00, 26.83it/s]
 65%|██████▍ | Fitting SlidingEstimator : 20/31 [00:00<00:00, 26.99it/s]
 68%|██████▊ | Fitting SlidingEstimator : 21/31 [00:00<00:00, 25.43it/s]
 71%|███████ | Fitting SlidingEstimator : 22/31 [00:00<00:00, 25.70it/s]
 74%|███████▍ | Fitting SlidingEstimator : 23/31 [00:00<00:00, 25.93it/s]
 77%|███████▋ | Fitting SlidingEstimator : 24/31 [00:00<00:00, 26.16it/s]
 81%|████████ | Fitting SlidingEstimator : 25/31 [00:00<00:00, 26.38it/s]
 84%|████████▍ | Fitting SlidingEstimator : 26/31 [00:00<00:00, 26.58it/s]
 87%|████████▋ | Fitting SlidingEstimator : 27/31 [00:01<00:00, 26.75it/s]
 90%|█████████ | Fitting SlidingEstimator : 28/31 [00:01<00:00, 25.43it/s]
 94%|█████████▎| Fitting SlidingEstimator : 29/31 [00:01<00:00, 25.66it/s]
 97%|█████████▋| Fitting SlidingEstimator : 30/31 [00:01<00:00, 25.88it/s]
100%|██████████| Fitting SlidingEstimator : 31/31 [00:01<00:00, 26.56it/s]
100%|██████████| Fitting SlidingEstimator : 31/31 [00:01<00:00, 26.42it/s]

To investigate weights, we need to retrieve the patterns of a fitted model

# The fitting needs not be cross validated because the weights are based on
# the training sets
time_decod.fit (X , y )
# Retrieve patterns after inversing the z-score normalization step:
patterns = get_coef (time_decod , "patterns_", inverse_transform=True)
stc = stcs [0] # for convenience, lookup parameters from first stc
vertices = [stc.lh_vertno , np.array ([], int)] # empty array for right hemi
stc_feat = mne.SourceEstimate (
 np.abs (patterns ),
 vertices =vertices ,
 tmin =stc.tmin ,
 tstep=stc.tstep ,
 subject="sample",
)
brain = stc_feat.plot (
 views=["lat"],
 transparent=True,
 initial_time=0.1,
 time_unit="s",
 subjects_dir =subjects_dir ,
)
decoding spatio temporal source
 0%| | Fitting SlidingEstimator : 0/31 [00:00<?, ?it/s]
 3%|▎ | Fitting SlidingEstimator : 1/31 [00:00<00:02, 14.26it/s]
 6%|▋ | Fitting SlidingEstimator : 2/31 [00:00<00:01, 14.58it/s]
 10%|▉ | Fitting SlidingEstimator : 3/31 [00:00<00:01, 17.75it/s]
 13%|█▎ | Fitting SlidingEstimator : 4/31 [00:00<00:01, 19.92it/s]
 16%|█▌ | Fitting SlidingEstimator : 5/31 [00:00<00:01, 21.48it/s]
 19%|█▉ | Fitting SlidingEstimator : 6/31 [00:00<00:01, 19.83it/s]
 23%|██▎ | Fitting SlidingEstimator : 7/31 [00:00<00:01, 20.99it/s]
 26%|██▌ | Fitting SlidingEstimator : 8/31 [00:00<00:01, 19.79it/s]
 29%|██▉ | Fitting SlidingEstimator : 9/31 [00:00<00:01, 20.72it/s]
 32%|███▏ | Fitting SlidingEstimator : 10/31 [00:00<00:01, 19.72it/s]
 35%|███▌ | Fitting SlidingEstimator : 11/31 [00:00<00:00, 20.52it/s]
 39%|███▊ | Fitting SlidingEstimator : 12/31 [00:00<00:00, 21.23it/s]
 42%|████▏ | Fitting SlidingEstimator : 13/31 [00:00<00:00, 20.34it/s]
 45%|████▌ | Fitting SlidingEstimator : 14/31 [00:00<00:00, 20.97it/s]
 48%|████▊ | Fitting SlidingEstimator : 15/31 [00:00<00:00, 21.56it/s]
 52%|█████▏ | Fitting SlidingEstimator : 16/31 [00:00<00:00, 20.70it/s]
 55%|█████▍ | Fitting SlidingEstimator : 17/31 [00:00<00:00, 21.26it/s]
 58%|█████▊ | Fitting SlidingEstimator : 18/31 [00:00<00:00, 21.77it/s]
 61%|██████▏ | Fitting SlidingEstimator : 19/31 [00:00<00:00, 20.96it/s]
 65%|██████▍ | Fitting SlidingEstimator : 20/31 [00:00<00:00, 21.45it/s]
 68%|██████▊ | Fitting SlidingEstimator : 21/31 [00:01<00:00, 20.76it/s]
 71%|███████ | Fitting SlidingEstimator : 22/31 [00:01<00:00, 21.23it/s]
 74%|███████▍ | Fitting SlidingEstimator : 23/31 [00:01<00:00, 20.54it/s]
 77%|███████▋ | Fitting SlidingEstimator : 24/31 [00:01<00:00, 21.00it/s]
 81%|████████ | Fitting SlidingEstimator : 25/31 [00:01<00:00, 20.42it/s]
 84%|████████▍ | Fitting SlidingEstimator : 26/31 [00:01<00:00, 20.87it/s]
 87%|████████▋ | Fitting SlidingEstimator : 27/31 [00:01<00:00, 21.29it/s]
 90%|█████████ | Fitting SlidingEstimator : 28/31 [00:01<00:00, 20.71it/s]
 94%|█████████▎| Fitting SlidingEstimator : 29/31 [00:01<00:00, 21.12it/s]
 97%|█████████▋| Fitting SlidingEstimator : 30/31 [00:01<00:00, 21.52it/s]
100%|██████████| Fitting SlidingEstimator : 31/31 [00:01<00:00, 21.61it/s]
100%|██████████| Fitting SlidingEstimator : 31/31 [00:01<00:00, 21.20it/s]
Using control points [ 3.50724321 4.37721471 15.59502306]

Total running time of the script: (0 minutes 16.916 seconds)

Gallery generated by Sphinx-Gallery