Nextflow|如何為輸入的資料建立辨識碼
在 Nextflow 的框架,channel 媒介了 process 間的資料傳遞。雖然資料進出 channel 遵循先進先出 (first-in, first out, FIFO) 原則,但隨後 nextflow 會平行處理這些資料,所以 process 釋出資料的順序取決於執行速率,而不是原先輸入的順序(見下例)。
1 | // demoEmitOrder.nf |
1 | $ nextflow run demoEmitOrder.nf |
Nextflow 這項特性使得輸入彼此相依的資料時要格外留意,因為可能在定序產物品管時,發生不同樣本的順逆序列(例如:a_r1.fa 與 b_r2.fa 合併)的狀況;又或是使用 GATK 這類需要參考基因體的工具時,無法為 .fasta
找到對應 .dict
和 .fai
檔的情形。
因此,本文將介紹如何將想要一起輸入的檔案以及其辨識碼組合成 tuple (例如:["ID", "ID_r1.fastq", "ID_r2.fastq"]
),確保成對資料同進同出,還能透過辨識碼與其它資料合併。