1+ import numpy as np
2+
13import nibabel as nib
24from nibabel .fileslice import fill_slicer
35import nibabel .pointset as ps
@@ -16,6 +18,26 @@ def __init__(self, data, coordaxis, header=None):
1618 self .coordaxis = coordaxis
1719 self .header = header
1820
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+
1941 @classmethod
2042 def from_image (klass , img ):
2143 coordaxis = CoordinateAxis .from_header (img .header )
@@ -53,7 +75,7 @@ def __getitem__(self, slicer):
5375 Return a sub-sampled CoordinateAxis containing structures
5476 matching the indices provided.
5577 """
56- if slicer is Ellipsis or slicer == slice (None ):
78+ if slicer is Ellipsis or isinstance ( slicer , slice ) and slicer == slice (None ):
5779 return self
5880 elif isinstance (slicer , slice ):
5981 slicer = fill_slicer (slicer , len (self ))
0 commit comments