29
29
from nipype .pipeline import engine as pe
30
30
from niworkflows .interfaces .fixes import FixHeaderApplyTransforms as ApplyTransforms
31
31
from niworkflows .utils .images import dseg_label
32
+ from smriprep .workflows .outputs import _bids_relative
32
33
33
34
from fmriprep import config
34
35
from fmriprep .config import DEFAULT_MEMORY_MIN_GB
@@ -471,6 +472,50 @@ def init_ds_boldref_wf(
471
472
return workflow
472
473
473
474
475
+ def init_ds_boldmask_wf (
476
+ * ,
477
+ bids_root ,
478
+ output_dir ,
479
+ desc : str ,
480
+ name = 'ds_boldmask_wf' ,
481
+ ) -> pe .Workflow :
482
+ """Write out a BOLD mask."""
483
+ workflow = pe .Workflow (name = name )
484
+
485
+ inputnode = pe .Node (
486
+ niu .IdentityInterface (fields = ['source_files' , 'boldmask' ]),
487
+ name = 'inputnode' ,
488
+ )
489
+ outputnode = pe .Node (niu .IdentityInterface (fields = ['boldmask' ]), name = 'outputnode' )
490
+
491
+ raw_sources = pe .Node (niu .Function (function = _bids_relative ), name = 'raw_sources' )
492
+ raw_sources .inputs .bids_root = bids_root
493
+
494
+ ds_boldmask = pe .Node (
495
+ DerivativesDataSink (
496
+ base_directory = output_dir ,
497
+ desc = desc ,
498
+ suffix = 'mask' ,
499
+ compress = True ,
500
+ dismiss_entities = dismiss_echo (),
501
+ ),
502
+ name = 'ds_boldmask' ,
503
+ run_without_submitting = True ,
504
+ )
505
+
506
+ workflow .connect ([
507
+ (inputnode , raw_sources , [('source_files' , 'in_files' )]),
508
+ (inputnode , ds_boldmask , [
509
+ ('boldmask' , 'in_file' ),
510
+ ('source_files' , 'source_file' ),
511
+ ]),
512
+ (raw_sources , ds_boldmask , [('out' , 'RawSources' )]),
513
+ (ds_boldmask , outputnode , [('out_file' , 'boldmask' )]),
514
+ ]) # fmt:skip
515
+
516
+ return workflow
517
+
518
+
474
519
def init_ds_registration_wf (
475
520
* ,
476
521
bids_root : str ,
@@ -592,7 +637,6 @@ def init_ds_bold_native_wf(
592
637
fields = [
593
638
'source_files' ,
594
639
'bold' ,
595
- 'bold_mask' ,
596
640
'bold_echos' ,
597
641
't2star' ,
598
642
# Transforms previously used to generate the outputs
@@ -619,27 +663,6 @@ def init_ds_bold_native_wf(
619
663
]),
620
664
]) # fmt:skip
621
665
622
- # Masks should be output if any other derivatives are output
623
- ds_bold_mask = pe .Node (
624
- DerivativesDataSink (
625
- base_directory = output_dir ,
626
- desc = 'brain' ,
627
- suffix = 'mask' ,
628
- compress = True ,
629
- dismiss_entities = dismiss_echo (),
630
- ),
631
- name = 'ds_bold_mask' ,
632
- run_without_submitting = True ,
633
- mem_gb = DEFAULT_MEMORY_MIN_GB ,
634
- )
635
- workflow .connect ([
636
- (inputnode , ds_bold_mask , [
637
- ('source_files' , 'source_file' ),
638
- ('bold_mask' , 'in_file' ),
639
- ]),
640
- (sources , ds_bold_mask , [('out' , 'Sources' )]),
641
- ]) # fmt:skip
642
-
643
666
if bold_output :
644
667
ds_bold = pe .Node (
645
668
DerivativesDataSink (
0 commit comments