Skip to content

Inheritance Principle deep-dive #2155

@Lestropie

Description

@Lestropie

Greetings all,

During and subsequent to the recent 2025 OHBM Hackathon, I have invested considerable time in interrogating the BIDS Inheritance Principle. This has been a source of contention and confusion since its inclusion in the inception of BIDS. For the specification to be robust, and for the community to be able to make relevant decisions for BIDS Derivatives and BIDS 2.0, its interpretation and the implementation of relevant tooling need to be correpsondingly robust.

I intend for this Issue listing to serve as a "meta-issue". I will be over time posting Issues / Pull Requests in multiple distinct repositories, progressively replacing the placeholders below with links to such. Any esoteric discussion specific to those individual software tools / databases should occur there once created so as to not twist different discussion threads here; this Issue should be reserved for any higher-level discussion that requires tying all of these topics together.

I'll create a secondary post here describing my new tool; I'll reserve this original post to listing the ramifications for other components of the BIDS ecosystem.


bids-examples

I have generated a large number of new example datasets that are tailored for the exploration of the Inheritance Principle (current count is 28).
For each of these datasets, I have manually classified, under each individual IP ruleset (see below), whether that dataset satisfies that version of the Inheritance Principle, whether a warning should be issued, or whether the IP is violated, and ensured that my own software implementation matches these outcomes.
This can then serve as validation for any other BIDS software that needs to be IP-aware.

Edit: bids-standard/bids-examples#504

BIDS 1.0

There are some discrepancies between the behaviour of the validators and my pre-conceived notions of what they would yield for different example datasets that may hint at things having been overlooked in the specification:

  • Dataset attributes that are resulting in errors despite the fact that there's not anything explicit in the specification that precludes it.

  • The change to the Inheritance Principle in 1.7.0 as committed in #946 was not a straight transition from lay description to codification, but rather involved a subtle change to the rules. This warrants explicit discussion, both in assessing different software behaviours and also what the specification should vs. should not permit.

Edit: #2156

Legacy bids-validator

The Legacy BIDS Validator has a range of scenarios where the outcome of validation does not conform with what I believe the outcome should be based on the Inheritance Principle as written.
I will post more details on the legacy-validator repository on the patterns observable from what fails, and link back here.
I appreciate that the legacy Validator is considered deprecated and so it is possible that these issues may not be fixed, but I'll document exhaustively nevertheless.

Edit: bids-standard/legacy-validator#2224

Schema bids-validator

Version 2.0 of the BIDS Validator fixes one errors with the legacy validator with respect to the IP, but fails to address others.
I will post more details on the bids-validator repository on what inadequacies remain outstanding, and link back here.

Edit: bids-standard/bids-validator#217

pybids

I have not yet had the opportunity to familiarise myself with pybids to test which of these datasets expose improper implementation.
I will post over there once I've done that experiment, and link back here.
Lestropie/IP-freely#24

Edit: bids-standard/pybids#1148

BIDS 2.0

Going through this exercise has hopefully provided some insight on the merits of different choices for how to proceed (or not) with the Inheritance Principle for BIDS 2.0.
When I get to posting Issues on the BIDS 2.0 repository, I'll link to them here.

Edit: bids-standard/bids-2-devel#90
Edit: bids-standard/bids-2-devel#91

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions