有没有办法为可选输入通道提供默认值?
Is there a way to provide a default value for an optional input channel?
我 link 能够做这样的事情:
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}"
}
}
但是代码无法编译...最接近的有效 nextflow 是什么?
工作流可以使用 take
关键字声明一个或多个输入通道。但是,目前没有 方法可以修改声明中的频道。但这通常不是问题,因为您当然可以转换工作流上游或下游通道发出的值。
我认为如果您的工作流程有时需要额外的输入通道,那么只需让该工作流程定义该额外的输入通道即可。然后,当您调用工作流时,您可以用通常的方式为通道定义一个默认值——即使用 ifEmpty operator。例如:
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()
}
}
我 link 能够做这样的事情:
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}"
}
}
但是代码无法编译...最接近的有效 nextflow 是什么?
工作流可以使用 take
关键字声明一个或多个输入通道。但是,目前没有 方法可以修改声明中的频道。但这通常不是问题,因为您当然可以转换工作流上游或下游通道发出的值。
我认为如果您的工作流程有时需要额外的输入通道,那么只需让该工作流程定义该额外的输入通道即可。然后,当您调用工作流时,您可以用通常的方式为通道定义一个默认值——即使用 ifEmpty operator。例如:
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()
}
}