07-Nextflow operators(4)

2021-09-16  本文已影响0人  亦是旅人呐

Operators

Nextflow操作符是一些方法,允许您将信道相互连接,或转换应用用户提供的某些规则的信道发出的值。

操作符可分为七组:

Note
操作符set和subscribe是最终操作符,因此,如果使用它们,它们必须是组合操作符链中的最后一个操作符。


Maths operators

本节讨论在信道上执行数学运算的操作符。

数学运算符是:


count

计数操作符创建一个发出单个项的信道:一个表示源信道发出的项总数的数字。例如:

Channel
    .from(9,1,7,5)
    .count()
    .view()
// -> 4

可以提供一个可选参数来选择要计数的项目。选择条件可以指定为正则表达式、文字值、Java类或需要满足的布尔predicate。例如:

Channel
    .from(4,1,7,1,1)
    .count(1)
    .view()
 // -> 3

Channel
    .from('a','c','c','q','b')
    .count ( ~/c/ )
    .view()
// -> 2

Channel
    .from('a','c','c','q','b')
    .count { it <= 'c' }
    .view()
// -> 4

countBy

countBy操作符创建一个信道,该信道发出一个关联数组(即Map对象),该数组计数源信道中具有相同键的发出项的出现次数。例如:

Channel
    .from( 'x', 'y', 'x', 'x', 'z', 'y' )
    .countBy()
    .view()
[x:3, y:2, z:1]

min

min操作符等待源信道完成,然后发出具有最低值的项。例如:

Channel
    .from( 8, 6, 2, 5 )
    .min()
    .view { "Min value is $it" }
Min value is 2

可以指定一个可选的闭包参数,以便提供一个返回要比较的值的函数。下面的例子展示了如何找到最小长度的字符串项:

Channel
    .from("hello","hi","hey")
    .min { it.size() }
    .view()
"hi"

另外,也可以指定一个比较器函数,也就是一个闭包,它有两个参数,代表两个发出的要比较的项。例如:

Channel
    .from("hello","hi","hey")
    .min { a,b -> a.size() <=> b.size() }
    .view()

max

max操作符等待源信道完成,然后发出具有最大值的项。例如:

Channel
    .from( 8, 6, 2, 5 )
    .min()
    .view { "Max value is $it" }
Max value is 8

可以指定一个可选的闭包参数,以便提供一个返回要比较的值的函数。下面的例子展示了如何找到最大长度的字符串项:

Channel
    .from("hello","hi","hey")
    .max { it.size() }
    .view()
"hello"

另外,也可以指定一个比较器函数,也就是一个闭包,它有两个参数,代表两个发出的要比较的项。例如:

Channel
    .from("hello","hi","hey")
    .max { a,b -> a.size() <=> b.size() }
    .view()

sum

sum操作符创建一个通道,该通道发出由该通道本身发出的所有项的和。例如:

Channel
    .from( 8, 6, 2, 5 )
    .sum()
    .view { "The sum is $it" }
The sum is 21

可以指定一个可选的闭包参数,以便提供一个函数,对于给定的项,该函数返回要求和的值。例如:

Channel
        .from( 4, 1, 7, 5 )
        .sum { it * it }
        .view { "Square: $it" }
Square: 91

toInteger

toInteger操作符允许您将通道发出的字符串值转换为Integer值。例如:

Channel
    .from( '1', '7', '12' )
    .toInteger()
    .sum()
    .view()

上一篇 下一篇

猜你喜欢

热点阅读