
Research
/Security News
npm Author Qix Compromised via Phishing Email in Major Supply Chain Attack
npm author Qix’s account was compromised, with malicious versions of popular packages like chalk-template, color-convert, and strip-ansi published.
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.
Research
/Security News
npm author Qix’s account was compromised, with malicious versions of popular packages like chalk-template, color-convert, and strip-ansi published.
Research
Four npm packages disguised as cryptographic tools steal developer credentials and send them to attacker-controlled Telegram infrastructure.
Security News
Ruby maintainers from Bundler and rbenv teams are building rv to bring Python uv's speed and unified tooling approach to Ruby development.