Python中的M/EEG功率回归流水线
项目描述
预测M/EEG流水线的协方差数据框
摘要
coffeine
库实现了对预测建模技术的高级接口,重点关注M/EEG协方差矩阵作为信号表示。这里实现的方法建立在 PyRiemann 之上,而API设计用于更具体的用例,即从M/EEG信号构建生物医学预测模型。为此,coffeine
使用DataFrame来处理多个协方差矩阵以及标量特征。提供了向量化以及模型组合函数,这些函数可以处理从协方差以及其他类型的特征组合scikit-learn兼容的建模流水线。
有关特征提取流水线和统计模型的具体信息,请参考以下参考文献
[1] D. Sabbagh, P. Ablin, G. Varoquaux, A. Gramfort, and D. A. Engemann. Predictive regression modeling with MEG/EEG: from source power to signals and cognitive states. NeuroImage, page 116893,2020. ISSN 1053-8119. https://www.sciencedirect.com/science/article/pii/S1053811920303797
[2] D. Sabbagh, P. Ablin, G. Varoquaux, A. Gramfort, 和 D. A. Engemann. 无源建模预测MEG/EEG脑信号的人流回归. NeurIPS (神经网络信息处理系统进展) 32. https://papers.nips.cc/paper/8952-manifold-regression-to-predict-from-megeeg-brain-signals-without-source-modeling
[3] D. A. Engemann, O. Kozynets, D. Sabbagh, G. Lemaître, G. Varoquaux, F. Liem, 和 A. Gramfort. 结合脑磁图和磁共振成像增强替代生物标志物的学习. eLife, 9:e54055, 2020 https://elifesciences.org/articles/54055
滤波器组管道(跨越多个频段)可以这样考虑
预处理后,协方差矩阵可以投影以减轻场扩散并处理秩亏信号。随后,进行矢量化以从方差、协方差或两者中提取列特征。黎曼嵌入在减轻场扩散和在一步中提供矢量化方面是特殊的。它可以与投影步骤中的降维结合来处理秩亏。最后,应用统计学习算法。
表示、投影和矢量化步骤分别针对每个频段进行。
安装Python包
您可以克隆此库,然后执行以下操作
$ pip install -e .
如果以下命令没有返回任何错误,则表示一切正常
$ python -c 'import coffeine'
与Python一起使用
compute_features
从原始M/EEG数据计算功率特征
- 功率谱密度
- 谱协方差矩阵
- 余弦协方差矩阵
- 跨频协方差矩阵
- 跨频相关矩阵
矩阵形状为(n_frequency_bands, n_channels, n_channels)
用例示例
import os
import mne
from coffeine import compute_features
data_path = mne.datasets.sample.data_path()
data_dir = os.path.join(data_path, 'MEG', 'sample')
raw_fname = os.path.join(data_dir, 'sample_audvis_raw.fif')
raw = mne.io.read_raw_fif(raw_fname, verbose=False)
# pick some MEG and EEG channels after cropping
raw = raw.copy().crop(0, 200).pick([0, 1, 330, 331, 332])
frequency_bands = {'alpha': (8.0, 15.0), 'beta': (15.0, 30.0)}
features, _ = compute_features(raw, frequency_bands=frequency_bands)
make_filter_bank_models
实现了以下模型
- riemann
- lw_riemann
- diag
- logdiag
- random
- naive
- spoc
- riemann_wass
- dummy
用例示例
import numpy as np
import pandas as pd
from coffeine import make_filter_bank_regressor
freq_bands = {'alpha': (8.0, 15.0), 'beta': (15.0, 30.0)}
n_freq_bands = len(freq_bands)
n_subjects = 10
n_channels = 4
# Make toy data
X_cov = np.random.randn(n_subjects, n_freq_bands, n_channels, n_channels)
for sub in range(n_subjects):
for fb in range(n_freq_bands):
X_cov[sub, fb] = X_cov[sub, fb] @ X_cov[sub, fb].T
X_df = pd.DataFrame(
{band: list(X_cov[:, ii]) for ii, band in enumerate(freq_bands)})
X_df['drug'] = np.random.randint(2, size=n_subjects)
y = np.random.randn(len(X_df))
# Models
fb_model = make_filter_bank_regressor(names=freq_bands.keys(),
method='riemann')
fb_model.fit(X_df, y)
引用
如果您使用此代码,请引用
D. Sabbagh, P. Ablin, G. Varoquaux, A. Gramfort, 和 D.A. Engemann. 基于MEG/EEG的预测回归建模:从源功率到信号和认知状态. NeuroImage, 第116893页, 2020. ISSN 1053-8119. https://www.sciencedirect.com/science/article/pii/S1053811920303797
项目详情
coffeine-0.1.tar.gz的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | d2db48ecbfe255ebdc527ac7dde75efa6ee00d1dcf42dc5e4d35b0bf15948b77 |
|
MD5 | a79aef73be48225dfa5c82be0592447d |
|
BLAKE2b-256 | 0e9b0f9d36e95b23b58a06a2142cf29e60925658a53b4063706f7863da3c0e17 |