1
+ import numpy as np
2
+
1
3
import nibabel as nib
2
4
from nibabel .fileslice import fill_slicer
3
5
import nibabel .pointset as ps
@@ -16,6 +18,26 @@ def __init__(self, data, coordaxis, header=None):
16
18
self .coordaxis = coordaxis
17
19
self .header = header
18
20
21
+ @property
22
+ def shape (self ):
23
+ return self .data .shape
24
+
25
+ def __getitem__ (self , slicer ):
26
+ if isinstance (slicer , str ):
27
+ slicer = self .coordaxis .get_indices (slicer )
28
+ elif isinstance (slicer , list ):
29
+ slicer = np .hstack ([self .coordaxis .get_indices (sub ) for sub in slicer ])
30
+
31
+ if isinstance (slicer , range ):
32
+ slicer = slice (slicer .start , slicer .stop , slicer .step )
33
+
34
+ data = self .data
35
+ if not isinstance (slicer , slice ):
36
+ data = np .asanyarray (data )
37
+ return self .__class__ (data [slicer ],
38
+ self .coordaxis [slicer ],
39
+ header = self .header .copy ())
40
+
19
41
@classmethod
20
42
def from_image (klass , img ):
21
43
coordaxis = CoordinateAxis .from_header (img .header )
@@ -53,7 +75,7 @@ def __getitem__(self, slicer):
53
75
Return a sub-sampled CoordinateAxis containing structures
54
76
matching the indices provided.
55
77
"""
56
- if slicer is Ellipsis or slicer == slice (None ):
78
+ if slicer is Ellipsis or isinstance ( slicer , slice ) and slicer == slice (None ):
57
79
return self
58
80
elif isinstance (slicer , slice ):
59
81
slicer = fill_slicer (slicer , len (self ))
0 commit comments