Skip to main content

TDF Format - Overview

The timsTOF (TDF) acquisition writes a directory with the extension .d/ containing a small, well-defined set of files. The authoritative index is an embedded SQLite database; the bulk peak data lives in a flat companion stream.

FilePurposeCovered here
analysis.tdfSQLite database: schema, metadata, per-frame indexyes (see 01-tdf-sqlite-schema.md)
analysis.tdf_binFlat stream of compressed/raw frame payloadsyes (see 02-tdf-bin-block-stream.md)
*.m/ subdirectoryXML acquisition method filesout of scope

All multi-byte integers are little-endian. Real numbers are IEEE-754 doubles. There is no top-level magic in analysis.tdf_bin; the whole block index lives in the SQLite database.

Document map​

FileTopic
00-overview.mdThis file.
01-tdf-sqlite-schema.mdanalysis.tdf SQLite schema: GlobalMetadata, Frames, mode-specific index tables, calibration tables.
02-tdf-bin-block-stream.mdanalysis.tdf_bin block layout (8-byte block header, payload, padding).
03-frame-payload-encoding.mdFrame payload codecs: Codec 1 (LZF + signed-delta) and Codec 2 (zstd + byte-transpose).
04-calibration.mdTOF -> m/z (from MzCalibration, with a range fallback) and scan -> 1/K0 calibration models.
05-instrument-tables.mdAcquisition-mode tables: diaPASEF, PASEF DDA, prm-PASEF, properties, segments, error log.
06-references-and-gaps.mdPrior art, known gaps, and items out of scope.

Status​

This specification was developed by binary analysis of a 64-bundle probe corpus spanning TDF schema versions 3.1 through 3.7 and supplemented with the OpenSource reference implementations listed in 06-references-and-gaps.md.

Version compatibility​

Every claim in this specification was verified against the schema versions present in the probe corpus:

  • 3.1 (Compass 2019 / early 2020 timsTOF Pro)
  • 3.3 (2020 / 2021 timsTOF Pro firmware)
  • 3.5 (2021 / 2022 timsTOF Pro 2, SCP)
  • 3.6 (2022 / 2023 timsTOF HT)
  • 3.7 (PXD039066, otofControl 3.1.13)

No schema-version-keyed difference in the outer block header or the codec dispatch was observed.

sv=3.7 additions (PXD039066):

  • CollisionEnergySweepingInfo(Frame, CollisionId, CollisionEnergy, CollisionEnergyPercent) table added (empty in corpus bundle; see 05-instrument-tables.md).
  • GlobalMetadata extras: DenoisingEnabled=1, DigitizerType=NI5155, DigitizerSerialNumber, PythonIqResult (sha256), PythonPluginChecksum (sha256), PythonPluginName=paser. These indicate the PaSER real-time data-processing pipeline was active.
  • PrmFrameMeasurementMode(Frame INTEGER, MeasurementModeId TEXT) table added. Verified in PXD028279 (prm-PASEF, sv=3.5): 10,570 rows with MeasurementModeId = NULL throughout.