19.5.4 HDF5 Structure and Naming Conventions (Required for DAS)

Topic Version2Published04/16/2018
For StandardPRODML v2.0

Figure 19.5.2-1 shows the required structure and naming conventions of an HDF5 file required by DAS.

HDF data groups are available for the following data types. The XML contains elements with the same names and attributes (but does not contain the array data):

Group Path

Description

Multiplicity

(min, max)

/

Provide one attribute “uuid” for linking each HDF file to the EPC. For more information, see the Energistics Packaging Conventions Specification on external part references and HDF5 files.

1, 1

/Acquisition

Refers to the DasAcquisition object in the XML and it contains attributes for the acquisition.

1, 1

/Acquisition/Raw[n]

Contains only 1 raw data array and at least one time array(s). Each acquisition may have more than one raw group. The group must be named “Raw[n]”, with “n” being consecutive numbers starting from 0, e.g. “Raw[0]”, “Raw[1]”. If there is only one raw group, it must still be named “Raw[0]”.The Raw[n] group contains additional groups and data sets (arrays) shown in Figure 19.5.2-1

0, unbound

/Acquisition/Processed

One processed group is allowed. It is used to contain FBE and/or spectra groups as children. This group may have zero to many FBE and spectra groups. If there is no FBE or spectra group at all, this group may be omitted.

0, 1

/Acquisition/Processed/Fbe[n]

The group that contains FBE data and time arrays. The group must be named “Fbe[n]” where “n” are consecutive integers starting from 0, e.g. “Fbe[0]”, “Fbe[1]”. If there is only one FBE group, it must still be named “Fbe[0]”. The group contains multiple arrays for the frequency bands and these must be named FbeData[m] with “m” identifying the band index, which is also zero-based. There is one FbeDataTime array for the times common to all FbeData[] bands.

0, unbound

/Acquisition/Processed/Spectra[n]

The group that contains spectra data and time arrays. The group must be named “Spectra[n]” where “n” are consecutive integers starting from 0, e.g. “Spectra[0]”, “Spectra[1]”. If there is only one spectra group, it must still be named “Spectra[0]”. The group contains one array named “SpectraData” for the data and one array named “SpectraDataTime” for time.

0, unbound

/Acquisition/Custom

/Acquisition/Raw[n]/Custom

/Acquisition/Processed/Fbe[n]/Custom

/Acquisition/Processed/Spectra[n]/Custom

An optional HDF5 group named “Custom” can be added. Custom data is any service-provider-specific customization parameters, which service providers can provide as required. For more information, see Section 19.7.5 DAS Custom.

If you look at the UML diagram ( Figure 19.6-1), you can see that any custom data can also be added to the individual data groups (raw, FBE, and spectra).

0, 1 (per parent group)

/Acquisition/Calibration[n]

Calibration data is a mapping of loci-to-fiber and facility distance along the optical path for the DAS acquisition. The HDF5 group must be named “Calibration[n]” where “n” are consecutive integers starting from 0, e.g. “Calibration[0]”, “Calibration[1]”. If there is only one calibration, the group must still be named “Calibration[0]”. The Calibration[n] group has a corresponding XML object whose mandatory attributes must be copied following guidelines in Section . Each Calibration[n] must have one array called CalibrationDataPoints. For more information, see Section 19.7.3 DAS Calibration.

0, unbound

The following instructions apply when writing/reading HDF5 groups and datasets:
  • Create HDF5 groups—only to create a dataset(s) as a leaf node, unless the group is a Custom group.
    • For example, to write RawData, you need to create the Acquisition Group and the Raw Group, which then require attributes to be written for these groups. For more information, see the next section on HDF attributes.
  • The tree structure of the HDF groups mimics the tree structure in the XML. For example, Processed is a child group of Acquisition, and Fbe[0] is a child group of Processed.
  • CalibrationDataPoints are written to the HDF file as a two-dimensional dataset with a compound datatype. Each XML sub-element under CalibrationDataPoints is a member of the compound datatype, with the XML sub-element name matching the name of the datatype. The array must be written such that each row corresponds to one CalibrationDataPoint, and each column refers to a sub-element of CalibrationDataPoint. Readers should not rely on the order of the columns but instead, use the datatype name to retrieve a specific column.