非官方中文翻译 本页译自 MNE-Python 官方文档: 查看英文原文 ↗。 文档版权归 MNE Developers 所有(BSD-3-Clause)。

使用 SPoC 进行连续目标解码#

源功率共调制(SPoC)[1] 可以找出与连续目标最大相关的正交空间滤波器的组合。

SPoC 可视为 CSP 在连续变量上的扩展。

这里使用 FieldTrip 的皮层—肌肉相干性(Cortico-Muscular Coherence)示例数据,从 MEG beta 活动解码肌电图的(连续)波动。

# Author: Alexandre Barachant <alexandre.barachant@gmail.com>
#         Jean-Rémi King <jeanremi.king@gmail.com>
#
# License: BSD-3-Clause
# Copyright the MNE-Python contributors.
import matplotlib.pyplot as plt
from sklearn.linear_model import Ridge
from sklearn.model_selection import KFold, cross_val_predict
from sklearn.pipeline import make_pipeline

import mne
from mne import Epochs
from mne.datasets.fieldtrip_cmc import data_path
from mne.decoding import SPoC, get_spatial_filter_from_estimator

# Define parameters
fname = data_path() / "SubjectCMC.ds"
raw = mne.io.read_raw_ctf(fname)
raw.crop(50.0, 200.0)  # crop for memory purposes

# Filter muscular activity to only keep high frequencies
emg = raw.copy().pick(["EMGlft"]).load_data()
emg.filter(20.0, None)

# Filter MEG data to focus on beta band
raw.pick(picks=["meg", "ref_meg"]).load_data()
raw.filter(15.0, 30.0)

# Build epochs as sliding windows over the continuous raw file
events = mne.make_fixed_length_events(raw, id=1, duration=0.75)

# Epoch length is 1.5 second
meg_epochs = Epochs(raw, events, tmin=0.0, tmax=1.5, baseline=None, detrend=1, decim=12)
emg_epochs = Epochs(emg, events, tmin=0.0, tmax=1.5, baseline=None)

# Prepare classification
X = meg_epochs.get_data()
y = emg_epochs.get_data().var(axis=2)[:, 0]  # target is EMG power

# Classification pipeline with SPoC spatial filtering and Ridge Regression
spoc = SPoC(n_components=2, log=True, reg="oas", rank="full")
clf = make_pipeline(spoc, Ridge(random_state=127))
# Define a two fold cross-validation
cv = KFold(n_splits=2, shuffle=False)

# Run cross validation
y_preds = cross_val_predict(clf, X, y, cv=cv)

# Plot the True EMG power and the EMG power predicted from MEG data
fig, ax = plt.subplots(1, 1, figsize=[10, 4], layout="constrained")
times = raw.times[meg_epochs.events[:, 0] - raw.first_samp]
ax.plot(times, y_preds, color="b", label="Predicted EMG")
ax.plot(times, y, color="r", label="True EMG")
ax.set_xlabel("Time (s)")
ax.set_ylabel("EMG Power")
ax.set_title("SPoC MEG Predictions")
plt.legend()
plt.show()
SPoC MEG Predictions
ds directory : /home/circleci/mne_data/MNE-fieldtrip_cmc-data/SubjectCMC.ds
    res4 data read.
    hc data read.
    Separate EEG position data file not present.
    Quaternion matching (desired vs. transformed):
       0.33   78.32    0.00 mm <->    0.33   78.32    0.00 mm (orig :  -71.62   40.46 -256.48 mm) diff =    0.000 mm
      -0.33  -78.32   -0.00 mm <->   -0.33  -78.32   -0.00 mm (orig :   39.27  -70.16 -258.60 mm) diff =    0.000 mm
     114.65    0.00   -0.00 mm <->  114.65    0.00   -0.00 mm (orig :   64.35   66.64 -262.01 mm) diff =    0.000 mm
    Coordinate transformations established.
    Polhemus data for 3 HPI coils added
    Device coordinate locations for 3 HPI coils added
Picked positions of 4 EEG channels from channel info
    4 EEG locations added to Polhemus data.
    Measurement info composed.
Finding samples for /home/circleci/mne_data/MNE-fieldtrip_cmc-data/SubjectCMC.ds/SubjectCMC.meg4:
    System clock channel is available, checking which samples are valid.
    75 x 12000 = 911610 samples from 191 chs
    390 samples omitted at the end
Current compensation grade : 0
Reading 0 ... 180000  =      0.000 ...   150.000 secs...
Filtering raw data in 1 contiguous segment
Setting up high-pass filter at 20 Hz

FIR filter parameters
---------------------
Designing a one-pass, zero-phase, non-causal highpass filter:
- Windowed time-domain design (firwin) method
- Hamming window with 0.0194 passband ripple and 53 dB stopband attenuation
- Lower passband edge: 20.00
- Lower transition bandwidth: 5.00 Hz (-6 dB cutoff frequency: 17.50 Hz)
- Filter length: 793 samples (0.661 s)

Reading 0 ... 180000  =      0.000 ...   150.000 secs...
Filtering raw data in 1 contiguous segment
Setting up band-pass filter from 15 - 30 Hz

FIR filter parameters
---------------------
Designing a one-pass, zero-phase, non-causal bandpass filter:
- Windowed time-domain design (firwin) method
- Hamming window with 0.0194 passband ripple and 53 dB stopband attenuation
- Lower passband edge: 15.00
- Lower transition bandwidth: 3.75 Hz (-6 dB cutoff frequency: 13.12 Hz)
- Upper passband edge: 30.00 Hz
- Upper transition bandwidth: 7.50 Hz (-6 dB cutoff frequency: 33.75 Hz)
- Filter length: 1057 samples (0.881 s)

Not setting metadata
200 matching events found
No baseline correction applied
0 projection items activated
Not setting metadata
200 matching events found
No baseline correction applied
0 projection items activated
Using data from preloaded Raw for 200 events and 1801 original time points (prior to decimation) ...
1 bad epochs dropped
Using data from preloaded Raw for 200 events and 1801 original time points ...
1 bad epochs dropped
Reducing data rank from 183 -> 183
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Computing rank from data with rank='full'
    data: rank 183 from info
Reducing data rank from 183 -> 183
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Computing rank from data with rank='full'
    data: rank 183 from info

绘制各检测成分的贡献(即正向模型)

spoc.fit(X, y)
spf = get_spatial_filter_from_estimator(spoc, info=meg_epochs.info)
spf.plot_scree()

# Plot patterns for the first three components
# with largest absolute generalized eigenvalues,
# as we can see on the scree plot
spf.plot_patterns(components=[0, 1, 2])
  • Scree plot
  • Pattern0, Pattern1, Pattern2, AU
Reducing data rank from 183 -> 183
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Estimating covariance using OAS
Done.
Computing rank from data with rank='full'
    data: rank 183 from info

参考文献#

脚本总运行时间:(0 分 4.800 秒)

图库由 Sphinx-Gallery 生成