@@ -123,6 +123,7 @@ def init_fmap_derivatives_wf(
123123 custom_entities = None ,
124124 name = 'fmap_derivatives_wf' ,
125125 write_coeff = False ,
126+ write_mask = False ,
126127):
127128 """
128129 Set up datasinks to store derivatives in the right location.
@@ -159,12 +160,12 @@ def init_fmap_derivatives_wf(
159160 workflow = pe .Workflow (name = name )
160161 inputnode = pe .Node (
161162 niu .IdentityInterface (
162- fields = ['source_files' , 'fieldmap' , 'fmap_coeff' , 'fmap_ref' , 'fmap_meta' ]
163+ fields = ['source_files' , 'fieldmap' , 'fmap_coeff' , 'fmap_ref' , 'fmap_mask' , ' fmap_meta' ]
163164 ),
164165 name = 'inputnode' ,
165166 )
166167 outputnode = pe .Node (
167- niu .IdentityInterface (fields = ['fieldmap' , 'fmap_coeff' , 'fmap_ref' ]),
168+ niu .IdentityInterface (fields = ['fieldmap' , 'fmap_coeff' , 'fmap_ref' , 'fmap_mask' ]),
168169 name = 'outputnode' ,
169170 )
170171
@@ -216,6 +217,28 @@ def init_fmap_derivatives_wf(
216217 (ds_reference , outputnode , [("out_file" , "fmap_ref" )]),
217218 ]) # fmt:skip
218219
220+ if write_mask :
221+ ds_mask = pe .Node (
222+ DerivativesDataSink (
223+ base_directory = output_dir ,
224+ compress = True ,
225+ desc = 'brain' ,
226+ suffix = 'mask' ,
227+ datatype = 'fmap' ,
228+ dismiss_entities = ('fmap' ,),
229+ allowed_entities = tuple (custom_entities ),
230+ ),
231+ name = 'ds_mask' ,
232+ )
233+
234+ ds_mask .inputs .trait_set (** custom_entities )
235+
236+ workflow .connect ([
237+ (inputnode , ds_mask , [("source_files" , "source_file" ),
238+ ("fmap_mask" , "in_file" )]),
239+ (ds_mask , outputnode , [("out_file" , "fmap_mask" )]),
240+ ]) # fmt:skip
241+
219242 if not write_coeff :
220243 return workflow
221244
0 commit comments