Nextflow Operators 教學筆記

Nextflow 的 operators 是用來 操作與轉換 channels 的方法。它們支援 Dataflow programming 的風格,能將輸入資料流轉換為新的 channel。除了 setsubscribe,幾乎所有 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
16

operators 可以鏈接:


2. 常用 Operators

2.1 view()

將 channel 內容輸出到 console。

也可以自訂格式:


2.2 map()

轉換每個元素,回傳新的 channel。

輸出:

也可輸出 tuple:

輸出:


2.3 mix()

合併多個 channels:

輸出 (順序不保證):


2.4 flatten()

展開 tuple 或 list:

輸出:


2.5 collect()

收集所有輸出為一個 list(value channel):

輸出:


2.6 groupTuple()

依 key 分組:

輸出:


2.7 join()

以 key (tuple 第一個元素) 合併:

輸出:


2.8 branch()

根據條件分流:

輸出:


3. 文字檔案處理

3.1 splitText()

將文字檔依行數切分。

也可轉換:


3.2 splitCsv()

解析 CSV:

可處理多個 CSV:


3.3 splitJson()

解析 JSON:

輸出:

也可直接從檔案:


4. 小結

  • view():直接輸出

  • map():逐項轉換

  • mix():合併多個 channels

  • flatten():展開 list/tuple

  • collect():一次性收集

  • groupTuple():依 key 分組

  • join():兩 channel 依 key 合併

  • branch():依條件分流

  • splitText() / splitCsv() / splitJson():處理文字檔


📌 建議:Operators 常與 channel factories 搭配使用(例如 fromPath.splitCsv().map()),能夠快速建構彈性強的 workflow。

Last updated