I am creating a pipeline in Nextflow. One step is creating a pangenome with Roary. Roary takes threads as an argument and if no number of threads is supplied as an argument it defaults to one.
Is there a way in Nextflow to pass the maximum number of available threads as an argument? At the moment the best I can come up with is defining an arbitrarily large number of threads as an argument which will cap out and run with the max number of threads. I would like to know, is there a 'cleaner' or more canonical way of doing this?
At the moment my process looks like this:
process roary {
publishDir "${params.outdir}/roary", mode: 'copy'
cpus 200
input:
file gff from gff.collect()
output:
file("*") into roary
file("pan_genome_reference.fa") into pan_genome
file("pan_genome_sequences/*") into alignment_files
file("gene_presence_absence.Rtab") into gene_presence
set file("*accessory*"),
file("*.Rtab"),
file("_*"),
file("*.txt"),
file("*csv") into roary_out
script:
"""
roary -p ${task.cpus} -e -n -v -z $gff
"""
}
Thanks in advance. Also, apologies as I can see why this might not strictly be bioinformatics, but it's where Nextflow has the most traction.