# HDF5 Schema for Infiniium Oscilloscope Data

The best way to view the structure of .h5 waveform data files (or .osc composite files) is using an HDF5 viewer like HDFView from the HDF Group (see https://www.hdfgroup.org/products/java/hdfview/). When you open an Infiniium oscilloscope HDF5 file with a viewer, you will see a structure like:

    /                                Group (root)
       FileType/                     Group
          KeysightH5FileType         Dataset
       Frame/                        Group
          TheFrame                   Dataset
       SetupInformation/             Group (in composite files only)
          Setup                      Dataset
       Waveforms/                    Group (attribute: NumWaveforms)
          Channel N/                 Group (attributes: see below)
             Channel NData           Dataset (attributes: internal use only)
          Crosstalk N/               Group (attributes: same as Channel N Group)
             Crosstalk NData         Dataset (attributes: internal use only)
          Digital N/                 Group (attributes: see below)
             Digital NData           Dataset (attributes: internal use only)
          Equalization N/            Group (attributes: same as Channel N Group)
             Equalization NData      Dataset (attributes: internal use only)
          Function N/                Group (attributes: same as Channel N Group)
             Function NData          Dataset (attributes: internal use only)
          Meas Spectrum/             Group (attributes: same as Channel N Group)
             Meas SpectrumData       Dataset (attributes: internal use only)
          Meas Trend/                Group (attributes: same as Channel N Group)
             Meas TrendData          Dataset (attributes: internal use only)
          Memory N/                  Group (attributes: same as Channel N Group)
             Memory NData            Dataset (attributes: internal use only)
          Recovered Clock/           Group (attributes: same as Channel N Group)
             Recovered ClockData     Dataset (attributes: internal use only)
          .
          .
          .

##### KeysightH5FileType Dataset

The `KeysightH5FileType` dataset is a scalar dataset that can contain one of the following strings:

- "Keysight Waveform" — in waveform data files

- "Keysight Composite" — in composite files

##### TheFrame Dataset

The `TheFrame` dataset is a compound dataset that contains these three strings:

String | Description | Example
--- | --- | ---
Model | The oscilloscope model number | "DSOX91304A"
Serial | The oscilloscope serial number | "MY52260102"
Date | The date the file was saved | "14-Jul-2016 14:33:53"

##### Waveforms Group Attribute

Attribute | Description | Example
--- | --- | ---
NumWaveforms | integer — The number of waveforms in the group | 3

##### Channel N Group Attributes

Attribute | Description | Example
--- | --- | ---
Count | integer — The number of hits at each time bucket in the waveform record when the waveform was created using an acquisition mode like averaging | 1
DispInterpFactor | integer — The number of displayed Sin(x)/x interpolation points in between individual acquired data points | 16
InterpSetting | INTERP_AUTO INTERP_OFF INTERP_INT1 INTERP_INT2 INTERP_INT4 INTERP_INT8 INTERP_INT16 | INTERP_AUTO
MaxBandwidth | double — An estimation of the maximum bandwidth of the waveform | 1.3649999872E10
MinBandwidth | double — An estimation of the minimum bandwidth of the waveform | 0.0
NumPoints | integer — The number of points in the waveform record | 25600
NumSegments | integer— The total number of segments that were acquired | 0
SavedInterpFactor | integer — The number of saved Sin(x)/x interpolation points in between individual acquired data points | 16
Start | integer — The starting point in the waveform of the first data point in the file | 0
WavAttr | For internal use only | 69424
WaveformType | UNKNOWN NORMAL PEAK_DETECT AVERAGE HORZ_HISTOGRAM VERT_HISTOGRAM LOGIC | NORMAL
XDispOrigin | double — The X-axis value at the left edge of the display | -1.0E-8
XDispRange | float — The X-axis duration of the waveform that is displayed | 2.0E-8
XInc | double — The duration between data points on the X axis | 7.8125E-13
XOrg | double — The X-axis value of the first data point in the data record | -9.999611378208688E-9
XUnits | string — See XUnits and YUnits | Second
YDispOrigin | double — The Y-axis value at the center of the display | 0.35280001163482666
YDispRange | float — The Y-axis duration of the waveform that is displayed | 0.832
YInc | double — The duration between Y-axis levels | 1.3700124810540825E-5
YOrg | double — The Y-axis value at level zero | 0.36491176659031876
YUnits | string — See XUnits and YUnits | Volt

##### Unique Digital N Group Attributes

Attribute | Description | Example
--- | --- | ---
Count | integer — The number of hits at each time bucket in the waveform record when the waveform was created using an acquisition mode like averaging | 1
DigitalBits | array of 16 integers — The digital channel bit numbers | 0,1,2,3,4,5,6,7, 8,9,10,11,12,13,14,15
DigitalThresholds | array of 16 floats — The threshold voltage values of each digital channel | 1.41,1.41,1.41,1.41, 1.41,1.41,1.41,1.41, 1.41,1.41,1.41,1.41, 1.41,1.41,1.41,1.41

##### Waveforms Dataset Attributes

The waveforms dataset attributes are for internal use only. Their values do not provide any useful information for using the data externally and will likely change.

##### XUnits and YUnits

The XUnits and YUnits attributes can have the following string values: "Volt", "Second", "Constant", "Amp", "Decibel", "Watt", "Ohm", "Gain", "Degree", "Meter", "Inch", "Hertz", "Percent", "Ratio", "Sample", "Division", "dBm", "Waveform", "Hits", "Bit", "Feet", "Henry", "Farad", "NoUnit", "Reflect", "Logic", "Point", "Hours", "Minute", "Celsius", "UnitInterval", "PerDivision", "DecibelJ", "Same", "Day", "Rad", "DecibelC", "TimeConstants", "Vpp", "SecondPerDiv", "Fields", "DecibelV", "Unknown"