Skip to content

Commit f3d115f

Browse files
authored
Merge pull request #782 from effigies/fix/s390x_trk_bug
FIX: Set TRK byte order to little-endian before filling values
2 parents b356a64 + 927b6ce commit f3d115f

File tree

2 files changed

+12
-8
lines changed

2 files changed

+12
-8
lines changed

nibabel/brikhead.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -295,8 +295,8 @@ def __init__(self, info):
295295
--------
296296
>>> fname = os.path.join(datadir, 'example4d+orig.HEAD')
297297
>>> header = AFNIHeader(parse_AFNI_header(fname))
298-
>>> header.get_data_dtype()
299-
dtype('int16')
298+
>>> header.get_data_dtype().str
299+
'<i2'
300300
>>> header.get_zooms()
301301
(3.0, 3.0, 3.0, 3.0)
302302
>>> header.get_data_shape()

nibabel/streamlines/trk.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
from nibabel.openers import Opener
1515
from nibabel.py3k import asstr
16-
from nibabel.volumeutils import (native_code, swapped_code)
16+
from nibabel.volumeutils import (native_code, swapped_code, endian_codes)
1717
from nibabel.orientations import (aff2axcodes, axcodes2ornt)
1818

1919
from .array_sequence import create_arraysequences_from_generator
@@ -266,10 +266,14 @@ def is_correct_format(cls, fileobj):
266266
return magic_number == cls.MAGIC_NUMBER
267267

268268
@classmethod
269-
def _default_structarr(cls):
269+
def _default_structarr(cls, endianness=None):
270270
""" Return an empty compliant TRK header as numpy structured array
271271
"""
272-
st_arr = np.zeros((), dtype=header_2_dtype)
272+
dt = header_2_dtype
273+
if endianness is not None:
274+
endianness = endian_codes[endianness]
275+
dt = dt.newbyteorder(endianness)
276+
st_arr = np.zeros((), dtype=dt)
273277

274278
# Default values
275279
st_arr[Field.MAGIC_NUMBER] = cls.MAGIC_NUMBER
@@ -283,10 +287,10 @@ def _default_structarr(cls):
283287
return st_arr
284288

285289
@classmethod
286-
def create_empty_header(cls):
290+
def create_empty_header(cls, endianness=None):
287291
""" Return an empty compliant TRK header as dict
288292
"""
289-
st_arr = cls._default_structarr()
293+
st_arr = cls._default_structarr(endianness)
290294
return dict(zip(st_arr.dtype.names, st_arr.tolist()))
291295

292296
@classmethod
@@ -396,7 +400,7 @@ def save(self, fileobj):
396400
of the TRK header data).
397401
"""
398402
# Enforce little-endian byte order for header
399-
header = self._default_structarr().newbyteorder('<')
403+
header = self._default_structarr(endianness='little')
400404

401405
# Override hdr's fields by those contained in `header`.
402406
for k, v in self.header.items():

0 commit comments

Comments
 (0)