MNE-HFO:使用MNE-Python、MNE-BIDS和scikit-learn在iEEG数据上促进高频振荡事件的估计/检测。
项目描述
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
项目详情
下载文件
下载适合您平台文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。