Skip to content

Release 5.4.2#1005

Merged
dialvarezs merged 49 commits into
mainfrom
dev
Mar 31, 2026
Merged

Release 5.4.2#1005
dialvarezs merged 49 commits into
mainfrom
dev

Conversation

@dialvarezs

@dialvarezs dialvarezs commented Mar 28, 2026

Copy link
Copy Markdown
Member

Added

  • #1006 - Add citations and references texts in the utils_nfcore_mag_pipeline subworkflow (by @dialvarezs)

Changed

Fixed

  • #1001 - Include all binners in parameter validation for running DASTool (by @dialvarezs)
  • #1002 - Fix BUSCO publish dir to prevent filename collision (by @dialvarezs)
  • #1002 - Avoid whole-batch BUSCO failure when classification fails for a single bin. (by @dialvarezs)

Dependencies

Tool Previous version New version
GUNC 1.0.6 1.1.0

Update GUNC modules and enable it in `test_assembly_input`
fix: include all binners in dastool validation
fix: busco exit and publish dir
@github-actions

github-actions Bot commented Mar 28, 2026

Copy link
Copy Markdown

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

Posted for pipeline commit 69e200c

+| ✅ 384 tests passed       |+
#| ❔   1 tests were ignored |#
!| ❗   1 tests had warnings |!
Details

❗ Test warnings:

❔ Tests ignored:

  • files_unchanged - File ignored due to lint config: .github/PULL_REQUEST_TEMPLATE.md

✅ Tests passed:

Run details

  • nf-core/tools version 3.5.2
  • Run at 2026-03-30 22:14:32

@jfy133

jfy133 commented Mar 29, 2026

Copy link
Copy Markdown
Member

Will look when the citations/gunc csv stability is merged in

@Joon-Klaps Joon-Klaps left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

1 outdated doc & A minor suggestion for easier maintainability.

Everything else looks good.

Comment thread conf/modules.config
withName: GUNC_RUN {
publishDir = [
path: { "${params.outdir}/GenomeBinning/QC/GUNC/raw/${meta.assembler}-${meta.binner}-${meta.domain}-${meta.refinement}-${meta.id}/${fasta.baseName}/" },
path: { "${params.outdir}/GenomeBinning/QC/GUNC/raw/${meta.assembler}-${meta.binner}-${meta.domain}-${meta.refinement}-${meta.id}/" },

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Docs still stay it's in the dir with fasta basename

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Nice catch!

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

I believe it's ok, but I also believe it will be very hard to maintain.

What if you defined a list of citations. and select those tools that are present in the versions channel?

def toolCitationList() {
    return [
        ["fastqc",   "Sequencing quality control was performed with FastQC (Andrews 2010)."],
        ["multiqc",  "Pipeline results statistics were summarised with MultiQC (Ewels et al. 2016)."],
        ["megahit",  "Metagenome assembly was performed with MEGAHIT (Li et al. 2016)."],
        ["metabat2", "Metagenome binning was performed with MetaBAT2 (Kang et al. 2019)."],
        // ...
    ]
}

And merge it with our versions channel?

def toolCitationText(ch_collated_versions) {
    def ch_citation_map = channel.fromList(toolCitationList())  // [tool, citation]

    ch_collated_versions
        .splitText()
        .map    { line -> line.trim() }
        .filter { line -> line.startsWith('    ') && line.endsWith(':') }  // indented tool lines only
        .map    { line -> line.replace(':', '').trim().toLowerCase() }
        .unique()
        .combine(ch_citation_map)                        // [tool_found, tool_key, citation]
        .filter { tool_found, tool_key, citation -> tool_found == tool_key }
        .map    { tool_found, tool_key, citation -> citation }
        .collect()
        .map    { citations -> citations.sort().join('\n') }
}

Can also use a dictionary and do like

 ch_collated_versions
        .splitText()
        .map    { line -> line.trim() }
        .filter { line -> line.startsWith('    ') && line.endsWith(':') }  // indented tool lines only
        .map    { line -> 
            def tool = line.replace(':', '').trim().toLowerCase() 
            def citation = citation_map.get(tool)
            if (!citation) {
                log.warn("[nf-core/mag] No citation mapped for tool: ${tool}")
            }
            return citation
       .filter { it != null }
        .unique()
        .collect()
        .map { citations -> citations.sort().join('\n') }

Note this was vibe-coded in a chat with Claude; didn't actually check it works.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

This seems an interesting idea, but I think it will look cleaner when we migrate everything to topics.
One we complete that migration, I'm going to give it a go.

Comment thread CHANGELOG.md Outdated
Comment thread conf/modules.config
publishDir = [
path: { "${params.outdir}/GenomeBinning/QC" },
mode: params.publish_dir_mode,
saveAs: { filename -> filename.equals('versions.yml') ? null : filename },

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Won't this pick up versions files? Why the removal? Or becauset opics?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Because topics. I will start cleaning those lines as we update the modules to use topics :D

@dialvarezs dialvarezs merged commit 5dabb01 into main Mar 31, 2026
60 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants