I was confused (and still am to be honest) about when to use multiple input channels vs tuple inputs. So I looked around in the docs and found Processes | Seqera Docs saying
Do not supply more than one channel when calling a process with multiple inputs. Invoking a process with multiple channels can lead to non-deterministic behavior. All additional inputs should be dataflow values.
“Ok, great!” I thought. But then I read Processes | Seqera Docs and saw the following example
process blast {
input:
val species
path query
output:
tuple val(species), path('result')
script:
"""
blast -db nr -query $query > result
"""
}
workflow {
ch_species = channel.of('human', 'cow', 'horse')
ch_query = channel.fromPath('*.fa')
blast(ch_species, ch_query)
}
Here we are passing two channels as separate inputs. Is this truly a contradiction or am I misunderstanding something? I also saw Multiple Inputs vs Tuple Inputs which indicates that you should indeed not pass two channels as separate inputs.