[Neuroimaging] Nibabel API change - always read as float
moloney at ohsu.edu
Wed Jul 8 10:22:04 CEST 2015
I meant that the Nifti standard doesn't give much guidance on the interaction
between scl_slope and the storage datatype.
From: Neuroimaging [neuroimaging-bounces+moloney=ohsu.edu at python.org] on behalf of Satrajit Ghosh [satra at mit.edu]
Sent: Tuesday, July 07, 2015 7:35 PM
To: Neuroimaging analysis in Python
Subject: Re: [Neuroimaging] Nibabel API change - always read as float
here is the line:
Floating point types are presumed to be stored in IEEE-754 format.
this is about how data are stored on disk. nifti-1 does not say anything about what a user does with data. i only intended to say that data stored back should conform to ieee-754 when stored as dt_float.
On Tue, Jul 7, 2015 at 2:16 PM, Brendan Moloney <moloney at ohsu.edu<mailto:moloney at ohsu.edu>> wrote:
> the nifti-1 standard (http://nifti.nimh.nih.gov/pub/dist/src/niftilib/nifti1.h)
> has a datatype field. there are two scenarios with scaling:
> 1. scl_slope == 0:
> 2. scl_slope != 0:
> data should be converted to IEEE-754 floats as per the nifti standard.
> given nifti was around 2001 this probably did not reflect the updated
> IEE754-2008 standard, but > relied on the 1985 standard. i don't think the
> nifti-1 standard makes it clear what this float should correspond to, i.e.,
> 16/32/64/128 bit floats.
I don't see that in the standard. All I see is:
If the scl_slope field is nonzero, then each voxel value in the dataset
should be scaled as
y = scl_slope * x + scl_inter
where x = voxel value stored
y = "true" voxel value
Normally, we would expect this scaling to be used to store "true" floating
values in a smaller integer datatype, but that is not required. That is,
it is legal to use scaling even if the datatype is a float type (crazy,
perhaps, but legal).
Neuroimaging mailing list
Neuroimaging at python.org<mailto:Neuroimaging at python.org>
More information about the Neuroimaging