1313
1414from nibabel .openers import Opener
1515from nibabel .py3k import asstr
16- from nibabel .volumeutils import (native_code , swapped_code )
16+ from nibabel .volumeutils import (native_code , swapped_code , endian_codes )
1717from nibabel .orientations import (aff2axcodes , axcodes2ornt )
1818
1919from .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