[Neuroimaging] Nibabel API change - always read as float
Matthew Brett
matthew.brett at gmail.com
Tue Jul 21 01:22:00 CEST 2015
Hi,
On Mon, Jul 20, 2015 at 11:42 PM, Alexis Roche <alexis.roche at gmail.com> wrote:
>
>> Can you think of a common use of an arbitrary dtype here? I mean
>> dtype not equal to the on-disk dtype or the scaled dtype? It seems
>> as if that use might be rather specialized - could it be done in the
>> user code that starts with the code above?
>
>
> Right. I can think of the following cases:
> * a mask image encoded in int16 on disk, but you want an array of booleans
> in memory (nifti does not support boolean format)
I guess you can assume no scalefactors? Then:
data = img.get_data(as_float=False).astype(np.bool)
That is as memory-efficient as you can do that, I think.
> * an image of positive-valued MR parameters encoded in int, but you want
> unsigned int in memory
> Of course, that could be done via the 'dataobj' attribute, which requires
> advanced knowledge of nibabel I think. I don't think this is very
> specialized usage.
Same idea if no scalefactors. If you do have scalefactors, and you
don't want them applied, yes, you'll have to use
`img.dataobj.get_unscaled()` for that, but it does seem pretty
specialized to throw away scalefactors in that situation.
Or did you mean that `get_data` also has to take care only to load
small parts of the image at a time, and apply scalefactors, and then
cast that part of the array?
Cheers,
Matthew
More information about the Neuroimaging
mailing list