[Neuroimaging] trouble with fileslice
Matthew Brett
matthew.brett at gmail.com
Wed Aug 31 13:20:16 EDT 2016
Hi,
On Tue, Aug 30, 2016 at 10:05 AM, Natalia Mesa
<v-nataliam at alleninstitute.org> wrote:
> Hi,
>
>
>
> I’m trying to extract an ROI from a large binary file. Whenever I run
> nibabel.fileslice.fileslice, I’m getting the following error:
>
>
>
>
>
> C:\Anaconda2\lib\site-packages\nibabel\fileslice.pyc in
> optimize_read_slicers(sliceobj, in_shape, itemsize, heuristic)
>
> 560 if not isinstance(read_slicer, Integral):
>
> 561 post_slicers.append(post_slicer)
>
> --> 562 stride*=dim_len
>
> 563
>
> 564 return tuple(read_slicers), tuple(post_slicers)
>
>
>
> TypeError: unsupported operand type(s) for *=: 'getset_descriptor' and 'int'
>
>
>
> I’m calling this function with the following:
>
> filepath = filepath
>
> dtype = 'uint16'
>
> chunksize = int((npix*nframes))
>
>
>
> sliceobj=slice((0,20,None),(0,20,None))
>
>
>
> f = open(filepath, 'r')
>
>
>
> dat=nibabel.fileslice.fileslice(f, sliceobj=sliceobj, shape=(2048,2048,100),
> dtype=np.uint16)
>
>
>
> The binary file I’m trying to analyze is imaging data, and thus the final
> shape of the array is 3D. The slice object I’m inputting is a 20 by 20 pixel
> ROI.
I think you actually want:
sliceobj = (slice(0,20,None), slice(0,20,None))
This gives you the equivalent of slicing like `arr[:20, :20]`.
I also see that you'll need to do:
import numpy as np
dtype = np.dtype('uint16')
The function could be smarter about working that out, I'll fix that up.
Does that work for you?
Matthew
More information about the Neuroimaging
mailing list