You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Metrics, QC & all pipeline in longitudinal space (Stage 6 of #301) (#317)
* Add longitudinal metrics orchestration (port from #297)
Resolve per-regressor regressed/cleaned BOLD and brain mask from
space-longitudinal derivatives, read TR from NIfTI header, call
single_session_metrics unchanged. Reuse cross-sectional export_metrics
for BIDS naming.
Co-authored-by: Janhavi Pillai <janhavipillai3@gmail.com>
* Add longitudinal QC, all pipeline, and full_pipeline tests
QC: Dice/Jaccard between anat and BOLD brain masks in longitudinal
space, pass threshold Dice >= 0.85. Viz tracked in #303/#304.
All pipeline: template -> anat -> func -> metrics -> qc. Template
writes to disk cross-session; per-session stages hand off func outputs
in-memory. process_anat/process_func now return workflow outputs.
CLI: Add --regressor and --task to `rbc longitudinal all`.
Tests: Tier-4 full_pipeline tests for metrics, QC, and all-vs-sequential
equivalence under tests/full_pipeline/longitudinal/.
* Fix anat groupby dropping mask rows in longitudinal resolve
T1w suffix filter in run() excluded masks from the DataFrame passed to
process_anat, so resolve_longitudinal_anat couldn't find them. Drop the
filter. Pre-existing Stage 4 bug exposed by new tests.
* Add --regressor to longitudinal metrics CLI
Replace DataFrame-based discovery (queried a non-existent 'reg' column)
with explicit --regressor, matching cross-sectional.
* Fix longitudinal all test fixture missing --session-label
Fixture ran cross-sectional func only for ses-test but invoked
`rbc longitudinal all` without --session-label, so it iterated ses-retest
(no func derivatives) and crashed on an empty BOLD DataFrame.
* Apply only participant filter to template discovery in all pipeline
Template needs all sessions to find multi-session subjects. Session/task
filters apply only to per-session stages, not discover_template_inputs.
* Clean up tech debt: TR validation, FS auth, QC load_table
TR: Promote resolve_tr/warn_implausible_tr to public API. Replace
_read_header_tr with _read_derivative_tr that pipes through resolve_tr
for validation and plausibility warnings. Add --tr override to
longitudinal metrics CLI.
FS auth: Rename _setup_freesurfer_auth -> setup_freesurfer_auth, export
from template.py, import at module level in all.py.
QC: Replace manual concat of session.anat + session.func + tpl_df with
load_table, matching cross-sectional qc.py.
---------
Co-authored-by: Janhavi Pillai <janhavi.pillai@gmail.com>
0 commit comments