Skip to content

Commit cb84012

Browse files
committed
put func-to-anat linear xfm invert node in one place to reduce repeated calculation.
1 parent a81b378 commit cb84012

File tree

3 files changed

+19
-9
lines changed

3 files changed

+19
-9
lines changed

CPAC/nuisance/nuisance.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -628,6 +628,7 @@ def create_regressor_workflow(nuisance_selectors,
628628
'lat_ventricles_mask_file_path',
629629
'functional_brain_mask_file_path',
630630
'func_to_anat_linear_xfm_file_path',
631+
'anat_to_func_linear_xfm_file_path',
631632
'mni_to_anat_linear_xfm_file_path',
632633
'anat_to_mni_initial_xfm_file_path',
633634
'anat_to_mni_rigid_xfm_file_path',
@@ -667,6 +668,7 @@ def create_regressor_workflow(nuisance_selectors,
667668

668669
"Transformations": {
669670
"func_to_anat_linear_xfm": (inputspec, "func_to_anat_linear_xfm_file_path"),
671+
"anat_to_func_linear_xfm": (inputspec, "anat_to_func_linear_xfm_file_path"),
670672
"mni_to_anat_linear_xfm": (inputspec, "mni_to_anat_linear_xfm_file_path"),
671673
"anat_to_mni_initial_xfm": (inputspec, "anat_to_mni_initial_xfm_file_path"),
672674
"anat_to_mni_rigid_xfm": (inputspec, "anat_to_mni_rigid_xfm_file_path"),

CPAC/nuisance/utils/__init__.py

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -324,22 +324,18 @@ def generate_summarize_tissue_mask(nuisance_wf,
324324
mask_to_epi.inputs.interp = 'nearestneighbour'
325325

326326
if regressor_selector['extraction_resolution'] == "Functional":
327-
# invert func2anat matrix to get anat2func_linear_xfm
328-
anat2func_linear_xfm = pe.Node(interface=fsl.ConvertXFM(), name='{}_anat2func_linear_xfm'.format(prev_mask_key))
329-
anat2func_linear_xfm.inputs.invert_xfm = True
330-
nuisance_wf.connect(*(
331-
pipeline_resource_pool['Transformations']['func_to_anat_linear_xfm'] +
332-
(anat2func_linear_xfm, 'in_file')
333-
))
334327
# apply anat2func matrix
335328
mask_to_epi.inputs.apply_xfm = True
336329
mask_to_epi.inputs.output_type = 'NIFTI_GZ'
337330
nuisance_wf.connect(*(
338331
pipeline_resource_pool['Functional_mean'] +
339332
(mask_to_epi, 'reference')
340333
))
341-
nuisance_wf.connect(anat2func_linear_xfm, 'out_file',
342-
mask_to_epi, 'in_matrix_file')
334+
nuisance_wf.connect(*(
335+
pipeline_resource_pool['Transformations']['anat_to_func_linear_xfm'] +
336+
(mask_to_epi, 'in_matrix_file')
337+
))
338+
343339
else:
344340
resolution = regressor_selector['extraction_resolution']
345341
mask_to_epi.inputs.apply_isoxfm = resolution

CPAC/pipeline/cpac_pipeline.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2069,6 +2069,18 @@ def build_workflow(subject_id, sub_dict, c, pipeline_name=None, num_ants_cores=1
20692069
'inputspec.func_to_anat_linear_xfm_file_path'
20702070
)
20712071

2072+
# invert func2anat matrix to get anat2func_linear_xfm
2073+
anat2func_linear_xfm = pe.Node(interface=fsl.ConvertXFM(), name='anat_to_func_linear_xfm_{0}_{1}'.format(regressors_selector_i, num_strat))
2074+
anat2func_linear_xfm.inputs.invert_xfm = True
2075+
workflow.connect(
2076+
node, out_file,
2077+
anat2func_linear_xfm, 'in_file')
2078+
workflow.connect(
2079+
anat2func_linear_xfm, 'out_file',
2080+
regressor_workflow,
2081+
'inputspec.anat_to_func_linear_xfm_file_path'
2082+
)
2083+
20722084
node, out_file = new_strat.get_leaf_properties()
20732085
workflow.connect(
20742086
node, out_file,

0 commit comments

Comments
 (0)