Skip to content

Commit b3db08a

Browse files
committed
fix: make FieldmapReportlet accept 4D files
1 parent efe61ec commit b3db08a

File tree

2 files changed

+19
-3
lines changed

2 files changed

+19
-3
lines changed

sdcflows/interfaces/reportlets.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
# vi: set ft=python sts=4 ts=4 sw=4 et:
33
"""Interfaces to generate speciality reportlets."""
44
import numpy as np
5+
import nibabel as nb
56
from nilearn.image import threshold_img, load_img
67
from niworkflows import NIWORKFLOWS_LOG
78
from niworkflows.viz.utils import cuts_from_bbox, compose_view
@@ -25,6 +26,7 @@ class _FieldmapReportletInputSpec(reporting.ReportCapableInputSpec):
2526
desc='a label name for the reference mosaic')
2627
moving_label = traits.Str('Fieldmap (Hz)', usedefault=True,
2728
desc='a label name for the reference mosaic')
29+
# pe_dir = traits.Enum(*tuple("ijk"), desc="PE direction")
2830

2931

3032
class FieldmapReportlet(reporting.ReportCapableInterface):
@@ -47,7 +49,13 @@ def _generate_report(self):
4749
NIWORKFLOWS_LOG.info('Generating visual report')
4850

4951
movnii = refnii = load_img(self.inputs.reference)
50-
fmapnii = load_img(self.inputs.fieldmap)
52+
fmapnii = nb.squeeze_image(load_img(self.inputs.fieldmap))
53+
54+
if fmapnii.dataobj.ndim == 4:
55+
for i, tstep in enumerate(nb.four_to_three(fmapnii)):
56+
if np.any(np.asanyarray(tstep.dataobj) != 0):
57+
fmapnii = tstep
58+
break
5159

5260
if isdefined(self.inputs.moving):
5361
movnii = load_img(self.inputs.moving)

sdcflows/models/tests/test_pepolar.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,13 @@ def test_topup_wf(tmpdir, datadir, workdir, outdir, epi_path):
4646
# fmt: on
4747

4848
if outdir:
49+
from nipype.interfaces.afni import Automask
4950
from ...interfaces.reportlets import FieldmapReportlet
5051

52+
pre_mask = pe.Node(Automask(dilate=1, outputtype="NIFTI_GZ"),
53+
name="pre_mask")
54+
merge_corrected = pe.Node(IntraModalMerge(hmc=False), name="merge_corrected")
55+
5156
rep = pe.Node(
5257
FieldmapReportlet(reference_label="EPI Reference"), "simple_report"
5358
)
@@ -67,8 +72,11 @@ def test_topup_wf(tmpdir, datadir, workdir, outdir, epi_path):
6772

6873
# fmt: off
6974
wf.connect([
70-
(topup_wf, rep, [("outputnode.fieldmap", "fieldmap"),
71-
("outputnode.corrected", "reference")]),
75+
(topup_wf, pre_mask, [("outputnode.corrected", "in_file")]),
76+
(topup_wf, merge_corrected, [("outputnode.corrected", "in_files")]),
77+
(merge_corrected, rep, [("out_avg", "reference")]),
78+
(topup_wf, rep, [("outputnode.fieldmap", "fieldmap")]),
79+
(pre_mask, rep, [("out_file", "mask")]),
7280
(rep, ds_report, [("out_report", "in_file")]),
7381
])
7482
# fmt: on

0 commit comments

Comments
 (0)