File tree Expand file tree Collapse file tree 3 files changed +25
-6
lines changed Expand file tree Collapse file tree 3 files changed +25
-6
lines changed Original file line number Diff line number Diff line change 20
20
from .tractogram_file import HeaderError , DataError
21
21
from .tractogram import TractogramItem , Tractogram , LazyTractogram
22
22
from .header import Field
23
+ from .utils import peek_next
23
24
24
25
MEGABYTE = 1024 * 1024
25
26
@@ -201,9 +202,7 @@ def save(self, fileobj):
201
202
# Use the first element to check
202
203
# 1) the tractogram is not empty;
203
204
# 2) quantity of information saved along each streamline.
204
- first_item = next (tractogram )
205
- # Put back the first element at its place.
206
- tractogram = itertools .chain ([first_item ], tractogram )
205
+ first_item , tractogram = peek_next (tractogram )
207
206
except StopIteration :
208
207
# Empty tractogram
209
208
header [Field .NB_STREAMLINES ] = 0
Original file line number Diff line number Diff line change 22
22
from .tractogram_file import DataError , HeaderError , HeaderWarning
23
23
from .tractogram import TractogramItem , Tractogram , LazyTractogram
24
24
from .header import Field
25
+ from .utils import peek_next
25
26
26
27
27
28
MAX_NB_NAMED_SCALARS_PER_POINT = 10
@@ -435,9 +436,7 @@ def save(self, fileobj):
435
436
# Use the first element to check
436
437
# 1) the tractogram is not empty;
437
438
# 2) quantity of information saved along each streamline.
438
- first_item = next (tractogram )
439
- # Put back the first element at its place.
440
- tractogram = itertools .chain ([first_item ], tractogram )
439
+ first_item , tractogram = peek_next (tractogram )
441
440
except StopIteration :
442
441
# Empty tractogram
443
442
header [Field .NB_STREAMLINES ] = 0
Original file line number Diff line number Diff line change
1
+ import itertools
2
+
1
3
import nibabel
2
4
3
5
@@ -29,3 +31,22 @@ def get_affine_from_reference(ref):
29
31
30
32
# Assume `ref` is the name of a neuroimaging file.
31
33
return nibabel .load (ref ).affine
34
+
35
+
36
+ def peek_next (iterable ):
37
+ """ Peek next element of iterable.
38
+
39
+ Parameters
40
+ ----------
41
+ iterable
42
+ Iterable to peek the next element from.
43
+
44
+ Returns
45
+ -------
46
+ next_item
47
+ Element peeked from `iterable`.
48
+ new_iterable
49
+ Iterable behaving like if the original `iterable` was untouched.
50
+ """
51
+ next_item = next (iterable )
52
+ return next_item , itertools .chain ([next_item ], iterable )
You can’t perform that action at this time.
0 commit comments