mcpField
B
bids

bids

github.com/crazymsnデータ・データベース2337 回インストール22 週間前に更新
リポジトリ

bids について

BIDSコミュニティ標準を使って、神経科学・生物医学データセットを整理、検証、検索、変換するスキルです。MRIに加え、電気生理や行動データも扱います。

主な機能

  1. 01BIDSのディレクトリとファイル名規則
  2. 02PyBIDSによるデータセット検索
  3. 03仕様への準拠チェック
  4. 04メタデータとサイドカーのガイド
  5. 05DICOMからBIDSへの変換手順

活用シーン

  1. 01神経科学研究データの構造化
  2. 02被験者、タスク、モダリティ別のファイル検索
  3. 03共有前のデータセット検証
  4. 04スキャナーのDICOMデータをBIDS形式に変換

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/crazymsn/academic-skills --skill bids

インストール後、Claude Code で/bidsを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
beps.yml
bids_specification.md
conversion_tools.md
metadata_fields.md
scripts/
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-restfunc(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>

データタイプ別の一般的なサフィックス:

データタイプサフィックス
anatT1w、T2w、FLAIR、T2star、T1map、T2map、defacemask
funcbold、cbv、sbref、events、physio、stim
dwidwi、sbref
fmapphasediff、phase1、phase2、magnitude1、magnitude2、fieldmap、epi
perfasl、m0scan、aslcontext
eegeeg、channels、electrodes、events
megmeg、channels、coordsystem、events
ieegieeg、channels、electrodes、coordsystem、events
petpet、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.gz
  • func-bold_task-rest → sub-XX/func/sub-XX_task-rest_bold.nii.gz
  • dwi_dir-AP → sub-XX/dwi/sub-XX_dir-AP_dwi.nii.gz
  • fmap_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 レベル:全被験者を対象に実行します(集約/グループ統計)

参考資料

このスキルには、詳細な参考ドキュメントが含まれています。

スキーマと 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 を使用します。

ベストプラクティス

  1. 早い段階から頻繁に検証する - 変換や変更を行うたびに BIDS バリデーターを実行します。エラーが積み重なる前に修正してください。

  2. メタデータの継承を使用する - 共有メタデータ(例:TaskName、スキャナーのパラメーター)は、各被験者のディレクトリに重複して配置するのではなく、最上位のサイドカーファイルに配置します。

  3. sourcedata を保持する - 変換を再現できるよう、元の DICOM(またはその他の生データ)を sourcedata/ の下に保存します。.bidsignore に sourcedata/ を追加してください。

  4. 最初から一貫した命名規則を使用する - データ収集を始める前に、BIDS の命名規則を定義します。自動変換を可能にするため、スキャンプロトコルには ReproIn の命名規則を使用してください。

  5. データセットを文書化する - 研究デザイン、取得パラメーター、既知の問題、BIDS からの逸脱について詳しく説明する README を作成します。

  6. 実行単位のメタデータには scans.tsv を使用する - 実行ごとの取得時刻と品質に関する注記を記録します:

    filename	acq_time	quality
    func/sub-01_task-rest_bold.nii.gz	2025-01-15T10:30:00	good
    
  7. データセットをバージョン管理する - データセットの変更を記録するには CHANGES を使用します。大規模なデータセットを完全にバージョン管理するには、DataLad の利用を検討してください。

  8. 解剖学的画像の顔をぼかす - 共有する前に、T1w/T2w 画像から顔の特徴を削除します(例:pydeface、mri_deface、afni_refacer を使用)。顔をぼかしたバージョンを主要データとして保存するか、_defacemask ファイルを使用してください。

  9. 出所情報には BIDS URI を使用する - 派生データでは、BIDS URI を使用してソースファイルを参照します:bids::sub-01/anat/sub-01_T1w.nii.gz。

  10. コミュニティのツールを優先する - 可能であれば、独自のパイプラインではなく、実績のある BIDS-Apps(fMRIPrep、MRIQC、QSIPrep)を使用します。これらは BIDS の入出力を正しく処理し、BIDS に準拠した派生データを生成します。

  11. 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構造画像の前処理派生データderivativePR あり(#518)
012機能画像の前処理派生データderivativePR あり(#519)、スキーマ実装済み
014アフィン変換と非線形フィールドワープderivativeX5 形式を開発中
016拡散強調画像の派生データderivativePR あり(#2211)
017汎用 BIDS 接続データスキーマderivative開発中
021共通電気生理派生データderivative開発中
023PET 前処理派生データderivative開発中
024コンピューター断層撮影スキャンraw貢献者を募集中
026微小電極記録raw新しいリーダーを募集中
028来歴metadataPR あり(#2099)
032微小電極電気生理学rawPR あり(#2307)、プレビュー利用可能 — Neuropixels などの細胞外プローブを対象とし、neuropixels-analysis スキルに関連
033高度な拡散強調画像raw貢献者を募集中
034計算モデリングderivativePR あり(#967)
035非準拠の派生データによるメガ解析derivative開発中
036表現型データガイドラインrawコミュニティレビュー中
037非侵襲的脳刺激raw開発中
039次元削減に基づくネットワークraw開発中
040機能的超音波raw開発中
041統計モデル派生データderivativeフィードバックを募集中
043BIDS 用語マッピングmetadataフィードバックを募集中
044刺激rawPR あり(#2022)、コミュニティレビュー中
045末梢生理記録rawPR あり(#2267)
046拡散トラクトグラフィーderivative開発中
047行動実験の音声/動画記録rawPR あり(#2231)

関連標準:

  • BIDS-Stats Models:GLM ベースの神経画像解析を定義する JSON 仕様
  • BIDS-Derivatives(BEP003):前処理/解析の出力データの標準(仕様に一部統合済み)

関連ツールのエコシステム

ツール用途
fMRIPrepfMRI の前処理(BIDS 派生データを生成)
MRIQCMRI の品質管理(BIDS 派生データを生成)
QSIPrep拡散 MRI の前処理
TemplateFlowBIDS に似た命名規則を使用する神経画像テンプレートとアトラス
FitlinsBIDS Stats Models の実装
DataLad大規模データセットのバージョン管理。BIDS と統合
OpenNeuro無料の BIDS データセットリポジトリ
DANDI神経生理学データアーカイブ(一部のモダリティで BIDS を使用)
HeuDiConvヒューリスティックな Python ファイルを使用した DICOM から BIDS への変換
dcm2bidsJSON 設定を使用した DICOM から BIDS への変換
BIDScoinGUI と YAML 設定を使用した DICOM から BIDS への変換
nwb2bidsNWB(Neurodata Without Borders)ファイルを BIDS に変換
CuBIDSBIDS データセットのキュレーションと調和
bids2tableBIDS データセットの効率的な表形式インデックス作成
bids-examplesすべてのモダリティを対象とする、典型的な BIDS データセットの標準コレクション

ドキュメント

コメント