Skip to main content

APEXnnnD.BIN / APEXnnnDIONS.CSV

note

OpenWRaw does not read these files and decodes no drift time from them. The layout notes below, including any dt_bin / tof_bin split of a record word, are unverified working notes. The same split was shown not to hold for _FUNCnnn.DAT (see _FUNCnnn.DAT).

Files produced by the Waters Apex3D peak-detection algorithm. Present only in IMS-MS acquisitions on SYNAPT G2-Si instruments where MassLynx post-processing was run (requires Apex3D module installed).

The nnn index matches the _FUNCnnn function number being processed. In all corpus examples, only FUNC001 (the survey IMS function) is processed: Apex3D.bin and Apex3DIons.csv.

APEXnnnDIONS.CSV​

Status: Fully Decoded​

Human-readable CSV. All columns are self-describing from the header row.

Observed columns (from PXD068881 CtpA):

ColumnTypeDescription
FunctionintSource function number (always 1 in corpus)
indexintSequential ion index (1-based)
m_zfloatCalibrated m/z (Da, 4 decimal places)
m_zNoCalfloatm/z before T1 calibration polynomial
rtfloatRetention time at peak apex (min)
intenintPeak apex intensity (TDC counts)
areaintIntegrated peak area
countsintTotal raw ion counts within 3D peak
errMzPPMfloatm/z error (ppm), if lock mass applied
errRTfloatRT error (min)
errAreafloatArea error
saturationintSaturation flag (0 = not saturated)
filterReasonstrRejection code (empty = accepted)
m_zNoDTfloatm/z without drift time correction
m_zRawfloatRaw m/z from integer tof_bin (no sub-bin)
fIndexfloataccIndex value (= K * sqrt(m_zRaw))
accIndexfloatAccumulated TOF index: K * sqrt(m_zRaw) where K = A_us^-1 × pusher_clock_rate
chFWHMfloatChromatographic peak width (min, FWHM)
msFWHMfloatMass spectral peak width (Da, FWHM)
atStartTime ... atStopTimefloatPeak boundary retention times (min)
atMsStartMass, atMsStopMassfloatPeak boundary m/z limits (Da)
innerElementCountintNumber of IMS cells contributing to core peak
centerSumResponseintSummed intensity of core peak cells
outerElementCountintNumber of cells in peak shoulder/tail
outerSumResponseintSummed intensity of shoulder cells
nonZeroElementCountintCount of non-zero cells across full peak boundary
centerSumCountsintRaw TDC counts in core peak
outerSumCountsintRaw TDC counts in shoulder/tail

accIndex field​

accIndex (= fIndex) encodes the centroid TOF flight position in Apex3D-internal units:

accIndex = K * sqrt(m_zRaw)

where K = 1 / t_bin_us (inverse of the per-bin TOF step in microseconds) is derived from the instrument calibration. For the CtpA dataset K = 4582.48 (units: bins/sqrt(Da)).

This is NOT a raw field from _FUNCnnn.DAT. It is a post-processed quantity computed by Apex3D from the decoded tof_bin using the same calibration constants as the m/z formula.

APEXnnnD.BIN​

Status: Container structure decoded; per-section data partially characterized​

Self-describing multi-section binary container written by the Apex3D executable. Mirrors the ion data in APEXnnnDIONS.CSV but in binary form plus additional internal state.

File Header (64 bytes)​

OffsetTypeValueDescription
0x00u321File format version
0x04u320Padding
0x08u3264Header size in bytes
0x0Cu3252Section descriptor record size
0x10-0x2Fbytes0Padding
0x30u321Unknown (always 1 observed)
0x34u320Padding
0x38u32variesByte offset where section data begins
0x3Cu320Padding

Section Descriptor Table​

Immediately follows the 64-byte header. Each descriptor is 52 bytes:

struct SectionDesc {
u32 reserved_0; // first scalar field (semantics unclear; see notes)
u32 data_offset; // byte offset of this section's data, relative to data_start
u32 reserved_8; // second scalar field (semantics unclear)
char name[40]; // null-padded ASCII section name
};

The number of section descriptors = (data_start - 64) / 52.

The file data area begins at the offset stored in header@0x38. Section data starts at header_data_start + section_desc.data_offset.

Section 0 always has data_offset = 0 (its data starts immediately at data_start). Subsequent sections have data_offset equal to the cumulative byte extent of previous sections.

Sections Observed in CtpA (PXD068881)​

13 sections:

IndexNameData sizeContent
0AcquisitionParameter7230Nested parameter table (13 fields; see below)
1InstrumentInfo834Instrument geometry/state (binary; mostly zeros)
2FunctionParameter550Per-function settings (binary)
3Calibration62ASCII: Apex3D command-line args (lock mass, tolerance)
4PeakDetectResult114ASCII: detection parameters used (threshold, function)
5ProcessingProgram117Binary: program version/timestamp
6PeakDetectParameter659Binary f64 array: detection algorithm parameters
7DeIsotopeParameter116Binary f64 array: de-isotoping parameters
8BinParameter71Binary: binning configuration
9LmCalibrator44Binary f64: lock mass calibration coefficients
10LockMassStick65Binary f64: lock mass reference m/z positions
11Peak388Binary: compact peak summary (format not decoded)
12PeakEx8,502,560Binary: extended peak data (format not decoded)

Calibration and PeakDetectResult (ASCII sections)​

These sections contain the Apex3D command-line invocation that produced the file. Example (truncated):

-lockMassZ1 556.2771 -lockMassToleranceAMU 0.2500
-le3DThresholdCounts 130 -function 1 -bEnableCuda 1

AcquisitionParameter Section​

The data at data_start is a nested Waters-style parameter table with 13 named fields describing the acquisition setup (scan time, pusher count, m/z range, etc.). The inner structure uses a different record format than _FUNCnnn.STS and is not currently fully decoded.

Peak and PeakEx Binary Data​

These sections contain the detected 3D ion peaks in binary form. The file size of PeakEx (~8.5 MB for CtpA, 1138 scans over 2h) suggests it stores per-scan or per-push IMS-MS intensity data associated with each detected peak, not just the apex values.

The APEXnnnDIONS.CSV file provides all peak apex data in human-readable form. Binary decoding of Peak/PeakEx is not necessary for reading or writing spectrum data.

Reference Sources​

  • Empirical analysis: CtpA (PXD068881)
  • CSV format: self-describing column headers
  • Binary structure: decoded from hex analysis