如何为两个列表中的每对值运行一个实例,然后一次只收集其中一个列表的输出?
例如,如果您运行此 Nextflow 脚本:
numbers = Channel
.from(1..2)
.into{numbers1; numbers2}
letters = Channel
.from('A'..'B')
process p1 {
input:
each number from numbers1
each letter from letters
output:
path "${number}${letter}.txt" into foo
"""
echo "$number $letter" > ${number}${letter}.txt
"""
}
process p2 {
input:
path numberletters from foo.collect()
each number from numbers2
"""
for file in $numberletters; do
cat \$file >> $baseDir/${number}.out
done
"""
}
你得到两个输出文件(如预期的那样):1.out
和2.out
. 每一个都包含相同的行集:
1 A
1 B
2 A
2 B
我怎样才能使它1.out
只包含1 A
and 1 B
,并且2.out
只包含2 A
and 2 B
?即,通道仅根据输入收集输出并保持具有不同输入的单独.collect()
实例?foo
p1
letter
number