@@ -182,9 +182,11 @@ def find_estimators(
182182 ... force_fmapless=True,
183183 ... ) # doctest: +ELLIPSIS
184184 [FieldmapEstimation(sources=<3 files>, method=<EstimatorType.PHASEDIFF: 3>,
185- bids_id='auto_00000'),
186- FieldmapEstimation(sources=<3 files>, method=<EstimatorType.ANAT: 5>,
187- bids_id='auto_00001')]
185+ bids_id='auto_...'),
186+ FieldmapEstimation(sources=<2 files>, method=<EstimatorType.ANAT: 5>,
187+ bids_id='auto_...'),
188+ FieldmapEstimation(sources=<2 files>, method=<EstimatorType.ANAT: 5>,
189+ bids_id='auto_...')]
188190
189191 Likewise in a more comprehensive dataset:
190192
@@ -194,13 +196,23 @@ def find_estimators(
194196 ... force_fmapless=True,
195197 ... ) # doctest: +ELLIPSIS
196198 [FieldmapEstimation(sources=<4 files>, method=<EstimatorType.PEPOLAR: 2>,
197- bids_id='auto_00002'),
198- FieldmapEstimation(sources=<7 files>, method=<EstimatorType.ANAT: 5>,
199- bids_id='auto_00003'),
199+ bids_id='auto_...'),
200+ FieldmapEstimation(sources=<2 files>, method=<EstimatorType.ANAT: 5>,
201+ bids_id='auto_...'),
202+ FieldmapEstimation(sources=<2 files>, method=<EstimatorType.ANAT: 5>,
203+ bids_id='auto_...'),
200204 FieldmapEstimation(sources=<2 files>, method=<EstimatorType.ANAT: 5>,
201- bids_id='auto_00004 '),
205+ bids_id='auto_... '),
202206 FieldmapEstimation(sources=<2 files>, method=<EstimatorType.ANAT: 5>,
203- bids_id='auto_00005')]
207+ bids_id='auto_...'),
208+ FieldmapEstimation(sources=<2 files>, method=<EstimatorType.ANAT: 5>,
209+ bids_id='auto_...'),
210+ FieldmapEstimation(sources=<2 files>, method=<EstimatorType.ANAT: 5>,
211+ bids_id='auto_...'),
212+ FieldmapEstimation(sources=<2 files>, method=<EstimatorType.ANAT: 5>,
213+ bids_id='auto_...'),
214+ FieldmapEstimation(sources=<2 files>, method=<EstimatorType.ANAT: 5>,
215+ bids_id='auto_...')]
204216
205217 Because "*dataset A*" contains very few metadata fields available, "*fieldmap-less*"
206218 heuristics come back empty (BOLD and DWI files are missing
@@ -239,9 +251,9 @@ def find_estimators(
239251 ... force_fmapless=False,
240252 ... ) # doctest: +ELLIPSIS
241253 [FieldmapEstimation(sources=<2 files>, method=<EstimatorType.ANAT: 5>,
242- bids_id='auto_00011 '),
254+ bids_id='auto_... '),
243255 FieldmapEstimation(sources=<2 files>, method=<EstimatorType.ANAT: 5>,
244- bids_id='auto_00012 ')]
256+ bids_id='auto_... ')]
245257
246258 When the ``B0FieldIdentifier`` metadata is set for one or more fieldmaps, then
247259 the heuristics that use ``IntendedFor`` are dismissed:
@@ -266,7 +278,7 @@ def find_estimators(
266278 [FieldmapEstimation(sources=<5 files>, method=<EstimatorType.PEPOLAR: 2>,
267279 bids_id='pepolar4pe'),
268280 FieldmapEstimation(sources=<2 files>, method=<EstimatorType.ANAT: 5>,
269- bids_id='auto_00000 ')]
281+ bids_id='auto_... ')]
270282
271283 """
272284 from .misc import create_logger
@@ -503,28 +515,23 @@ def find_estimators(
503515 meta .update ({"TotalReadoutTime" : ro })
504516 epi_targets .append (fm .FieldmapFile (candidate .path , metadata = meta ))
505517
506- for pe_dir in sorted (set (pe_dirs )):
507- pe_ro = [ro for ro , pe in zip (ro_totals , pe_dirs ) if pe == pe_dir ]
508- for ro_time in sorted (set (pe_ro )):
509- fmfiles , fmpaths = tuple (
510- zip (
511- * [
512- (target , str (Path (target .path ).relative_to (subject_root )))
513- for i , target in enumerate (epi_targets )
514- if pe_dirs [i ] == pe_dir and ro_totals [i ] == ro_time
515- ]
516- )
517- )
518- e = fm .FieldmapEstimation (
519- [
520- fm .FieldmapFile (
521- anat_file [0 ], metadata = {"IntendedFor" : fmpaths }
522- ),
523- * fmfiles ,
524- ]
525- )
526- _log_debug_estimation (logger , e , layout .root )
527- estimators .append (e )
518+ trivial_estimators = [
519+ [
520+ fm .FieldmapFile (
521+ anat_file [0 ],
522+ metadata = {"IntendedFor" : str (Path (epi .path ).relative_to (subject_root ))},
523+ ),
524+ epi ,
525+ ] for epi in epi_targets
526+ ]
527+
528+ # TODO: Grouping could be done here; previously we grouped by (pe_dir, ro_time) pairs
529+ syn_estimators = [fm .FieldmapEstimation (e ) for e in trivial_estimators ]
530+
531+ for e in syn_estimators :
532+ _log_debug_estimation (logger , e , layout .root )
533+
534+ estimators .extend (syn_estimators )
528535
529536 return estimators
530537
0 commit comments