跳转到主要内容

Python中的M/EEG功率回归流水线

项目描述

预测M/EEG流水线的协方差数据框

Build

摘要

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

滤波器组管道(跨越多个频段)可以这样考虑

meeg_pipelines

预处理后,协方差矩阵可以投影以减轻场扩散并处理秩亏信号。随后,进行矢量化以从方差、协方差或两者中提取列特征。黎曼嵌入在减轻场扩散和在一步中提供矢量化方面是特殊的。它可以与投影步骤中的降维结合来处理秩亏。最后,应用统计学习算法。

表示、投影和矢量化步骤分别针对每个频段进行。

安装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 (16.4 kB 查看散列)

上传

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面