我链接到能够做这样的事情:
workflow XXX {
take:
a
b default ""
main:
if (b == "") {
println "a is ${a} and b is unset"
} else {
println "a is ${a} and b is ${b}"
}
}
但是代码无法编译......最接近的有效下一个流程是什么?
take
工作流可以使用关键字声明一个或多个输入通道。但是,目前没有办法修改声明中的通道。但这通常不是问题,因为您当然可以在工作流的上游或下游转换通道发出的值。
我认为如果您的工作流程有时需要额外的输入通道,那么只需让该工作流程定义该额外的输入通道。然后,当您调用工作流时,您可以以通常的方式为通道定义默认值 - 即使用ifEmpty 运算符。例如:
nextflow.enable.dsl=2
workflow test {
take:
input_values
input_files
main:
input_files.view()
}
workflow {
foobarbaz = Channel.of( 'foo', 'bar', 'baz' )
text_files = Channel.fromPath( '/path/*.txt' ).ifEmpty( file('./default.txt') )
test( foobarbaz, text_files )
}
或者,定义单个输入通道并使用参数提供默认值:
workflow test {
take:
input_values
main:
if( params.text_file ) {
do_something( params.text_file )
} else {
do_something_else()
}
}