跳转到主要内容

MNE-HFO:使用MNE-Python、MNE-BIDS和scikit-learn在iEEG数据上促进高频振荡事件的估计/检测。

项目描述

Codecov .github/workflows/main.yml CircleCI License Maintainability PEP8 PyPI - Python Version Documentation Status PyPI Download count

MNE-HFO

MNE-HFO是一个Python包,使用MNE-Python的帮助,在BIDS兼容的数据集中计算存储在iEEG数据中的高频振荡的估计。

注意:目前处于ALPHA阶段,我们正在寻找贡献者。如果您想贡献,请通过问题标签页联系。

癫痫病中的高频振荡

一些值得阅读的注释。关于HFOs的初始论文(Staba等人)实际上只在海马体上观察到HFOs。此外,所引用的论文在开发其算法之前都选择了数据(即选择有HFOs的通道)。

还注意到,希尔伯特检测器被用来显示正常脑功能中存在HFOs,可能不与致痫区相关。

为什么?

目前,HFO检测和算法在Matlab文件中是分段的,这些文件有时不是开源的,或者可能难以使用。此外,HFO算法的验证依赖于以下三个方面:i) 分享算法 ii) 以可读的格式与他人共享结果,以及 iii) 在相同的数据库上比较算法。

MNE-HFO将BIDS、MNE-Python和iEEG HFO事件检测联系起来,旨在使HFO检测更加透明、更加稳健,并便于与同事和合作者共享数据和代码。

安装

可以通过Python虚拟环境使用pipenv进行安装。该软件包托管在pypi上,可以通过pip或pipenv安装。有关安装说明的详细信息,请参阅CONTRIBUTING.md文档。

pip install mne-hfo

pipenv install mne-hfo

注意:该安装已在MacOSX和Ubuntu上进行测试,但可能也适用于Windows。

文档和用法

文档可以在以下链接中找到

注意:功能已在MacOSX和Ubuntu上进行测试。

基本工作示例

以下列出了一个基本工作示例,假设已经加载了一个mne-Python Raw对象。

from mne_hfo import RMSDetector
detector = RMSDetector()

# assume user has loaded in raw iEEG data using mne-python
detector.fit(raw)

# get the HFO events as an *events.tsv style dataframe
hfo_event_df = detector.hfo_event_df

# get the HFO events as an *events.tsv style dataframe
hfo_annot_df = detector.hfo_df

所有输出到*events.tsv BIDS合规文件的格式如下

开始时间 持续时间 样本 试验类型
1 3 1000 hfo_A2-A1

这意味着在1秒处检测到一个HFO,使用通道A2-A1的双极参考,持续3秒。开始样本出现在第1000个样本(因此sfreq为1000 Hz)。如果使用单极参考,则trial_type可能是hfo_A2,表示在通道A2检测到一个HFO。

或者,可以将数据以衍生Annotations DataFrame的形式输出,这是推荐的方式。按照BIDS扩展建议21输出数据,则会产生一个*annotations.tsv文件。

开始时间 持续时间 标签 通道
1 3 hfo A2-A1

相应的*annotations.json文件。

{
    'IntendedFor': sub-01/ses-01/eeg/sub-01_ses-01_task-01_eeg.<ext>,
    'Description': 'Automatic annotations of HFO events using mne-hfo.',
}

优化超参数

在所有MNE-HFO HFO检测器中,我们假设存在由提出算法指定的超参数。这些超参数可以使用scikit-learn API的GridSearchCV自动调整。

from sklearn.metrics import make_scorer
from sklearn.model_selection import GridSearchCV
from mne_hfo.score import accuracy
from mne_hfo.sklearn import make_Xy_sklearn, DisabledCV

# define hyperparameter grid to search over
parameters = {'threshold': [1, 2, 3], 'win_size': [50, 100, 250]}

# define HFO detector
detector = LineLengthDetector()

# define a scoring function 
scorer = make_scorer(accuracy)

# we don't use cross-validation since the
# HFO algorithm is deterministic
cv = DisabledCV()

# instantiate the GridSearch object
gs = GridSearchCV(detector, param_grid=parameters, scoring=scorer,
                  cv=cv, refit=False, verbose=True)

# load in raw data
# raw = <load_in_raw_data>

# load in HFO annotations
# annot_df = <load_in_annotations>

# make sklearn compatible
raw_df, y = make_Xy_sklearn(raw, annot_df)

# run hyperparameter tuning based on accuracy score
gs.fit(raw_df, y, groups=None)

# show the results
print(gs.cv_results_["mean_test_score"])

在上面的示例中,要加载原始数据,可以使用mne-bids,要加载注释DataFrame,可以查看我们的API以了解不同的加载方式。

引用

为了测试和演示目的,我们使用了[1]中的数据集。如果您使用演示/测试数据集,请引用该论文。如果您在研究中使用了mne-hfo本身,请引用该论文(待定)。

Adam Li. (2021, February 1). MNE-HFO: An open-source Python implementation of HFO detection algorithms (Version 0.0.1). Zenodo. http://doi.org/10.5281/zenodo.4485036

历史和开发状态

初始代码是从以下地址改编和提取的:https://gitlab.com/icrc-bme/epycom,以将其转换为与mne-python一起工作的sklearn兼容API。还增加了额外的算法和功能。

参考文献

[1] Fedele T, Burnos S, Boran E, Krayenbühl N, Hilfiker P, Grunwald T, Sarnthein J. Resection of high frequency oscillations predicts seizure outcome in the individual patient. Scientific Reports. 2017;7(1):13836. https://www.nature.com/articles/s41598-017-13064-1 doi:10.1038/s41598-017-13064-1

项目详情


下载文件

下载适合您平台文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分发

mne-hfo-0.2.tar.gz (1.9 MB 查看哈希值)

上传时间

构建分发

mne_hfo-0.2-py3-none-any.whl (52.7 kB 查看哈希值)

上传时间 Python 3

由以下支持

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