33from __future__ import annotations
44
55from dataclasses import dataclass
6- from typing import TYPE_CHECKING
6+ from typing import TYPE_CHECKING , Literal
77
88if TYPE_CHECKING :
99 import argparse
1717from rbc .cli .base import BaseArgs
1818from rbc .cli .query import iter_session_files , load_session
1919from rbc .context import PipelineContext
20- from rbc .core .bids import Datatype , Extension , Suffix , extract_entities
20+ from rbc .core .bids import Datatype , Extension , Suffix , bids_safe_label , extract_entities
2121from rbc .core .bids2table import load_table
2222from rbc .core .niwrap import setup_runner
2323from rbc .workflows .anatomical import longitudinal_process as anatomical_longitudinal
@@ -30,7 +30,7 @@ class LongitudinalArgs(BaseArgs):
3030
3131 anatomical : bool
3232 functional : bool
33- regressor : Literal [36 - parameter , aCompCor ]
33+ regressor : Literal ["36- parameter" , " aCompCor" ]
3434
3535 @classmethod
3636 def validate_namespace (cls , ns : argparse .Namespace ) -> LongitudinalArgs :
@@ -107,7 +107,7 @@ def _process_func(
107107 pipe_ctx : PipelineContext ,
108108 func_df : pl .DataFrame ,
109109 tpl_df : pl .DataFrame ,
110- regressor : Literal [36 - parameter , aCompCor ],
110+ regressor : Literal ["36- parameter" , " aCompCor" ],
111111) -> None :
112112 """Handle functional longitudinal processing."""
113113 row = func_df .filter (suffix = Suffix .BOLD ).row (0 , named = True )
@@ -135,8 +135,18 @@ def _process_func(
135135 bold = func_q .expect (
136136 func_df , suffix = Suffix .BOLD , desc = "preproc" , without = ["space" ]
137137 ),
138- bold_mask = func_q .find (
139- func_df , suffix = Suffix .MASK , desc = "brain" , without = ["space" ]
138+ bold_mask = _require_file (
139+ func_q .find (func_df , suffix = Suffix .MASK , desc = "brain" , without = ["space" ]),
140+ "bold_mask" ,
141+ ),
142+ regressor_file = _require_file (
143+ func_q .find (
144+ func_df ,
145+ suffix = "regressors" ,
146+ desc = bids_safe_label (regressor ),
147+ extension = ".1D" ,
148+ ),
149+ "regressor_file" ,
140150 ),
141151 )
142152
@@ -205,7 +215,12 @@ def main(args: LongitudinalArgs) -> int:
205215
206216 if args .functional :
207217 for func_df , _ in iter_session_files (session , groupby = _FUNC_GROUP_ENTITIES ):
208- _process_func (pipe_ctx = pipe_ctx , func_df = func_df , tpl_df = tpl_df )
218+ _process_func (
219+ pipe_ctx = pipe_ctx ,
220+ func_df = func_df ,
221+ tpl_df = tpl_df ,
222+ regressor = args .regressor ,
223+ )
209224 pipe_ctx .ensure_dataset_description ()
210225
211226 return 0
0 commit comments