Nextflow Operators 教學筆記
Nextflow 的 operators 是用來 操作與轉換 channels 的方法。它們支援 Dataflow programming 的風格,能將輸入資料流轉換為新的 channel。除了 set 與 subscribe,幾乎所有 operators 都會輸出新的 channel,因此能夠進行 chaining。
Operators 主要可分為七大類:
Filtering operators
Transforming operators
Splitting operators
Combining operators
Forking operators
Maths operators
Other operators
1. 基本範例
最常見的 map operator:
nums = Channel.of(1, 2, 3, 4)
square = nums.map { it -> it * it }
square.view()輸出:
1
4
9
16operators 可以鏈接:
2. 常用 Operators
2.1 view()
view()將 channel 內容輸出到 console。
也可以自訂格式:
2.2 map()
map()轉換每個元素,回傳新的 channel。
輸出:
也可輸出 tuple:
輸出:
2.3 mix()
mix()合併多個 channels:
輸出 (順序不保證):
2.4 flatten()
flatten()展開 tuple 或 list:
輸出:
2.5 collect()
collect()收集所有輸出為一個 list(value channel):
輸出:
2.6 groupTuple()
groupTuple()依 key 分組:
輸出:
2.7 join()
join()以 key (tuple 第一個元素) 合併:
輸出:
2.8 branch()
branch()根據條件分流:
輸出:
3. 文字檔案處理
3.1 splitText()
splitText()將文字檔依行數切分。
也可轉換:
3.2 splitCsv()
splitCsv()解析 CSV:
可處理多個 CSV:
3.3 splitJson()
splitJson()解析 JSON:
輸出:
也可直接從檔案:
4. 小結
view():直接輸出map():逐項轉換mix():合併多個 channelsflatten():展開 list/tuplecollect():一次性收集groupTuple():依 key 分組join():兩 channel 依 key 合併branch():依條件分流splitText()/splitCsv()/splitJson():處理文字檔
📌 建議:Operators 常與 channel factories 搭配使用(例如 fromPath → .splitCsv() → .map()),能夠快速建構彈性強的 workflow。
Last updated