MXADataModel Documentation
APIs for the Programmer
 

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.