Summary
The corpus expansion in #3 added the first confirmed QQQ (triple quadrupole) sample: MTBLS12691, an LCMS-8060 system running MRM-targeted acquisition. These files currently fail to open in the reader.
Two separate problems
-
The QQQ on-disk variant is not decoded at all. Its real per-spectrum data lives under a TLM Raw Data storage (TLM Raw Data/MS Raw Data, TLM Raw Data/Spectrum Index, TLM Raw Data/Retention Time, plus status/TIC streams) - structurally closer to .qgd GC-MS's MS Raw Data/Spectrum Index naming than to either TTFL Raw Data (IT-TOF) or QTFL RawData (QTOF), which tracks with QQQ and GC-MS both being quadrupole-based rather than TOF-based. Nothing in crates/openszraw::raw reads this storage today.
-
raw::detect_variant actively misidentifies these files as QTOF. Every .lcd file - QQQ ones included - carries an always-present QTFL RawData storage as boilerplate, even when it has none of the substreams (Centroid Index, Centroid Data) that make a file actually QTOF. detect_variant checks TTFL Raw Data first, then treats any remaining QTFL RawData presence as sufficient to call it Variant::Qtfl - so a QQQ file with an empty QTFL RawData storage gets misclassified as QTOF, and then fails with stream 'QTFL RawData/Centroid Index' not found instead of a clear "QQQ/TLM not yet supported" message.
Confirmed by listing the full CFBF storage tree of MTBLS12691/20210325_024.lcd: QTFL RawData is present and empty; TLM Raw Data is present and populated with real per-scan data.
Suggested split
- Quick, low-risk fix: teach
detect_variant to check for actual QTFL substreams (not just storage presence), or add an explicit Variant::Tlm/Unsupported case, so QQQ files fail with an honest "this is a QQQ/TLM file, not yet supported" message instead of a misleading QTOF stream-not-found error.
- Bigger, needs its own clean-room analysis: decode
TLM Raw Data itself. MTBLS12691 now has 12 files fetched locally (of ~296 available across the study's five remote subdirectories - see CORPUS.md and analysis.external's MTBLS12691 entry in re/src/analysis/external.py for the rest).
See docs/format/06-known-limitations.md section 7 for full detail, and CORPUS.md's MTBLS12691 row.
Summary
The corpus expansion in #3 added the first confirmed QQQ (triple quadrupole) sample:
MTBLS12691, an LCMS-8060 system running MRM-targeted acquisition. These files currently fail to open in the reader.Two separate problems
The QQQ on-disk variant is not decoded at all. Its real per-spectrum data lives under a
TLM Raw Datastorage (TLM Raw Data/MS Raw Data,TLM Raw Data/Spectrum Index,TLM Raw Data/Retention Time, plus status/TIC streams) - structurally closer to.qgdGC-MS'sMS Raw Data/Spectrum Indexnaming than to eitherTTFL Raw Data(IT-TOF) orQTFL RawData(QTOF), which tracks with QQQ and GC-MS both being quadrupole-based rather than TOF-based. Nothing incrates/openszraw::rawreads this storage today.raw::detect_variantactively misidentifies these files as QTOF. Every.lcdfile - QQQ ones included - carries an always-presentQTFL RawDatastorage as boilerplate, even when it has none of the substreams (Centroid Index,Centroid Data) that make a file actually QTOF.detect_variantchecksTTFL Raw Datafirst, then treats any remainingQTFL RawDatapresence as sufficient to call itVariant::Qtfl- so a QQQ file with an emptyQTFL RawDatastorage gets misclassified as QTOF, and then fails withstream 'QTFL RawData/Centroid Index' not foundinstead of a clear "QQQ/TLM not yet supported" message.Confirmed by listing the full CFBF storage tree of
MTBLS12691/20210325_024.lcd:QTFL RawDatais present and empty;TLM Raw Datais present and populated with real per-scan data.Suggested split
detect_variantto check for actual QTFL substreams (not just storage presence), or add an explicitVariant::Tlm/Unsupportedcase, so QQQ files fail with an honest "this is a QQQ/TLM file, not yet supported" message instead of a misleading QTOF stream-not-found error.TLM Raw Dataitself.MTBLS12691now has 12 files fetched locally (of ~296 available across the study's five remote subdirectories - seeCORPUS.mdandanalysis.external'sMTBLS12691entry inre/src/analysis/external.pyfor the rest).See
docs/format/06-known-limitations.mdsection 7 for full detail, andCORPUS.md'sMTBLS12691row.