Citations on the fly in nf-core-utils builds each toolās citation by matching the tool name in the versions topic (val(ā<tool>ā) in
main.nf) to the tool entry in meta.yml tools:. The match ignores case and nothing else. When the names differ, the tool is cited without its publication, or not at all.
No spec or lint rule ties the two names together today. general.md āEmission of versionsā doesnāt say how <tool> is spelled. documentation.md only says tools: must list every tool. Lint only checks the emit name (versions_[\d\w]+).
While adding publications, I found these mismatches:
⢠falco: tool fastqc, key falco
⢠mgikit/demultiplex: tool mgikit demultiplex, key mgikit
⢠gatk4/createsequencedictionary: tool gatk, key gatk4
⢠rsem/*: tool rseqc, key rsem
⢠star/starsolo: tool starsolo, key star
⢠msisensorpro/*: tool msisensorpro, key msisensor-pro
⢠snapaligner/*: tool snapaligner, key snap-aligner
⢠multiqcsav: tool multiqc_sav, key multiqcsav (already fixed)
The PRs fix these in meta.yml only. A rule would stop new ones appearing.
What Iād suggest:
1. Spec: each tool in meta.yml tools: MUST use exactly the name it emits to the versions topic.
2. Lint: add a check in nf_core/modules/lint that compares the val(ā<tool>ā) keys in
main.nf with the tools: entries in meta.yml.
Open questions:
⢠Which spelling should be canonical: the Bioconda package or executable name (msisensor-pro, ensembl-vep), or the module-style name without the hyphen (msisensorpro, ensemblvep)? The repo uses both today. For example, ensemblvep emits ensemblvep even though its Bioconda package is ensembl-vep.
⢠Should helper tools a module emits, such as samtools in hisat2/extractsplicesites and star in rsem/*, have to be listed in tools: too? The spec says every tool must be listed, but these arenāt.
What do you think, maintainers and infra team?