Struct nifti::header::NiftiHeader[][src]

pub struct NiftiHeader {
Show fields pub sizeof_hdr: i32, pub data_type: [u8; 10], pub db_name: [u8; 18], pub extents: i32, pub session_error: i16, pub regular: u8, pub dim_info: u8, pub dim: [u16; 8], pub intent_p1: f32, pub intent_p2: f32, pub intent_p3: f32, pub intent_code: i16, pub datatype: i16, pub bitpix: i16, pub slice_start: i16, pub pixdim: [f32; 8], pub vox_offset: f32, pub scl_slope: f32, pub scl_inter: f32, pub slice_end: i16, pub slice_code: u8, pub xyzt_units: u8, pub cal_max: f32, pub cal_min: f32, pub slice_duration: f32, pub toffset: f32, pub glmax: i32, pub glmin: i32, pub descrip: Vec<u8>, pub aux_file: [u8; 24], pub qform_code: i16, pub sform_code: i16, pub quatern_b: f32, pub quatern_c: f32, pub quatern_d: f32, pub quatern_x: f32, pub quatern_y: f32, pub quatern_z: f32, pub srow_x: [f32; 4], pub srow_y: [f32; 4], pub srow_z: [f32; 4], pub intent_name: [u8; 16], pub magic: [u8; 4], pub endianness: Endianness,
}
Expand description

The NIFTI-1 header data type. All fields are public and named after the specification’s header file. The type of each field was adjusted according to their use and array limitations.

Examples

use nifti::{NiftiHeader, Endianness};

let hdr1 = NiftiHeader::from_file("0000.hdr")?;
let hdr2 = NiftiHeader::from_file("0001.hdr.gz")?;
let hdr3 = NiftiHeader::from_file("4321.nii.gz")?;

Or to build one yourself:

let mut hdr = NiftiHeader::default();
hdr.cal_min = 0.;
hdr.cal_max = 128.;
hdr.datatype = 4;
assert_eq!(hdr.cal_min, 0.);
assert_eq!(hdr.cal_max, 128.);
assert_eq!(hdr.data_type().unwrap(), NiftiType::Int16);

Fields

sizeof_hdr: i32

Header size, must be 348

data_type: [u8; 10]

Unused in NIFTI-1

db_name: [u8; 18]

Unused in NIFTI-1

extents: i32

Unused in NIFTI-1

session_error: i16

Unused in NIFTI-1

regular: u8

Unused in NIFTI-1

dim_info: u8

MRI slice ordering

dim: [u16; 8]

Data array dimensions

intent_p1: f32

1st intent parameter

intent_p2: f32

2nd intent parameter

intent_p3: f32

3rd intent parameter

intent_code: i16

NIFTI_INTENT_* code

datatype: i16

Defines the data type!

bitpix: i16

Number of bits per voxel

slice_start: i16

First slice index

pixdim: [f32; 8]

Grid spacings

vox_offset: f32

Offset into .nii file to reach the volume

scl_slope: f32

Data scaling: slope

scl_inter: f32

Data scaling: offset

slice_end: i16

Last slice index

slice_code: u8

Slice timing order

xyzt_units: u8

Units of pixdim[1..4]

cal_max: f32

Max display intensity

cal_min: f32

Min display intensity

slice_duration: f32

Time for 1 slice

toffset: f32

Time axis shift

glmax: i32

Unused in NIFTI-1

glmin: i32

Unused in NIFTI-1

descrip: Vec<u8>

Any text you like

aux_file: [u8; 24]

Auxiliary filename

qform_code: i16

NIFTI_XFORM_* code

sform_code: i16

NIFTI_XFORM_* code

quatern_b: f32

Quaternion b param

quatern_c: f32

Quaternion c param

quatern_d: f32

Quaternion d param

quatern_x: f32

Quaternion x shift

quatern_y: f32

Quaternion y shift

quatern_z: f32

Quaternion z shift

srow_x: [f32; 4]

1st row affine transform

srow_y: [f32; 4]

2nd row affine transform

srow_z: [f32; 4]

3rd row affine transform

intent_name: [u8; 16]

‘name’ or meaning of data

magic: [u8; 4]

Magic code. Must be b"ni1\0" or b"ni+\0"

endianness: Endianness

Original data Endianness

Implementations

Retrieve a NIFTI header, along with its byte order, from a file in the file system. If the file’s name ends with “.gz”, the file is assumed to need GZip decoding.

Read a NIfTI-1 header, along with its byte order, from the given byte stream. It is assumed that the input is currently at the start of the NIFTI header.

Fix some commonly invalid fields.

Currently, only the following problems are fixed:

  • If pixdim[0] isn’t equal to -1.0 or 1.0, it will be set to 1.0

Retrieve and validate the dimensions of the volume. Unlike how NIfTI-1 stores dimensions, the returned slice does not include dim[0] and is clipped to the effective number of dimensions.

Error

NiftiError::InconsistentDim if dim[0] does not represent a valid dimensionality, or any of the real dimensions are zero.

Retrieve and validate the number of dimensions of the volume. This is dim[0] after the necessary byte order conversions.

Error

NiftiError:: if dim[0] does not represent a valid dimensionality (it must be positive and not higher than 7).

Get the data type as a validated enum.

Get the spatial units type as a validated unit enum.

Get the time units type as a validated unit enum.

Get the xyzt units type as a validated pair of space and time unit enum.

Get the slice order as a validated enum.

Get the intent as a validated enum.

Get the qform coordinate mapping method as a validated enum.

Get the sform coordinate mapping method as a validated enum.

Ensure that the current descrip field is valid and is exactly equal to 80 bytes.

Descriptions shorter than 80 bytes will be extended with trailing zeros.

Safely set the descrip field using a buffer.

Safely set the descrip field using a &str.

Retrieve best of available transformations.

Return the ‘sform’ transformation if sform_code has a valid value, ‘qform’ transformation if qform_code has a valid value, otherwise return a “base” transformation, constructed from the declared shape and zooms.

If sform_code and qform_code both have valid values, the ‘sform’ affine transformation is prioritized.

Retrieve affine transformation from ‘sform’ fields.

Retrieve affine transformation from qform-related fields.

Set affine transformation.

Will set both affine transformations to avoid interoperability problems:

  • ‘sform’ from unmodified affine, with sform_code set to AlignedAnat.
  • ‘qform’ from a quaternion built from affine. However, the ‘qform’ won’t be used by most nifti readers because the qform_code will be set to Unknown.

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

Returns the “default value” for a type. Read more

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

Performs the conversion.

Should always be Self

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more

Checks if self is actually part of its subset T (and can be converted to it).

Use with care! Same as self.to_subset but without any property checks. Always succeeds.

The inclusion map: converts self to the equivalent element of its superset.

The resulting type after obtaining ownership.

Creates owned data from borrowed data, usually by cloning. Read more

🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

Uses borrowed data to replace owned data, usually by cloning. Read more

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.