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.
Found in a cross-vendor parity audit of the OpenMassSpec stack.
The low-level reader fully decodes PRM-PASEF:
PrmMsMsInfo/PrmTargettypes plusReader::prm_msms_info_for_frame/prm_targetmethods exist and are exposed to Python. But the mzML/SpectrumSourceprojection layer explicitly drops these frames -spectra_for_frame's doc comment (mzml.rs:28) says outright: "Frames withmsms_typeother 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 nextmsms_typeto 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 == 10arm tospectra_for_framethat projectsPrmMsMsInfo/PrmTargetrows into MS2 spectra the same waymsms_type == 8(PASEF) does, usingPrmTargetin place of thePrecursorstable row.