Skip to content

Commit 3737e61

Browse files
committed
ENH: Pass endianness as parameter to TrkFile._default_structarr
1 parent 2434adb commit 3737e61

File tree

1 file changed

+10
-7
lines changed

1 file changed

+10
-7
lines changed

nibabel/streamlines/trk.py

Lines changed: 10 additions & 7 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,11 +266,13 @@ 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-
# Enforce little-endian byte order for header
273-
st_arr = np.zeros((), dtype=header_2_dtype).newbyteorder('<')
272+
dt = header_2_dtype
273+
if endianness is not None:
274+
endianness = endian_codes[endianness]
275+
st_arr = np.zeros((), dtype=dt)
274276

275277
# Default values
276278
st_arr[Field.MAGIC_NUMBER] = cls.MAGIC_NUMBER
@@ -284,10 +286,10 @@ def _default_structarr(cls):
284286
return st_arr
285287

286288
@classmethod
287-
def create_empty_header(cls):
289+
def create_empty_header(cls, endianness=None):
288290
""" Return an empty compliant TRK header as dict
289291
"""
290-
st_arr = cls._default_structarr()
292+
st_arr = cls._default_structarr(endianness)
291293
return dict(zip(st_arr.dtype.names, st_arr.tolist()))
292294

293295
@classmethod
@@ -396,7 +398,8 @@ def save(self, fileobj):
396398
pointing to TRK file (and ready to write from the beginning
397399
of the TRK header data).
398400
"""
399-
header = self._default_structarr()
401+
# Enforce little-endian byte order for header
402+
header = self._default_structarr(endianness='little')
400403

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

0 commit comments

Comments
 (0)