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
BidsLayouttype and its builder. - query
- Query types: filters, scopes, return types, and special query values.