
Product
Rust Support Now in Beta
Socket's Rust support is moving to Beta: all users can scan Cargo projects and generate SBOMs, including Cargo.toml-only crates, with Rust-aware supply chain checks.
BIDS Dataset Loading
Load BIDS datasets of any size or complexity, with support for multiple BIDS schema versions.
Flexible Query Engine
Query files, folders, and metadata using a powerful, Pythonic API. Supports entity-based, scope-based, and custom queries.
Validation
Validate datasets against the BIDS specification and custom rules using a plugin-based validation system.
Writing and Derivatives
Write and update BIDS datasets, including support for creating and saving BIDS derivatives.
Lazy Loading
Efficiently handle large datasets with optional lazy loading, reducing memory usage and speeding up initial access.
Plugin Architecture
Extend or customize core functionality (validation, file handling, schema, etc.) via a robust plugin system.
PyBIDS Compatibility Layer
Drop-in compatibility for many pybids
API calls, easing migration from or integration with existing codebases.
Synthetic and Real Data Support
Works with both synthetic test datasets and real-world BIDS datasets.
CI/CD Ready
Includes a comprehensive suite of automated and manual tests, with synthetic datasets for reproducibility.
Extensible and Versioned Schema
Supports multiple BIDS schema versions and allows for easy extension as the BIDS standard evolves.
ancpBIDS is a modular Python library for reading, querying, validating, and writing BIDS datasets. Its architecture is designed for extensibility and maintainability, with the following key components:
Core Models:
The core BIDS data model is implemented in ancpbids/model_base.py
and versioned model files (e.g., model_v1_8_0.py
). These define the schema and object graph for BIDS datasets.
Plugin System:
The plugin mechanism (see ancpbids/plugin.py
) allows for dynamic extension of core functionality. Plugins can hook into schema modification, dataset processing, file handling, writing, and validation.
Query Engine:
The query logic is implemented in ancpbids/query.py
, providing flexible access to dataset contents and metadata.
Compatibility Layer:
ancpbids/pybids_compat.py
provides compatibility with the pybids API for easier migration and integration.
Utilities:
Helper functions and utilities are in ancpbids/utils.py
.
Testing:
The tests/
directory is organized into auto
(CI-safe) and manual
(non-deterministic or performance) tests, with synthetic datasets under tests/data/
.
The plugin system is a core feature for extensibility:
Plugin Types:
SchemaPlugin
: Modify or extend the BIDS schema.DatasetPlugin
: Operate on in-memory dataset graphs.FileHandlerPlugin
: Register custom file readers/writers.WritingPlugin
: Add files/folders during dataset writing.ValidationPlugin
: Add custom validation rules.Registration and Discovery:
Plugins are registered via register_plugin
or discovered with load_plugins_by_package
. They are prioritized by a ranking
value.
Execution:
At key points (e.g., dataset load, write, validate), the system retrieves and executes all relevant plugins using get_plugins
.
How to Add a Plugin:
plugin.py
.execute
method.register_plugin
or by placing it in a discoverable package.tests/auto/
, these are run automatically in CI.tests/manual/
, these are for benchmarking or non-deterministic checks.tests/data/
to ensure reproducibility.ancpbids/
, following the pattern of existing model files.tests/auto/
for CI-safe code, and to tests/manual/
for performance or integration tests.README.md
and docstrings for any new features or changes.FAQs
Read/write/validate/query BIDS datasets
We found that ancpbids demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Socket's Rust support is moving to Beta: all users can scan Cargo projects and generate SBOMs, including Cargo.toml-only crates, with Rust-aware supply chain checks.
Product
Socket Fix 2.0 brings targeted CVE remediation, smarter upgrade planning, and broader ecosystem support to help developers get to zero alerts.
Security News
Socket CEO Feross Aboukhadijeh joins Risky Business Weekly to unpack recent npm phishing attacks, their limited impact, and the risks if attackers get smarter.