Experiments are stored in up to three files. Description of experiment is stored in text *.exp file. The recorded data are stored in binary *.d01 file. When an experiment contains large parameter arrays (more than 1000 elements), those arrays are stored in an optional binary sidecar *.bip file instead of inline in the *.exp file.

Structure of *.d01 file

Name Type Description
Data amount unsigned 32 Number of recorded variables stored.
Data format unsigned 32 0 - data stored in double format, 1 - data stored in float format.

The following two sections are repeated a number of times equal to the Data amount value.

Name Type Description
Data dimension int 32 The number of dimensions of stored data.
Array of dimensions (int 32)*4 The sizes of dimensions.
Overall data size int 32 The size of data stored. Equal to the product of all dimension sizes.
Data (Overall data size) * sizeof(double or float) Data stored in c-style 1D array: [(0,0,0,0), (1,0,0,0), …, (n,0,0,0), (0,1,0,0), …, (n,m,k,l)]. Fastest index corresponds to transient axes, slowest to Z-axes.

Structure of *.exp file

The exp file is written in Windows ini-file style. Section names are enclosed in square brackets []. Fields have field_name = field_value format. The order in which fields appear within one section is insignificant. Some sections contain plain text. Required sections are marked in red. Section and field names with_underline stand for arbitrary names. Field names in bold are reserved words.

Section Field Value Description
[general] name string The name of the experiment.
[text] - plain multiline text Any text (sample description).
[sweep] - - Experimental axis definition.
transient string Transient axis. Format: T/I, trace_length, rep_number, first_stream_name[, second_stream_name[, …]]. T = transient trace stored; I = trace integrated, only integral stored. Example: transient = I,200,30,a,b — 200-point transient, integrated, 30 shots per loop, streams a and b. For single-point devices trace length is 1. Streams must be defined in the [aquisition] section.
sweep0/1/… string Scan axes. Format: X/Y/Z/S/P, trace_length, rep_number, par_name[, …]. Example: sweep0 = X,128,1,T1. The definition order sets the axis presentation order. Data are stored as a 1D c-style array, fastest to slowest: I/T, X, Y, Z. S(um) and P(arameters) axes do not increase stored data amount. Parameters must be described in the [params] section.
[presetup] var_name string Actions before the experiment. Format: value; property@device. Example: Delay = 10 ms;Delay@ADC.
[aftersetup] var_name string Actions after the experiment. Format: value; property@device. Example: Delay = 10 ms;Delay@ADC.
[eachpoint] var_name string Actions executed at each point. Format: value; property@device. Example: Delay = 10 ms;Delay@ADC.
[params] - - Parameters of the experiment.
par_name string Format: value; property@device. Value forms: (i) comma-separated list; (ii) first_value step increment; (iii) first_value to last_value; (iv) @bip — large array stored in the *.bip sidecar file (see below). Examples: T1 = 40 ns step 20 ns;PPL variable or RF = 40 MHz to 60 MHz;Freq@Gen1.
[aquisition] - - Acquisition streams.
stream_name string Format: property@device. Example: a = In_Ch0@PulseGen.
[program] - plain multiline text Pulse program.
[streams] - - Supporting information about data streams.
names comma-separated list Names of data streams (may differ from acquisition stream names). Example: names = Re, Im.
units comma-separated list Units of data streams. Example: units = V, V.
dwelltime comma-separated list Dwell time of transient data streams. Example: dwelltime = 10 ns, 10 ns.
[device_name] any_field device dependent Any information a device chooses to store in the exp file.

Structure of *.bip file

The *.bip file is a binary sidecar that stores experiment parameter arrays too large to be written compactly in the *.exp file (threshold: 1000 elements). Its name matches the *.exp file with the extension replaced by .bip. In the *.exp file the corresponding parameter value is stored as the literal string @bip to signal that the actual data must be read from the sidecar.

File header:

Field Type Description
Magic char[4] Always BIP1 (ASCII, no null terminator). Any other value indicates a corrupt or incompatible file.
Count uint32 Number of parameter entries stored in this file.

The following record is repeated Count times, once per parameter:

Field Type Description
name_len uint32 Byte length of the parameter name string.
name char[name_len] Parameter name (no null terminator). Matches the name used in the *.exp [params] section.
unit_len uint32 Byte length of the unit string.
unit char[unit_len] Unit string (no null terminator), e.g. ns, MHz.
sig_digit uint32 Number of significant digits used when displaying this parameter.
data_type uint32 Element format: 0 = double (8 bytes), 1 = float (4 bytes). Current writer always produces 1 (float).
elem_count uint32 Number of elements in the array.
data float[elem_count] or double[elem_count] Raw array values in native binary format, elem_count × sizeof(float or double) bytes. All values are in the parameter's native unit.