Skip to main content

_FUNCTNS.INF

Binary function descriptor table. Present in every .raw directory. One record per acquisition function (survey MS, IMS, MS/MS, lock-mass reference, etc.).

Status: Mostly Decoded (Phase 3)

Cross-referenced against _extern.inf "Scan Time" and "Interscan Time" fields and IDX retention-time sequences for all four corpus instruments.

Corpus used:

  • PXD058812 - Synapt HDMS (non-IMS QTOF mode), 1 function
  • PXD066594/WANG.raw - SYNAPT G2-Si IMS, 1 function
  • PXD068881/CtpA - SYNAPT G2-Si DDA, 3 functions
  • PXD075602/DHPR - Xevo G2-XS, 3 functions

Record Layout (416 bytes per function, no file header)

All unlisted byte positions are zero in the entire corpus.

OffsetSizeTypeConfirmedDescription
0x0001u8Yesfunction_type_code: 0x12 (=18) in all corpus records; consistent with Waters SDK "TOF MS" category
0x0011u8Partialscan_subtype: 0x25 = older non-IMS QTOF; 0x71 = G2-Si/G2-XS survey; 0xf1 = G2-Si/G2-XS lock-mass reference (= 0x71
0x0024f32Yescycle_contribution (s) = scan_time + interscan_delay; confirmed as scan_time + interscan_delay for all 9 records
0x0064f32Yesinterscan_delay (s), duplicate of 0x01C
0x00A6--zero
0x0102u16Yestof_depth: number of TDC bins per pusher pulse (e.g. 16672 for G2-Si at 69 µs, 17204 for older QTOF at 62 µs)
0x0122--zero
0x0143--zero
0x0171u8Partial0x01 in all corpus records; possibly continuum/centroid flag (1=continuum) or polarity (1=positive)
0x0184--zero
0x01C4f32Yesinterscan_delay (s) - idle time between end of one scan and start of next; matches Interscan Time (sec) in _extern.inf
0x0204f32Yesscan_time (s) - data collection time per scan; matches Scan Time (sec) in _extern.inf
0x024124--zero
0x0A04f32Yesmz_low - mass range lower bound (m/z)
0x0A4124--zero
0x1204f32Yesmz_high - mass range upper bound (m/z)
0x124156--zero

Total record size: 416 bytes.

Timing Model

For an experiment with M multiplexed functions alternating in a DDA cycle:

per-function slot (s) = scan_time + interscan_delay [field at 0x002]
total DDA cycle (s) = sum of slots across all M active functions
scan interval for Fn_i = total DDA cycle

Cross-check validation (all from IDX RT diffs vs FUNCTNS.INF):

DatasetFnsscan_timeinterscanslot (s)observed interval (s)
P15 QTOF11.000.101.101.11 (single fn)
WANG G2-Si11.000.0141.0141.02 (single fn)
CtpA Fn1-220.300.0140.3140.628 (2x slot)
DHPR Fn1-220.500.0140.5141.03 (2x slot)

TOF Depth Field

tof_depth at +0x010 is the number of TDC bins per pusher pulse. It equals floor(pusher_interval_µs * 1000 / tdc_bin_ns).

Datasetpusher (µs)tof_depthimplied TDC bin (ns)
P15 QTOF62172043.60
WANG G2-Si69166724.14
CtpA G2-Si69167044.13
DHPR G2-XS60.25168003.59

Scan Subtype (byte 0x001)

Observed values and correlations:

ValueInstrument classFunction role
0x25Older non-IMS QTOF (Synapt HDMS base)Single survey function
0x71SYNAPT G2-Si / Xevo G2-XSSurvey / parent function
0xf1SYNAPT G2-Si / Xevo G2-XSLock-mass / reference function

Bit 7 (0x80) of the subtype byte appears to flag a lock-mass reference function. Polarity cannot be confirmed from the available corpus (all positive-mode data).

Key Facts

  • File size = N x 416 bytes, where N = number of acquisition functions
  • No file header; first byte of file is first byte of function 1 record
  • Functions 1..N correspond to _FUNC001.DAT/.IDX/.STS, etc.
  • The _extern.inf "Function Parameters - Function N" sections provide matching human-readable copies of scan_time, interscan_delay, and mass range

Undecoded

  • Exact semantics of function_type_code 0x12 (consistent with Waters SDK enum value 18 = "TofMS" but cannot be confirmed without non-TOF corpus data)
  • Byte 0x017 purpose (polarity vs data format flag)
  • Bytes 0x012-0x013, 0x014-0x016, 0x018-0x01B (all zero in corpus)
  • IMS-specific method parameters (wave velocity, trap bias, transfer bias) are not present in this record. They do not appear in _extern.inf either. These values are likely stored in a proprietary instrument method file outside the .raw directory and are not recoverable from the raw data alone.

Reference Sources

  • _extern.inf "Scan Time (sec)" and "Interscan Time (sec)" per function
  • Empirical hex analysis: re/src/analysis/inspect.py