【问题标题】:How to merge multiple grouped output files in nextflow如何在 nextflow 中合并多个分组的输出文件
【发布时间】:2022-03-14 17:00:25
【问题描述】:

我有一个将多个文件输出为元组的进程。像这样:

[chr1,[[chr1.chunk1.bgen],[chr1.chunk1.stat],[chr1.chunk2.bgen],[chr1.chunk2.stat],[chr1.chunk3.bgen],[chr1.chunk3.stat]]]

我怎么能得到 chr1.merged.bgenchr1.merged.stat 。我想使用cat 来合并所有这些块。

我试过了:

input:
tuple val (chrom), file('*.bgen'),file('*.stat') from my_output
"""
cat "${chrom}.${*.bgen}" > "${chrom}.merged.bgen"
cat "${chrom}.${*.stat}" > "${chrom}.merged.stat"
"""

但是得到了“Input tuple does not match input set cardinality decalred 也适用于:

input:
tuple val (chrom), path(bgen),path(stat) from my_output
"""
cat "${bgen}" > "${chrom}.merged.bgen"
cat "${stat}" > "${chrom}.merged.stat"
"""

同样的错误。 我也尝试使用my_output.collect()my_output.toList() 但得到同样的错误。 有什么帮助吗?

【问题讨论】:

    标签: nextflow


    【解决方案1】:

    在您的示例过程中,您定义了 3 个输入变量,但您只提供了 2 个。这就是错误消息试图告诉您的 - 实际上我认为这只是一个警告。

    您的流程输入的定义方式,nextflow 会期望它是这种形式:

    [chr1,[chr1.chunk1.bgen, chr1.chunk2.bgen, chr1.chunk3.bgen],[chr1.chunk1.stat, chr1.chunk2.stat, chr1.chunk3.stat]]
    

    因此,一种选择是重新格式化您的频道,然后再将其输入该流程。比如这样:

    my_output
       .map { it -> [it[0],
                     it.flatten().findAll{ it.getExtension=="bgen"},
                     it.flatten().findAll{ it.getExtension=="stat"}
                    ]
       }
    

    【讨论】:

      猜你喜欢
      • 2022-11-02
      • 2021-06-03
      • 2021-08-07
      • 2023-01-13
      • 2020-01-24
      • 2014-02-21
      • 2021-10-13
      • 2021-12-12
      • 1970-01-01
      相关资源
      最近更新 更多