--- name: bids description: > Use this skill when working with Brain Imaging Data Structure (BIDS) datasets: organizing neuroscience and biomedical data (MRI, EEG, MEG, iEEG, PET, microscopy, NIRS, motion capture, EMG, MR spectroscopy, behavioral), querying BIDS layouts, validating compliance, converting DICOM to BIDS, writing metadata sidecars, or creating BIDS derivatives. license: https://creativecommons.org/licenses/by/4.0/ metadata: {"version": "1.0", "skill-author": "Yaroslav Halchenko"} --- # Brain Imaging Data Structure (BIDS) ## Overview The Brain Imaging Data Structure (BIDS) is a community standard for organizing and describing neuroscience and biomedical research datasets. It defines a consistent file naming convention, directory hierarchy, and metadata schema so that datasets are immediately understandable by humans and software tools alike. BIDS is governed by the BIDS Specification (currently v1.11.x) and is maintained by the community via the BIDS-Standard GitHub organization. While BIDS originated for MRI, it has grown well beyond neuroimaging. The specification now covers 11 modalities spanning imaging, electrophysiology, and behavioral data: - **Imaging**: MRI (structural, functional, diffusion, fieldmaps, perfusion/ASL), PET, microscopy - **Electrophysiology**: EEG, MEG, iEEG (intracranial EEG), EMG - **Other**: NIRS (near-infrared spectroscopy), motion capture, behavioral data (without imaging), MR spectroscopy Active BEPs are extending BIDS further — notably BEP032 (microelectrode electrophysiology) will add support for extracellular recordings including Neuropixels probes, bringing BIDS to a prevalent methodology in animal neuroscience research (see also the neuropixels-analysis skill). Adoption is required or strongly encouraged by major data repositories (OpenNeuro, DANDI), leading journals (NeuroImage, Human Brain Mapping, Scientific Data), and funding agencies (NIH, ERC). The Python ecosystem for BIDS centers on **PyBIDS** (`pybids`) for querying and indexing BIDS datasets, and the **bids-validator** (Deno-based, available as PyPI package `bids-validator-deno` or via Deno directly) for compliance checking. Conversion from DICOM is typically done with **HeuDiConv**, **dcm2bids**, or **BIDScoin**. ## When to Use This Skill Apply this skill when: - Organizing raw neuroscience data (imaging, electrophysiology, behavioral) into BIDS-compliant directory structures - Querying an existing BIDS dataset to find specific files by subject, session, task, run, or modality - Validating a dataset against the BIDS specification before sharing or submission - Converting DICOM data from scanners into BIDS format - Writing or editing JSON sidecar metadata files - Creating BIDS-compliant derivatives (preprocessed data, analysis outputs) - Setting up a `dataset_description.json` for a new dataset - Working with BIDS entities (subject, session, task, acquisition, run, etc.) - Configuring `.bidsignore` to exclude files from validation - Preparing data for upload to OpenNeuro, DANDI, or other BIDS-aware repositories ## Installation ```bash # 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) ``` ## Core Workflows ### 1. BIDS Directory Structure A minimal BIDS dataset follows this layout: ``` 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/ ... ``` **Key points:** - Every NIfTI file should have a corresponding `.json` sidecar - File names encode entities: `sub-