Skip to content

Commit 3dc3d71

Browse files
committed
RF: move create_empty_header logic to top level
Move the creation of the empty streamline header into the kinda-abstract base class. Adjust the Trk file header creation accordingly.
1 parent bac044b commit 3dc3d71

File tree

3 files changed

+15
-14
lines changed

3 files changed

+15
-14
lines changed

nibabel/streamlines/tck.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,6 @@ def __init__(self, tractogram, header=None):
7272
This is in contrast with TRK's internal convention where it would
7373
have referred to a corner.
7474
"""
75-
if header is None:
76-
header = self.create_empty_header()
77-
7875
super(TckFile, self).__init__(tractogram, header)
7976

8077
@classmethod
@@ -103,7 +100,7 @@ def is_correct_format(cls, fileobj):
103100

104101
@classmethod
105102
def create_empty_header(cls):
106-
""" Return an empty compliant TCK header. """
103+
""" Return an empty compliant TCK header as dict """
107104
header = {}
108105

109106
# Default values

nibabel/streamlines/tractogram_file.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ class TractogramFile(with_metaclass(ABCMeta)):
3939

4040
def __init__(self, tractogram, header=None):
4141
self._tractogram = tractogram
42-
self._header = {} if header is None else header
42+
self._header = self.create_empty_header() if header is None else header
4343

4444
@property
4545
def tractogram(self):
@@ -77,10 +77,10 @@ def is_correct_format(cls, fileobj):
7777
"""
7878
raise NotImplementedError()
7979

80-
@abstractclassmethod
80+
@classmethod
8181
def create_empty_header(cls):
8282
""" Returns an empty header for this streamlines file format. """
83-
raise NotImplementedError()
83+
return {}
8484

8585
@abstractclassmethod
8686
def load(cls, fileobj, lazy_load=True):

nibabel/streamlines/trk.py

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -235,10 +235,6 @@ def __init__(self, tractogram, header=None):
235235
and *mm* space where coordinate (0,0,0) refers to the center
236236
of the voxel.
237237
"""
238-
if header is None:
239-
header_rec = self.create_empty_header()
240-
header = dict(zip(header_rec.dtype.names, header_rec[0]))
241-
242238
super(TrkFile, self).__init__(tractogram, header)
243239

244240
@classmethod
@@ -266,8 +262,9 @@ def is_correct_format(cls, fileobj):
266262
return magic_number == cls.MAGIC_NUMBER
267263

268264
@classmethod
269-
def create_empty_header(cls):
270-
""" Return an empty compliant TRK header. """
265+
def _default_structarr(cls):
266+
""" Return an empty compliant TRK header as numpy structured array
267+
"""
271268
header = np.zeros(1, dtype=header_2_dtype)
272269

273270
# Default values
@@ -281,6 +278,13 @@ def create_empty_header(cls):
281278

282279
return header
283280

281+
@classmethod
282+
def create_empty_header(cls):
283+
""" Return an empty compliant TRK header as dict
284+
"""
285+
header_rec = cls._default_structarr()
286+
return dict(zip(header_rec.dtype.names, header_rec))
287+
284288
@classmethod
285289
def load(cls, fileobj, lazy_load=False):
286290
""" Loads streamlines from a filename or file-like object.
@@ -388,7 +392,7 @@ def save(self, fileobj):
388392
of the TRK header data).
389393
"""
390394
# Enforce little-endian byte order for header
391-
header = self.create_empty_header().newbyteorder('<')
395+
header = self._default_structarr().newbyteorder('<')
392396

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

0 commit comments

Comments
 (0)