9
9
>>> os.chdir(datadir)
10
10
"""
11
11
from __future__ import print_function , division , unicode_literals , absolute_import
12
- from builtins import open
12
+ from io import open
13
13
14
14
import os .path as op
15
15
import nibabel as nb
@@ -54,10 +54,11 @@ def read_mrtrix_tracks(in_file, as_generator=True):
54
54
55
55
56
56
def read_mrtrix_header (in_file ):
57
- fileobj = open (in_file , 'r ' )
57
+ fileobj = open (in_file , 'rb ' )
58
58
header = {}
59
59
iflogger .info ('Reading header data...' )
60
60
for line in fileobj :
61
+ line = line .decode ()
61
62
if line == 'END\n ' :
62
63
iflogger .info ('Reached the end of the header!' )
63
64
break
@@ -77,7 +78,7 @@ def read_mrtrix_header(in_file):
77
78
def read_mrtrix_streamlines (in_file , header , as_generator = True ):
78
79
offset = header ['offset' ]
79
80
stream_count = header ['count' ]
80
- fileobj = open (in_file , 'r ' )
81
+ fileobj = open (in_file , 'rb ' )
81
82
fileobj .seek (offset )
82
83
endianness = native_code
83
84
f4dt = np .dtype (endianness + 'f4' )
@@ -137,9 +138,14 @@ def track_gen(track_points):
137
138
if n_streams == stream_count :
138
139
iflogger .info ('100% : {n} tracks read' .format (n = n_streams ))
139
140
raise StopIteration
140
- if n_streams % int (stream_count / 100 ) == 0 :
141
- percent = int (float (n_streams ) / float (stream_count ) * 100 )
142
- iflogger .info ('{p}% : {n} tracks read' .format (p = percent , n = n_streams ))
141
+ try :
142
+ if n_streams % int (stream_count / 100 ) == 0 :
143
+ percent = int (float (n_streams ) / float (stream_count ) * 100 )
144
+ iflogger .info ('{p}% : {n} tracks read' .format (p = percent ,
145
+ n = n_streams ))
146
+ except ZeroDivisionError :
147
+ iflogger .info ('{} stream read out of {}' .format (n_streams ,
148
+ stream_count ))
143
149
track_points , nonfinite_list = points_per_track (offset )
144
150
fileobj .seek (offset )
145
151
streamlines = track_gen (track_points )
0 commit comments