条件付きパイプライン NextFlow を作成しようとしています。例えば、
プロセス A はチャネルに値を出力します。値が 1 の場合は X を実行し、それ以外の場合は Y を実行します。
これが私がやろうとしていることです:
initialData = 2
receiver1 = "EMPTY"
receiver2 = "EMPTY"
receiver3 = ""
process A {
input:
val initialData
output:
val initialData into trigger
'''
echo 10
'''
}
process foo {
input:
val trigger
output:
val "I ran from FOO" into receiver2
when:
trigger == 2
'''
echo I ran from FOO
'''
}
process bar {
input:
val trigger
output:
val "I ran from BAR" into receiver1
when:
trigger == 1
'''
echo I ran from BAR
'''
}
foo と bar は同等であるが実装が異なると仮定します (たとえば、一方は映画を AVI から h.264 に変換し、もう一方は MOV から h.264 に変換します)。トリガーについて何も知らなくても Bar または Foo から読み取ることができる別のプロセス、たとえば C が必要です。しかし、Foo と Bar の両方で同じ出力チャネル名を使用すると、nextflow は文句を言います。