MSPeak.bin
Binary payload file containing centroid (peak) mass spectra. Present in both QQQ and Q-TOF acquisitions. Each scan's data block is located via SpectrumOffset and ByteCount from the corresponding MSScan.bin scan record.
Status: Confirmed
File Layout
- Global header: 68 bytes. The first 4 bytes are an int32 magic number/version flag:
259(0x03 0x01 0x00 0x00). The remaining 64 bytes are all zeros padding. - Data payload: Contiguous scan blocks, each starting at the
SpectrumOffsetstored inMSScan.bin.
Peak Block Encoding
The encoding inside each block differs between QQQ and Q-TOF.
QQQ MRM (FormatID=3): Array of Structures (AoS)
- 12 bytes per point:
double mz (8 bytes) + float intensity (4 bytes). - In MRM mode,
PointCountis always 1 (single MRM transition per scan). mzis in Da (real mass units, no scaling factor). Verified againstAcqMethod.xmltransition list.- Example (PXD004747 scan 1):
mz=875.4300, intensity=41.28; (scan 2)mz=673.3700, intensity=41.26.
Q-TOF Centroid (FormatID=2): Structure of Arrays (SoA)
- A block of N points is NOT stored as N interleaved (mz, intensity) tuples.
- Layout:
N * double mz_raw (8 bytes each), immediately followed byN * float intensity (4 bytes each). - Total block size:
N * 8 + N * 4 = N * 12, matchingByteCount. - mz encoding:
mz_rawvalues are stored as 100x the real, fully-calibrated m/z in Da (retaining full double-precision floating point accuracy). Divide by 100.0 to get the final Da value.- Note: The calibration parameters in
MSMassCal.binare already applied to these values upstream by the instrument's acquisition software before they are written to disk. No further calibration math is required. - Verified across PXD001310 and PXD004426 by confirming that
mz_raw / 100.0falls within the scan'sMinX/MaxXbounds.
- Note: The calibration parameters in
- MS2 scan centroid ions may fall outside the MinX/MaxX of the precursor scan (expected; those bounds describe the Q1/profile scan range, not the fragment window).
- Confirmed SoA on two independent Q-TOF files:
- PXD001310 scan 1: N=1258, block=15096 bytes (10064 + 5032).
mz_rawvalues strictly follow double-precision fractionals (e.g.,29888.4237296802->298.88423730Da). - PXD004426 scan 1: N=15, block=180 bytes (120 + 60).
mz_rawrange: 50767-101587 -> Da: 507.7-1015.9.
- PXD001310 scan 1: N=1258, block=15096 bytes (10064 + 5032).
- Intensities are positive and non-zero for all non-baseline peaks (verified).
Unresolved
- Whether Q-TOF files from instruments other than G6550A/G6540B use the same 100x mz scale.