Skip to content

Commit ffc2555

Browse files
authored
Merge pull request #356 from effigies/fix/datasink_buserror
FIX: BusError in ``DerivativesDataSink``
2 parents 076aed9 + 509e21c commit ffc2555

File tree

2 files changed

+27
-24
lines changed

2 files changed

+27
-24
lines changed

niworkflows/interfaces/bids.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
from pathlib import Path
1313
from shutil import copytree, rmtree
1414

15+
import numpy as np
1516
import nibabel as nb
1617

1718
from nipype import logging
@@ -490,7 +491,7 @@ def _run_interface(self, runtime):
490491
hdr.set_xyzt_units(*units)
491492

492493
# Rewrite file with new header
493-
nii.__class__(nii.get_data(), nii.affine, hdr).to_filename(
494+
nii.__class__(np.array(nii.dataobj), nii.affine, hdr).to_filename(
494495
out_file)
495496

496497
if len(self._results['out_file']) == 1:

niworkflows/interfaces/tests/test_bids.py

Lines changed: 25 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -17,35 +17,37 @@
1717
BOLD_PATH = 'ds054/sub-100185/func/sub-100185_task-machinegame_run-01_bold.nii.gz'
1818

1919

20-
@pytest.mark.parametrize('space, size, units, xcodes, fixed', [
21-
('T1w', (30, 30, 30, 10), ('mm', 'sec'), (2, 2), [False]),
22-
('T1w', (30, 30, 30, 10), ('mm', 'sec'), (0, 2), [True]),
23-
('T1w', (30, 30, 30, 10), ('mm', 'sec'), (0, 0), [True]),
24-
('T1w', (30, 30, 30, 10), ('mm', None), (2, 2), [True]),
25-
('T1w', (30, 30, 30, 10), (None, None), (0, 2), [True]),
26-
('T1w', (30, 30, 30, 10), (None, 'sec'), (0, 0), [True]),
27-
('MNI152Lin', (30, 30, 30, 10), ('mm', 'sec'), (4, 4), [False]),
28-
('MNI152Lin', (30, 30, 30, 10), ('mm', 'sec'), (0, 2), [True]),
29-
('MNI152Lin', (30, 30, 30, 10), ('mm', 'sec'), (0, 0), [True]),
30-
('MNI152Lin', (30, 30, 30, 10), ('mm', None), (4, 4), [True]),
31-
('MNI152Lin', (30, 30, 30, 10), (None, None), (0, 2), [True]),
32-
('MNI152Lin', (30, 30, 30, 10), (None, 'sec'), (0, 0), [True]),
33-
(None, (30, 30, 30, 10), ('mm', 'sec'), (1, 1), [False]),
34-
(None, (30, 30, 30, 10), ('mm', 'sec'), (0, 0), [True]),
35-
(None, (30, 30, 30, 10), ('mm', 'sec'), (0, 2), [True]),
36-
(None, (30, 30, 30, 10), ('mm', None), (1, 1), [True]),
37-
(None, (30, 30, 30, 10), (None, None), (0, 2), [True]),
38-
(None, (30, 30, 30, 10), (None, 'sec'), (0, 0), [True]),
20+
@pytest.mark.parametrize('space, size, units, xcodes, zipped, fixed', [
21+
('T1w', (30, 30, 30, 10), ('mm', 'sec'), (2, 2), True, [False]),
22+
('T1w', (30, 30, 30, 10), ('mm', 'sec'), (0, 2), True, [True]),
23+
('T1w', (30, 30, 30, 10), ('mm', 'sec'), (0, 0), True, [True]),
24+
('T1w', (30, 30, 30, 10), ('mm', None), (2, 2), True, [True]),
25+
('T1w', (30, 30, 30, 10), (None, None), (0, 2), True, [True]),
26+
('T1w', (30, 30, 30, 10), (None, 'sec'), (0, 0), True, [True]),
27+
('MNI152Lin', (30, 30, 30, 10), ('mm', 'sec'), (4, 4), True, [False]),
28+
('MNI152Lin', (30, 30, 30, 10), ('mm', 'sec'), (0, 2), True, [True]),
29+
('MNI152Lin', (30, 30, 30, 10), ('mm', 'sec'), (0, 0), True, [True]),
30+
('MNI152Lin', (30, 30, 30, 10), ('mm', None), (4, 4), True, [True]),
31+
('MNI152Lin', (30, 30, 30, 10), (None, None), (0, 2), True, [True]),
32+
('MNI152Lin', (30, 30, 30, 10), (None, 'sec'), (0, 0), True, [True]),
33+
(None, (30, 30, 30, 10), ('mm', 'sec'), (1, 1), True, [False]),
34+
(None, (30, 30, 30, 10), ('mm', 'sec'), (0, 0), True, [True]),
35+
(None, (30, 30, 30, 10), ('mm', 'sec'), (0, 2), True, [True]),
36+
(None, (30, 30, 30, 10), ('mm', None), (1, 1), True, [True]),
37+
(None, (30, 30, 30, 10), (None, None), (0, 2), True, [True]),
38+
(None, (30, 30, 30, 10), (None, 'sec'), (0, 0), True, [True]),
39+
(None, (30, 30, 30, 10), (None, 'sec'), (0, 0), False, [True]),
3940
])
40-
def test_DerivativesDataSink_bold(tmpdir, space, size, units, xcodes, fixed):
41+
def test_DerivativesDataSink_bold(tmpdir, space, size, units, xcodes, zipped, fixed):
4142
tmpdir.chdir()
4243

44+
fname = 'source.nii.gz' if zipped else 'source.nii'
45+
4346
hdr = nb.Nifti1Header()
4447
hdr.set_qform(np.eye(4), code=xcodes[0])
4548
hdr.set_sform(np.eye(4), code=xcodes[1])
4649
hdr.set_xyzt_units(*units)
47-
nb.Nifti1Image(np.zeros(size), np.eye(4), hdr).to_filename(
48-
'source.nii.gz')
50+
nb.Nifti1Image(np.zeros(size), np.eye(4), hdr).to_filename(fname)
4951

5052
# BOLD derivative in T1w space
5153
dds = bintfs.DerivativesDataSink(
@@ -54,7 +56,7 @@ def test_DerivativesDataSink_bold(tmpdir, space, size, units, xcodes, fixed):
5456
desc='preproc',
5557
source_file=BOLD_PATH,
5658
space=space or Undefined,
57-
in_file='source.nii.gz'
59+
in_file=fname,
5860
).run()
5961

6062
nii = nb.load(dds.outputs.out_file)

0 commit comments

Comments
 (0)