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
0x0001u8Partialfunction_type_code: 0x12, 0x10 or 0x90 in the corpus; see Function Type Code
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

Function Type Code (byte 0x000)​

Observed across the 79 .raw bundles (240 function records) in the research corpus, with the MS level the reader assigns from in-file evidence and the function heading in _extern.inf:

ValueRecordsBundlesFunctions
0x1220777Survey and MS functions, MSe low- and high-energy functions (TOF PARENT FUNCTION, TOF MS FUNCTION), lock-mass reference functions, and the fast-DDA survey function
0x10318Every MS/MS product-ion function: the dependent functions of the 7 DDA bundles and the single TOF MSMS FUNCTION of PXD035818
0x9021Both functions of a MALDI MS/MS run (PXD005960, MALDI TOF MSMS FUNCTION)

0x10 differs from 0x12 in bit 1, and 0x90 is 0x10 with bit 7 set. MSe high-energy functions are MS2 but keep 0x12, so the type code alone does not give the MS level. The reader does not use this byte to decide the MS level.

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 meaning of the function_type_code bits (0x12, 0x10 and 0x90 are the only values seen; no 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