Skip to content

Commit 927b6ce

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

File tree

1 file changed

+11
-7
lines changed

1 file changed

+11
-7
lines changed

nibabel/streamlines/trk.py

Lines changed: 11 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,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-
# 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+
dt = dt.newbyteorder(endianness)
276+
st_arr = np.zeros((), dtype=dt)
274277

275278
# Default values
276279
st_arr[Field.MAGIC_NUMBER] = cls.MAGIC_NUMBER
@@ -284,10 +287,10 @@ def _default_structarr(cls):
284287
return st_arr
285288

286289
@classmethod
287-
def create_empty_header(cls):
290+
def create_empty_header(cls, endianness=None):
288291
""" Return an empty compliant TRK header as dict
289292
"""
290-
st_arr = cls._default_structarr()
293+
st_arr = cls._default_structarr(endianness)
291294
return dict(zip(st_arr.dtype.names, st_arr.tolist()))
292295

293296
@classmethod
@@ -396,7 +399,8 @@ def save(self, fileobj):
396399
pointing to TRK file (and ready to write from the beginning
397400
of the TRK header data).
398401
"""
399-
header = self._default_structarr()
402+
# Enforce little-endian byte order for header
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)