我已经使用 Nextflow 实现了一些 NGS 数据分析工作流程。我在一些工作流程中使用了“配对结束”通道(fromFilePairs 方法)。在多次工作流程执行后,我遇到了一个我没有预料到的问题:我的样本 ID 有时会混合在一起,导致发生它的流程的输出不准确。我认为这与非确定性输入通道问题有关(https://www.nextflow.io/blog/2019/troubleshooting-nextflow-resume.html)。
假设我将我的工作流程应用于这些配对端文件:sample1_R{1,2}.fastq, sample2_R{1,2}.fastq
process Step1 {
input:
tuple pair_ID, file(A) from channelA
tuple pair_ID, file(B) from channelB
tuple pair_ID, file(C) from channelC
...
}
对于这种以多个“元组 pair_ID”作为输入的过程,数据 pair_ID(= 我的样本名称)可能会混淆,我的过程最终会使用sample1的随机输入文件 A 和 B以及输入文件sample2 的C而不是相同 pair_ID的所有文件 (A,B,C)(key = only sample1 或 only sample2)。在几次工作流程执行之后,在发生错误时使用 -resume 之后以及在完全成功的工作流程运行之后,我遇到了这个随机混合的输入文件名问题(这会影响输出)。
为了在 3 个通道中的每一个发出的输入文件之间具有相同的密钥 (pair_ID),我使用了join
运算符:
Process Step1 {
input:
tuple pair_ID, file(A), file(B), file(C) from channelA.join(channelB).join(channelC)
...
}
该运算符似乎使一切按预期工作,我在示例 ID 和最终输出中看不到任何混合。在文档(https://www.nextflow.io/docs/latest/operator.html?highlight=join#join)中,join
似乎只适合 2 个通道使用,所以我不确定我是否正确使用它3个频道。
我的方法使用join
合法吗?还是它还有一些缺陷?
有没有更好的方法来纠正我的问题?
如果我不确定此方法是否正确以避免在我的示例 ID 中出现任何混合,我可能会更改为另一个工作流管理系统,例如 Snakemake,但我真的很想解决这个问题并继续使用 Nextflow。
提前谢谢您,如果有不清楚的地方,请不要犹豫!