Nextflow "flatten" 类似于 dplyr 中的 "unnest"

Nextflow "flatten" analogous to "unnest" in dplyr

Nextflow,目前不使用 DSL2。


data =  [
    [1, 'a', ['a1', 'a2']],
    [2, 'b', ['b1', 'b2', 'b3']],
    [3, 'c', ['c1']]
]

ch = Channel.from(data)

有什么方法可以从这里进入一个总共有 6 行内容的频道

[
    [1, 'a', 'a1'],
    [1, 'a', 'a2'],
    [2, 'b', 'b1'],
    [2, 'b', 'b2'],
    [2, 'b', 'b3'],
    [3, 'c', 'c1']
]

基本上,取消嵌套通道中每个元组的第三个项目。我想它可以通过首先 重复 嵌套列表长度的非嵌套项目然后展平结果来工作,但我不知道我会怎么做。

您可以为此使用 transpose 运算符:

data =  [
    [1, 'a', ['a1', 'a2']],
    [2, 'b', ['b1', 'b2', 'b3']],
    [3, 'c', ['c1']]
]

Channel.from(data).transpose().view()

结果:

[1, a, a1]
[1, a, a2]
[2, b, b1]
[2, b, b2]
[2, b, b3]
[3, c, c1]