Skip to content

PRM-PASEF frames (msms_type=10) are decoded by the reader but skipped in the mzML spectrum projection #13

Description

@Nathan-D-R

Found in a cross-vendor parity audit of the OpenMassSpec stack.

The low-level reader fully decodes PRM-PASEF: PrmMsMsInfo/PrmTarget types plus Reader::prm_msms_info_for_frame/prm_target methods exist and are exposed to Python. But the mzML/SpectrumSource projection layer explicitly drops these frames - spectra_for_frame's doc comment (mzml.rs:28) says outright: "Frames with msms_type other than 0/8/9 (e.g. PRM-PASEF = 10) are skipped for now," and the match arm (mzml.rs:514, _ => Vec::new()) confirms it.

So PRM data is reachable if you go around the umbrella and call the Rust/Python reader API directly, but never reaches mzML output or anything consuming this crate through openmassspec-core/the OpenMassSpec umbrella. Given the crate already models PRM-PASEF as a first-class acquisition mode at the reader level, this looks like the natural next msms_type to wire up alongside PASEF DDA (8) and diaPASEF (9), which already have real projections just above it in the same match.

Proposed scope: add a msms_type == 10 arm to spectra_for_frame that projects PrmMsMsInfo/PrmTarget rows into MS2 spectra the same way msms_type == 8 (PASEF) does, using PrmTarget in place of the Precursors table row.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions