bids について
BIDSコミュニティ標準を使って、神経科学・生物医学データセットを整理、検証、検索、変換するスキルです。MRIに加え、電気生理や行動データも扱います。
主な機能
- 01BIDSのディレクトリとファイル名規則
- 02PyBIDSによるデータセット検索
- 03仕様への準拠チェック
- 04メタデータとサイドカーのガイド
- 05DICOMからBIDSへの変換手順
活用シーン
- 01神経科学研究データの構造化
- 02被験者、タスク、モダリティ別のファイル検索
- 03共有前のデータセット検証
- 04スキャナーのDICOMデータをBIDS形式に変換
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ crazymsn/ academic-skills --skill bidsインストール後、Claude Code で/bidsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/beps.ymlbids_specification.mdconversion_tools.mdmetadata_fields.mdscripts/update_schema.py詳細
Brain Imaging Data Structure(BIDS)
概要
Brain Imaging Data Structure(BIDS)は、神経科学および生物医学研究のデータセットを整理し、記述するためのコミュニティ標準です。一貫したファイル命名規則、ディレクトリ階層、メタデータスキーマを定めることで、人間にもソフトウェアツールにもデータセットがすぐに理解できるようにします。BIDS は BIDS Specification(現在は v1.11.x)によって管理され、BIDS-Standard GitHub 組織を通じてコミュニティが維持しています。
BIDS は MRI 向けに始まりましたが、現在では神経画像の枠を大きく超えて発展しています。仕様は現在、画像、電気生理学、行動データにわたる 11 のモダリティをカバーしています。
- 画像:MRI(構造、機能、拡散、フィールドマップ、灌流/ASL)、PET、顕微鏡
- 電気生理学:EEG、MEG、iEEG(頭蓋内 EEG)、EMG
- その他:NIRS(近赤外分光法)、モーションキャプチャ、行動データ(画像なし)、MR 分光法
進行中の BEP により、BIDS はさらに拡張されています。特に BEP032(微小電極電気生理学)では、Neuropixels プローブを含む細胞外記録のサポートが追加され、動物神経科学研究で広く用いられている手法にも BIDS が対応する予定です(neuropixels-analysis スキルも参照してください)。
主要なデータリポジトリ(OpenNeuro、DANDI)、主要な学術誌(NeuroImage、Human Brain Mapping、Scientific Data)、資金提供機関(NIH、ERC)では、BIDS の採用が必須、または強く推奨されています。
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 エンティティ(subject、session、task、acquisition、run など)を扱う
.bidsignoreを設定して、検証対象からファイルを除外する- OpenNeuro、DANDI、その他の BIDS 対応リポジトリへのアップロード用にデータを準備する
インストール
# 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)
主なワークフロー
1. BIDS ディレクトリ構造
最小限の BIDS データセットは、次の構成に従います。
my_dataset/
dataset_description.json # Required: name, BIDSVersion, etc.
participants.tsv # Recommended: subject-level phenotypic data
participants.json # Recommended: column descriptions
README # Recommended: dataset documentation
CHANGES # Recommended: version history
.bidsignore # Optional: patterns to exclude from validation
sub-01/
anat/
sub-01_T1w.nii.gz
sub-01_T1w.json # Sidecar metadata
func/
sub-01_task-rest_bold.nii.gz
sub-01_task-rest_bold.json
sub-01_task-rest_events.tsv # Event timing for task fMRI
sub-01_task-rest_events.json
dwi/
sub-01_dwi.nii.gz
sub-01_dwi.json
sub-01_dwi.bvec
sub-01_dwi.bval
fmap/
sub-01_phasediff.nii.gz
sub-01_phasediff.json
sub-01_magnitude1.nii.gz
perf/
sub-01_asl.nii.gz
sub-01_asl.json
sub-01/
ses-pre/
anat/
sub-01_ses-pre_T1w.nii.gz
func/
sub-01_ses-pre_task-nback_bold.nii.gz
ses-post/
...
要点:
- すべての NIfTI ファイルには、対応する
.jsonサイドカーが必要です - ファイル名にはエンティティが含まれます:
sub-<label>[_ses-<label>][_task-<label>][_acq-<label>][_run-<index>]_<suffix>.<extension> - ファイル名のエンティティの順序は、仕様によって固定されています
- ルートレベルで必須なのは
dataset_description.jsonのみです
2. dataset_description.json の作成
import json
dataset_description = {
"Name": "My Neuroimaging Study",
"BIDSVersion": "1.10.0",
"DatasetType": "raw",
"License": "CC0",
"Authors": ["First Author", "Second Author"],
"Acknowledgements": "Funded by NIH R01-MH123456",
"HowToAcknowledge": "Please cite: Author et al. (2025) Journal Name.",
"Funding": ["NIH R01-MH123456", "NSF BCS-7654321"],
"ReferencesAndLinks": ["https://doi.org/10.xxxx/xxxxx"],
"DatasetDOI": "10.18112/openneuro.ds000001.v1.0.0",
"GeneratedBy": [
{
"Name": "HeuDiConv",
"Version": "1.3.1",
"CodeURL": "https://github.com/nipy/heudiconv"
}
]
}
with open("dataset_description.json", "w") as f:
json.dump(dataset_description, f, indent=4)
派生データの場合は、"DatasetType": "derivative" を設定し、パイプラインを記載した "GeneratedBy" を追加します。
deriv_description = {
"Name": "fMRIPrep - fMRI PREProcessing",
"BIDSVersion": "1.10.0",
"DatasetType": "derivative",
"GeneratedBy": [
{
"Name": "fMRIPrep",
"Version": "24.1.0",
"CodeURL": "https://github.com/nipreps/fmriprep"
}
]
}
3. PyBIDS による BIDS データセットの検索
from bids import BIDSLayout
# Index a BIDS dataset (validates structure on load)
layout = BIDSLayout("/path/to/bids_dataset")
# Basic queries
subjects = layout.get_subjects() # ['01', '02', '03', ...]
sessions = layout.get_sessions() # ['pre', 'post'] or []
tasks = layout.get_tasks() # ['rest', 'nback']
runs = layout.get_runs() # [1, 2] or []
# Find specific files
bold_files = layout.get(
suffix="bold",
extension=".nii.gz",
return_type="filename"
)
# Filter by subject, task, session
nback_sub01 = layout.get(
subject="01",
task="nback",
suffix="bold",
extension=".nii.gz",
return_type="filename"
)
# Get metadata from JSON sidecars (automatic inheritance)
metadata = layout.get_metadata("/path/to/sub-01/func/sub-01_task-rest_bold.nii.gz")
tr = metadata["RepetitionTime"]
# Get all entities for a file
entities = layout.get_entities()
# Build a path from entities using BIDSLayout
bids_file = layout.get(subject="01", suffix="T1w", extension=".nii.gz")[0]
print(bids_file.path)
print(bids_file.get_entities())
要点:
BIDSLayoutは初期化時にデータセット全体のインデックスを作成します。大規模なデータセットでは、インデックスをキャッシュするためにdatabase_pathを使用してください- メタデータの継承:上位階層(ルートや被験者など)にある JSON サイドカーは、下位のファイルで上書きされない限り、すべてのファイルに継承されます
- パスには
return_type="filename"を、BIDSFileオブジェクトにはreturn_type="object"(デフォルト)を使用します
4. BIDS データセットの検証
PyPI 経由で bids-validator を使用(推奨)
PyPI パッケージ bids-validator-deno には、スタンドアロン CLI として Deno ベースのバリデーターが含まれています。
# Install
uv pip install bids-validator-deno
# Validate a dataset
bids-validator /path/to/bids_dataset
# Ignore specific warnings/errors
bids-validator /path/to/bids_dataset --ignoreNiftiHeaders --ignoreSubjectConsistency
Deno から直接 bids-validator を使用
Deno がすでに利用可能な場合は、PyPI を使わずにバリデーターをインストールまたは実行できます。
# Install globally via Deno
deno install -g -A npm:bids-validator
# Or run without installing
deno run -A npm:bids-validator /path/to/bids_dataset
レガシー Node.js バリデーター
旧来の Node.js ベースのバリデーター(npm install -g bids-validator)は非推奨となり、Deno ベースのバージョンが推奨されています。Deno 版は BIDS Specification v1.9+ のリファレンス実装です。
.bidsignore の使用
データセットのルートに .bidsignore を作成し、検証対象から除外するファイルを指定します(gitignore 構文)。
# Exclude sourcedata and extra files
sourcedata/
extra_data/
*.log
*_sbref.nii.gz
**/.DS_Store
5. BIDS エンティティとファイル名
エンティティ、その順序、使用可能なサフィックス、すべてのファイル名規則に関する権威ある機械可読の情報源は、仕様を構造化した YAML/JSON 表現である BIDS Schema です。JSON エクスポートは、このスキルに references/bids_schema.json として同梱されています。スキーマは bids-specification src/schema/ ディレクトリで定義され、https://bids-specification.readthedocs.io/en/stable/schema.json で公開されています。BEP 固有のスキーマプレビューは https://github.com/bids-standard/bids-schema/tree/main/BEPs で確認できます。
上流からスキーマと BEP リストを更新するには、scripts/update_schema.py を実行します(標準ライブラリ以外の依存関係はありません)。
以下の表は便利な概要です。不明な点がある場合は、スキーマを参照してください。
BIDS のファイル名は、順序が決まったキーと値のエンティティの組み合わせで構成されます。
| エンティティ | キー | 例 | 必須となる対象 |
|---|---|---|---|
| 被験者 | sub- | sub-01 | すべてのファイル |
| セッション | ses- | ses-pre | 複数セッションの研究 |
| タスク | task- | task-rest | func(bold、cbv、phase)、eeg、meg |
| 撮像 | acq- | acq-highres | 撮像パラメーターの区別 |
| 造影剤 | ce- | ce-gadolinium | 造影画像 |
| 再構成 | rec- | rec-magnitude | 再構成のバリエーション |
| 方向 | dir- | dir-AP | フィールドマップ、DWI、位相エンコード |
| ラン | run- | run-01 | 同一の撮像が複数ある場合 |
| エコー | echo- | echo-1 | マルチエコーシーケンス |
| パート | part- | part-mag | マグニチュードと位相の分割 |
| 空間 | space- | space-MNI152NLin2009cAsym | テンプレート空間の派生データ |
| 説明 | desc- | desc-preproc | 派生データのみ |
ファイル名のエンティティの順序は仕様で固定されています(bids_schema.json の rules.entities で定義されています)。番号付きの完全な順序表については、references/bids_specification.md を参照してください。よく使われる項目の一部を以下に示します。
sub-<label>[_ses-<label>][_task-<label>][_acq-<label>][_ce-<label>][_rec-<label>][_dir-<label>][_run-<index>][_echo-<index>][_part-<label>][_space-<label>][_desc-<label>]_<suffix>.<extension>
データタイプ別の一般的なサフィックス:
| データタイプ | サフィックス |
|---|---|
| anat | T1w、T2w、FLAIR、T2star、T1map、T2map、defacemask |
| func | bold、cbv、sbref、events、physio、stim |
| dwi | dwi、sbref |
| fmap | phasediff、phase1、phase2、magnitude1、magnitude2、fieldmap、epi |
| perf | asl、m0scan、aslcontext |
| eeg | eeg、channels、electrodes、events |
| meg | meg、channels、coordsystem、events |
| ieeg | ieeg、channels、electrodes、coordsystem、events |
| pet | pet、blood |
6. DICOM から BIDS への変換
HeuDiConv
HeuDiConv は、最も柔軟な DICOM-to-BIDS コンバーターです。完全自動から完全カスタムまでの 3 つの使用モードをサポートし、重複の処理、来歴の追跡、sourcedata のアーカイブを標準で行います。
モード 1:ReproIn(すぐに使える、新しい研究に推奨)
スキャナープロトコル名が ReproIn の命名規則に従っている場合、ヒューリスティックファイルを作成する必要はなく、変換は完全に自動で行われます。
# Turnkey conversion: HeuDiConv maps ReproIn protocol names to BIDS automatically
heudiconv --files dicom/001 -o /path/to/bids -f reproin --bids --minmeta
ReproIn プロトコル名には、BIDS エンティティが直接エンコードされています。
anat-T1w→sub-XX/anat/sub-XX_T1w.nii.gzfunc-bold_task-rest→sub-XX/func/sub-XX_task-rest_bold.nii.gzdwi_dir-AP→sub-XX/dwi/sub-XX_dir-AP_dwi.nii.gzfmap_dir-PA→sub-XX/fmap/sub-XX_dir-PA_epi.nii.gz
セッションはローカライザーで一度設定すると(例:anat-scout_ses-pre)、ReproIn がそのプログラム内のすべてのシーケンスに適用します。被験者 ID は DICOM メタデータから抽出されます。重複した実行には自動的に番号が付与されます。
モード 2:ReproIn にマッピングするカスタムヒューリスティック(既存データ向け)
ReproIn 以外のプロトコル名を持つデータがすでにある場合は、名前を ReproIn の規則にマッピングする簡潔なヒューリスティックを作成できます。これにより、ReproIn のすべての利点(エンティティの自動処理、重複の管理など)を活用できます。HOWTO については、https://github.com/repronim/reproin/issues/18 を参照してください。
モード 3:カスタムヒューリスティック(完全な柔軟性)
複雑なマッピングの場合は、Python のヒューリスティックファイルを作成します。
# Step 1: Reconnaissance — discover DICOM series
heudiconv --files dicom/219/itbs/*/*.dcm -o Nifti/ -f convertall -s 219 -c none
# This creates .heudiconv/219/info/dicominfo.tsv — inspect it to understand
# what was acquired and map series to BIDS names.
# Step 2: Write a heuristic file (see references/conversion_tools.md)
# Step 3: Convert
heudiconv --files dicom/219/itbs/*/*.dcm -s 219 -ss itbs \
-f Nifti/code/heuristic.py -c dcm2niix --bids --minmeta -o Nifti/
ヒューリスティックファイルの完全な例については、references/conversion_tools.md を参照してください。
主なポイント:
- HeuDiConv は、実際の DICOM-to-NIfTI 変換に
dcm2niixを使用します --minmeta:DICOM メタデータが過剰に JSON サイドカーへ出力され、容量超過になるのを防ぐため、このフラグを常に使用してください(fMRIPrep/MRIQC がクラッシュする可能性があります)- 重複の処理:同じプロトコルが複数回実行される場合、自動採番にはテンプレートで
{item:03d}を使用してください。指定しないと、後の実行が前の実行を上書きします .heudiconv/ディレクトリ:出力と同じ場所に作成され、来歴(使用したヒューリスティック、dicominfo.tsv、変換記録)を保存します。再現性のため、データと一緒に保管してくださいsourcedata/:HeuDiConv は再現性のため、元の DICOM をsourcedata/内の.tgzファイルとしてアーカイブしますis_motion_correctedフィルター:スキャナーで生成された MOCO シリーズを除外するには、ヒューリスティックで使用してください(例:if not s.is_motion_corrected)- DICOM 入力の指定には、
--files(明示的なパス)と-d({subject}、{session}プレースホルダーを含むテンプレート)の両方がサポートされています
dcm2bids(設定ファイルベース)
# Step 1: Generate helper output to inspect series
dcm2bids_helper -d /path/to/dicom
# Step 2: Create config file (dcm2bids_config.json)
# Step 3: Convert
dcm2bids -d /path/to/dicom -p 01 -c dcm2bids_config.json -o /path/to/bids_output
詳細な設定例については、references/conversion_tools.md を参照してください。
7. メタデータサイドカー
すべての BIDS データファイルには、取得パラメーターを含む JSON サイドカーが必要です。メタデータフィールドには継承の原則が適用されます。上位ディレクトリにあるサイドカーは、その下にある一致するすべてのファイルに適用されます。
継承の例:
my_dataset/
task-rest_bold.json # Applies to ALL rest BOLD files
sub-01/
func/
sub-01_task-rest_bold.json # Overrides/extends for sub-01 only
モダリティごとの重要なメタデータフィールド:
func(BOLD):
{
"RepetitionTime": 2.0,
"TaskName": "rest",
"PhaseEncodingDirection": "j-",
"TotalReadoutTime": 0.05,
"SliceTiming": [0, 0.5, 1.0, 1.5],
"EffectiveEchoSpacing": 0.00058,
"EchoTime": 0.03
}
anat:
{
"MagneticFieldStrength": 3,
"Manufacturer": "Siemens",
"ManufacturersModelName": "Prisma",
"RepetitionTime": 2.3,
"EchoTime": 0.00293,
"FlipAngle": 8
}
DWI:
{
"PhaseEncodingDirection": "j-",
"TotalReadoutTime": 0.05,
"EchoTime": 0.089,
"RepetitionTime": 3.4,
"MultipartID": "dwi_1"
}
主なポイント:
dcm2niixは DICOM ヘッダーから、サイドカーのフィールドの大部分を自動生成します- BOLD では
RepetitionTimeとTaskNameが必須です SliceTimingは、fMRI 前処理におけるスライスタイミング補正に不可欠です- 歪み補正には、
PhaseEncodingDirectionとTotalReadoutTime(またはEffectiveEchoSpacing)が必要です - フィールドの包括的なリファレンスについては、
references/metadata_fields.mdを参照してください
8. タスク fMRI の events ファイル
タスクベースの fMRI では、_events.tsv ファイルが必要です。
onset duration trial_type response_time
0.0 0.5 face 0.435
2.5 0.5 house 0.367
5.0 0.5 face 0.512
7.5 0.5 scrambled 0.298
必須の列:
onset- 取得開始時点からの相対的な開始時刻(秒)duration- 持続時間(秒)。瞬時イベントにはn/aを使用します
推奨される列:
trial_type- 条件を示すカテゴリラベルresponse_time- 反応時間(秒)- 必要に応じてカスタム列(対応する
.jsonサイドカーに説明を記載)
9. participants ファイル
participant_id age sex group handedness
sub-01 25 M control right
sub-02 30 F patient left
sub-03 28 M control right
participants.json サイドカーには、列の説明を記載します。
{
"age": {
"Description": "Age of the participant at time of scanning",
"Units": "years"
},
"sex": {
"Description": "Biological sex",
"Levels": {
"M": "male",
"F": "female"
}
},
"group": {
"Description": "Experimental group",
"Levels": {
"control": "Healthy control",
"patient": "Patient group"
}
},
"handedness": {
"Description": "Dominant hand",
"Levels": {
"right": "Right-handed",
"left": "Left-handed",
"ambidextrous": "Ambidextrous"
}
}
}
10. BIDS Derivatives
処理済みの出力は derivatives/ ディレクトリに配置します。
my_dataset/
derivatives/
fmriprep-24.1.0/
dataset_description.json # DatasetType: "derivative"
sub-01/
anat/
sub-01_space-MNI152NLin2009cAsym_desc-preproc_T1w.nii.gz
sub-01_space-MNI152NLin2009cAsym_desc-brain_mask.nii.gz
func/
sub-01_task-rest_space-MNI152NLin2009cAsym_desc-preproc_bold.nii.gz
sub-01_task-rest_desc-confounds_timeseries.tsv
mriqc-24.0.0/
dataset_description.json
sub-01/
anat/
sub-01_T1w.html
func/
sub-01_task-rest_bold.html
group_T1w.tsv
group_bold.tsv
派生データの規約:
space-<label>- テンプレート/参照空間(例:MNI152NLin2009cAsym、T1w)desc-<label>- 処理の説明(例:preproc、brain、smoothed)res-<label>- 解像度(例:2mm 等方性の場合は2)- 各パイプラインには
derivatives/の下に専用のディレクトリを設けます GeneratedByを含む独自のdataset_description.jsonが必要です
11. PyBIDS:高度な使い方
from bids import BIDSLayout
from bids.layout import BIDSLayoutIndexer
# Cache the layout index for faster repeated access
layout = BIDSLayout("/path/to/dataset", database_path="/path/to/cache.db")
# Include derivatives
layout = BIDSLayout(
"/path/to/dataset",
derivatives=["/path/to/dataset/derivatives/fmriprep-24.1.0"]
)
# Get derivative files
preproc = layout.get(
subject="01",
task="rest",
desc="preproc",
suffix="bold",
space="MNI152NLin2009cAsym",
extension=".nii.gz",
return_type="filename"
)
# Get confound regressors
confounds = layout.get(
subject="01",
task="rest",
desc="confounds",
suffix="timeseries",
extension=".tsv",
return_type="filename"
)
# Build BIDS path from entities
from bids import BIDSLayout
layout = BIDSLayout("/path/to/dataset")
path = layout.build_path(
{
"subject": "01",
"session": "pre",
"task": "rest",
"suffix": "bold",
"extension": ".nii.gz",
"datatype": "func"
},
validate=True
)
# Get all files for a subject as a DataFrame
import pandas as pd
files_df = layout.to_df()
sub01_df = files_df[files_df["subject"] == "01"]
12. BIDS-Apps
BIDS-Apps は、BIDS データセットを入力として受け取るコンテナ化された解析パイプラインです。
# General BIDS-App invocation pattern
docker run -v /path/to/bids:/data:ro -v /path/to/output:/out \
<bids-app-image> /data /out participant --participant_label 01
# Common BIDS-Apps:
# fMRIPrep - fMRI preprocessing
docker run nipreps/fmriprep /data /out participant \
--participant-label 01 --fs-license-file /license.txt
# MRIQC - MRI quality control
docker run nipreps/mriqc /data /out participant \
--participant-label 01
# QSIPrep - diffusion MRI preprocessing
docker run pennbbl/qsiprep /data /out participant \
--participant-label 01
BIDS-App インターフェースの規約:
bids-app input_dataset output_dir {participant|group} [options]
participantレベル:被験者ごとに実行しますgroupレベル:全被験者を対象に実行します(集約/グループ統計)
参考資料
このスキルには、詳細な参考ドキュメントが含まれています。
- 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 拡張提案の最新リスト。タイトル、リード、ステータス、リンクが記載されています(bids-website より)。
- bids_specification.md:エンティティテーブル、データタイプのリファレンス、ディレクトリ構成の規則、テンプレート空間、仕様変更履歴の、人が読める形式での概要
- metadata_fields.md:すべての BIDS モダリティ(anat、func、dwi、fmap、eeg、meg、pet など)に必要な JSON サイドカーフィールドと推奨される JSON サイドカーフィールド
- conversion_tools.md:HeuDiConv、dcm2bids、BIDScoin の詳細なワークフロー。ヒューリスティック/設定例とトラブルシューティングを含みます
スキーマと BEP を更新するには、python scripts/update_schema.py を実行します。
よくある問題と解決方法
1. Validator が「Not a BIDS dataset」と報告する
原因:ルートに dataset_description.json がありません。
解決方法:最低限 {"Name": "...", "BIDSVersion": "1.10.0"} を含むファイルを作成します。
2. 被験者に一貫性がないという警告が表示される
原因:すべての被験者が同じファイル一式を持っているわけではありません(セッションやランなどが欠けている被験者がいます)。
解決方法:これは警告であり、エラーではありません。意図的な場合は --ignoreSubjectConsistency を使用します。欠損データは participants.tsv または scans.tsv に記録します。
3. SliceTiming がない
原因:dcm2niix が DICOM ヘッダーからスライスタイミングを抽出できませんでした。
解決方法:スキャンプロトコルからスライス順序を確認し、JSON サイドカーに手動で追加します。一般的なパターンは、昇順、降順、インターリーブ(奇数優先または偶数優先)です。
4. 位相エンコード方向がわからない
原因:軸のラベル(i/j/k、x/y/z、LR/AP/SI)がわかりにくい場合があります。
解決方法:BIDS では、NIfTI 画像の軸を使用します。i は第 1 軸、j は第 2 軸、k は第 3 軸です。- は負の方向を示します。標準的な軸位断撮像では、通常 j が前後方向です。撮像プロトコルで確認してください。
5. 大規模なデータセットで PyBIDS の処理が遅い
原因:BIDSLayout() を呼び出すたびにファイルシステム全体をインデックス化しています。
解決方法:database_path を使用して、インデックスを SQLite ファイルにキャッシュします。
layout = BIDSLayout("/data", database_path="/data/.pybids_cache.db")
6. PyBIDS が派生データを見つけられない
原因:derivatives ディレクトリに独自の dataset_description.json がありません。
解決方法:各 derivatives ディレクトリには、"DatasetType": "derivative" を含む dataset_description.json が必要です。
7. イベントファイルのタイミングがずれている
原因:onset の時間が誤った基準(例:トリガー時刻と最初のボリュームの違い)に対する相対値になっています。
解決方法:オンセットは、そのランの撮像における最初のボリュームを基準とした秒単位で指定します。ダミースキャンを破棄した場合は、その分を考慮してください。
8. TSV ファイルの検証に失敗する
原因:エンコーディングまたは区切り文字の問題です(タブの代わりにスペースを使用している、BOM 文字が含まれている、Windows の改行コードを使用しているなど)。
修正方法:UTF-8 エンコーディングと Unix の改行コード(\n)を使用したタブ区切り値にしてください。値が欠損している場合は、NA、NaN、空欄ではなく n/a を使用します。
ベストプラクティス
-
早い段階から頻繁に検証する - 変換や変更を行うたびに BIDS バリデーターを実行します。エラーが積み重なる前に修正してください。
-
メタデータの継承を使用する - 共有メタデータ(例:
TaskName、スキャナーのパラメーター)は、各被験者のディレクトリに重複して配置するのではなく、最上位のサイドカーファイルに配置します。 -
sourcedata を保持する - 変換を再現できるよう、元の DICOM(またはその他の生データ)を
sourcedata/の下に保存します。.bidsignoreにsourcedata/を追加してください。 -
最初から一貫した命名規則を使用する - データ収集を始める前に、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 にあります(bids-website から取得)。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/
- BIDS ウェブサイト: https://bids.neuroimaging.io/
- PyBIDS ドキュメント: https://bids-standard.github.io/pybids/
- BIDS バリデーター: https://github.com/bids-standard/bids-validator
- BIDS スターターキット: https://bids-standard.github.io/bids-starter-kit/
- BIDS の例: https://github.com/bids-standard/bids-examples — BIDS の各モダリティの標準的な参照データセットです。テンプレートおよびテストデータとして使用してください。
- HeuDiConv ドキュメント: https://heudiconv.readthedocs.io/
- BIDS の原著論文: Gorgolewski et al.(2016)Scientific Data、doi:10.1038/sdata.2016.44