资讯动态

fNIRS公开数据集实用指南:格式、处理与避坑要点

发布时间:2026/9/15 18:44:16 来源:尧图企业网站定制
做fNIRS研究这两年我有个很深的感触想找一套靠谱的公开数据集难度一点也不比去实验室重新采数据低。fNIRS功能性近红外光谱在国内实验室的普及度涨得很快但它的公开数据生态相比fMRI和EEG要碎片化得多——没有统一的存储库格式五花八门很多论文号称数据可获取点开却只有一个失效的GitHub链接。这篇文章把我这几年调研、下载、处理fNIRS公开数据集的完整路径整理出来从BCI方向的benchmark数据到临床向的ADHD、抑郁症数据从SNIRF格式规范到下载时容易忽略的元数据陷阱一次性讲清楚。无论你是正在找数据做课题的研究生、还是打算把fNIRS引入产品做预研的工程师这份清单都能帮你省下好几个星期。1. 为什么fNIRS公开数据这么难找碎片化的生态现状fNIRS的基本原理可以粗浅地理解成在头皮上用手电筒照组织看反射回来的光携带了多少血氧信息。近红外光穿过头皮和颅骨后一部分被组织中含氧血红蛋白HbO和脱氧血红蛋白HbR吸收通过测量衰减变化可以反推皮层局部血流动力学响应从而间接衡量神经活动。好处是设备便携、耐运动干扰、成本比fMRI低得多坏处是信噪比天然低、空间分辨率有限、信号易受头皮血流和头动污染。这个技术特性决定了它的数据共享生态也和fMRI、EEG走的是完全不同的路。1.1 和EEG/fMRI对比fNIRS缺了什么fMRI有HCP、ABCD、UK Biobank这类巨型共享项目EEG也有TUH EEG Corpus、BNCI Horizon 2020、OpenMIIR这些被反复引用的benchmark库领域内的人一提名字就能对上号。但fNIRS呢到目前为止没有一个fNIRS版HCP级别的中心化存储库。大部分数据散落在四个地方论文的补充材料、OSF项目页面、个人/实验室的GitHub仓库以及厂商官网的示例数据区。这个局面带来一个很实际的问题你找到的数据往往不是一个数据集而是一堆格式各异的文件夹。同一个研究团队发布的两批数据可能一批用Homer2的.nirs格式另一批用MATLAB的.mat格式事件标记的时间戳还可能是相对时间而非绝对时间。我在前期调研时经常遇到一个trial看了半天README才明白任务时序的情况非常消磨耐心。但碎片化不等于没有好东西。fNIRS的公开数据集虽然规模小质量却普遍不错因为发布者通常是做BCI或临床研究的小团队样本量不大但任务设计、行为数据记录都很完整恰恰适合做精细的算法验证和机制研究。1.2 数据共享正在变好的三个信号让我觉得这个领域在往好的方向走的是下面这三件事第一SNIRF格式逐渐成为共识。SNIRFShared Near-Infrared Spectroscopy Format是一个基于HDF5的开放标准用来统一存储fNIRS原始光强、光密度、浓度变化、事件标记和探测器三维坐标。现在Homer3、MNE-NIRS、AtlasViewer这些主流工具都已经原生支持意味着你只要把数据转成SNIRF所有生态里的工具都能直接读。第二越来越多论文开始认真写Data Availability声明并给出带DOI的存储链接。以前是有需要请联系作者现在很多期刊强制要求数据必须可访问这是个实打实的进步。第三BCI方向的fNIRS数据开始形成事实benchmark。个别数据集被几十篇论文反复使用大家评估模型时有了可对比的基线这反过来又促使更多团队愿意把自己的数据公开出来。基于这个现状下面这份清单我按研究方向来拆而不是简单的数据集名堆砌。因为同一个数据集在BCI算法验证和在临床群体差异研究里的使用逻辑差别非常大。2. 我实际用过/调研过的公开数据集清单为了让你快速定位先放一张总表后面详细展开。整理口径以我自己的实际使用经历和圈内口碑为主具体参数以数据集发布页面的README为准。数据集/来源任务类型典型设备/通道主要用途获取渠道Shin et al. 运动想象/心算组合任务左手/右手运动想象、心算、静息基线连续波fNIRS覆盖运动皮层与前额叶BCI分类、特征工程、深度学习benchmarkGitHub公开仓库NIRx官方示例数据手指敲击、静息态等NIRScout系列多通道工具链验证、格式熟悉厂商官网OSF检索到的情绪诱发数据集视频/图片情绪诱发前额叶通道为主情感计算、前额叶偏侧化分析OSF搜索Kaggle fNIRS任务分类数据运动想象/认知负荷分类CSV格式通道数不等快速原型、教学演示Kaggle平台IEEE DataPort BCI相关fNIRS数据运动想象、混合BCI视项目而定算法竞赛、模型评估IEEE DataPort临床向ADHD/抑郁症数据集静息态或言语流畅任务几十通道覆盖前额叶及颞叶临床识别、群体差异研究论文补充材料/OSF需申请2.1 BCI任务向运动想象、心算与混合脑机接口做BCI的人对Shin这个名字应该不陌生。Shin等人公开的fNIRS运动想象/心算组合任务数据算是我见过被引用次数最多的fNIRS公开数据集之一。它的任务结构设计得比较标准每个trial包含提示阶段、任务阶段和休息阶段任务阶段通常是10秒上下被试需要完成左手运动想象、右手运动想象或者心算。通道覆盖运动皮层和前额叶正好能同时捕获运动想象和认知负荷调制出来的血流响应。这个数据集最大的优点是标签干净。事件标记和trial边界都在文件里研究者在跑分类模型时不需要自己去猜任务时序。很多fNIRS-BCI论文用它做benchmark所以你看文献时经常会看到在Shin数据上准确率到达多少的说法。对于想发论文的人来说用公开数据集跑实验的最大好处就是可复现——审稿人自己也能下载复现门槛低很多。Kaggle上的fNIRS数据则是另一类存在。它们大多由论文作者或爱好者转成CSV方便直接喂给机器学习框架。坏处是转格式的过程中经常丢失原始光强只留下HbO/HbR通道甚至已经是特征提取后的表格式数据后期想换预处理参数就没得玩了。所以我的建议是Kaggle数据适合做快速原型验证不适合做严肃的方法学实验。IEEE DataPort上也有些fNIRS相关BCI竞赛数据有些是EEG-fNIRS混合采集的。如果你对多模态融合感兴趣这个方向的数据更稀缺也更值钱因为能同时拿到两种模态下同一批被试的脑活动可以研究模态间的互补信息。2.2 情绪与认知负荷向自然刺激与可控范式的取舍情绪诱发类的fNIRS数据这几年明显变多了。大体上分两类一类用图片比如国际情绪图片系统IAPS做块设计另一类用视频片段或音乐做连续诱发。前者的优势是trial边界明确适合做传统的事件相关分析后者的生态效度更高但分析起来麻烦得多因为被试的情绪状态是连续变化的往往会用到滑动窗口分类或者回归模型。这类数据多数能在OSF上搜到关键词可以组合着搜fNIRS emotion dataset、fNIRS affective、prefrontal fNIRS video等。通道设置通常集中在前额叶因为情绪加工和前额叶偏侧化的关系被研究得最多。如果你要做情感计算又不想自己花钱采数据这类数据是最容易上手的。认知负荷向的数据同样是热点典型范式是N-back。N-back任务能稳定诱发前额叶的负荷效应很多研究想用它做飞行员、驾驶员的疲劳监测或人因工程评估。公开的N-back fNIRS数据比情绪数据少一点但在OSF和期刊补充材料里能找到搜索时加上N-back fNIRS就行。2.3 临床与人群向ADHD、抑郁症与老年认知数据临床向的fNIRS公开数据是稀缺资源因为涉及患者知情同意和伦理审批能做公开分享的项目不多。但正因如此一旦有团队愿意公开质量往往很高。ADHD方向有过基于多通道fNIRS的静息态公开数据被试分ADHD组和典型发育对照组采样位置一般覆盖前额叶和颞叶。这类数据对分类任务非常有价值因为临床样本的分类器如果只在健康人上训练泛化到真实场景基本是空中楼阁。抑郁症方向同样有公开数据集有的基于言语流畅性任务VFT来诱发前额叶激活因为抑郁症患者在做VFT时前额叶血氧响应往往减弱这是被反复验证过的现象。老年认知方向则常见年轻组vs老年组的对照设计用于研究认知老化过程中前额叶代偿效应。需要提醒的是临床数据通常不会开放匿名下载而是要求你先填写数据使用申请说明研究目的、分析计划、伦理审批情况签了数据使用协议才给数据。流程有时候长达几周所以如果课题依赖这些数据务必预留申请时间别等实验做完了才想起来要数据。3. 找到数据集之后先别急着下载格式与元数据检查很多人下载完数据解压后就直接丢给代码跑结果跑到一半发现没有探测器坐标或者事件标记全是相对的整个分析管线卡死。这个体验我太熟悉了所以强烈建议你把格式和元数据检查当成一个正式步骤来做。3.1 SNIRF正在成为事实标准先说格式。fNIRS早期数据格式基本都是各厂商私有格式NIRx的NIRStar导出一堆.txt/.hdr日立ETG系列导出.csvArtinis导出的同样是专有结构。这些格式不是不能用而是可移植性差。你换一个处理工具就得写一个解析脚本格式文档还不一定完整。SNIRF的出现就是为了终结这种混乱。它是一个基于HDF5的开放标准把原始光强、通道定义、事件标记、被试信息、设备参数全都塞进一个结构化的文件里。Homer3和MNE-NIRS是目前支持得最彻底的两个工具基本做到读进SNIRF就能直接跑预处理。OpenfNIRS是另一个值得关注的项目它不只是定义格式还提供了配套的数据共享平台和工具链。如果你打算发布自己的数据用SNIRF/OpenfNIRS的标准来整理发布出去被其他人复用的概率会高得多。3.2 下载前要核对这8项元数据不管你拿到的是什么格式我建议下载前就准备好下面这个核对清单缺了哪项会带来什么后果也一并写了——元数据项为什么重要缺失的后果采样率决定频域分析的上限采样率太低无法做心率、呼吸频段分析波长组合常见690/830nm或780/850nm不同波长对HbO/HbR分离系数不同通道数量与排布能否做空间配准和网络分析无法转MNI坐标图论分析基本做不了原始光强 vs 已转换OD/HbO决定能否换预处理参数只有HbO就没办法重做运动校正和滤波事件标记与任务时序决定e poching和GLM是否可靠标记缺失只能放弃试次级分析被试人口学信息组间分析的基础年龄性别利手不清楚结论很难解释生理同步记录心电、呼吸、脉搏可用于伪影回归无生理记录运动伪影排查更困难许可证/引用要求决定能否商用、发论文怎么署名用了禁止商用的数据做产品会被卡住这8项里最容易栽跟头的是原始光强还是HbO/HbR。很多数据集直接发布的是浓度变化数据表面上看方便实际上把预处理选择权剥夺了。运动伪影校正、带通滤波这些步骤必须在OD或原始光强层面做如果数据只给了HbO/HbR你只能拿现成的结果继续分析分析自由度大打折扣。4. 不同研究方向该怎么选数据明确了自己的研究问题后选数据集的标准完全不同。这里我把常见方向分成三类分别说明选择优先级。4.1 算法/深度学习向标签干净优先如果你主要做分类算法、深度学习模型或者要验证一个信号处理方法最看重的应该是标签质量和样本总量。运动想象、心算、情绪分类这类任务标签明确适合做监督学习。具体选择上优先考虑事件标记清晰、trial数量多的任务型数据。比如Shin系数据集的trial数量通常在几十到上百个虽然单个被试样本不算大但做leave-one-subject-out交叉验证时依然能给出有意义的结果。Kaggle上那些已经特征化的数据适合课程作业或快速原型但发表论文时说服力会弱一些。有一类问题特别容易被忽略类别不平衡。公开数据里如果某一类任务明显偏少分类器很容易学成永远猜多数类。下载后先统计每个条件下的trial数量如果发现不平衡再考虑采样策略。4.2 脑连接与群体差异向样本量和蒙太奇信息优先做脑连接或者群体差异研究的人选数据的逻辑和做分类完全不同。这类研究的核心载体是通道间的功能连接所以通道覆盖范围和坐标信息是第一位的。有些公开数据集为了让设备轻便只在运动皮层或前额叶布了几通道。这种数据做局部网络分析没问题但想脑区全脑尺度结论就基本没用。理想情况下你需要的是覆盖多个脑叶、并且提供MNI坐标或标准头模模板通道位置的数据这样才能把每个被试的通道映射到公共空间做群组分析。临床向研究还需要特别关注对照组设置。ADHD数据如果只有患者组没有典型发育对照组你发了论文也只能说是描述性研究做不了组间统计。所以下载前看清被试构成别看到ADHD fNIRS就激动。4.3 方法学入门向从多模态和小任务开始如果你之前只做过EEG想学fNIRS的数据处理建议从一个数据量适中、任务结构经典的数据集入手最好还是EEG-fNIRS同步采集的版本。这样你可以一边跑fNIRS预处理一边用同步EEG结果做交叉验证对这个模态的信号特性会有更直观的感受。NIRx官方示例数据就是一个不错的起点数据量小、README清晰、格式官方配合Homer3的tutorial可以快速跑通从原始数据到HbO/HbR的完整流程。跑通之后再上Shin那类大一点的数据集处理复杂任务时就不容易懵。5. 处理公开fNIRS数据的实际操作流程很多新手拿到数据后的第一反应是直接算平均激活图这是不好的习惯。fNIRS信号低信噪比是出了名的预处理不做扎实后面所有统计都是在噪声上跳舞。5.1 从原始光强到HbO/HbR的预处理管线我自己常用的管线大概是这样的顺序导入原始数据后先把通道定位probe geometry加载进来没有坐标后面什么都配不准。把原始光强转换成光密度Optic DensityOD这是后续一切计算的基础。做运动伪影校正。这一步特别重要fNIRS对头动极敏感哪怕一个小小的动作都会导致尖峰。常用的算法有样条插值加Savitzky-Golay滤波spline-SG、主成分分析tPCA、移动标准差法MARA具体选哪个要看伪影特征。带通滤波。血流动力学信号本身是低频的一般取0.01-0.1Hz的带通既能保留任务相关的慢波又能滤掉高频噪声和大部分生理振荡。但注意如果后续想做心率变异性或梅耶波分析滤波范围要重新设计。用修正的Beer-Lambert定律把OD转成HbO和HbR浓度变化。之后才进入epoch分割、基线校正、平均或者GLM建模。这个流程每一步都会影响最终结论。比如运动伪影校正用tPCA还是spline-SG处理同一个数据集的结果可能差不少。所以写论文时务必写清楚每一个参数最好把预处理脚本也放到GitHub上既方便审稿人复现也方便自己六个月后回来查。5.2 一个快速上手的Python示例下面是用MNE-NIRS读取SNIRF格式并完成基本预处理的最小示例。建议在jupyter里一步一步跑每一步都看一眼中间结果。import mne from mne_nirs.io import snirf # 读取SNIRF格式数据 raw snirf.read_snirf(sub-01_task_motor.snirf) # 查看基本信息 print(raw.info) print(raw.ch_names) # 提取近红外通道转成光密度 from mne_nirs.channels import get_long_channels raw get_long_channels(raw, min_dist0.01, max_dist0.05) raw mne.preprocessing.nirs.beer_lambert_law(raw) # 绘制HbO/HbR时间序列检查信号质量 raw.plot(n_channels10, duration60, scalingsauto)代码不长但已经覆盖了读取、通道筛选和浓度转换三个关键步骤。实际处理时You还需要在beer_lambert_law之前加上运动伪影校正和滤波MNE-NIRS文档里有对应的函数比如mne.preprocessing.nirs.optical_density和savgol_filter的组合。我想强调最容易被忽略的一步get_long_channels会根据source-detector距离筛选出长距离通道。fNIRS信号里既有皮层信号也有头皮表层血流信号短距离通道一般指的是源探距小于1厘米主要测的是头皮血不做回归的话会污染真正的皮层信号。很多公开数据集的通道设置里其实包含短距通道但不少研究者直接忽略这是信号质量的一个隐形杀手。6. 下载和复用过程中最容易踩的坑这部分我踩过不少逐个说希望能让你少走弯路。6.1 链接失效与公开但不共享公开数据集这个词水分可以很大。有的论文写数据可获取正文里给的却是作者个人主页点进去要么服务器过期了要么留个邮箱让你发邮件要。我甚至遇到过发邮件三个月后才收到回复的情况对方说数据在旧硬盘里还没找出来。应对策略很简单优先选择带DOI、存在OSF/Figshare/Dryad/Zenodo这些长期存储平台上的数据。DOI的好处是版本可追溯即使原始链接失效你也能通过DOI定位。GitHub仓库就算了一个项目改名、迁移都可能导致永久404。6.2 通道坐标缺失或坐标系记录混乱做群体分析时通道坐标是最难补的一个信息。有些数据集发布时只给了通道编号没有对应的头皮坐标也没有提到用了什么头模模板。这种情况下你无法把通道映射到MNI空间做不了皮层投影也做不了不同被试之间的通道对齐。另一个容易踩的坑是坐标系来源混乱。有的数据用的是ICBM152模板坐标有的用Colin27有的用HSPhead surface position结合光学探头的实际位置。如果混着用结果的可比性就说不清楚了。建议你在数据说明文档里仔细找probe geometry、digitized positions、MNI这些关键词确认坐标来源。6.3 运动伪影与生理噪声不预处理直接建模是大忌fNIRS数据有一个特点运动伪影和任务往往相关。比如让被试做运动想象他可能不自觉地头动了一下这个动作直接产生一个尖峰计算平均激活时就能伪装成一个激活效应。所以不做运动校正的结果轻则方差变大重则出现假阳性。静息态数据也有类似陷阱。静息态fNIRS里藏着0.1Hz附近的梅耶波、约1Hz的心率搏动、约0.3Hz的呼吸波动。这些生理振荡的能量远大于神经源性低频信号如果你要考察静息态连接不去回归生理噪声得到的连接矩阵可能反映的主要是血管和呼吸的同步性而不是脑区的功能连接。6.4 许可证与伦理能不能商用、要不要签协议公开数据不一定意味着可以随意商用。OSF或GitHub上的很多数据用的是CC-BY-NC非商业许可拿去训练商业产品会有法律风险。Kaggle上的数据许可证也经常混乱下载页面写了什么许可就看什么别默认它是学术免费的。临床数据则是另一种情况。哪怕数据文件本身是公开的只要你用它发表涉及患者群体的研究结论很多机构依然会要求你先过伦理审查甚至签数据使用协议。我的建议非常简单拿数据之前先把使用范围、用途、预期发表形式写清楚发给数据所有者确认一次留存邮件或协议记录。这件事最多花你一天时间但能避免后面极其麻烦的纠纷。7. 写在最后我对fNIRS数据生态的一点操作体会如果只给一条建议那就是别贪多先把一两个结构干净的数据集完整跑通再考虑扩大数据池。fNIRS公开数据集的单样本量通常不大与其收集十套半懂不懂的数据不如把三套真正搞清楚包括任务设计意图、信号特点和局限性。我自己最常留意的信号是原始光强是否被保留。只要原始光强还在数据就有无限重新处理的可能性——想换滤波参数、想试新的运动校正算法、想重做GLM都可以。数据发布者如果只给了处理完的HbO/HbR等于把这个可能性窗口关掉了。所以我自己发数据时也坚持把原始光强和全部元数据一起打包成SNIRF格式放出去。最后分享一个工作习惯每次拿到一个新数据集我会建一个独立的notes文档记录数据的基本信息、格式检查结果、已知问题和处理决策。这个文档刚开始看起来像流水账但当你同时处理三四个数据集、或者论文返修需要复现结果时它就是你唯一的救命稻草。fNIRS公开数据资源的积累还很年轻但正因为它年轻现在认真把数据生态维护好的人对这个领域的贡献会比想象中大得多。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价