Skip to content

Hotfix#115

Closed
robert-a-forsyth wants to merge 10 commits intomainfrom
hotfix
Closed

Hotfix#115
robert-a-forsyth wants to merge 10 commits intomainfrom
hotfix

Conversation

@robert-a-forsyth
Copy link
Collaborator

Adds ASCAT pdf printing as option and slight channel structure fix for multiple custom model downloads.

  • 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
  • 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).

Copilot AI review requested due to automatic review settings December 19, 2025 09:52
@github-actions
Copy link
Contributor

This PR is against the main branch ❌

  • Do not close this PR
  • Click Edit and change the base to dev
  • This CI test will remain failed until you push a new commit

Hi @robert-a-forsyth,

It looks like this pull-request is has been made against the IntGenomicsLab/lrsomatic main branch.
The main branch on nf-core repositories should always contain code from the latest release.
Because of this, PRs to main are only allowed if they come from the IntGenomicsLab/lrsomatic dev branch.

You do not need to close this PR, you can change the target branch to dev by clicking the "Edit" button at the top of this page.
Note that even after this, the test will continue to show as failing until you push a new commit.

Thanks again for your contribution!

@github-actions
Copy link
Contributor

github-actions bot commented Dec 19, 2025

nf-core pipelines lint overall result: Passed ✅ ⚠️

Posted for pipeline commit c2c0c15

+| ✅ 178 tests passed       |+
#| ❔  21 tests were ignored |#
#| ❔   1 tests had warnings |#
!| ❗ 144 tests had warnings |!
Details

❗ Test warnings:

  • pipeline_todos - TODO string in nextflow.config: Specify your pipeline's command line flags
  • pipeline_todos - TODO string in nextflow.config: Update the field with the details of the contributors to your pipeline. New with Nextflow version 24.10.0
  • pipeline_todos - TODO string in lint_log.txt: Named file extensions MUST be emitted for ALL output channels
  • pipeline_todos - TODO string in lint_log.txt: List additional required output channels/values here
  • pipeline_todos - TODO string in lint_log.txt: Named file extensions MUST be emitted for ALL output channels
  • pipeline_todos - TODO string in lint_log.txt: List additional required output channels/values here
  • pipeline_todos - TODO string in lint_log.txt: Named file extensions MUST be emitted for ALL output channels
  • pipeline_todos - TODO string in lint_log.txt: List additional required output channels/values here
  • pipeline_todos - TODO string in lint_log.txt: Named file extensions MUST be emitted for ALL output channels
  • pipeline_todos - TODO string in lint_log.txt: List additional required output channels/values here
  • pipeline_todos - TODO string in lint_log.txt: Named file extensions MUST be emitted for ALL output channels
  • pipeline_todos - TODO string in lint_log.txt: List additional required output channels/values here
  • pipeline_todos - TODO string in lint_log.txt: Named file extensions MUST be emitted for ALL output channels
  • pipeline_todos - TODO string in lint_log.txt: List additional required output channels/values here
  • pipeline_todos - TODO string in lint_log.txt: Named file extensions MUST be emitted for ALL output channels
  • pipeline_todos - TODO string in lint_log.txt: List additional required output channels/values here
  • pipeline_todos - TODO string in lint_log.txt: Named file extensions MUST be emitted for ALL output channels
  • pipeline_todos - TODO string in lint_log.txt: List additional required output channels/values here
  • pipeline_todos - TODO string in README.md: Include a figure that guides the user through the major workflow steps. Many nf-core
  • 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_todos - TODO string in methods_description_template.yml: #Update the HTML below to your preferred methods description, e.g. add publication citation for this pipeline
  • pipeline_todos - TODO string in nextflow.config: Specify any additional parameters here
  • pipeline_todos - TODO string in meta.yml: #Add a description of the module and list keywords
  • pipeline_todos - TODO string in meta.yml: #Add a description and other details for the software below
  • pipeline_todos - TODO string in meta.yml: #Add a description of all of the variables used as input
  • pipeline_todos - TODO string in meta.yml: #Delete / customise this example input
  • pipeline_todos - TODO string in meta.yml: #Add a description of all of the variables used as output
  • pipeline_todos - TODO string in meta.yml: #Delete / customise this example output
  • pipeline_todos - TODO string in meta.yml: #Add a description of the module and list keywords
  • pipeline_todos - TODO string in meta.yml: #Add a description and other details for the software below
  • pipeline_todos - TODO string in meta.yml: #Add a description of all of the variables used as input
  • pipeline_todos - TODO string in meta.yml: #Delete / customise this example input
  • pipeline_todos - TODO string in meta.yml: #Add a description of all of the variables used as output
  • pipeline_todos - TODO string in meta.yml: #Delete / customise this example output
  • pipeline_todos - TODO string in meta.yml: #Add a description of the module and list keywords
  • pipeline_todos - TODO string in meta.yml: #Add a description and other details for the software below
  • pipeline_todos - TODO string in meta.yml: #Add a description of all of the variables used as input
  • pipeline_todos - TODO string in meta.yml: #Delete / customise this example input
  • pipeline_todos - TODO string in meta.yml: #Add a description of all of the variables used as output
  • pipeline_todos - TODO string in meta.yml: #Delete / customise this example output
  • pipeline_todos - TODO string in main.nf: If in doubt look at other nf-core/modules to see how we are doing things! :)
  • pipeline_todos - TODO string in main.nf: A module file SHOULD only define input and output files as command-line parameters.
  • pipeline_todos - TODO string in main.nf: Software that can be piped together SHOULD be added to separate module files
  • pipeline_todos - TODO string in main.nf: Optional inputs are not currently supported by Nextflow. However, using an empty
  • pipeline_todos - TODO string in main.nf: List required Conda package(s).
  • pipeline_todos - TODO string in main.nf: See section in main README for further information regarding finding and adding container addresses to the section below.
  • pipeline_todos - TODO string in main.nf: Where applicable all sample-specific information e.g. "id", "single_end", "read_group"
  • pipeline_todos - TODO string in main.nf: Where applicable please provide/convert compressed files as input/output
  • pipeline_todos - TODO string in main.nf: Named file extensions MUST be emitted for ALL output channels
  • pipeline_todos - TODO string in main.nf: List additional required output channels/values here
  • pipeline_todos - TODO string in main.nf: Where possible, a command MUST be provided to obtain the version number of the software e.g. 1.10
  • pipeline_todos - TODO string in main.nf: It MUST be possible to pass additional parameters to the tool as a command-line string via the "task.ext.args" directive
  • pipeline_todos - TODO string in main.nf: If the tool supports multi-threading then you MUST provide the appropriate parameter
  • pipeline_todos - TODO string in main.nf: Please replace the example samtools command below with your module's command
  • pipeline_todos - TODO string in main.nf: Please indent the command appropriately (4 spaces!!) to help with readability ;)
  • pipeline_todos - TODO string in main.nf: A stub section should mimic the execution of the original module as best as possible
  • pipeline_todos - TODO string in meta.yml: #Add a description of the module and list keywords
  • pipeline_todos - TODO string in meta.yml: #Add a description and other details for the software below
  • pipeline_todos - TODO string in meta.yml: #Add a description of all of the variables used as input
  • pipeline_todos - TODO string in meta.yml: #Delete / customise this example input
  • pipeline_todos - TODO string in meta.yml: #Add a description of all of the variables used as output
  • pipeline_todos - TODO string in meta.yml: #Delete / customise this example output
  • pipeline_todos - TODO string in main.nf: If in doubt look at other nf-core/modules to see how we are doing things! :)
  • pipeline_todos - TODO string in main.nf: A module file SHOULD only define input and output files as command-line parameters.
  • pipeline_todos - TODO string in main.nf: Software that can be piped together SHOULD be added to separate module files
  • pipeline_todos - TODO string in main.nf: Optional inputs are not currently supported by Nextflow. However, using an empty
  • pipeline_todos - TODO string in main.nf: List required Conda package(s).
  • pipeline_todos - TODO string in main.nf: See section in main README for further information regarding finding and adding container addresses to the section below.
  • pipeline_todos - TODO string in main.nf: Where applicable all sample-specific information e.g. "id", "single_end", "read_group"
  • pipeline_todos - TODO string in main.nf: Where applicable please provide/convert compressed files as input/output
  • pipeline_todos - TODO string in main.nf: Named file extensions MUST be emitted for ALL output channels
  • pipeline_todos - TODO string in main.nf: List additional required output channels/values here
  • pipeline_todos - TODO string in main.nf: Where possible, a command MUST be provided to obtain the version number of the software e.g. 1.10
  • pipeline_todos - TODO string in main.nf: It MUST be possible to pass additional parameters to the tool as a command-line string via the "task.ext.args" directive
  • pipeline_todos - TODO string in main.nf: If the tool supports multi-threading then you MUST provide the appropriate parameter
  • pipeline_todos - TODO string in main.nf: Please replace the example samtools command below with your module's command
  • pipeline_todos - TODO string in main.nf: Please indent the command appropriately (4 spaces!!) to help with readability ;)
  • pipeline_todos - TODO string in main.nf: A stub section should mimic the execution of the original module as best as possible
  • pipeline_todos - TODO string in meta.yml: #Add a description of the module and list keywords
  • pipeline_todos - TODO string in meta.yml: #Add a description and other details for the software below
  • pipeline_todos - TODO string in meta.yml: #Add a description of all of the variables used as input
  • pipeline_todos - TODO string in meta.yml: #Delete / customise this example input
  • pipeline_todos - TODO string in meta.yml: #Add a description of all of the variables used as output
  • pipeline_todos - TODO string in meta.yml: #Delete / customise this example output
  • pipeline_todos - TODO string in main.nf: If in doubt look at other nf-core/modules to see how we are doing things! :)
  • pipeline_todos - TODO string in main.nf: A module file SHOULD only define input and output files as command-line parameters.
  • pipeline_todos - TODO string in main.nf: Software that can be piped together SHOULD be added to separate module files
  • pipeline_todos - TODO string in main.nf: Optional inputs are not currently supported by Nextflow. However, using an empty
  • pipeline_todos - TODO string in main.nf: List required Conda package(s).
  • pipeline_todos - TODO string in main.nf: See section in main README for further information regarding finding and adding container addresses to the section below.
  • pipeline_todos - TODO string in main.nf: Where applicable all sample-specific information e.g. "id", "single_end", "read_group"
  • pipeline_todos - TODO string in main.nf: Where applicable please provide/convert compressed files as input/output
  • pipeline_todos - TODO string in main.nf: Named file extensions MUST be emitted for ALL output channels
  • pipeline_todos - TODO string in main.nf: List additional required output channels/values here
  • pipeline_todos - TODO string in main.nf: Where possible, a command MUST be provided to obtain the version number of the software e.g. 1.10
  • pipeline_todos - TODO string in main.nf: It MUST be possible to pass additional parameters to the tool as a command-line string via the "task.ext.args" directive
  • pipeline_todos - TODO string in main.nf: If the tool supports multi-threading then you MUST provide the appropriate parameter
  • pipeline_todos - TODO string in main.nf: Please replace the example samtools command below with your module's command
  • pipeline_todos - TODO string in main.nf: Please indent the command appropriately (4 spaces!!) to help with readability ;)
  • pipeline_todos - TODO string in main.nf: A stub section should mimic the execution of the original module as best as possible
  • pipeline_todos - TODO string in meta.yml: #Add a description of the module and list keywords
  • pipeline_todos - TODO string in meta.yml: #Add a description and other details for the software below
  • pipeline_todos - TODO string in meta.yml: #Add a description of all of the variables used as input
  • pipeline_todos - TODO string in meta.yml: #Delete / customise this example input
  • pipeline_todos - TODO string in meta.yml: #Add a description of all of the variables used as output
  • pipeline_todos - TODO string in meta.yml: #Delete / customise this example output
  • pipeline_todos - TODO string in main.nf: If in doubt look at other nf-core/modules to see how we are doing things! :)
  • pipeline_todos - TODO string in main.nf: A module file SHOULD only define input and output files as command-line parameters.
  • pipeline_todos - TODO string in main.nf: Software that can be piped together SHOULD be added to separate module files
  • pipeline_todos - TODO string in main.nf: Optional inputs are not currently supported by Nextflow. However, using an empty
  • pipeline_todos - TODO string in main.nf: List required Conda package(s).
  • pipeline_todos - TODO string in main.nf: See section in main README for further information regarding finding and adding container addresses to the section below.
  • pipeline_todos - TODO string in main.nf: Where applicable all sample-specific information e.g. "id", "single_end", "read_group"
  • pipeline_todos - TODO string in main.nf: Where applicable please provide/convert compressed files as input/output
  • pipeline_todos - TODO string in main.nf: Named file extensions MUST be emitted for ALL output channels
  • pipeline_todos - TODO string in main.nf: List additional required output channels/values here
  • pipeline_todos - TODO string in main.nf: Where possible, a command MUST be provided to obtain the version number of the software e.g. 1.10
  • pipeline_todos - TODO string in main.nf: It MUST be possible to pass additional parameters to the tool as a command-line string via the "task.ext.args" directive
  • pipeline_todos - TODO string in main.nf: If the tool supports multi-threading then you MUST provide the appropriate parameter
  • pipeline_todos - TODO string in main.nf: Please replace the example samtools command below with your module's command
  • pipeline_todos - TODO string in main.nf: Please indent the command appropriately (4 spaces!!) to help with readability ;)
  • pipeline_todos - TODO string in main.nf: A stub section should mimic the execution of the original module as best as possible
  • pipeline_todos - TODO string in meta.yml: #Add a description of the module and list keywords
  • pipeline_todos - TODO string in meta.yml: #Add a description and other details for the software below
  • pipeline_todos - TODO string in meta.yml: #Add a description of all of the variables used as input
  • pipeline_todos - TODO string in meta.yml: #Delete / customise this example input
  • pipeline_todos - TODO string in meta.yml: #Add a description of all of the variables used as output
  • pipeline_todos - TODO string in meta.yml: #Delete / customise this example output
  • pipeline_todos - TODO string in main.nf: If in doubt look at other nf-core/modules to see how we are doing things! :)
  • pipeline_todos - TODO string in main.nf: A module file SHOULD only define input and output files as command-line parameters.
  • pipeline_todos - TODO string in main.nf: Software that can be piped together SHOULD be added to separate module files
  • pipeline_todos - TODO string in main.nf: Optional inputs are not currently supported by Nextflow. However, using an empty
  • pipeline_todos - TODO string in main.nf: A stub section should mimic the execution of the original module as best as possible
  • pipeline_todos - TODO string in meta.yml: #Add a description of the module and list keywords
  • pipeline_todos - TODO string in meta.yml: #Add a description and other details for the software below
  • pipeline_todos - TODO string in meta.yml: #Add a description of all of the variables used as input
  • pipeline_todos - TODO string in meta.yml: #Delete / customise this example input
  • pipeline_todos - TODO string in meta.yml: #Add a description of all of the variables used as output
  • pipeline_todos - TODO string in meta.yml: #Delete / customise this example output
  • local_component_structure - tumor_only_happhase.nf in subworkflows/local should be moved to a SUBWORKFLOW_NAME/main.nf structure
  • local_component_structure - prepare_annotation.nf in subworkflows/local should be moved to a SUBWORKFLOW_NAME/main.nf structure
  • local_component_structure - prepare_reference_files.nf in subworkflows/local should be moved to a SUBWORKFLOW_NAME/main.nf structure
  • local_component_structure - tumor_normal_happhase.nf in subworkflows/local should be moved to a SUBWORKFLOW_NAME/main.nf structure

❔ Tests ignored:

  • files_exist - File is ignored: CODE_OF_CONDUCT.md
  • files_exist - File is ignored: assets/nf-core-lrsomatic_logo_light.png
  • files_exist - File is ignored: docs/images/nf-core-lrsomatic_logo_light.png
  • files_exist - File is ignored: docs/images/nf-core-lrsomatic_logo_dark.png
  • files_exist - File is ignored: .github/ISSUE_TEMPLATE/config.yml
  • files_exist - File is ignored: .github/workflows/awstest.yml
  • files_exist - File is ignored: .github/workflows/awsfulltest.yml
  • nextflow_config - Config variable ignored: manifest.name
  • nextflow_config - Config variable ignored: manifest.homePage
  • files_unchanged - File ignored due to lint config: CODE_OF_CONDUCT.md
  • files_unchanged - File ignored due to lint config: .github/CONTRIBUTING.md
  • files_unchanged - File ignored due to lint config: .github/ISSUE_TEMPLATE/bug_report.yml
  • files_unchanged - File does not exist: .github/ISSUE_TEMPLATE/config.yml
  • files_unchanged - File ignored due to lint config: .github/PULL_REQUEST_TEMPLATE.md
  • files_unchanged - File ignored due to lint config: assets/email_template.txt
  • files_unchanged - File ignored due to lint config: assets/nf-core-lrsomatic_logo_light.png
  • files_unchanged - File ignored due to lint config: docs/images/nf-core-lrsomatic_logo_light.png
  • files_unchanged - File ignored due to lint config: docs/images/nf-core-lrsomatic_logo_dark.png
  • files_unchanged - File ignored due to lint config: docs/README.md
  • actions_awstest - 'awstest.yml' workflow not found: /home/runner/work/lrsomatic/lrsomatic/.github/workflows/awstest.yml
  • schema_params - schema_params

❔ Tests fixed:

✅ Tests passed:

Run details

  • nf-core/tools version 3.5.1
  • Run at 2025-12-19 09:53:46

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This is a hotfix PR that adds ASCAT PDF plotting as a configurable option and fixes channel structure issues for multiple custom model downloads. The PR also includes version bump to v1.1.0dev and updates project metadata with the official Zenodo DOI.

  • Adds configurable PDF plot generation for ASCAT copy number analysis
  • Fixes basecall_model handling in tumor/normal sample processing to properly use clair3_model when specified
  • Updates version from v1.0.0 to v1.1.0dev with corresponding metadata changes

Reviewed changes

Copilot reviewed 11 out of 11 changed files in this pull request and generated 8 comments.

Show a summary per file
File Description
workflows/lrsomatic.nf Adds debug view() statements (should be removed)
subworkflows/local/tumor_normal_happhase.nf Fixes basecall_model assignment to use clair3_model when available; adds multiple debug view() statements (should be removed)
modules/nf-core/ascat/main.nf Adds pdf_plots parameter to ASCAT runAscat calls, enabling configurable PDF output
nextflow.config Adds ascat_pdf_plots parameter (default "False") and updates version to v1.1.0dev
conf/modules.config Passes pdf_plots parameter to ASCAT process configuration
tests/default.nf.test.snap Updates version reference and test timestamp
ro-crate-metadata.json Updates version, URLs, status, and UUIDs for v1.1.0dev
README.md Updates Zenodo DOI from placeholder to actual DOI (10.5281/zenodo.17751829)
CHANGELOG.md Adds v1.1.0 section and marks v1.0.0 release date
.nf-core.yml Updates template version to v1.1.0dev
assets/multiqc_config.yml Updates report link from v1.0.0 release to dev branch

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

return[new_meta, bam, bai]
}
.set{ tumor_bams }
tumor_bams.view()
Copy link

Copilot AI Dec 19, 2025

Choose a reason for hiding this comment

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

Debug view() statement should be removed before merging. This appears to be temporary debugging code left in the subworkflow.

Suggested change
tumor_bams.view()

Copilot uses AI. Check for mistakes.
somatic_vep = Channel.empty()
germline_vep = Channel.empty()

mixed_bams.view()
Copy link

Copilot AI Dec 19, 2025

Choose a reason for hiding this comment

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

Debug view() statement should be removed before merging. This appears to be temporary debugging code left in the subworkflow.

Copilot uses AI. Check for mistakes.
}
.set{downloaded_model_files}

downloaded_model_files.view()
Copy link

Copilot AI Dec 19, 2025

Choose a reason for hiding this comment

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

Debug view() statement should be removed before merging. This appears to be temporary debugging code left in the subworkflow.

Suggested change
downloaded_model_files.view()

Copilot uses AI. Check for mistakes.
return [ basecall_model, new_meta, bam, bai ]
}
.set { normal_bams_model }
normal_bams_model.view()
Copy link

Copilot AI Dec 19, 2025

Choose a reason for hiding this comment

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

Debug view() statement should be removed before merging. This appears to be temporary debugging code left in the subworkflow.

Copilot uses AI. Check for mistakes.
return [meta, bam, bai, model, platform]
}
.set{ normal_bams }
normal_bams.view()
Copy link

Copilot AI Dec 19, 2025

Choose a reason for hiding this comment

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

Debug view() statement should be removed before merging. This appears to be temporary debugging code left in the subworkflow.

Copilot uses AI. Check for mistakes.
Comment on lines +172 to +173
tumor_bams.view()
LONGPHASE_PHASE.out.vcf.view()
Copy link

Copilot AI Dec 19, 2025

Choose a reason for hiding this comment

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

Debug view() statements should be removed before merging. These appear to be temporary debugging code left in the subworkflow.

Suggested change
tumor_bams.view()
LONGPHASE_PHASE.out.vcf.view()

Copilot uses AI. Check for mistakes.
Comment on lines +583 to +584
wakhan_input.view()
ch_fasta.view()
Copy link

Copilot AI Dec 19, 2025

Choose a reason for hiding this comment

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

Debug view() statements should be removed before merging. These appear to be temporary debugging code left in the workflow and will clutter the execution logs with channel contents.

Suggested change
wakhan_input.view()
ch_fasta.view()

Copilot uses AI. Check for mistakes.
Comment on lines +157 to +163
ascat.output <- ascat.runAscat(ascat.bc, gamma=1, rho_manual=$purity, psi_manual=$ploidy, pdfPlot = "$pdf_plots")
} else if(!is.null($purity) && is.null($ploidy)){
ascat.output <- ascat.runAscat(ascat.bc, gamma=1, rho_manual=$purity)
ascat.output <- ascat.runAscat(ascat.bc, gamma=1, rho_manual=$purity, pdfPlot = "$pdf_plots")
} else if(!is.null($ploidy) && is.null($purity)){
ascat.output <- ascat.runAscat(ascat.bc, gamma=1, psi_manual=$ploidy)
ascat.output <- ascat.runAscat(ascat.bc, gamma=1, psi_manual=$ploidy, pdfPlot = "$pdf_plots")
} else {
ascat.output <- ascat.runAscat(ascat.bc, gamma=1)
ascat.output <- ascat.runAscat(ascat.bc, gamma=1, pdfPlot = "$pdf_plots")
Copy link

Copilot AI Dec 19, 2025

Choose a reason for hiding this comment

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

The value of pdf_plots coming from args.pdf_plots is interpolated directly into the R script inside a quoted string (pdfPlot = "$pdf_plots"), so a malicious CLI parameter containing double quotes can break out of the string literal and inject arbitrary R code (for example by calling system()) in the ASCAT container. This means anyone who can control pipeline parameters can achieve code execution in the context of this process. Please constrain args.pdf_plots to a small, fixed set of safe values (e.g. a boolean) or ensure it is properly escaped/sanitized before interpolation, and apply the same hardening pattern to any other task.ext.args that are inserted into R code.

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants