Poll time::thread: TL;DR hyphen in tool name or no...
# team-maintainers
m
Poll time:🧵 TL;DR hyphen in tool name or not? bioconda for hyphen šŸ™… for no hyphen
šŸ™… 1
bioconda 1
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?
j
canofworms
m
TL;DR second question, do we all the things list all gizmo ohno do not list all
gizmo ohno 2
all the things 3
@Jose Espinosa-Carrasco I’d say it’s a stack of cans of worms actually, but that’s my #C0749PAEU9F for the day
j
I will tend to use the bioconda style, but as we already broke the rule when we named our modules… I will just say #C078586GZ5X
m
yeah, but for me it’s not naming the modules, but the keys we use for the topics versions and in the meta.yml
j
yes, but it will be nice to be consistent everywhere
m
true
so we started with no-hyphen we should continue that way then
@Jose Espinosa-Carrasco you cannot vote for both solution
@mashehu you’re usually the voice of reason here, and you already know my plan for facilitating the citations, and we already argued/agreed, what’s your take?
m
ask me again tomorrow, brain is too full already today šŸ™‚
m
I will
j
IMO the tool name in the versions emit should be the name of the executable - a package can contain multiple executables.
But I don’t have a strong feeling how this should translate to meta.yaml
Probably I would say we would track the binary in meta.yaml too and add the bioconda package name as a separate key in the map
m
so for gatk4 MarkDuplicates you would list MarkDuplicates and not gatk4?
j
hmm, maybe not
i dunno
m
šŸ˜†
for me gatk4 is the tool, MarkDuplicates is a subcommand. For citations, I care only about tools
šŸ‘ 1
And the way I see it, we already have that structure in the modules repo
so I’m happy to follow
I don’t care much about hyphen or not, it’s just easier to keep the same choice we already made for the folder names, but bioconda entry would make sense as well
m
If there’s a reasonable guarantee that all tools / commands used in the module have got the same version, then a single version for the whole thing. Otherwise one for each. For instance, in a module that uses bwa and samtools, that’s 2 versions. In a module that uses samtools and tabix, well, I’d say both as well because they come from different packages and could have different versions 🫠 ? And in the gatk4 example above, just 1: gatk4