Operators
Nextflow操作符是一些方法,允许您将信道相互连接,或转换应用用户提供的某些规则的信道发出的值。
操作符可分为七组:
- Filtering operators
- Transforming operators
- Splitting operators
- Combining operators
- Forking operators
- Maths operators
- Other operators
Note
操作符set和subscribe是最终操作符,因此,如果使用它们,它们必须是组合操作符链中的最后一个操作符。
Other operators
dump
dump操作符打印信道发出的项,只有在run命令行上指定选项-dump-channels时才应用到这些项,否则它将被忽略。
这对于通过使用命令行选项而不是修改脚本代码来按需调试一个或多个信道内容非常有用。
一个可选的标记参数允许您选择转储哪个信道。例如:
Channel
.from(1,2,3)
.map { it+1 }
.dump(tag:'foo')
Channel
.from(1,2,3)
.map { it^2 }
.dump(tag: 'bar')
然后,您将能够指定标签foo或bar作为-dump-channels选项的参数,以打印第一个或第二个信道的内容。可以指定多个标记名,用字符分隔。
set
set运算符将信道分配给名称指定为闭包参数的变量。 例如:
Channel.from(10,20,30).set { my_channel }
这在语义上等价于下面的赋值:
my_channel = Channel.from(10,20,30)
但是,在Nextflow脚本中,set操作符更习惯,因为它可以在操作符转换链的末尾使用,从而产生更流畅和可读的操作。
ifEmpty
ifEmpty操作符创建一个信道,当所应用的信道为空(即不发出任何值)时,该信道将发出一个默认值,指定为操作符参数。否则它将发出与原始信道相同的条目序列。
因此,下面的示例输出:
Channel .from(1,2,3) .ifEmpty('Hello') .view()
1
2
3
相反,这个打印:
Channel.empty().ifEmpty('Hello') .view()
Hello
ifEmpty值参数可以用闭包定义。在这种情况下,当满足空条件时,将发出闭包求值的结果值。
See also: empty method.
Warning
在使用DSL2语法时,print操作符已弃用且不再受支持。使用视图。
print操作符将信道发出的项打印到标准输出。可以指定一个可选的闭包参数来定制项的打印方式。例如:
Channel
.from('foo', 'bar', 'baz', 'qux')
.print { it.toUpperCase() + ' ' }
FOO BAR BAZ QUX
println
Warning
在使用DSL2语法时,println操作符已弃用且不再受支持。使用视图。
println操作符将信道发出的项打印到控制台标准输出,并在每个项后面附加一个新行字符。例如:
Channel
.from('foo', 'bar', 'baz', 'qux')
.println()
foo
bar
baz
qux
可以指定一个可选的闭包参数来定制项的打印方式。例如:
# 1
Channel
.from('foo', 'bar', 'baz', 'qux')
.view { "~ $it" }
# 2
Channel
.from('foo', 'bar', 'baz', 'qux')
.view { "item: $it" }
view
view操作符将信道发出的项打印到控制台标准输出。例如:
Channel.from(1,2,3).view()
1
2
3
除非使用newLine: false可选参数指定,否则每个项都打印在单独的行上。
可以使用可选的闭包参数控制信道项的打印方式。闭包必须返回要打印的项目的实际值:
Square of: 1 is 1
Square of: 2 is 4
Square of: 3 is 9
Note
view和print(或println)操作符都使用它们所应用到的源信道发出的项。它们之间的主要区别在于前者返回一个新创建的信道,其内容与源信道相同,而后者则不同。这允许视图操作符像其他操作符一样被链接起来。
print()和printIn()区别
Key | print() | println() |
---|---|---|
Implementation | print method is implemented as it prints the text on the console and the cursor remains at the end of the text at the console. | On the other hand, println method is implemented as prints the text on the console and the cursor remains at the start of the next line at the console and the next printing takes place from next line. |
Nature | The prints method simply print text on the console and does not add any new line. | While println adds new line after print text on console. |
Arguments | print method works only with input parameter passed otherwise in case no argument is passed it throws syntax exception. | println method works both with and without parameter and do not throw any type of exception. |
close
close操作人员通过信道发送终止信号,导致下游过程或操作人员停止。在常见的使用场景中,信道由Nextflow自动关闭,因此不需要显式地使用此操作符。
See also: empty factory method.
网友评论