Process per file range
Problem
You need to execute a task over two or more series of files having a common index range.
Solution
Use the from method to define the range over which to repeat the task execution, then chain it with the map operator to associate each index with the corresponding input files. Finally, use the resulting channel as input for the process.
Code
process foo {
debug true
tag "$sampleId"
input:
tuple val(sampleId), file(indels), file(snps)
"""
echo foo_command --this $indels --that $snps
"""
}
workflow {
Channel.from(1..23) \
| map { chr -> ["sample${chr}", file("/some/path/foo.${chr}.indels.vcf"), file("/other/path/foo.snvs.${chr}.vcf")] } \
| foo
}
Run it
nextflow run nextflow-io/patterns/process-per-file-range.nf