Nextflow Process I/O 與控制屬性說明
在 Nextflow 的 process 區塊中,input: 與 output: 是資料傳遞的核心,而額外屬性如 script、cpus、errorStrategy 等則定義流程執行細節。熟練使用這些設定能有效提升流程模組化與平行效率。
🔹 input: 區塊(輸入)
input: 區塊(輸入)常見輸入型態:
val
純量變數(如 string、int)
path
檔案或資料夾(會自動 staged 至工作目錄)
tuple
多項輸入組合
each
展開 list 為多個 item 傳入(平行處理)
stdin
來自標準輸入的文字流
範例:
input:
val sample_id
path "${sample_id}.fq"input:
tuple val(id), path(fq)input:
each val(name) from Channel.of('A','B','C')🔹 output: 區塊(輸出)
output: 區塊(輸出)常見輸出型態:
path
匹配的輸出檔案
val
單一變數輸出(如純量結果)
tuple
同時輸出多項元素
emit:
命名輸出,用於 DSL2 模組引用
stdout
將 stdout 作為輸出
stderr
將 stderr 作為輸出
into:
將輸出導入其他 channel
範例:
🔹 輸出收集與包裝
collect: true:將多個檔案合併為一個 list 輸出flatten: true:攤平成單一串流(去除巢狀)
🔹 多輸入設計與組合
可使用 combine() 或 join() 將不同來源 channel 整合後輸入:
🔹 額外流程屬性
script:
實際要執行的命令或 bash script
cpus, memory
指定流程所需資源,支援動態計算(如 { 2.GB * task.attempt })
time
最長執行時間限制,如 '2h', '30min'
container
指定特定 container image
publishDir
輸出檔案自動複製到指定資料夾
label
可與 config selector 搭配調控資源
tag
加入標籤供 log 與 UI 顯示
errorStrategy
遇錯行為,如 'retry', 'finish', 'ignore'
maxRetries
最多允許重跑次數
when:
條件式執行(true 才會執行此 process)
🔹 簡易範例:整合所有設定
良好的 I/O 與流程屬性設計,是建立彈性、高效、可維護 workflow 的關鍵。建議搭配 params、channel 操作與 config selector 強化模組整合性。
Last updated