@@ -87,6 +87,10 @@ def apply_transform(wf_name, reg_tool, time_series=False, multi_input=False,
8787 apply_warp .inputs .dimension = 3
8888 apply_warp .interface .num_threads = int (num_ants_cores )
8989
90+ # Guardrail: check QC metrics
91+ guardrail = registration_guardrail_node ()
92+ wf .connect (inputNode , 'reference' , guardrail , 'reference' )
93+
9094 if time_series :
9195 apply_warp .inputs .input_image_type = 3
9296
@@ -101,8 +105,7 @@ def apply_transform(wf_name, reg_tool, time_series=False, multi_input=False,
101105 interp_string .inputs .reg_tool = reg_tool
102106
103107 wf .connect (inputNode , 'interpolation' , interp_string , 'interpolation' )
104- wf .connect (interp_string , 'interpolation' ,
105- apply_warp , 'interpolation' )
108+ wf .connect (interp_string , 'interpolation' , apply_warp , 'interpolation' )
106109
107110 ants_xfm_list = \
108111 pe .Node (util .Function (input_names = ['transform' ],
@@ -122,9 +125,9 @@ def apply_transform(wf_name, reg_tool, time_series=False, multi_input=False,
122125 chunk = pe .Node (util .Function (input_names = ['func_file' ,
123126 'n_chunks' ,
124127 'chunk_size' ],
125- output_names = ['TR_ranges' ],
126- function = chunk_ts ,
127- imports = chunk_imports ),
128+ output_names = ['TR_ranges' ],
129+ function = chunk_ts ,
130+ imports = chunk_imports ),
128131 name = f'chunk_{ wf_name } ' ,
129132 mem_gb = 2.5 )
130133
@@ -138,9 +141,9 @@ def apply_transform(wf_name, reg_tool, time_series=False, multi_input=False,
138141 split_imports = ['import os' , 'import subprocess' ]
139142 split = pe .Node (util .Function (input_names = ['func_file' ,
140143 'tr_ranges' ],
141- output_names = ['split_funcs' ],
142- function = split_ts_chunks ,
143- imports = split_imports ),
144+ output_names = ['split_funcs' ],
145+ function = split_ts_chunks ,
146+ imports = split_imports ),
144147 name = f'split_{ wf_name } ' ,
145148 mem_gb = 2.5 )
146149
@@ -154,13 +157,14 @@ def apply_transform(wf_name, reg_tool, time_series=False, multi_input=False,
154157 mem_gb = 2.5 )
155158 func_concat .inputs .outputtype = 'NIFTI_GZ'
156159
157- wf .connect (apply_warp , 'output_image' , func_concat , 'in_files ' )
158-
160+ wf .connect (apply_warp , 'output_image' , guardrail , 'registered ' )
161+ wf . connect ( guardrail , 'registered' , func_concat , 'in_files' )
159162 wf .connect (func_concat , 'out_file' , outputNode , 'output_image' )
160163
161164 else :
162165 wf .connect (inputNode , 'input_image' , apply_warp , 'input_image' )
163- wf .connect (apply_warp , 'output_image' , outputNode , 'output_image' )
166+ wf .connect (apply_warp , 'output_image' , guardrail , 'registered' )
167+ wf .connect (guardrail , 'registered' , outputNode , 'output_image' )
164168
165169 elif reg_tool == 'fsl' :
166170
@@ -221,9 +225,9 @@ def apply_transform(wf_name, reg_tool, time_series=False, multi_input=False,
221225 split_imports = ['import os' , 'import subprocess' ]
222226 split = pe .Node (util .Function (input_names = ['func_file' ,
223227 'tr_ranges' ],
224- output_names = ['split_funcs' ],
225- function = split_ts_chunks ,
226- imports = split_imports ),
228+ output_names = ['split_funcs' ],
229+ function = split_ts_chunks ,
230+ imports = split_imports ),
227231 name = f'split_{ wf_name } ' ,
228232 mem_gb = 2.5 )
229233
@@ -243,8 +247,8 @@ def apply_transform(wf_name, reg_tool, time_series=False, multi_input=False,
243247 wf .connect (inputNode , 'input_image' , apply_warp , 'in_file' )
244248 wf .connect (apply_warp , 'out_file' , guardrail , 'registered' )
245249
246- # Pass output through guardrail before continuing
247- wf .connect (guardrail , 'registered' , outputNode , 'output_image' )
250+ # Pass output through guardrail before continuing
251+ wf .connect (guardrail , 'registered' , outputNode , 'output_image' )
248252
249253 return wf
250254
0 commit comments