Skip to content

Commit cd2a2b9

Browse files
author
Soichi Hayashi
committed
optimized performance (now it's 4% faster than the original code)
1 parent a841055 commit cd2a2b9

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

nibabel/streamlines/tck.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -397,7 +397,7 @@ def _read(cls, fileobj, header, buffer_size=4):
397397

398398
eof = False
399399
n_streams = 0
400-
leftover = np.empty([0,3])
400+
leftover = np.empty((0,3), dtype='<f4')
401401
while not eof:
402402

403403
# read raw files from file
@@ -415,15 +415,18 @@ def _read(cls, fileobj, header, buffer_size=4):
415415
begin = 0
416416
for i in range(0, len(delims)):
417417
end = delims[i]
418-
stream = np.append(leftover, coords[begin:end], axis=0)
419-
leftover = np.empty([0,3])
418+
if i == 0:
419+
stream = np.vstack((leftover, coords[begin:end]))
420+
else:
421+
stream = coords[begin:end]
422+
leftover = np.empty((0,3), dtype='<f4')
420423
yield stream
421424
n_streams += 1
422425

423426
begin = end+1 #skip the delimiter
424427

425428
# the rest gets appended to the leftover
426-
leftover = np.append(leftover, coords[begin:], axis=0)
429+
leftover = np.vstack((leftover, coords[begin:]))
427430

428431
if not np.all(np.isinf(leftover), axis=1):
429432
raise DataError("Expecting end-of-file marker 'inf inf inf'")

0 commit comments

Comments
 (0)