diff --git a/fmriprep/workflows/base.py b/fmriprep/workflows/base.py index 01664861..1cdac46a 100644 --- a/fmriprep/workflows/base.py +++ b/fmriprep/workflows/base.py @@ -580,7 +580,15 @@ def init_single_subject_wf(subject_id: str): suffices = [s.suffix for s in estimator.sources] if estimator.method == fm.EstimatorType.PEPOLAR: - if len(suffices) == 2 and all(suf in ('epi', 'bold', 'sbref') for suf in suffices): + # "Sophisticated" PEPOLAR schemes should be run "manually" with SDCFlows + # The following two cases are not considered sophisticated: + # 1. All PEPOLAR entities are the same modality + # (typically, more than two EPI PE directions), or + # 2. Two modalities are involved, with at most two images to pass + # into FSL TOPUP. + if len(set(suffices)) == 1 or ( + len(suffices) == 2 and all(suf in ('epi', 'bold', 'sbref') for suf in suffices) + ): wf_inputs = getattr(fmap_wf.inputs, f'in_{estimator.bids_id}') wf_inputs.in_data = [str(s.path) for s in estimator.sources] wf_inputs.metadata = [s.metadata for s in estimator.sources]