Package mgui.io.standard.nifti
Class NiftiMetadata
java.lang.Object
mgui.io.standard.nifti.Nifti1Dataset
mgui.io.standard.nifti.NiftiMetadata
- All Implemented Interfaces:
java.io.Serializable,VolumeMetadata
public class NiftiMetadata extends Nifti1Dataset implements java.io.Serializable, VolumeMetadata
Data structure to store header information for Analyze 7.5 format volume files.
Note for setting values
To ensure proper functionality when setting values from a grid, the following order should be observed:
- Data dimensions
- Geometric dimensions
- Origin
- Since:
- 1.0
- Version:
- 1.0
- Author:
- Andrew Reid
- See Also:
- Serialized Form
-
Field Summary
Fields Modifier and Type Field Description protected org.jogamp.vecmath.Vector3faxis_rprotected org.jogamp.vecmath.Vector3faxis_sprotected org.jogamp.vecmath.Vector3faxis_tjava.nio.ByteOrderbyteOrderbooleancompressFields inherited from class mgui.io.standard.nifti.Nifti1Dataset
ANZ_DAT_EXT, ANZ_HDR_EXT, ANZ_HDR_SIZE, ANZ_MAGIC_STRING, aux_file, big_endian, bitpix, cal_max, cal_min, data_type_string, datatype, db_name, descrip, dim, dim_info, DIM5, DIM6, DIM7, ds_datname, ds_hdrname, ds_is_nii, DT_ALL, DT_BINARY, DT_NONE, EXT_KEY_SIZE, extension, extents, freq_dim, glmax, glmin, GZIP_EXT, intent, intent_code, intent_name, magic, NI1_EXT, NIFTI_FIRST_STATCODE, NIFTI_INTENT_BETA, NIFTI_INTENT_BINOM, NIFTI_INTENT_CHI, NIFTI_INTENT_CHISQ, NIFTI_INTENT_CHISQ_NONC, NIFTI_INTENT_CORREL, NIFTI_INTENT_DISPVECT, NIFTI_INTENT_ESTIMATE, NIFTI_INTENT_EXTVAL, NIFTI_INTENT_FTEST, NIFTI_INTENT_FTEST_NONC, NIFTI_INTENT_GAMMA, NIFTI_INTENT_GENMATRIX, NIFTI_INTENT_INVGAUSS, NIFTI_INTENT_LABEL, NIFTI_INTENT_LAPLACE, NIFTI_INTENT_LOGISTIC, NIFTI_INTENT_NEURONAME, NIFTI_INTENT_NONE, NIFTI_INTENT_NORMAL, NIFTI_INTENT_POINTSET, NIFTI_INTENT_POISSON, NIFTI_INTENT_PVAL, NIFTI_INTENT_QUATERNION, NIFTI_INTENT_SYMMATRIX, NIFTI_INTENT_TRIANGLE, NIFTI_INTENT_TTEST, NIFTI_INTENT_TTEST_NONC, NIFTI_INTENT_UNIFORM, NIFTI_INTENT_VECTOR, NIFTI_INTENT_WEIBULL, NIFTI_INTENT_ZSCORE, NIFTI_LAST_STATCODE, NIFTI_SLICE_ALT_DEC, NIFTI_SLICE_ALT_INC, NIFTI_SLICE_SEQ_DEC, NIFTI_SLICE_SEQ_INC, NIFTI_TYPE_COMPLEX128, NIFTI_TYPE_COMPLEX256, NIFTI_TYPE_COMPLEX64, NIFTI_TYPE_FLOAT128, NIFTI_TYPE_FLOAT32, NIFTI_TYPE_FLOAT64, NIFTI_TYPE_INT16, NIFTI_TYPE_INT32, NIFTI_TYPE_INT64, NIFTI_TYPE_INT8, NIFTI_TYPE_RGB24, NIFTI_TYPE_UINT16, NIFTI_TYPE_UINT32, NIFTI_TYPE_UINT64, NIFTI_TYPE_UINT8, NIFTI_UNITS_HZ, NIFTI_UNITS_METER, NIFTI_UNITS_MICRON, NIFTI_UNITS_MM, NIFTI_UNITS_MSEC, NIFTI_UNITS_PPM, NIFTI_UNITS_SEC, NIFTI_UNITS_UNKNOWN, NIFTI_UNITS_USEC, NIFTI_XFORM_ALIGNED_ANAT, NIFTI_XFORM_MNI_152, NIFTI_XFORM_SCANNER_ANAT, NIFTI_XFORM_TALAIRACH, NIFTI_XFORM_UNKNOWN, NII_HDR_SIZE, NII_MAGIC_STRING, phase_dim, pixdim, qfac, qform_code, qoffset, quatern, regular, scl_inter, scl_slope, session_error, sform_code, sizeof_hdr, slice_code, slice_dim, slice_duration, slice_end, slice_start, srow_x, srow_y, srow_z, t_unit_code, TDIM, toffset, vox_offset, XDIM, xyz_unit_code, xyzt_units, YDIM, ZDIM -
Constructor Summary
Constructors Constructor Description NiftiMetadata()NiftiMetadata(java.io.File file) -
Method Summary
Modifier and Type Method Description org.jogamp.vecmath.Vector3f[]getAxes()Returns the S, T, and R axes of this volume, respectively.Box3DgetBounds()The geometric bounds of this volume; note that the bounding box will be scaled up by one voxel length in each axis direction, and its origin will be shifted a half voxel, such that voxel center points are positioned correctly.intgetChannelSize()int[]getDataDims()The data dimensions: (x, y, z) or (x, y, z, t).intgetDataType()The data type; must correspond toDataBuffertypes.protected java.lang.StringgetDataTypeString(int type)float[]getGeomDims()The geometric dimensions of the volume (x, y, z) or (S, T, R) in texture coordinates.org.jogamp.vecmath.Point3fgetOrigin()The geometric origin of the volume as aPoint3f.intgetVoxelDim()Returns the intravoxel dimension (e.g., time or vector/tensor information)booleanisNifti()voidreadFromFile(java.io.File input)java.util.ArrayList<MguiNumber>readVolume(int t, DataType data_type, ProgressUpdater progress)Reads the 3D volume at voxel dimensiont.voidsetAxes(org.jogamp.vecmath.Vector3f[] axes)Sets the S, T, and R axes of this volume.voidsetDataDims(int[] dims)Sets the data dimensionsvoidsetDataType(int type)Sets the data type; must correspond toDataBuffertypes.voidsetFromMetadata(VolumeMetadata metadata)Sets this metadata from another metadata object.voidsetFromVolume(Volume3DInt volume)Sets this metadata fromvolume.voidsetFromVolume(Volume3DInt volume, java.lang.String column)Sets this metadata fromgrid, for the specified column.voidsetGeomDims(float[] dims)Sets the geometric dimensionsvoidsetOrigin(org.jogamp.vecmath.Point3f origin)Sets the originvoidsetVoxelDim(int t)Sets the intravoxel dimension (e.g., time or vector/tensor information)protected booleanvalidateBounds(Box3D box)voidwriteHeader()Write header information to disk filevoidwriteToFile(java.io.File output)Methods inherited from class mgui.io.standard.nifti.Nifti1Dataset
addExtension, bytesPerVoxel, checkHeader, copyHeader, decodeDatatype, decodeIntent, decodeSliceOrder, decodeUnits, decodeXform, exists, existsDat, existsHdr, getBitpix, getDataFilename, getDatatype, getExtensionsList, getGzTempFile, getHeaderFilename, main, printDoubleTmcrs, printHeader, readData, readDoubleTmcrs, readDoubleVol, readHeader, removeExtension, setDataFilename, setDatatype, setDims, setHeaderFilename, writeData, writeVolMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Field Details
-
byteOrder
public java.nio.ByteOrder byteOrder -
compress
public boolean compress -
axis_s
protected org.jogamp.vecmath.Vector3f axis_s -
axis_t
protected org.jogamp.vecmath.Vector3f axis_t -
axis_r
protected org.jogamp.vecmath.Vector3f axis_r
-
-
Constructor Details
-
NiftiMetadata
public NiftiMetadata() -
NiftiMetadata
public NiftiMetadata(java.io.File file)
-
-
Method Details
-
readFromFile
public void readFromFile(java.io.File input) -
readVolume
public java.util.ArrayList<MguiNumber> readVolume(int t, DataType data_type, ProgressUpdater progress) throws java.io.IOExceptionDescription copied from interface:VolumeMetadataReads the 3D volume at voxel dimensiont.- Specified by:
readVolumein interfaceVolumeMetadata- Returns:
- Throws:
java.io.IOException
-
writeToFile
public void writeToFile(java.io.File output) -
writeHeader
public void writeHeader() throws java.io.IOException, java.io.FileNotFoundExceptionDescription copied from class:Nifti1DatasetWrite header information to disk file- Overrides:
writeHeaderin classNifti1Dataset- Throws:
java.io.IOExceptionjava.io.FileNotFoundException
-
setFromMetadata
Description copied from interface:VolumeMetadataSets this metadata from another metadata object.- Specified by:
setFromMetadatain interfaceVolumeMetadata
-
getChannelSize
public int getChannelSize() -
getDataType
public int getDataType()Description copied from interface:VolumeMetadataThe data type; must correspond toDataBuffertypes.- Specified by:
getDataTypein interfaceVolumeMetadata- Returns:
-
isNifti
public boolean isNifti() -
setFromVolume
Description copied from interface:VolumeMetadataSets this metadata fromvolume.- Specified by:
setFromVolumein interfaceVolumeMetadata
-
setFromVolume
Description copied from interface:VolumeMetadataSets this metadata fromgrid, for the specified column.- Specified by:
setFromVolumein interfaceVolumeMetadata
-
getAxes
public org.jogamp.vecmath.Vector3f[] getAxes()Description copied from interface:VolumeMetadataReturns the S, T, and R axes of this volume, respectively.- Specified by:
getAxesin interfaceVolumeMetadata- Returns:
-
setAxes
public void setAxes(org.jogamp.vecmath.Vector3f[] axes)Description copied from interface:VolumeMetadataSets the S, T, and R axes of this volume.- Specified by:
setAxesin interfaceVolumeMetadata- Parameters:
axes- Three vectors, in the order S, T, and R.
-
getVoxelDim
public int getVoxelDim()Description copied from interface:VolumeMetadataReturns the intravoxel dimension (e.g., time or vector/tensor information)- Specified by:
getVoxelDimin interfaceVolumeMetadata- Returns:
-
setVoxelDim
public void setVoxelDim(int t)Description copied from interface:VolumeMetadataSets the intravoxel dimension (e.g., time or vector/tensor information)- Specified by:
setVoxelDimin interfaceVolumeMetadata
-
getDataDims
public int[] getDataDims()Description copied from interface:VolumeMetadataThe data dimensions: (x, y, z) or (x, y, z, t).- Specified by:
getDataDimsin interfaceVolumeMetadata- Returns:
- The data dimensions.
-
getGeomDims
public float[] getGeomDims()Description copied from interface:VolumeMetadataThe geometric dimensions of the volume (x, y, z) or (S, T, R) in texture coordinates. Note this is the distance from the center point of the origin voxel to the center point of the last voxel in the direction of the axis. The geometric extent of the bounding box will be a full voxel length larger, in order to place the voxel centers at the correct coordinate.- Specified by:
getGeomDimsin interfaceVolumeMetadata- Returns:
- The geometric dimensions of the volume.
-
getOrigin
public org.jogamp.vecmath.Point3f getOrigin()Description copied from interface:VolumeMetadataThe geometric origin of the volume as aPoint3f. Note that this is the center point of the origin voxel. The origin of the bounding box will be a half voxel displaced from this point, to place its center point correctly. Metadata handlers must adjust according to the policy of their data formats, to return the correct coordinates.- Specified by:
getOriginin interfaceVolumeMetadata- Returns:
- The geometric origin of the volume
-
getBounds
Description copied from interface:VolumeMetadataThe geometric bounds of this volume; note that the bounding box will be scaled up by one voxel length in each axis direction, and its origin will be shifted a half voxel, such that voxel center points are positioned correctly.- Specified by:
getBoundsin interfaceVolumeMetadata- Returns:
-
validateBounds
-
setDataDims
public void setDataDims(int[] dims)Description copied from interface:VolumeMetadataSets the data dimensions- Specified by:
setDataDimsin interfaceVolumeMetadata
-
setDataType
public void setDataType(int type)Description copied from interface:VolumeMetadataSets the data type; must correspond toDataBuffertypes. Note that this is the origin of the bounding box; thus the corner of the first voxel, rather than its center point. Metadata handlers must adjust according to the policy of their data formats.- Specified by:
setDataTypein interfaceVolumeMetadata
-
getDataTypeString
protected java.lang.String getDataTypeString(int type) -
setGeomDims
public void setGeomDims(float[] dims)Description copied from interface:VolumeMetadataSets the geometric dimensions- Specified by:
setGeomDimsin interfaceVolumeMetadata
-
setOrigin
public void setOrigin(org.jogamp.vecmath.Point3f origin)Description copied from interface:VolumeMetadataSets the origin- Specified by:
setOriginin interfaceVolumeMetadata
-