透過 Batch 執行 Nextflow 管道,藉此自動化調度工作

本教學課程說明如何在 Batch 上執行 Nextflow 管道。具體來說,本教學課程會從 Nextflow 執行範例 rnaseq-nf 生命科學管道,該管道會使用 RNA-Seq 從短讀取資料量化基因體特徵。

本教學課程適用於想要搭配 Batch 使用 Nextflow 的 Batch 使用者。

Nextflow 是開放原始碼軟體,可自動化調度管理生物資訊工作流程。

建立 Cloud Storage 值區

如要建立 Cloud Storage bucket,儲存 Nextflow 管道的暫時工作和輸出檔案,請使用 Google Cloud 控制台或指令列。

控制台

如要使用 Google Cloud 控制台建立 Cloud Storage 值區,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Bucket」頁面。

    前往「Buckets」(值區) 頁面

  2. 按一下「 Create」(建立)

  3. 在「建立 bucket」頁面中,輸入 bucket 的全域不重複名稱

  4. 點選「建立」

  5. 在「Public access will be prevented」(系統會禁止公開存取) 視窗中,按一下「Confirm」(確認)

gcloud

如要使用 Google Cloud CLI 建立 Cloud Storage bucket,請使用 gcloud storage buckets create 指令

gcloud storage buckets create gs://BUCKET_NAME

BUCKET_NAME 替換成 bucket 的全域不重複名稱

如果要求成功,輸出內容應如下所示:

Creating gs://BUCKET_NAME/...
   ```

設定 Nextflow

如要設定 Nextflow pipeline 在 Batch 上執行,請在指令列中按照下列步驟操作:

  1. 複製範例管道存放區:

    git clone https://github.com/nextflow-io/rnaseq-nf.git
    
  2. 前往 rnaseq-nf 資料夾:

    cd rnaseq-nf
    
  3. 開啟 nextflow.config 檔案:

    nano nextflow.config
    

    檔案應包含下列 gcb 區段:

    gcb {
      params.transcriptome = 'gs://rnaseq-nf/data/ggal/transcript.fa'
      params.reads = 'gs://rnaseq-nf/data/ggal/gut_{1,2}.fq'
      params.multiqc = 'gs://rnaseq-nf/multiqc'
      process.executor = 'google-batch'
      process.container = 'quay.io/nextflow/rnaseq-nf:v1.1'
      workDir = 'gs://BUCKET_NAME/WORK_DIRECTORY'
      google.region  = 'REGION'
    }
    
  4. gcb 部分執行下列操作:

    1. BUCKET_NAME 替換為您在先前步驟中建立的 Cloud Storage 值區名稱。

    2. WORK_DIRECTORY 替換為新資料夾的名稱,管道可使用該資料夾儲存記錄和輸出內容。

      例如輸入 workDir

    3. REGION 替換為要使用的地區。

      例如輸入 us-central1

    4. google.region 欄位後面加入下列欄位:

      1. 新增 google.project 欄位:

        google.project = 'PROJECT_ID'
        

        PROJECT_ID 替換為「目前」 Google Cloud 專案的專案 ID。

      2. 如果不是使用 Compute Engine 預設服務帳戶做為作業的服務帳戶,請新增 google.batch.serviceAccountEmail 欄位:

        google.batch.serviceAccountEmail = 'SERVICE_ACCOUNT_EMAIL'
        

        SERVICE_ACCOUNT_EMAIL 替換為您為本教學課程準備的作業服務帳戶電子郵件地址。

  5. 如要儲存編輯內容,請按照下列步驟操作:

    1. 按下 Control+S 鍵。

    2. 輸入 Y

    3. 按下 Enter 鍵。

執行管道

使用指令列執行範例 Nextflow 管道:

../nextflow run nextflow-io/rnaseq-nf -profile gcb

管道會使用您在先前步驟中提供的設定,執行小型資料集。這項作業最多可能需要 10 分鐘才能完成。

管線執行完畢後,輸出內容應如下所示:

N E X T F L O W  ~  version 23.04.1
Launching `https://github.com/nextflow-io/rnaseq-nf` [crazy_curry] DSL2 - revision: 88b8ef803a [master]
 R N A S E Q - N F   P I P E L I N E
 ===================================
 transcriptome: gs://rnaseq-nf/data/ggal/transcript.fa
 reads        : gs://rnaseq-nf/data/ggal/gut_{1,2}.fq
 outdir       : results

Uploading local `bin` scripts folder to gs://example-bucket/workdir/tmp/53/2847f2b832456a88a8e4cd44eec00a/bin
executor >  google-batch (4)
[67/71b856] process > RNASEQ:INDEX (transcript)     [100%] 1 of 1 ✔
[0c/2c79c6] process > RNASEQ:FASTQC (FASTQC on gut) [100%] 1 of 1 ✔
[a9/571723] process > RNASEQ:QUANT (gut)            [100%] 1 of 1 ✔
[9a/1f0dd4] process > MULTIQC                       [100%] 1 of 1 ✔

Done! Open the following report in your browser --> results/multiqc_report.html

Completed at: 20-Apr-2023 15:44:55
Duration    : 10m 13s
CPU hours   : (a few seconds)
Succeeded   : 4

查看管道的輸出內容

管道執行完成後,會將輸出檔案、記錄、錯誤或暫時檔案儲存在 Cloud Storage 值區 WORK_DIRECTORY 資料夾中的 results/qc_report.html 檔案內。

如要查看 Cloud Storage 值區 WORK_DIRECTORY 資料夾中的管道輸出檔案,可以使用 Google Cloud 控制台或指令列。

控制台

如要使用 Google Cloud 控制台檢查管道的輸出檔案,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Bucket」頁面。

    前往「Buckets」(值區) 頁面

  2. 在「Name」(名稱) 欄中,按一下您在先前步驟中建立的 bucket 名稱。

  3. 在「Bucket details」(值區詳細資料) 頁面中,開啟 WORK_DIRECTORY 資料夾。

工作流程執行的每個個別工作都會有一個資料夾。每個資料夾都包含執行中的指令、輸出檔案,以及管道建立的暫存檔案。

gcloud

如要使用 gcloud CLI 檢查管道的輸出檔案,請使用 gcloud storage ls 指令

gcloud storage ls gs://BUCKET_NAME/WORK_DIRECTORY

更改下列內容:

  • BUCKET_NAME:您在先前步驟中建立的值區名稱。

  • WORK_DIRECTORY:您在 nextflow.config 檔案中指定的目錄。

輸出內容會列出管道執行的每個個別工作所對應的資料夾。每個資料夾都包含執行中的指令、輸出檔案,以及管道建立的暫存檔案。