Skip to content

add IsobaricWorkflow to TMT workflow#604

Merged
ypriverol merged 10 commits intobigbio:dev_IsobaricWorkflowfrom
MaLLLiYA:isobaric_workflow
Apr 3, 2026
Merged

add IsobaricWorkflow to TMT workflow#604
ypriverol merged 10 commits intobigbio:dev_IsobaricWorkflowfrom
MaLLLiYA:isobaric_workflow

Conversation

@MaLLLiYA
Copy link
Copy Markdown
Collaborator

PR checklist

  • This comment contains a description of changes (with reason).
  • If you've fixed a bug or added code that should be tested, add tests!
  • If you've added a new tool - have you followed the pipeline conventions in the contribution docs
  • If necessary, also make a PR on the bigbio/quantms branch on the nf-core/test-datasets repository.
  • Make sure your code lints (nf-core pipelines lint).
  • Ensure the test suite passes (nextflow run . -profile test,docker --outdir <OUTDIR>).
  • Check for unexpected warnings in debug mode (nextflow run . -profile debug,test,docker --outdir <OUTDIR>).
  • Usage Documentation in docs/usage.md is updated.
  • Output Documentation in docs/output.md is updated.
  • CHANGELOG.md is updated.
  • README.md is updated (including new tool citations and authors/contributors).

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Oct 30, 2025

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

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

Run ID: 4d8743e2-7fab-4662-9f31-8b5df255d49d

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
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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 and usage tips.

Comment thread workflows/tmt.nf Outdated
Comment thread workflows/tmt.nf Outdated
ypriverol and others added 2 commits October 30, 2025 21:43
Co-authored-by: Julianus Pfeuffer <8102638+jpfeuffer@users.noreply.github.com>
@jpfeuffer
Copy link
Copy Markdown
Collaborator

This tool is not merged into dev yet.
I think you are building containers from dev only.

@jpfeuffer
Copy link
Copy Markdown
Collaborator

I merged it now. You still need new containers.

@ypriverol
Copy link
Copy Markdown
Member

I need to build the container, give me the weekend.

ypriverol and others added 4 commits November 4, 2025 07:26
@MaLLLiYA MaLLLiYA changed the base branch from dev to dev_IsobaricWorkflow December 18, 2025 01:53
@ypriverol ypriverol marked this pull request as ready for review April 3, 2026 10:13
@ypriverol ypriverol merged commit fc363bb into bigbio:dev_IsobaricWorkflow Apr 3, 2026
16 of 26 checks passed
@qodo-code-review
Copy link
Copy Markdown
Contributor

Review Summary by Qodo

Integrate IsobaricWorkflow into TMT quantification pipeline

✨ Enhancement

Grey Divider

Walkthroughs

Description
• Replace TMT workflow with IsobaricWorkflow module
• Simplify quantification pipeline by removing intermediate steps
• Add IsobaricWorkflow configuration parameters
• Update module configuration for result publishing
Diagram
flowchart LR
  ID["ID subworkflow"]
  ISO["ISOBARIC_WORKFLOW module"]
  CONV["MSSTATS_CONVERTER module"]
  MSSTATS["MSSTATS_TMT module"]
  
  ID -- "id_results" --> ISO
  ISO -- "consensusXML" --> CONV
  CONV -- "msstats output" --> MSSTATS
Loading

Grey Divider

File Changes

1. conf/modules/modules.config ⚙️ Configuration changes +1/-1

Add IsobaricWorkflow to result publishing config

• Added ISOBARIC_WORKFLOW to the publishDir configuration for result tables
• Ensures isobaric workflow outputs are published to quant_tables directory

conf/modules/modules.config


2. modules/local/openms/isobaric_workflow/main.nf ✨ Enhancement +64/-0

Create IsobaricWorkflow process module

• New process module implementing OpenMS IsobaricWorkflow tool
• Handles isobaric labeling extraction and normalization from LC-MS/MS data
• Sorts input mzML and idXML files by base name for consistent processing
• Generates mzTab and consensusXML output files with version tracking

modules/local/openms/isobaric_workflow/main.nf


3. modules/local/openms/isobaric_workflow/meta.yml 📝 Documentation +42/-0

Add IsobaricWorkflow module metadata documentation

• New metadata file documenting IsobaricWorkflow module
• Defines inputs (mzML spectra, idXML identifications, experimental design)
• Specifies outputs (mzTab, consensusXML, log files, versions)
• References OpenMS documentation and tool homepage

modules/local/openms/isobaric_workflow/meta.yml


View more (2)
4. nextflow.config ⚙️ Configuration changes +3/-0

Add IsobaricWorkflow configuration parameters

• Added IsobaricWorkflow configuration section with type parameter
• Sets default isobaric labeling type to itraq4plex

nextflow.config


5. workflows/tmt.nf ✨ Enhancement +20/-25

Refactor TMT workflow to use IsobaricWorkflow

• Replaced multi-step workflow (FEATURE_MAPPER, FILE_MERGE, PROTEIN_INFERENCE, PROTEIN_QUANT) with
 single ISOBARIC_WORKFLOW module
• Added MSSTATS_CONVERTER module to convert consensusXML to msstats format
• Simplified channel operations by removing intermediate subworkflows
• Updated workflow outputs to use IsobaricWorkflow and MSSTATS_CONVERTER results

workflows/tmt.nf


Grey Divider

Qodo Logo

@qodo-code-review
Copy link
Copy Markdown
Contributor

qodo-code-review bot commented Apr 3, 2026

Code Review by Qodo

🐞 Bugs (2) 📘 Rule violations (0) 📎 Requirement gaps (0) 🎨 UX Issues (0)

Grey Divider


Action required

1. Wrong label type source 🐞 Bug ≡ Correctness
Description
ISOBARIC_WORKFLOW passes the IsobaricWorkflow “-type” argument from params.type (default
itraq4plex), which is disconnected from the pipeline’s existing experiment label type
(meta.labelling_type / params.labelling_type), so TMT runs can be processed with the wrong plex
setting and yield incorrect quantification.
Code

modules/local/openms/isobaric_workflow/main.nf[R46-48]

+        -exp_design ${expdes} \\
+        -type ${params.type} \\
+        -inference_method ${params.protein_inference_method} \\
Evidence
The new IsobaricWorkflow wrapper uses params.type for the “-type” CLI argument, while the pipeline
already models the experiment’s labeling as labelling_type (stored in meta.labelling_type from SDRF
or params.labelling_type) and branches isobaric workflows based on that value. Existing isobaric
tooling (IsobaricAnalyzer) correctly uses meta.labelling_type for “-type”, demonstrating the
intended source of truth.

modules/local/openms/isobaric_workflow/main.nf[41-57]
nextflow.config[69-75]
nextflow.config[181-183]
subworkflows/local/create_input_channel/main.nf[102-114]
subworkflows/local/create_input_channel/main.nf[144-152]
workflows/quantms.nf[70-76]
modules/local/openms/isobaric_analyzer/main.nf[57-70]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`ISOBARIC_WORKFLOW` passes `-type` from `params.type` (new, defaults to `itraq4plex`), but the pipeline already tracks the experiment label type as `labelling_type` (in `meta.labelling_type`, derived from SDRF or `params.labelling_type`). This can cause TMT experiments to run with the wrong `-type` value.

## Issue Context
- `meta.labelling_type` is the pipeline’s current source-of-truth for label type.
- `params.labelling_type` is already a top-level parameter.
- Introducing a separate `params.type` makes the behavior diverge from the rest of the pipeline.

## Fix Focus Areas
- modules/local/openms/isobaric_workflow/main.nf[41-57]
- workflows/tmt.nf[41-60]
- subworkflows/local/create_input_channel/main.nf[102-114]
- subworkflows/local/create_input_channel/main.nf[144-152]
- nextflow.config[69-75]
- nextflow.config[181-183]

## Suggested fix
1. Remove the new `params.type` (or at least stop using it).
2. Plumb the experiment’s labeling type into `ISOBARIC_WORKFLOW` and pass that to the tool:
  - Option A (preferred): add a `val labelling_type` input to the `ISOBARIC_WORKFLOW` process and compute it in `workflows/tmt.nf` from `ch_file_preparation_results` metadata (e.g., extract `it[0].labelling_type`, ensure it’s unique, then pass it).
  - Option B: use `params.labelling_type` if you also ensure it is populated for SDRF runs (currently SDRF sets `meta.labelling_type`, not necessarily `params.labelling_type`).
3. Update the IsobaricWorkflow invocation to `-type ${labelling_type}` (or `${meta.labelling_type}` if you decide to pass `meta`).

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Remediation recommended

2. Broken module metadata layout 🐞 Bug ⚙ Maintainability
Description
modules/local/openms/isobaric_workflow/meta.yml lists inputs (mzmls/id_files/expdes) under the tools
section instead of a top-level input section, unlike other modules, so metadata consumers won’t
correctly identify the module’s inputs.
Code

modules/local/openms/isobaric_workflow/meta.yml[R6-23]

+tools:
+  - IsobaricWorkflow:
+      description: |
+        Extracts and normalizes isobaric labeling information from an LC-MS/MS experiment.
+      homepage: https://abibuilder.cs.uni-tuebingen.de/archive/openms/Documentation/release/latest/html/TOPP_IsobaricWorkflow.html
+      documentation: https://abibuilder.cs.uni-tuebingen.de/archive/openms/Documentation/release/latest/html/TOPP_IsobaricWorkflow.html
+  - mzmls:
+      type: file
+      description: Input Spectra in mzML format
+      pattern: "*.mzML"
+  - id_files:
+      type: file
+      description: Identifications in idXML or mzIdentML format with posterior error probabilities as score type.
+      pattern: "*.idXML"
+  - expdes:
+      type: file
+      description: An experimental design file
+      pattern: "*.tsv"
Evidence
Existing module metadata in this repo declares inputs under a dedicated input: section, whereas
the new isobaric_workflow meta.yml places those entries under tools: and has no input: section
at all, making it inconsistent and likely to be misread by any tooling that expects the established
layout.

modules/local/openms/isobaric_workflow/meta.yml[6-24]
modules/local/openms/msstats_converter/meta.yml[6-22]
modules/local/openms/proteomicslfq/meta.yml[7-30]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`modules/local/openms/isobaric_workflow/meta.yml` declares `mzmls`, `id_files`, and `expdes` under `tools:` instead of under a top-level `input:` section. This diverges from other module meta.yml files in the repository and prevents consistent discovery of module inputs.

## Issue Context
Compare with `modules/local/openms/msstats_converter/meta.yml` and `modules/local/openms/proteomicslfq/meta.yml`, which both use `tools:` only for the actual tool and use a separate `input:` section for input files.

## Fix Focus Areas
- modules/local/openms/isobaric_workflow/meta.yml[1-41]
- modules/local/openms/msstats_converter/meta.yml[1-35]
- modules/local/openms/proteomicslfq/meta.yml[1-56]

## Suggested fix
- Keep only `IsobaricWorkflow` under `tools:`.
- Add a top-level `input:` section and move the `mzmls`, `id_files`, and `expdes` entries there (mirroring the layout used by other OpenMS modules in this repo).

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

ⓘ The new review experience is currently in Beta. Learn more

Grey Divider

Qodo Logo

Comment on lines +46 to +48
-exp_design ${expdes} \\
-type ${params.type} \\
-inference_method ${params.protein_inference_method} \\
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Action required

1. Wrong label type source 🐞 Bug ≡ Correctness

ISOBARIC_WORKFLOW passes the IsobaricWorkflow “-type” argument from params.type (default
itraq4plex), which is disconnected from the pipeline’s existing experiment label type
(meta.labelling_type / params.labelling_type), so TMT runs can be processed with the wrong plex
setting and yield incorrect quantification.
Agent Prompt
## Issue description
`ISOBARIC_WORKFLOW` passes `-type` from `params.type` (new, defaults to `itraq4plex`), but the pipeline already tracks the experiment label type as `labelling_type` (in `meta.labelling_type`, derived from SDRF or `params.labelling_type`). This can cause TMT experiments to run with the wrong `-type` value.

## Issue Context
- `meta.labelling_type` is the pipeline’s current source-of-truth for label type.
- `params.labelling_type` is already a top-level parameter.
- Introducing a separate `params.type` makes the behavior diverge from the rest of the pipeline.

## Fix Focus Areas
- modules/local/openms/isobaric_workflow/main.nf[41-57]
- workflows/tmt.nf[41-60]
- subworkflows/local/create_input_channel/main.nf[102-114]
- subworkflows/local/create_input_channel/main.nf[144-152]
- nextflow.config[69-75]
- nextflow.config[181-183]

## Suggested fix
1. Remove the new `params.type` (or at least stop using it).
2. Plumb the experiment’s labeling type into `ISOBARIC_WORKFLOW` and pass that to the tool:
   - Option A (preferred): add a `val labelling_type` input to the `ISOBARIC_WORKFLOW` process and compute it in `workflows/tmt.nf` from `ch_file_preparation_results` metadata (e.g., extract `it[0].labelling_type`, ensure it’s unique, then pass it).
   - Option B: use `params.labelling_type` if you also ensure it is populated for SDRF runs (currently SDRF sets `meta.labelling_type`, not necessarily `params.labelling_type`).
3. Update the IsobaricWorkflow invocation to `-type ${labelling_type}` (or `${meta.labelling_type}` if you decide to pass `meta`).

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

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.

3 participants