Found during the 2026-07-24 cross-repo parity sweep.
docs/format/01-msscan.md:51-53 documents "Offset 36: TIC or related intensity metric (double)" and "Offset 44: Related intensity metric (double)" as confirmed for stride=284 (Q-TOF profile-mode, e.g. PXD001310). ScanRecord in crates/openaraw/src/raw/msscan.rs:16-30 has no fields for these offsets, and the stride>=284 branch (msscan.rs:131-134) only extracts min_x/max_x from that same record region. reader.rs:198-200 hardcodes total_ion_current/base_peak_mz/base_peak_intensity to None on every spectrum.
Note OpenMassSpecCore's mzML writer already falls back to computing these from sum(intensity)/max(intensity) when None (OpenMassSpecCore/src/mzml.rs, src/arrow.rs:359-361), so output isn't silently wrong for well-decoded spectra - the value of wiring this is (a) preserving a real instrument-reported TIC/intensity metric even when profile/peak decode fails or is partial, and (b) not leaving a documented-confirmed field completely unused.
Effort: small wire-up for stride=284 only; extending to other strides (220/216/196/186) needs new RE work to confirm the offsets hold there too (the doc only tags this Q-TOF-specific for stride=284).
Found during the 2026-07-24 cross-repo parity sweep.
docs/format/01-msscan.md:51-53documents "Offset 36: TIC or related intensity metric (double)" and "Offset 44: Related intensity metric (double)" as confirmed for stride=284 (Q-TOF profile-mode, e.g. PXD001310).ScanRecordincrates/openaraw/src/raw/msscan.rs:16-30has no fields for these offsets, and the stride>=284 branch (msscan.rs:131-134) only extractsmin_x/max_xfrom that same record region.reader.rs:198-200hardcodestotal_ion_current/base_peak_mz/base_peak_intensitytoNoneon every spectrum.Note
OpenMassSpecCore's mzML writer already falls back to computing these fromsum(intensity)/max(intensity)whenNone(OpenMassSpecCore/src/mzml.rs,src/arrow.rs:359-361), so output isn't silently wrong for well-decoded spectra - the value of wiring this is (a) preserving a real instrument-reported TIC/intensity metric even when profile/peak decode fails or is partial, and (b) not leaving a documented-confirmed field completely unused.Effort: small wire-up for stride=284 only; extending to other strides (220/216/196/186) needs new RE work to confirm the offsets hold there too (the doc only tags this Q-TOF-specific for stride=284).