Skip to main content

Crate bids_layout

Crate bids_layout 

Source
Expand description

BIDS dataset layout indexing and querying.

This is the central crate for interacting with BIDS datasets on disk. It provides BidsLayout, the main entry point that indexes a dataset directory into a SQLite database and exposes a fluent query API for finding files.

Corresponds to PyBIDS’ BIDSLayout class.

§Indexing

When a BidsLayout is created, the dataset directory is walked recursively. Each file’s path is matched against entity regex patterns from the configuration to extract BIDS entities (subject, session, task, run, suffix, extension, etc.). Files and their entity tags are stored in a SQLite database — either in-memory for fast one-off use, or on disk for persistent caching of large datasets.

JSON sidecar metadata is also indexed following the BIDS inheritance principle, and file associations (IntendedFor, events↔bold, bvec/bval↔DWI) are recorded.

§Querying

The GetBuilder provides a fluent API for filtering files:

let files = layout.get()
    .subject("01")
    .task("rest")
    .suffix("bold")
    .extension(".nii.gz")
    .collect()
    .unwrap();

Queries support exact matching, multi-value matching (.filter_any()), regex matching (.filter_regex()), existence checks (.query_any(), .query_none()), and scope-aware searching across derivatives.

§Derivatives

Derivative datasets (e.g., fMRIPrep output) can be added via layout.add_derivatives(). Queries can then be scoped to raw data only, derivatives only, a specific pipeline, or all datasets.

§Persistent Database

For large datasets, create a persistent index to avoid re-scanning:

let layout = BidsLayout::builder("/path/to/dataset")
    .database_path("/path/to/index.sqlite")
    .build()
    .unwrap();

Subsequent calls with the same database path will load the existing index instead of re-walking the filesystem.

Re-exports§

pub use get_builder::GetBuilder;
pub use get_builder::InvalidFilters;
pub use layout::BidsLayout;
pub use query::Query;
pub use query::QueryFilter;
pub use query::Scope;

Modules§

db
SQLite database backend for the BIDS file index.
get_builder
Fluent query builder for filtering BIDS files.
indexer
Dataset indexer: walks the filesystem and populates the SQLite database.
layout
The main BidsLayout type and its builder.
query
Query types: filters, scopes, return types, and special query values.