Skip to content

Commit b98ba4f

Browse files
author
Soichi Hayashi
authored
Merge pull request #2 from effigies/fix/streamlines_infnan
FIX: Restore missing delimiter error message
2 parents a848bb4 + 196f13a commit b98ba4f

File tree

2 files changed

+10
-6
lines changed

2 files changed

+10
-6
lines changed

nibabel/cifti2/cifti2.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -287,7 +287,7 @@ def rgba(self):
287287
return (self.red, self.green, self.blue, self.alpha)
288288

289289
def _to_xml_element(self):
290-
if self.label is '':
290+
if self.label == '':
291291
raise Cifti2HeaderError('Label needs a name')
292292
try:
293293
v = int(self.key)

nibabel/streamlines/tck.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -385,7 +385,6 @@ def _read(cls, fileobj, header, buffer_size=4):
385385
Streamline points
386386
"""
387387
dtype = header["_dtype"]
388-
389388
coordinate_size = 3 * dtype.itemsize
390389
# Make buffer_size an integer and a multiple of coordinate_size.
391390
buffer_size = int(buffer_size * MEGABYTE)
@@ -398,16 +397,16 @@ def _read(cls, fileobj, header, buffer_size=4):
398397
f.seek(header["_offset_data"], os.SEEK_SET)
399398

400399
eof = False
401-
n_streams = 0
402400
leftover = np.empty((0, 3), dtype='<f4')
401+
n_streams = 0
402+
403403
while not eof:
404404
buff = bytearray(buffer_size)
405405
n_read = f.readinto(buff)
406406
eof = n_read != buffer_size
407407
if eof:
408408
buff = buff[:n_read]
409409

410-
# read raw files from file
411410
raw_values = np.frombuffer(buff, dtype=dtype)
412411

413412
# Convert raw_values into a list of little-endian triples (for x,y,z coord)
@@ -416,6 +415,7 @@ def _read(cls, fileobj, header, buffer_size=4):
416415
# Find stream delimiter locations (all NaNs)
417416
delims = np.where(np.isnan(coords).all(axis=1))[0]
418417

418+
# Recover leftovers, which can't have delimiters in them
419419
if leftover.size:
420420
delims += leftover.shape[0]
421421
coords = np.vstack((leftover, coords))
@@ -428,11 +428,15 @@ def _read(cls, fileobj, header, buffer_size=4):
428428
n_streams += 1
429429
begin = delim + 1
430430

431-
# the rest gets appended to the leftover
431+
# The rest gets appended to the leftover
432432
leftover = coords[begin:]
433433

434434
if not (leftover.shape == (1, 3) and np.isinf(leftover).all()):
435-
raise DataError("Expecting end-of-file marker 'inf inf inf'")
435+
if n_streams == 0:
436+
msg = "Cannot find a streamline delimiter. This file might be corrupted."
437+
else:
438+
msg = "Expecting end-of-file marker 'inf inf inf'"
439+
raise DataError(msg)
436440

437441
# In case the 'count' field was not provided.
438442
header[Field.NB_STREAMLINES] = n_streams

0 commit comments

Comments
 (0)