用途
BIDS(Brain Imaging Data Structure,脑影像数据结构)是一套社区标准,用于组织和描述神经科学与生物医学研究数据集。它定义了统一的文件命名约定、目录层级和元数据模式,使数据集能够被人和软件工具直接理解。BIDS 由 BIDS 规范(当前 v1.11.x)治理,并通过 BIDS-Standard GitHub 组织由社区维护。
本技能用于在以下场景中应用 BIDS:将原始神经科学数据(影像、电生理、行为)整理为符合 BIDS 的目录结构;查询已有 BIDS 数据集,按受试者、会话、任务、run 或模态定位文件;在共享或提交前依据 BIDS 规范验证数据集;将扫描仪 DICOM 数据转换为 BIDS 格式;编写或编辑 JSON sidecar 元数据文件;创建符合 BIDS 的衍生产物(预处理数据、分析输出);为新数据集设置 dataset_description.json;处理 BIDS 实体(subject、session、task、acquisition、run 等);配置 .bidsignore 以在验证时排除文件;为上传至 OpenNeuro、DANDI 或其他支持 BIDS 的仓库准备数据。
主要能力
BIDS 最初面向 MRI,现已远超神经影像范畴,规范覆盖 11 种模态,横跨影像、电生理和行为数据:
- 影像:MRI(结构、功能、扩散、fieldmaps、灌注/ASL)、PET、显微镜
- 电生理:EEG、MEG、iEEG(颅内 EEG)、EMG
- 其他:NIRS(近红外光谱)、动作捕捉、行为数据(无影像)、MR 波谱
活跃的 BEP(BIDS 扩展提案)正在进一步扩展 BIDS,尤其是 BEP032(微电极电生理)将增加对细胞外记录(包括 Neuropixels 探针)的支持。
主要数据仓库(OpenNeuro、DANDI)、主要期刊(NeuroImage、Human Brain Mapping、Scientific Data)和资助机构(NIH、ERC)要求或强烈推荐采用 BIDS。
BIDS 的 Python 生态以 PyBIDS(pybids)为核心,用于查询和索引 BIDS 数据集;bids-validator(基于 Deno,可作为 PyPI 包 bids-validator-deno 或直接通过 Deno 使用)用于合规检查。从 DICOM 转换通常使用 HeuDiConv、dcm2bids 或 BIDScoin。
使用方式
安装命令:
# Core BIDS querying library
uv pip install pybids
# BIDS validator (Deno-based, installed via PyPI wrapper)
uv pip install bids-validator-deno
# Alternative: install directly via Deno
# deno install -g -A npm:bids-validator
# DICOM-to-BIDS converters (install as needed)
uv pip install heudiconv # HeuDiConv - heuristic-based DICOM conversion
uv pip install dcm2bids # dcm2bids - config-file-based conversion
# BIDScoin: uv pip install bidscoin
# Useful companions
uv pip install nibabel # NIfTI/other neuroimaging file I/O
uv pip install pydicom # DICOM file reading (used by converters)
核心工作流共十二个领域,每个都配有示例代码,记录在 references/core_workflows.md 中:
- BIDS 目录结构——必需布局及各模态的归属位置。
- dataset_description.json——必需字段及生成方式。
- 使用 PyBIDS 查询——BIDSLayout、实体过滤器、带自动继承的 sidecar 元数据,以及从实体构建路径。
- 验证——通过 PyPI 包装器(推荐)、直接通过 Deno、旧版 Node 验证器运行 bids-validator,以及使用 .bidsignore 排除文件。
- 实体与文件命名——实体顺序与命名语法。
- DICOM 转 BIDS——HeuDiConv(包括开箱即用的 ReproIn 路径,以及 reconnaissance → heuristic → convert 流程)和 dcm2bids(基于配置文件)。
- 元数据 sidecar——各模态必需和推荐的 JSON 字段。
- 事件文件——任务 fMRI 事件时序与列约定。
- 参与者文件——participants.tsv 及其数据字典。
- 衍生产物——derivatives 布局及其 dataset_description.json。
- 高级 PyBIDS——索引缓存,包括衍生产物、混淆回归量和 DataFrame 输出。
- BIDS-Apps——标准调用模式,以及 fMRIPrep、MRIQC 和 QSIPrep。
建议尽早且频繁验证:PyBIDS 在索引数据集时会验证结构,因此索引失败通常意味着命名或元数据问题,而非代码缺陷。
参考材料包括:bids_schema.json(机器可读的 BIDS schema,实体定义、排序规则、文件名模板、各数据类型允许的后缀及元数据字段要求的权威来源)、beps.yml(所有 BIDS 扩展提案的标题、负责人、状态和链接)、bids_specification.md(实体表、数据类型参考、目录结构规则、模板空间和规范变更日志)、metadata_fields.md(每种 BIDS 模态的必需和推荐 JSON sidecar 字段)、conversion_tools.md(HeuDiConv、dcm2bids 和 BIDScoin 的详细工作流,含启发式/配置示例与故障排查)。可用 python scripts/update_schema.py 更新 schema 和 BEP。
适用场景
- 将原始神经科学数据整理为 BIDS 兼容目录结构
- 查询已有 BIDS 数据集以定位特定文件
- 共享或提交前验证数据集
- 将 DICOM 数据转换为 BIDS 格式
- 编写或编辑 JSON sidecar 元数据
- 创建 BIDS 兼容的衍生产物
- 为新数据集设置 dataset_description.json
- 处理 BIDS 实体
- 配置 .bidsignore
- 为上传 OpenNeuro、DANDI 等仓库准备数据
限制与常见问题
常见问题及解决方案:
- 验证器报告 "Not a BIDS dataset":原因是根目录缺少 dataset_description.json。修复:创建该文件,至少包含 {"Name": "...", "BIDSVersion": "1.10.0"}。
- 受试者不一致警告:原因并非所有受试者拥有相同文件集。这是警告而非错误,如属有意可使用 --ignoreSubjectConsistency,并在 participants.tsv 或 scans.tsv 中记录缺失数据。
- 缺少 SliceTiming:原因是 dcm2niix 无法从 DICOM 头提取切片时序。修复:从扫描协议确定切片顺序并手动添加到 JSON sidecar。
- 相位编码方向混淆:BIDS 中使用 NIfTI 图像轴:i=第一轴,j=第二轴,k=第三轴,- 表示负方向。
- PyBIDS 在大数据集上缓慢:使用 database_path 将索引缓存到 SQLite 文件:layout = BIDSLayout("/data", database_path="/data/.pybids_cache.db")。
- PyBIDS 找不到衍生产物:每个 derivatives 目录必须有自己的 dataset_description.json,且 "DatasetType": "derivative"。
- 事件文件时序偏差:onset 必须相对于该 run 采集的第一个 volume,以秒为单位。
- TSV 文件验证失败:确保制表符分隔、UTF-8 编码、Unix 换行(\n),缺失值使用 n/a。
最佳实践:尽早且频繁验证;使用元数据继承;保留 sourcedata 并加入 .bidsignore;从一开始就使用一致命名;撰写详尽 README;使用 scans.tsv 记录 run 级元数据;对数据集进行版本管理;共享前对解剖图像去脸;在衍生产物中使用 BIDS URI 记录来源;优先使用社区工具(fMRIPrep、MRIQC、QSIPrep);研究 bids-examples 仓库。
相关工具生态包括 fMRIPrep、MRIQC、QSIPrep、TemplateFlow、Fitlins、DataLad、OpenNeuro、DANDI、HeuDiConv、dcm2bids、BIDScoin、nwb2bids、CuBIDS、bids2table、bids-examples。
文档:BIDS Specification(https://bids-specification.readthedocs.io/)、BIDS Website(https://bids.neuroimaging.io/)、PyBIDS Documentation(https://bids-standard.github.io/pybids/)、BIDS Validator(https://github.com/bids-standard/bids-validator)、BIDS Starter Kit(https://bids-standard.github.io/bids-starter-kit/)、BIDS Examples(https://github.com/bids-standard/bids-examples)、HeuDiConv Docs(https://heudiconv.readthedocs.io/)。原始 BIDS 论文:Gorgolewski et al. (2016) Scientific Data, doi:10.1038/sdata.2016.44。