Introduction
The MXA File format is based on the HDF5 file format so every MXA file is just an HDF5 file. What the MXA API does is bring some order to the HDF5 file and how the data is stored. The format is excellent for 'Field' or Image type data. Data such as 3D mesh or other complex representations may find it difficult to encode into MXADataModel files. The specification laid out in the tables below always refers to HDF5 Groups or Datasets in absolute terms, ie, from the 'root' node of the HDF5 file.
HDF5 Specification
/Data Model
|
HDF5 Object Type - HDF Group |
This group holds the main portion of the model description. It contains 2 groups, 1 data set and
has 2 attributes attached to the group itself. |
|
Name |
HDF5 Type |
Value |
Groups |
Data Dimensions |
H5G_GROUP |
|
|
Data Records |
H5G_GROUP |
|
Attributes |
Model Type |
H5T_STRING |
'MXA' |
|
Model Version |
H5T_FLOAT |
'1.0' |
Data Sets |
Data Root |
H5T_STRING |
'Data' (Default Value. User can set another name) |
/Meta Data
|
HDF5 Object Type - HDF Group |
Meta Data is broken into 2 data sets. The
Required and the 'User Defined'. See the table 'Required' for a
complete list of attributes that will be found attached to the
'Required' Data set. Actual values are stored as "key-Value" pairs of attributes. |
|
Name |
HDF5 Type |
Value |
Data Sets |
Required |
H5T_NATIVE_INT32 |
0 |
|
User Defined |
H5T_NATIVE_INT32 |
0 |
/SupportFiles
|
HDF5 Object Type - HDF Group |
Any file can be stored in this group. Files can be marked
as either text or binary. |
|
Name |
HDF5 Type |
Value |
Data Sets |
*increasing index number |
H5T_NATIVE_UINT8 |
0 |
/Data Model/Data Dimensions
|
HDF5 Object Type - HDF Group |
There are 'n' number of datasets in this group. Each data set will have
the following attributes and value. Data Value Description:
The value of this HDF5 Dataset is the index of this Data dimension. The
Dimensions need to be ordered in the HDF5 File so that appropriate paths
can be created. This is the value of the index of the data dimension in
that ordering. The indexing should start from zero (0). The HDF5 Object
Name is also the index, just in string form. |
|
Name |
HDF5 Type |
Description |
Data Set |
Data Dimension Index |
H5T_NATIVE_INT32 |
0 |
Attributes |
Name |
H5T_STRING |
This is a String that can be used in GUI programs to show the name of the Data Record instead of using the HDF5 Object Name |
|
Alt_Name |
H5T_STRING |
This is also a string based attribute that can give an alternate name to the dataset. |
|
Start_Value |
H5T_NATIVE_INT32 |
The integer index that elements along this dimension will start at |
|
Increment |
H5T_NATIVE_INT32 |
The integer value that is added to a current index to get to the next element. |
|
End_Value |
H5T_NATIVE_INT32 |
The integer index that elements along this dimension will end at. |
|
Count |
H5T_NATIVE_INT32 |
The total number of discrete elements along this dimension |
|
Index |
H5T_NATIVE_INT32 |
This is the index of the Data Dimension. The data dimensions are indexed incrementatlly from zero. |
|
Uniform |
H5T_NATIVE_INT32 |
Tells if the data dimension increments uniformly from its start value to end value |
/Data Model/Data Records
|
HDF5 Object Type - HDF Group |
Data Records can be a flat list or have a hierarchy to them in order to organize the data better. Each 'Data
Record' is an individual HDF5 data set with the following name, value and attributes. If the 'Data Record' is an organizational element (HDF5 Group) then the HDF5 group will still have the following attributes. |
|
Name |
HDF5 Type |
Description |
Data Set |
LUID Value |
H5T_NATIVE_INT32 |
0 (Not used for anything meaningful) |
Attributes |
Name |
H5T_STRING |
This is a String that can be used in GUI programs to show the name of the Data Record instead of using the HDF5 Object Name |
|
Alt_Name |
H5T_STRING |
This is also a string based attribute that can give an alternate name to the dataset. |
|
GUID |
H5T_NATIVE_INT32 |
This is a Global Unique Identifier. Each Data Record Entry must have a unique Id. These values start at Zero. |
|
LUID |
H5T_NATIVE_INT32 |
This is a Local Unique Identifier. Each Data Record Entry within a Data Record Group has a unique ID starting at Zero value. |
/Meta Data/Required
|
HDF5 Object Type - HDF Dataset |
Data Value Description
The value of the dataset is a 4 byte integer with a value of 0. |
|
Name |
HDF5 Type |
Description |
Attributes |
Creator |
H5T_STRING |
The full name of the person who ran the experiment, simulation or otherwise collected the data. |
|
Date |
H5T_STRING |
The date and time the experiment or data was collected in the following format: yyyy/MM/dd HH:mm:ss |
|
Description |
H5T_STRING |
Short description of the data set or experiment. |
|
Distribution_Rights |
H5T_STRING |
1 of the following 3 values: {'Unlimited', 'Limited', 'Release_Limitation'} |
|
Name |
H5T_STRING |
A Name given to the experiment. |
|
Original_Source_File |
H5T_STRING |
Either the path to the original source file on the computer system or 'Not Applicable' if the data was store
directly to the MXA file. |
|
Pedigree |
H5T_STRING |
Either the value 'Original' or 'Derived' |
|
Release_Number |
H5T_STRING |
A tracking number assigned to the data or 'Not Applicable' if there is no tracking number. |
/[Data Root]
|
HDF5 Object Type - HDF Group |
The value for this group is take from the '/Data Model/Data Root' data set. It can be a single group or
consist of nested groups. Attaching attributes to the group is entirely up to the user and while the MXA Library
will ignore the attributes some programs may find it more convenient to encode meta data into the these groups
instead of in the 'Meta Data' group. |