Skip to content

feat(dda): refine OpenMS -out_qpx into clean QPX, replace mzTab as published artifact - #725

Draft
ypriverol wants to merge 1 commit into
devfrom
feat/dda-qpx-replace-mztab
Draft

feat(dda): refine OpenMS -out_qpx into clean QPX, replace mzTab as published artifact#725
ypriverol wants to merge 1 commit into
devfrom
feat/dda-qpx-replace-mztab

Conversation

@ypriverol

Copy link
Copy Markdown
Member

What & why

Replace the mzTab with a clean QPX as the DDA pipeline's published quantification artifact.

OpenMS ProteomicsLFQ / IsobaricWorkflow already emit a partial QPX via -out_qpx (psm/feature/pg parquet), but that output (a) carries raw channel labels (run filename / bare index) and (b) lacks the metadata tables (run, sample, ontology, provenance, dataset) and the MuData (.h5mu) view. This PR adds a QPX_CONVERT step that runs the qpx tool (qpxc convert openms) over -out_qpx + the companion consensusXML + the SDRF to produce the final QPX — canonical TMT/iTRAQ/LFQ channel labels, full metadata, and MuData — bringing the DDA path to parity with the DIA-NN (quantmsdiann) QPX.

Changes

  • New module modules/local/qpx/qpx_convert/main.nfQPX_CONVERT process (qpxc convert openms --qpx-dir … --consensusxml … --sdrf-file … --output-folder …).
  • workflows/lfq.nf — run QPX_CONVERT after PROTEOMICSLFQ; final_result now emits the QPX dataset.
  • workflows/tmt.nf — run QPX_CONVERT after ISOBARIC_WORKFLOW; final_result now emits the QPX dataset.
  • nextflow.configqpx_version, accession params.

mzTab removal

final_result (the channel fed into pmultiqc and published) switches from *_openms.mzTab to the QPX dataset folder. This is safe because:

  • MSstats already consumes the consensusXML (MSSTATS_CONVERTER), not the mzTab.
  • pmultiqc no longer needs the mzTab (it runs off the idXML + consensusXML channels).

The OpenMS modules still produce the mzTab (-out_mzTab) for now; a follow-up can drop -out_mzTab from proteomicslfq/isobaric_workflow once we confirm nothing downstream reads it.

Blocked on (DRAFT)

  • qpx tool release + BioContainer — the module pins biocontainers/qpx:${params.qpx_version}; that image does not exist yet. Set the real tag once qpx is released/containerised.
  • End-to-end test on a real DDA-LFQ and DDA-TMT dataset once the container is available.
  • Multi-channel MuData fix in qpx (isobaric TMT/iTRAQ currently collapses to a single channel) — being fixed in the qpx repo; required before the TMT .h5mu is usable.

Notes / assumptions

  • The SDRF is passed as file(params.input) — correct for SDRF-driven DDA runs (the reanalysis path). Sample-sheet-only inputs have no SDRF and would need a guard.
  • Upstream -out_qpx labelling issues tracked in OpenMS#9817; QPX_CONVERT relabels downstream from the consensusXML/SDRF until those land.

…blished artifact

Add a QPX_CONVERT step to the DDA LFQ and TMT workflows that runs the qpx
tool (qpxc convert openms) over the OpenMS -out_qpx output + the companion
consensusXML + the SDRF, producing the final clean QPX dataset (canonical
channel labels, run/sample/ontology/provenance/dataset tables, MuData) at
parity with the DIA-NN (quantmsdiann) path.

- new module modules/local/qpx/qpx_convert/main.nf
- wire QPX_CONVERT into workflows/lfq.nf and workflows/tmt.nf
- final_result (fed to pmultiqc) now emits the QPX dataset instead of the mzTab
- MSSTATS already consumes consensusXML, not mzTab -- no change needed there
- nextflow.config: qpx_version + accession params

DRAFT: blocked on the qpx tool release + its BioContainer.
See OpenMS#9817 for the upstream -out_qpx labelling fixes.
@coderabbitai

coderabbitai Bot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: ae7ccd6f-99b0-4e58-bd2f-7426b6eb63b3

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

Copy link
Copy Markdown

nf-core pipelines lint overall result: Failed ❌

Posted for pipeline commit 82e4016

+| ✅ 115 tests passed       |+
#| ❔  17 tests were ignored |#
#| ❔   1 tests had warnings |#
!| ❗   7 tests had warnings |!
-| ❌   2 tests failed       |-
Details

❌ Test failures:

  • schema_params - Param qpx_version from nextflow config not found in nextflow_schema.json
  • schema_params - Param accession from nextflow config not found in nextflow_schema.json

❗ Test warnings:

  • pipeline_todos - TODO string in nextflow.config: Optionally, you can add a pipeline-specific nf-core config at https://github.com/nf-core/configs
  • pipeline_todos - TODO string in nextflow.config: Specify any additional parameters here
  • pipeline_todos - TODO string in CONTRIBUTING.md: Add any pipeline specific contribution guidelines here, such as coding styles, procedures, checklists etc.
  • pipeline_todos - TODO string in base.config: Check the defaults for all processes
  • pipeline_todos - TODO string in base.config: Customise requirements for specific processes.
  • pipeline_if_empty_null - ifEmpty(null) found in /home/runner/work/quantms/quantms/subworkflows/local/dda_id/main.nf: _ ch_software_versions = ch_software_versions.mix(PHOSPHO_SCORING.out.versions.ifEmpty(null))
    _
  • pipeline_if_empty_null - ifEmpty(null) found in /home/runner/work/quantms/quantms/subworkflows/local/id/main.nf: _ ch_software_versions = ch_software_versions.mix(PHOSPHO_SCORING.out.versions.ifEmpty(null))
    _

❔ Tests ignored:

❔ Tests fixed:

✅ Tests passed:

Run details

  • nf-core/tools version 4.0.3
  • Run at 2026-07-30 10:17:03

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant