Object
hdf.object.HObject
hdf.object.Dataset
hdf.object.CompoundDS
hdf.object.h4.H4CompoundAttribute
- All Implemented Interfaces:
Attribute
,CompoundDataFormat
,DataFormat
,Serializable
An attribute is a (name, value) pair of metadata attached to a primary data object such as a dataset, group
or named datatype.
Like a dataset, an attribute has a name, datatype and dataspace.
For more details on attributes, HDF5 Attributes in HDF5 User Guide
The following code is an example of an attribute with 1D integer array of two elements.
// Example of creating a new attribute // The name of the new attribute String name = "Data range"; // Creating an unsigned 1-byte integer datatype Datatype type = new Datatype(Datatype.CLASS_INTEGER, // class 1, // size in bytes Datatype.ORDER_LE, // byte order Datatype.SIGN_NONE); // unsigned // 1-D array of size two long[] dims = {2}; // The value of the attribute int[] value = {0, 255}; // Create a new attribute Attribute dataRange = new Attribute(name, type, dims); // Set the attribute value dataRange.setValue(value); // See FileFormat.writeAttribute() for how to attach an attribute to an object, @see hdf.object.FileFormat#writeAttribute(HObject, Attribute, boolean)For a compound datatype, the value of an H4CompoundAttribute will be a 1D array of strings with field members separated by a comma. For example, "{0, 10.5}, {255, 20.0}, {512, 30.0}" is a compound attribute of {int, float} of three data points.
- Version:
- 2.0 4/2/2018
- Author:
- Peter X. Cao, Jordan T. Henderson
- See Also:
-
Field Summary
Modifier and TypeFieldDescriptionprotected HObject
The HObject to which this NC2Attribute is attached, Attribute interfaceFields inherited from class hdf.object.CompoundDS
flatNameList, flatTypeList, isMemberSelected, memberDims, memberNames, memberOrders, memberTypes, numberOfMembers, SEPARATOR
Fields inherited from class hdf.object.Dataset
chunkSize, compression, COMPRESSION_GZIP_TXT, convertByteToString, convertedBuf, data, datatype, dimNames, dims, filters, inited, isDataLoaded, isImage, isNULL, isScalar, isText, maxDims, nPoints, originalBuf, rank, selectedDims, selectedIndex, selectedStride, space_type, startDims, storage, storageLayout
Fields inherited from class hdf.object.HObject
fileFormat, linkTargetObjName, oid
-
Constructor Summary
ConstructorDescriptionH4CompoundAttribute
(HObject parentObj, String attrName, Datatype attrType, long[] attrDims) Create an attribute with specified name, data type and dimension sizes.H4CompoundAttribute
(HObject parentObj, String attrName, Datatype attrType, long[] attrDims, Object attrValue) Create an attribute with specific name and value. -
Method Summary
Modifier and TypeMethodDescriptionvoid
close
(long aid) Closes access to the object.protected Object
convertCompoundByteMember
(byte[] data, long data_type, long start, long len) Given an array of bytes representing a compound Datatype and a start index and length, converts len number of bytes into the correct Object type and returns it.Converts the data values of this data object to appropriate Java integers if they are unsigned integers.Converts Java integer data values of this data object back to unsigned C-type integer data if they are unsigned integers.Creates a new dataset and writes the data buffer to the new dataset.final Object
Retrieves the attribute data from the file.final Datatype
Returns the datatype of the attribute.final long[]
Returns the array that contains the dimension sizes of the data value of the attribute.final String
Returns the name of the object.final int
Returns the selected size of the rows and columns of the attribute.final int
Returns the rank (number of dimensions) of the attribute.final int
Returns the space type for the attribute.Returns the HObject to which this Attribute is currently "attached".getProperty
(String key) get a property for a given key.get all property keys.void
init()
Set the initial state of all the variablesboolean
Check if attribute's dataspace is a NULLboolean
Check if attribute is a single scalar pointlong
open()
Opens an existing object such as a dataset or group for access.read()
Reads the data from file.byte[]
Reads the raw data of the dataset from file to a byte array.void
Not for public use in the future.void
setParentObject
(HObject pObj) Sets the HObject to which this Attribute is "attached".void
setProperty
(String key, Object value) set a property for the attribute.toAttributeString
(String delimiter) Returns a string representation of the data value.toAttributeString
(String delimiter, int maxItems) Returns a string representation of the data value.void
Writes a memory buffer to the object in the file.void
Writes the memory buffer of this dataset to file.void
writeAttribute
(Object buf) Writes the given data buffer into this attribute in a file.Methods inherited from class hdf.object.CompoundDS
convertByteMember, convertCompoundByteMembers, getFillValue, getMemberCount, getMemberDims, getMemberNames, getMemberOrders, getMemberTypes, getSelectedMemberCount, getSelectedMemberNames, getSelectedMemberOrders, getSelectedMemberTypes, isMemberSelected, resetSelection, selectMember, setAllMemberSelection
Methods inherited from class hdf.object.Dataset
byteToString, clear, clearData, convertFromUnsignedC, convertFromUnsignedC, convertToUnsignedC, convertToUnsignedC, getChunkSize, getCompression, getConvertByteToString, getData, getDatatype, getDepth, getDimNames, getDims, getFilters, getHeight, getMaxDims, getOriginalClass, getRank, getSelectedDims, getSelectedIndex, getSize, getSpaceType, getStartDims, getStorage, getStorageLayout, getStride, getVirtualFilename, getVirtualMaps, getWidth, isInited, isNULL, isScalar, isString, isVirtual, refreshData, setConvertByteToString, setData, stringToByte, toString, toString, toString, write
Methods inherited from class hdf.object.HObject
createFullname, debug, equals, equals, equalsOID, getFID, getFile, getFileFormat, getFullName, getLinkTargetObjName, getName, getOID, getPath, hashCode, setFullname, setLinkTargetObjName, setName, setPath, toString
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface hdf.object.DataFormat
clearData, getCompression, getData, getDatatype, getDepth, getDims, getHeight, getOriginalClass, getRank, getSelectedDims, getSelectedIndex, getSpaceType, getStartDims, getStride, getWidth, isInited, refreshData, setData, write
-
Field Details
-
parentObject
The HObject to which this NC2Attribute is attached, Attribute interface
-
-
Constructor Details
-
H4CompoundAttribute
Create an attribute with specified name, data type and dimension sizes. For scalar attribute, the dimension size can be either an array of size one or null, and the rank can be either 1 or zero. Attribute is a general class and is independent of file format, e.g., the implementation of attribute applies to both HDF4 and HDF5. The following example creates a string attribute with the name "CLASS" and value "IMAGE".long[] attrDims = { 1 }; String attrName = "CLASS"; String[] classValue = { "IMAGE" }; Datatype attrType = null; try { attrType = new H4Datatype(Datatype.CLASS_STRING, classValue[0].length() + 1, Datatype.NATIVE, Datatype.NATIVE); } catch (Exception ex) {} Attribute attr = new Attribute(attrName, attrType, attrDims); attr.setValue(classValue);
- Parameters:
parentObj
- the HObject to which this Attribute is attached.attrName
- the name of the attribute.attrType
- the datatype of the attribute.attrDims
- the dimension sizes of the attribute, null for scalar attribute- See Also:
-
H4CompoundAttribute
public H4CompoundAttribute(HObject parentObj, String attrName, Datatype attrType, long[] attrDims, Object attrValue) Create an attribute with specific name and value. For scalar attribute, the dimension size can be either an array of size one or null, and the rank can be either 1 or zero. Attribute is a general class and is independent of file format, e.g., the implementation of attribute applies to both HDF4 and HDF5. The following example creates a string attribute with the name "CLASS" and value "IMAGE".long[] attrDims = { 1 }; String attrName = "CLASS"; String[] classValue = { "IMAGE" }; Datatype attrType = null; try { attrType = new H4Datatype(Datatype.CLASS_STRING, classValue[0].length() + 1, Datatype.NATIVE, Datatype.NATIVE); } catch (Exception ex) {} Attribute attr = new Attribute(attrName, attrType, attrDims, classValue);
- Parameters:
parentObj
- the HObject to which this Attribute is attached.attrName
- the name of the attribute.attrType
- the datatype of the attribute.attrDims
- the dimension sizes of the attribute, null for scalar attributeattrValue
- the value of the attribute, null if no value- See Also:
-
-
Method Details
-
open
Description copied from class:HObject
Opens an existing object such as a dataset or group for access. The return value is an object identifier obtained by implementing classes such as H5.H5Dopen(). This function is needed to allow other objects to be able to access the object. For instance, H5File class uses the open() function to obtain object identifier for copyAttributes(long src_id, long dst_id) and other purposes. The open() function should be used in pair with close(long) function. -
close
Description copied from class:HObject
Closes access to the object. Sub-classes must implement this interface because different data objects have their own ways of how the data resources are closed. For example, H5Group.close() calls the hdf.hdf5lib.H5.H5Gclose() method and closes the group resource specified by the group id. -
init
Description copied from interface:DataFormat
Set the initial state of all the variables- Specified by:
init
in interfaceDataFormat
-
read
Reads the data from file. read() reads the data from file to a memory buffer and returns the memory buffer. The dataset object does not hold the memory buffer. To store the memory buffer in the dataset object, one must call getData(). By default, the whole dataset is read into memory. Users can also select a subset to read. Subsetting is done in an implicit way.- Specified by:
read
in interfaceDataFormat
- Returns:
- the data read from file.
- Throws:
Exception
- if object can not be readOutOfMemoryError
- if memory is exhausted- See Also:
-
write
-
copy
Description copied from class:Dataset
Creates a new dataset and writes the data buffer to the new dataset. This function allows applications to create a new dataset for a given data buffer. For example, users can select a specific interesting part from a large image and create a new image with the selection. The new dataset retains the datatype and dataset creation properties of this dataset.- Overrides:
copy
in classCompoundDS
- Parameters:
pgroup
- the group which the dataset is copied to.dstName
- the name of the new dataset.dims
- the dimension sizes of the the new dataset.buff
- the data values of the subset to be copied.- Returns:
- the new dataset.
- Throws:
Exception
- if dataset can not be copied
-
readBytes
Description copied from class:Dataset
Reads the raw data of the dataset from file to a byte array. readBytes() reads raw data to an array of bytes instead of array of its datatype. For example, for a one-dimension 32-bit integer dataset of size 5, readBytes() returns a byte array of size 20 instead of an int array of 5. readBytes() can be used to copy data from one dataset to another efficiently because the raw data is not converted to its native type, it saves memory space and CPU time. -
convertCompoundByteMember
Given an array of bytes representing a compound Datatype and a start index and length, converts len number of bytes into the correct Object type and returns it.- Parameters:
data
- The byte array representing the data of the compound Datatypedata_type
- The type of data to convert the bytes tostart
- The start index of the bytes to getlen
- The number of bytes to convert- Returns:
- The converted type of the bytes
-
convertFromUnsignedC
Converts the data values of this data object to appropriate Java integers if they are unsigned integers.- Specified by:
convertFromUnsignedC
in interfaceDataFormat
- Returns:
- the converted data buffer.
- See Also:
-
convertToUnsignedC
Converts Java integer data values of this data object back to unsigned C-type integer data if they are unsigned integers.- Specified by:
convertToUnsignedC
in interfaceDataFormat
- Returns:
- the converted data buffer.
- See Also:
-
getParentObject
Returns the HObject to which this Attribute is currently "attached".- Specified by:
getParentObject
in interfaceAttribute
- Returns:
- the HObject to which this Attribute is currently "attached".
-
setParentObject
Sets the HObject to which this Attribute is "attached".- Specified by:
setParentObject
in interfaceAttribute
- Parameters:
pObj
- the new HObject to which this Attribute is "attached".
-
setProperty
set a property for the attribute.- Specified by:
setProperty
in interfaceAttribute
- Parameters:
key
- the attribute Map keyvalue
- the attribute Map value
-
getProperty
get a property for a given key.- Specified by:
getProperty
in interfaceAttribute
- Parameters:
key
- the attribute Map key- Returns:
- the property
-
getPropertyKeys
get all property keys.- Specified by:
getPropertyKeys
in interfaceAttribute
- Returns:
- the Collection of property keys
-
getAttributeName
Returns the name of the object. For example, "Raster Image #2".- Specified by:
getAttributeName
in interfaceAttribute
- Returns:
- The name of the object.
-
getAttributeData
Retrieves the attribute data from the file.- Specified by:
getAttributeData
in interfaceAttribute
- Returns:
- the attribute data.
- Throws:
Exception
- if the data can not be retrievedOutOfMemoryError
-
getAttributeDatatype
Returns the datatype of the attribute.- Specified by:
getAttributeDatatype
in interfaceAttribute
- Returns:
- the datatype of the attribute.
-
getAttributeSpaceType
Returns the space type for the attribute. It returns a negative number if it failed to retrieve the type information from the file.- Specified by:
getAttributeSpaceType
in interfaceAttribute
- Returns:
- the space type for the attribute.
-
getAttributeRank
Returns the rank (number of dimensions) of the attribute. It returns a negative number if it failed to retrieve the dimension information from the file.- Specified by:
getAttributeRank
in interfaceAttribute
- Returns:
- the number of dimensions of the attribute.
-
getAttributePlane
Returns the selected size of the rows and columns of the attribute. It returns a negative number if it failed to retrieve the size information from the file.- Specified by:
getAttributePlane
in interfaceAttribute
- Returns:
- the selected size of the rows and colums of the attribute.
-
getAttributeDims
Returns the array that contains the dimension sizes of the data value of the attribute. It returns null if it failed to retrieve the dimension information from the file.- Specified by:
getAttributeDims
in interfaceAttribute
- Returns:
- the dimension sizes of the attribute.
-
isAttributeNULL
Description copied from interface:Attribute
Check if attribute's dataspace is a NULL- Specified by:
isAttributeNULL
in interfaceAttribute
- Returns:
- true if the dataspace is a NULL; otherwise, returns false.
-
isAttributeScalar
Description copied from interface:Attribute
Check if attribute is a single scalar point- Specified by:
isAttributeScalar
in interfaceAttribute
- Returns:
- true if the data is a single scalar point; otherwise, returns false.
-
setAttributeData
Not for public use in the future. setData() is not safe to use because it changes memory buffer of the dataset object. Dataset operations such as write/read will fail if the buffer type or size is changed.- Specified by:
setAttributeData
in interfaceAttribute
- Parameters:
d
- the object data -must be an array of Objects
-
writeAttribute
Writes the memory buffer of this dataset to file.- Specified by:
writeAttribute
in interfaceAttribute
- Throws:
Exception
- if buffer can not be written
-
writeAttribute
Writes the given data buffer into this attribute in a file. The data buffer is a vector that contains the data values of compound fields. The data is written into file as one data blob.- Specified by:
writeAttribute
in interfaceAttribute
- Parameters:
buf
- The vector that contains the data values of compound fields.- Throws:
Exception
- If there is an error at the library level.
-
toAttributeString
Returns a string representation of the data value. For example, "0, 255". For a compound datatype, it will be a 1D array of strings with field members separated by the delimiter. For example, "{0, 10.5}, {255, 20.0}, {512, 30.0}" is a compound attribute of {int, float} of three data points.- Specified by:
toAttributeString
in interfaceAttribute
- Parameters:
delimiter
- The delimiter used to separate individual data points. It can be a comma, semicolon, tab or space. For example, toString(",") will separate data by commas.- Returns:
- the string representation of the data values.
-
toAttributeString
Returns a string representation of the data value. For example, "0, 255". For a compound datatype, it will be a 1D array of strings with field members separated by the delimiter. For example, "{0, 10.5}, {255, 20.0}, {512, 30.0}" is a compound attribute of {int, float} of three data points.- Specified by:
toAttributeString
in interfaceAttribute
- Parameters:
delimiter
- The delimiter used to separate individual data points. It can be a comma, semicolon, tab or space. For example, toString(",") will separate data by commas.maxItems
- The maximum number of Array values to return- Returns:
- the string representation of the data values.
-