脳画像データ構造(BIDS) は何をしますか?
概要
脳画像データ構造(BIDS)は、神経科学および生体医工学の研究データセットを整理・記述するためのコミュニティ標準です。一貫したファイル命名規則、ディレクトリ階層、メタデータスキーマを定義しており、データセットを人間とソフトウェアツールの両方に即座に理解可能にします。BIDSはBIDS仕様(現在v1.11.x)によって管理され、BIDS-Standard GitHub組織を通じてコミュニティによって保守されています。
BIDSはMRIを起源としますが、神経画像をはるかに超えて成長しています。現在の仕様は、画像、電気生理学、行動データにわたる11のモダリティをカバーしています:
- 画像:MRI(構造、機能、拡散、フィールドマップ、灌流/ASL)、PET、顕微鏡
- 電気生理学:EEG、MEG、iEEG(頭蓋内脳波)、EMG
- その他:NIRS(近赤外分光法)、モーションキャプチャ、行動データ(画像なし)、MRスペクトロスコピー
現在進行中のBEPはBIDSをさらに拡張しています——特にBEP032(微小電極電気生理学)はNeuropixelsプローブを含む細胞外記録のサポートを追加し、動物神経科学研究で一般的な方法論にBIDSをもたらします(neuropixels-analysisスキルも参照)。
主要データリポジトリ(OpenNeuro、DANDI)、主要ジャーナル(NeuroImage、Human Brain Mapping、Scientific Data)、および資金提供機関(NIH、ERC)によって採用または強く推奨されています。
BIDSのPythonエコシステムは、BIDSデータセットのクエリとインデックス作成のためのPyBIDS(pybids)と、コンプライアンスチェックのためのbids-validator(Denoベース、PyPIパッケージbids-validator-denoとして利用可能、またはDenoから直接利用)を中心としています。DICOMからの変換は通常、HeuDiConv、dcm2bids、またはBIDScoinを使用して行われます。
このスキルを使用するタイミング
以下の場合にこのスキルを適用してください:
- 生神経科学データ(画像、電気生理学、行動データ)をBIDS準拠のディレクトリ構造に整理する場合
- 既存のBIDSデータセットをクエリし、被験者、セッション、タスク、ラン、モダリティで特定のファイルを検索する場合
- 共有または提出前にBIDS仕様に対してデータセットを検証する場合
- スキャナからのDICOMデータをBIDS形式に変換する場合
- JSONサイドカーメタデータファイルを作成または編集する場合
- BIDS準拠の派生物(前処理データ、解析出力)を作成する場合
- 新しいデータセットの
dataset_description.jsonを設定する場合 - BIDSエンティティ(被験者、セッション、タスク、取得、ランなど)を扱う場合
.bidsignoreを設定して検証からファイルを除外する場合- OpenNeuro、DANDI、またはその他のBIDS対応リポジトリにアップロードするデータを準備する場合
インストール
# コアBIDSクエリライブラリ
uv pip install pybids
# BIDSバリデータ(Denoベース、PyPIラッパー経由でインストール)
uv pip install bids-validator-deno
# 代替:Denoから直接インストール
# deno install -g -A npm:bids-validator
# DICOM→BIDS変換ツール(必要に応じてインストール)
uv pip install heudiconv # HeuDiConv - ヒューリスティックベースのDICOM変換
uv pip install dcm2bids # dcm2bids - 設定ファイルベースの変換
# BIDScoin: uv pip install bidscoin
# 便利な補助ツール
uv pip install nibabel # NIfTI/その他神経画像ファイルI/O
uv pip install pydicom # DICOMファイル読み取り(変換ツールで使用)
コアワークフロー
12のワークフロー領域と実コードは、 references/core_workflows.mdに文書化されています:
- BIDSディレクトリ構造 — 必須レイアウトと各モダリティの配置場所。
dataset_description.json— 必須フィールドとその生成方法。- PyBIDSによるクエリ —
BIDSLayout、エンティティフィルター、自動継承を含むサイドカーメタデータ、エンティティからのパス構築。 - 検証 — PyPIラッパー経由の
bids-validator(推奨)、Denoから直接、レガシーNodeバリデータ、.bidsignoreを使用したファイル除外。 - エンティティとファイル命名 — エンティティの順序と命名文法。
- DICOMからBIDSへの変換 — HeuDiConv(ターンキーReproInパス、偵察→ヒューリスティック→変換の順序を含む)およびdcm2bids(設定ファイルベース)。
- メタデータサイドカー — モダリティごとの必須および推奨JSONフィールド。
- イベントファイル — タスクfMRIのイベントタイミングと列の慣例。
- 参加者ファイル —
participants.tsvとそのデータ辞書。 - 派生物 — 派生物レイアウトとその
dataset_description.json。 - 高度なPyBIDS — インデックスキャッシュ、派生物の包含、交絡回帰変数、DataFrame出力。
- BIDS-Apps — 標準呼び出しパターン、fMRIPrep、MRIQC、QSIPrep。
早期に頻繁に検証してください:PyBIDSはデータセットのインデックス作成時に構造を検証するため、インデックス作成の失敗は通常、コードのバグではなく命名またはメタデータの問題を示します。
参考資料
このスキルには詳細なリファレンス文書が含まれています:
- bids_schema.json:機械可読なBIDSスキーマ(https://bids-specification.readthedocs.io/en/stable/schema.json から)。これはエンティティ定義、順序付けルール、ファイル名テンプレート、データタイプごとの許可されたサフィックス、メタデータフィールド要件の情報源です。BEP固有のスキーマはhttps://github.com/bids-standard/bids-schema/tree/main/BEPsにあります。
- beps.yml:すべてのBIDS拡張提案の現在のリスト(タイトル、リーダー、ステータス、リンク付き)(https://github.com/bids-standard/bids-website/blob/main/data/beps/beps.yml から)
- bids_specification.md:エンティティテーブル、データタイプリファレンス、ディレクトリ構造ルール、テンプレートスペース、仕様変更履歴の人間可読な要約
- metadata_fields.md:すべてのBIDSモダリティ(anat、func、dwi、fmap、eeg、meg、petなど)の必須および推奨JSONサイドカーフィールド
- conversion_tools.md:HeuDiConv、dcm2bids、BIDScoinの詳細なワークフロー(ヒューリスティック/設定例とトラブルシューティングを含む)
スキーマとBEPの更新方法:python scripts/update_schema.py
一般的な問題と解決策
1. バリデータが「BIDSデータセットではありません」と報告する
原因:ルートにdataset_description.jsonがありません。
修正:最低限{"Name": "...", "BIDSVersion": "1.10.0"}を含むファイルを作成します。
2. 被験者の不整合警告
原因:すべての被験者が同じファイルセットを持っているわけではありません(セッション、ランなどが欠落)。
修正:これは警告でありエラーではありません。意図的な場合は--ignoreSubjectConsistencyを使用します。欠落データはparticipants.tsvまたはscans.tsvに文書化します。
3. SliceTimingの欠落
原因:dcm2niixがDICOMヘッダーからスライスタイミングを抽出できませんでした。
修正:スキャンプロトコルからスライス順序を特定し、JSONサイドカーに手動で追加します。一般的なパターン:昇順、降順、インターレース(奇数ファーストまたは偶数ファースト)。
4. 位相エンコード方向の混乱
原因:軸ラベル(i/j/k vs x/y/z vs LR/AP/SI)が混乱します。
修正:BIDSでは、NIfTI画像軸を使用します:i=最初の軸、j=2番目、k=3番目。-は負の方向を意味します。標準的な軸方向取得では、jは通常前後方向です。取得プロトコルで確認します。
5. 大規模データセットでPyBIDSが遅い
原因:すべてのBIDSLayout()呼び出しで完全なファイルシステムインデックスを作成します。
修正:database_pathを使用してインデックスをSQLiteファイルにキャッシュします:
layout = BIDSLayout("/data", database_path="/data/.pybids_cache.db")
6. PyBIDSが派生物を見つけられない
原因:派生物ディレクトリに独自のdataset_description.jsonがありません。
修正:すべての派生物ディレクトリには"DatasetType": "derivative"を含むdataset_description.jsonが必要です。
7. イベントファイルのタイミングがずれている
原因:onset時間が誤った基準(例:トリガー時間 vs 最初のボリューム)を基準にしています。
修正:オンセットは、そのランの最初のボリュームを基準とした秒単位である必要があります。ダミースキャンが破棄された場合はそれを考慮します。
8. TSVファイルが検証に失敗する
原因:エンコーディングまたは区切り文字の問題(スペースとタブの混在、BOM文字、Windows改行コード)。
修正:タブ区切り値、UTF-8エンコーディング、Unix改行コード(\n)を確保します。欠落値にはn/aを使用します(NA、NaN、空欄は不可)。
ベストプラクティス
-
早期に頻繁に検証する - 変換または変更のたびにBIDSバリデータを実行します。問題が大きくなる前に修正します。
-
メタデータ継承を使用する - 共有メタデータ(例:
TaskName、スキャナパラメータ)は、各被験者のディレクトリに複製するのではなく、最上位のサイドカーファイルに配置します。 -
ソースデータを保持する - 元のDICOM(またはその他生データ)を
sourcedata/の下に保存し、変換を再現可能にします。sourcedata/を.bidsignoreに追加します。 -
最初から一貫した命名を使用する - データ収集前にBIDS命名スキームを定義します。スキャンプロトコルにはReproIn命名規則を使用して自動変換を可能にします。
-
データセットを文書化する - 研究デザイン、取得パラメータ、既知の問題、BIDSからの逸脱を説明する詳細な
READMEを作成します。 -
ランごとのメタデータにはscans.tsvを使用する - 実行ごとの取得時間と品質メモを記録します:
filename acq_time quality func/sub-01_task-rest_bold.nii.gz 2025-01-15T10:30:00 good -
データセットをバージョン管理する -
CHANGESを使用してデータセットの変更を文書化します。大規模データセットの完全なバージョン管理にはDataLadを検討します。 -
解剖画像を匿名化する - 共有前にT1w/T2w画像から顔の特徴を削除します(例:
pydeface、mri_deface、afni_refacerを使用)。匿名化バージョンをプライマリデータとして保存するか、_defacemaskファイルを使用します。 -
派生物にBIDS URIを使用する - 派生物では、BIDS URIを使用してソースファイルを参照します:
bids::sub-01/anat/sub-01_T1w.nii.gz。 -
コミュニティツールを優先する - 可能な場合はカスタムパイプラインではなく、確立されたBIDS-Apps(fMRIPrep、MRIQC、QSIPrep)を使用します。これらはBIDSの入出力を正しく処理し、BIDS準拠の派生物を生成します。
-
bids-examplesを研究する - bids-examplesリポジトリは、さまざまなモダリティとユースケース(MRI、fMRI、DWI、EEG、MEG、iEEG、PET、ASL、遺伝学、派生物など)をカバーする典型的なBIDSデータセットの正規コレクションです。自分のデータセットを構成する際の参考として、BIDSツールのテストデータとして、または特定のモダリティの整理方法を理解するために使用してください。各例はBIDSバリデータに合格しています。
BIDS拡張提案(BEP)
BEPは、BIDSを新しいモダリティ、派生物、メタデータに拡張するためのコミュニティ主導の提案です。完全なリスト(ステータス、リーダー、リンク付き)はreferences/beps.ymlにあります(https://github.com/bids-standard/bids-website/blob/main/data/beps/beps.yml から取得)。BEP固有のスキーマプレビューはhttps://github.com/bids-standard/bids-schema/tree/main/BEPsでレンダリングされます。
現在のBEP(スキーマ更新時点):
| BEP | タイトル | 内容 | ステータス |
|---|---|---|---|
| 004 | 磁化率強調画像 | raw | リーダー募集中 |
| 011 | 構造前処理派生物 | derivative | PRあり (#518) |
| 012 | 機能的プレプロセッシング派生物 | derivative | PRあり (#519)、スキーマ実装済み |
| 014 | アフィン変換と非線形フィールドワープ | derivative | X5形式開発中 |
| 016 | 拡散強調画像派生物 | derivative | PRあり (#2211) |
| 017 | 汎用BIDS結合データスキーマ | derivative | 開発中 |
| 021 | 共通電気生理学派生物 | derivative | 開発中 |
| 023 | PET前処理派生物 | derivative | 開発中 |
| 024 | コンピュータ断層撮影スキャン | raw | コントリビューター募集中 |
| 026 | 微小電極記録 | raw | リーダー募集中 |
| 028 | 来歴 | metadata | PRあり (#2099) |
| 032 | 微小電極電気生理学 | raw | PRあり (#2307)、プレビュー利用可能 — Neuropixelsおよびその他の細胞外プローブをカバー;neuropixels-analysisスキルに関連 |
| 033 | 拡散強調画像の高度化 | raw | コントリビューター募集中 |
| 034 | 計算モデリング | derivative | PRあり (#967) |
| 035 | 非準拠派生物によるメガ分析 | derivative | 開発中 |
| 036 | 表現型データガイドライン | raw | コミュニティレビュー中 |
| 037 | 非侵襲的脳刺激 | raw | 開発中 |
| 039 | 次元削減ベースのネットワーク | raw | 開発中 |
| 040 | 機能的超音波 | raw | 開発中 |
| 041 | 統計モデル派生物 | derivative | フィードバック収集中 |
| 043 | BIDS用語マッピング | metadata | フィードバック収集中 |
| 044 | 刺激 | raw | PRあり (#2022)、コミュニティレビュー中 |
| 045 | 末梢生理学的記録 | raw | PRあり (#2267) |
| 046 | 拡散トラクトグラフィー | derivative | 開発中 |
| 047 | 行動実験のためのオーディオ/ビデオ録画 | raw | PRあり (#2231) |
関連規格:
- BIDS-Stats Models:GLMベースの神経画像解析を定義するためのJSON仕様
- BIDS-Derivatives(BEP003):前処理/解析出力の標準(部分的に仕様にマージ済み)
関連ツールエコシステム
| ツール | 目的 |
|---|---|
| fMRIPrep | fMRI前処理(BIDS派生物を生成) |
| MRIQC | MRI品質管理(BIDS派生物を生成) |
| QSIPrep | 拡散MRI前処理 |
| TemplateFlow | BIDSライクな命名規則の神経画像テンプレートとアトラス |
| Fitlins | BIDS Stats Models実装 |
| DataLad | 大規模データセットのバージョン管理、BIDSと統合 |
| OpenNeuro | 無料BIDSデータセットリポジトリ |
| DANDI | 神経生理学データアーカイブ(一部モダリティでBIDS使用) |
| HeuDiConv | PythonヒューリスティックファイルによるDICOM→BIDS変換 |
| dcm2bids | JSON設定によるDICOM→BIDS変換 |
| BIDScoin | GUIとYAML設定によるDICOM→BIDS変換 |
| nwb2bids | NWB(Neurodata Without Borders)ファイルをBIDSに変換 |
| CuBIDS | BIDSデータセットのキュレーションと調和 |
| bids2table | BIDSデータセットの効率的な表形式インデックス |
| bids-examples | すべてのモダリティの典型的なBIDSデータセットの正規コレクション |
ドキュメント
- BIDS仕様:https://bids-specification.readthedocs.io/en/stable/
- BIDSウェブサイト:https://bids.neuroimaging.io/
- PyBIDSドキュメント:https://bids-standard.github.io/pybids/
- BIDSバリデータ:https://github.com/bids-standard/bids-validator
- HeuDiConvドキュメント:https://heudiconv.readthedocs.io/
- dcm2bidsドキュメント:https://dcm2bids.readthedocs.io/
- BIDScoinドキュメント:https://bidscoin.readthedocs.io/
- BIDS拡張提案:https://bids.neuroimaging.io/beps/
- bids-examplesリポジトリ:https://github.com/bids-standard/bids-examples