Skip to content

Assemble the fMRIPrep testbench dataset drawing from OpenNeuro #3

Description

@oesteban

Objective

Assemble Benchmark v1.0: a curated, version-pinned, held-out set of OpenNeuro datasets that serves as the reference corpus for the verifier (#1, nipreps/fmriprep#3663). Selection is driven primarily by coverage of fMRIPrep's conditional branches, with acquisition diversity layered on top, and the set is published with reproducible manifests.

Rationale

The verifier's equivalence decisions are only as meaningful as the data they run on: if the benchmark exercises only a fraction of fMRIPrep's code paths, an "equivalent" reconstruction could still diverge on an untested branch. Selecting datasets to exercise every major branch makes equivalence a statement about the whole pipeline, not a happy path.

The idea of a broad, OpenNeuro-spanning testbench is not original to this issue — it has a direct antecedent in our own work. The original fMRIPrep paper (Esteban et al., 2019) validated the pipeline by running it across essentially every OpenNeuro dataset available at the time — on the order of ~100 datasets, then almost entirely fMRI. Benchmark v1.0 revisits that idea at today's scale: OpenNeuro now holds thousands of datasets, so exhaustive coverage of a small archive gives way to deliberate coverage of fMRIPrep's branch space across a far larger and more heterogeneous corpus.

Note

Datasets are held out from KB and agent development and version-pinned, so the benchmark cannot be overfit and stays reproducible.

Methodological approach

Datasets are drawn from OpenNeuro (Markiewicz et al., 2021) — queried programmatically with the NiQuery skill (nipreps/niquery#42) and sourced via the OpenNeuroStudies DataLad collection — and selected against the KB operation inventory and fMRIPrep's conditional structure:

  1. Branch coverage (primary). Using the NiQuery skill (Develop a *NiQuery* skill for querying OpenNeuro datasets niquery#42) to search OpenNeuro by acquisition and metadata criteria, choose datasets so every major code path is exercised — fieldmap present vs absent (and each SDC estimation type), single- vs multi-echo, single- vs multi-run/-session, with/without slice-timing metadata, surface vs volume-only outputs — and map each dataset to the branches/operations it triggers.
  2. Acquisition diversity (secondary). Layer in a spread of field strengths, vendors, sequences, and populations so generalization is also tested.
  3. Pinning, holdout, manifests. Version-pin each dataset (OpenNeuro snapshot / DataLad, via the OpenNeuroStudies collection), hold the set out from KB and agent development, and publish reproducible manifests (dataset ids, versions, the branch/operation map, checksums).

Outcomes/impact

  1. A published, version-pinned OpenNeuro reference set with reproducible manifests.
  2. An explicit branch/operation coverage map over that set.

This is the corpus over which the accuracy/recall benchmark (#1) and the numerical-variability CI (nipreps/fmriprep#3663) run, and the shared benchmark the ablation (Goal 2) and every engine transplant (Goal 3) are measured on.

Direct upstream issues

(issues this one depends on / builds upon)

Direct downstream issues

(issues that depend on this one)

Metadata

Metadata

Assignees

No one assigned

    Labels

    NiPreps-nextNiPreps-next (OS4LS Track 1) work item

    Type

    No type

    Projects

    Status
    Todo

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions