Skip to content

Commit

Permalink
Try to fix GE HMC.
Browse files Browse the repository at this point in the history
  • Loading branch information
tsalo committed Nov 28, 2023
1 parent ed279aa commit 0c8fa3d
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 13 deletions.
3 changes: 3 additions & 0 deletions aslprep/interfaces/utility.py
Original file line number Diff line number Diff line change
Expand Up @@ -215,6 +215,9 @@ def _run_interface(self, runtime):
out_par = [None] * aslcontext.shape[0]
out_mat_files = [None] * aslcontext.shape[0]

assert len(self.inputs.volume_types) == len(self.inputs.mat_files)
assert len(self.inputs.volume_types) == len(self.inputs.par_files)

for i_type, volume_type in enumerate(self.inputs.volume_types):
type_mat_files = self.inputs.mat_files[i_type]
type_par_file = self.inputs.par_files[i_type]
Expand Down
29 changes: 16 additions & 13 deletions aslprep/workflows/asl/hmc.py
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,17 @@ def init_asl_hmc_wf(
(split_by_volume_type, mcflirt, [("out_files", "in_file")]),
]) # fmt:skip

listify_mat_files = pe.MapNode(
niu.Function(
function=listify,
inputnames=["value"],
outputnames=["value"],
),
name="listify_mat_files",
iterfield=["value"],
)
workflow.connect([(mcflirt, listify_mat_files, [("mat_file", "value")])])

# Combine the motpars files, mat files, and rms files across the different MCFLIRTed files,
# based on the aslcontext file.
combine_motpars = pe.Node(
Expand All @@ -149,46 +160,38 @@ def init_asl_hmc_wf(
workflow.connect([
(inputnode, combine_motpars, [("aslcontext", "aslcontext")]),
(split_by_volume_type, combine_motpars, [("volume_types", "volume_types")]),
(mcflirt, combine_motpars, [
(("mat_file", listify), "mat_files"),
("par_file", "par_files"),
]),
(mcflirt, combine_motpars, [("par_file", "par_files")]),
(listify_mat_files, combine_motpars, [("value", "mat_files")]),
]) # fmt:skip

# Use rmsdiff to calculate relative rms from transform files.
rmsdiff = pe.Node(PairwiseRMSDiff(), name="rmsdiff")

# fmt:off
workflow.connect([
(inputnode, rmsdiff, [("raw_ref_image", "ref_file")]),
(combine_motpars, rmsdiff, [("mat_file_list", "in_files")]),
(rmsdiff, outputnode, [("out_file", "rmsd_file")]),
])
# fmt:on
]) # fmt:skip

fsl2itk = pe.Node(MCFLIRT2ITK(), name="fsl2itk", mem_gb=0.05, n_procs=omp_nthreads)

# fmt:off
workflow.connect([
(inputnode, fsl2itk, [
("raw_ref_image", "in_source"),
("raw_ref_image", "in_reference"),
]),
(combine_motpars, fsl2itk, [("mat_file_list", "in_files")]),
(fsl2itk, outputnode, [("out_file", "xforms")]),
])
# fmt:on
]) # fmt:skip

normalize_motion = pe.Node(
NormalizeMotionParams(format="FSL"),
name="normalize_motion",
mem_gb=DEFAULT_MEMORY_MIN_GB,
)
# fmt:off
workflow.connect([
(combine_motpars, normalize_motion, [("combined_par_file", "in_file")]),
(normalize_motion, outputnode, [("out_file", "movpar_file")]),
])
# fmt:on
]) # fmt:skip

return workflow

0 comments on commit 0c8fa3d

Please sign in to comment.