執行 Sentieon® DNASeq®

本頁說明如何執行 Sentieon® DNASeq® 做為Google Cloud 次要基因體分析的管道。此管道符合 Genome Analysis Toolkit (GATK) 最佳做法第 3.7 版中關於以下部分的結果:

  • 對齊
  • 排序
  • 移除重複項目
  • 鹼基品質分數重新校正 (BQSR)
  • 變異體呼叫

輸入格式包括:

  • fastq 檔案
  • 校正並排序過的 BAM 檔案

目標

完成本教學課程後,您將會學到以下內容:

  • 在 Google Cloud 上使用 Sentieon® DNASeq® 執行管道
  • 撰寫不同 Sentieon® DNASeq® 使用案例的設定檔

費用

在本文件中,您會使用 Google Cloud的下列計費元件:

  • Compute Engine
  • Cloud Storage

如要根據預測用量估算費用,請使用 Pricing Calculator

初次使用 Google Cloud 的使用者可能符合免費試用資格。

事前準備

  1. 安裝 Python 2.7 以上版本。如要進一步瞭解如何設定 Python 開發環境,例如在系統上安裝 pip,請參閱 Python 開發環境設定指南
  2. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  3. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  4. Make sure that billing is enabled for your Google Cloud project.

  5. Enable the Cloud Life Sciences, Compute Engine, and Cloud Storage APIs.

    Enable the APIs

  6. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  7. Make sure that billing is enabled for your Google Cloud project.

  8. Enable the Cloud Life Sciences, Compute Engine, and Cloud Storage APIs.

    Enable the APIs

  9. Install the Google Cloud CLI.

  10. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  11. To initialize the gcloud CLI, run the following command:

    gcloud init
  12. After initializing the gcloud CLI, update it and install the required components:

    gcloud components update
    gcloud components install beta
  13. 安裝 git 以下載必要檔案。

    下載 Git

  14. 根據預設,Compute Engine 設有資源配額,可防止不慎超出使用量。您可以增加配額來並行啟動更多虛擬機器,藉以增加總處理量並減少作業時間。

    如要在本教學課程中獲得最佳結果,您應要求高於專案預設配額的更多配額。以下清單提供了增加配額的建議,還有執行教學課程所需的最低配額。請在 us-central1 地區提出配額要求:

    • CPU:64 個
    • 永久磁碟標準 (GB):375

    如要保留目前的配額,可將其他配額要求欄位保留空白。

  15. Sentieon® 評估授權

    使用這項管道時,Sentieon® 會自動授予您兩週的免費評估授權,供您搭配 Google Cloud使用其軟體。如要接收授權,請在設定管道時,於 EMAIL 欄位中輸入電子郵件地址。如要瞭解如何設定這個欄位,請參閱「瞭解輸入格式」。

    評估授權到期後,如要繼續使用 Sentieon®,請傳送電子郵件到 support@sentieon.com

    設定本機環境及安裝必備條件

    1. 如果沒有 virtualenv,請執行下列指令,使用 pip 安裝:

      pip install virtualenv
    2. 執行下列指令,建立獨立的 Python 環境並安裝依附元件:

      virtualenv env
      source env/bin/activate
      pip install --upgrade \
          pyyaml \
          google-api-python-client \
          google-auth \
          google-cloud-storage \
          google-auth-httplib2

    下載管道指令碼

    執行下列指令,下載範例檔案並設定目前的目錄:

    git clone https://github.com/sentieon/sentieon-google-genomics.git
    cd sentieon-google-genomics

    瞭解輸入格式

    管道使用 JSON 檔案中指定的參數做為輸入。

    在您下載的存放區中有一個 examples/example.json 檔案,內容如下:

    {
      "FQ1": "gs://sentieon-test/pipeline_test/inputs/test1_1.fastq.gz",
      "FQ2": "gs://sentieon-test/pipeline_test/inputs/test1_2.fastq.gz",
      "REF": "gs://sentieon-test/pipeline_test/reference/hs37d5.fa",
      "OUTPUT_BUCKET": "gs://BUCKET",
      "ZONES": "us-central1-a,us-central1-b,us-central1-c,us-central1-f",
      "PROJECT_ID": "PROJECT_ID"
      "REQUESTER_PROJECT": "PROJECT_ID",
      "EMAIL": "YOUR_EMAIL_HERE"
    }

    下表說明該檔案中的 JSON 金鑰:

    JSON 金鑰 說明
    FQ1 輸入 fastq 檔案中的第一對讀數。
    FQ2 輸入 fastq 檔案中的第二對讀數。
    BAM 輸入 BAM 檔案 (如果有的話)。
    REF 參照基因體。如果設定,fastq/BAM 索引檔案會假設為存在。
    OUTPUT_BUCKET 用來儲存管道輸出資料的值區與目錄。
    ZONES 以逗號分隔的 Google Cloud 區域清單,可供工作站節點使用。
    PROJECT_ID 您的 Google Cloud 專案 ID。
    REQUESTER_PROJECT 從「要求者付費」值區轉移資料時,用來計費的專案。
    EMAIL 您的電子郵件地址。

    執行管道

    1. sentieon-google-genomics 目錄中,編輯 examples/example.json 檔案,並將 BUCKETREQUESTER_PROJECTEMAILPROJECT_ID 變數替換為 Google Cloud 專案中的相關資源:

      {
        "FQ1": "gs://sentieon-test/pipeline_test/inputs/test1_1.fastq.gz",
        "FQ2": "gs://sentieon-test/pipeline_test/inputs/test1_2.fastq.gz",
        "REF": "gs://sentieon-test/pipeline_test/reference/hs37d5.fa",
        "OUTPUT_BUCKET": "gs://BUCKET",
        "ZONES": "us-central1-a,us-central1-b,us-central1-c,us-central1-f",
        "PROJECT_ID": "PROJECT_ID",
        "REQUESTER_PROJECT": "PROJECT_ID",
        "EMAIL": "EMAIL_ADDRESS"
      }
    2. 在環境中設定 PROJECT_ID 變數:

      export PROJECT_ID=PROJECT_ID

    3. 執行下列指令,在設定檔輸入識別的小型測試資料集上執行 DNASeq® 管道。根據預設,啟動管道之前,指令碼會驗證輸入檔案是否存在於 Cloud Storage 值區中。

      python runner/sentieon_runner.py --requester_project $PROJECT_ID examples/example.json

    如果您指定多次先佔嘗試,每次先佔執行個體時,管道都會重新啟動。管道完成之後,會輸出訊息至主控台,表明管道是成功還是失敗。

    對於大多數情況而言,您都可以使用下列設定最佳化作業時間與費用。設定會以大約 1.25 美元的費用執行 30x 人類基因體,總計耗時約 2 小時。人類全外顯子將花費約 0.35 美元,並耗時約 45 分鐘。這兩個估算都是以非先佔的管道執行個體為基礎。

    {
      "FQ1": "gs://my-bucket/sample1_1.fastq.gz",
      "FQ2": "gs://my-bucket/sample1_2.fastq.gz",
      "REF": "gs://sentieon-test/pipeline_test/reference/hs37d5.fa",
      "OUTPUT_BUCKET": "gs://BUCKET",
      "BQSR_SITES": "gs://sentieon-test/pipeline_test/reference/Mills_and_1000G_gold_standard.indels.b37.vcf.gz,gs://sentieon-test/pipeline_test/reference/1000G_phase1.indels.b37.vcf.gz,gs://sentieon-test/pipeline_test/reference/dbsnp_138.b37.vcf.gz",
      "DBSNP": "gs://sentieon-test/pipeline_test/reference/dbsnp_138.b37.vcf.gz",
      "PREEMPTIBLE_TRIES": "2",
      "NONPREEMPTIBLE_TRY": true,
      "STREAM_INPUT": "True",
      "ZONES": "us-central1-a,us-central1-b,us-central1-c,us-central1-f",
      "PROJECT_ID": "PROJECT_ID",
      "EMAIL": "EMAIL_ADDRESS"
    }

    其他選項

    您可以使用下列其他選項來自訂管道。

    輸入檔案選項

    管道支援將多個逗號分隔的 fastq 檔案做為輸入,如下列設定所示:

    "FQ1": "gs://my-bucket/s1_prep1_1.fastq.gz,gs://my-bucket/s1_prep2_1.fastq.gz",
    "FQ2": "gs://my-bucket/s1_prep1_2.fastq.gz,gs://my-bucket/s1_prep2_2.fastq.gz",
    

    管道接受將逗號分隔的 BAM 檔案做為使用 BAM JSON 金鑰的輸入。BAM 檔案中的讀數與參照基因體不符。 而是會從管道的資料簡化階段開始。下列範例顯示使用兩個 BAM 檔案做為輸入內容的設定:

    "BAM": "gs://my-bucket/s1_prep1.bam,gs://my-bucket/s1_prep2.bam"
    

    全外顯子資料或大型資料集設定

    建議設定中的設定已針對定序至 30x 平均涵蓋範圍的人類全基因體範例進行最佳化處理。對於比標準全基因體資料集小很多或大很多的檔案,您可以增加或減少執行個體可用的資源。若要在大型資料集上獲得最佳結果,請使用下列設定:

    {
      "FQ1": "gs://sentieon-test/pipeline_test/inputs/test1_1.fastq.gz",
      "FQ2": "gs://sentieon-test/pipeline_test/inputs/test1_2.fastq.gz",
      "REF": "gs://sentieon-test/pipeline_test/reference/hs37d5.fa",
      "OUTPUT_BUCKET": "gs://BUCKET",
      "ZONES": "us-central1-a,us-central1-b,us-central1-c,us-central1-f",
      "PROJECT_ID": "PROJECT_ID",
      "EMAIL": "EMAIL_ADDRESS",
      "DISK_SIZE": 600,
      "MACHINE_TYPE": "n1-highcpu-64",
      "CPU_PLATFORM": "Intel Broadwell"
    }

    下表提供使用設定的說明:

    JSON 金鑰 說明
    DISK_SIZE 供工作站節點使用的 SSD 空間。
    MACHINE_TYPE 要使用的 Compute Engine 虛擬機器類型。預設值為 n1-standard-1
    CPU_PLATFORM 要要求的 CPU 平台。必須是有效的 Compute Engine CPU 平台名稱 (例如「Intel Skylake」)。

    先占執行個體

    您可以設定 PREEMPTIBLE_TRIES JSON 金鑰,在管道中使用先占執行個體

    根據預設,如果耗盡先佔嘗試次數,或者 NONPREEMPTIBLE_TRY JSON 金鑰設定為 0,執行者會嘗試以標準執行個體執行管道。您可以將 NONPREEMPTIBLE_TRY 鍵設為 false 來停止此行為,如下列設定所示:

    "PREEMPTIBLE_TRIES": 2,
    "NONPREEMPTIBLE_TRY": false
    

    下表提供使用設定的說明:

    JSON 金鑰 說明
    PREEMPTIBLE_TRIES 使用先佔執行個體時嘗試管道的次數。
    NONPREEMPTIBLE_TRY 確認在耗盡先佔嘗試次數後,是否以標準執行個體執行管道。

    讀取組

    當 fastq 檔案符合使用 Sentieon® BWA 的參照基因體時,便會新增讀取組。您可以提供多個以半形逗號分隔的讀取群組。 讀取組數目必須與輸入 fastq 檔案的數目相符。 預設讀取群組為 @RG\\tID:read-group\\tSM:sample-name\\tPL:ILLUMINA。 如要變更讀取組,請在 JSON 輸入檔案中設定 READGROUP 金鑰,如下列設定所示:

    "READGROUP": "@RG\\tID:my-rgid-1\\tSM:my-sm\\tPL:ILLUMINA,@RG\\tID:my-rgid-2\\tSM:my-sm\\tPL:ILLUMINA"
    

    下表提供使用設定的說明:

    JSON 金鑰 說明
    READGROUP 包含範例中繼資料的讀取組。

    如要進一步瞭解讀取組,請參閱「讀取組」。

    從 Cloud Storage 串流輸入

    您可以從 Cloud Storage 串流輸入 fastq 檔案,這樣會減少管道的總執行階段數。如要從 Cloud Storage 串流輸入 fastq 檔案,請將 STREAM_INPUT JSON 金鑰設定為 True

    "STREAM_INPUT": "True"
    

    下表提供使用設定的說明:

    JSON 金鑰 說明
    STREAM_INPUT 確認是否從 Cloud Storage 直接串流輸入 fastq 檔案。

    重複項標示

    根據預設,管道會從 BAM 檔案中移除重複的讀數。您可以設定 DEDUP JSON 金鑰來變更此行為,如下列設定所示:

    "DEDUP": "markdup"
    

    下表提供使用設定的說明:

    JSON 金鑰 說明
    DEDUP 重複項標示行為。
    有效值:
    • 預設設定會移除標示為重複的讀數。
    • markdup 會標示重複的讀數,但不會移除重複的讀數。
    • nodup 會略過重複項標示。

    鹼基品質分數重新校正 (BQSR) 與已知位置

    BSQR 需要基因變體的已知位置。預設行為會略過管道的這個階段,但是您可以使用 BQSR_SITES JSON 金鑰提供已知位置來啟用 BSQR。如果提供 JSON 金鑰,DBSNP 檔案便可用來在變體識別期間為輸出變體加上註解。

    "BQSR_SITES": "gs://my-bucket/reference/Mills_and_1000G_gold_standard.indels.b37.vcf.gz,gs://my-bucket/reference/1000G_phase1.indels.b37.vcf.gz,gs://my-bucket/reference/dbsnp_138.b37.vcf.gz",
    "DBSNP": "gs://sentieon-test/pipeline_test/reference/dbsnp_138.b37.vcf.gz"
    

    下表提供使用設定的說明:

    JSON 金鑰 說明
    BSQR_SITES 開啟 BSQR 並使用以逗號分隔的提供檔案清單做為已知位置。
    DBSNP 在變體識別期間使用的 dbSNP 檔案。

    間隔

    對於某些應用,例如標靶定序或全外顯子定序,您可能只對基因體的一部分感興趣。在這些情況下,提供標靶間隔檔案將可加快處理速度,並減少低品質的脫靶變體識別。您可以使用 JSON 金鑰為 INTERVAL_FILEINTERVAL 的間隔。

    "INTERVAL_FILE": "gs://my-bucket/capture-targets.bed",
    "INTERVAL": "9:80331190-80646365"
    

    下表提供使用設定的說明:

    JSON 金鑰 說明
    INTERVAL_FILE 包含要處理之基因體間隔的檔案。
    INTERVAL 包含要處理之基因體間隔的字串。

    輸出選項

    根據預設,管道會產生預先處理的 BAM、品質控制指標與變體識別。您可以使用 NO_BAM_OUTPUTNO_METRICSNO_HAPLOTYPER JSON 金鑰停用這裡的任何輸出。若未提供 NO_HAPLOTYPER 引數或該引數為 NULL,您可以使用 GVCF_OUTPUT JSON 金鑰來產生 gVCF 格式而非 VCF 格式的變體識別。

    "NO_BAM_OUTPUT": "true",
    "NO_METRICS": "true",
    "NO_HAPLOTYPER": "true",
    "GVCF_OUTPUT": "true",
    

    下表提供使用設定的說明:

    JSON 金鑰 說明
    NO_BAM_OUTPUT 確認是否輸出預先處理的 BAM 檔案。
    NO_METRICS 確認是否輸出檔案指標。
    NO_HAPLOTYPER 確認是否輸出變體識別。
    GVCF_OUTPUT 確認是否輸出 gVCF 格式的變體識別。

    Sentieon® DNASeq® 版本

    您可以指定 SENTIEON_VERSION JSON 金鑰,搭配 Cloud Life Sciences API 使用任何近期版本的 Sentieon® DNASeq® 軟體套件,如下所示:

    "SENTIEON_VERSION": "201808.08"
    

    有效版本如下:

    • 201711.01
    • 201711.02
    • 201711.03
    • 201711.04
    • 201711.05
    • 201808
    • 201808.01
    • 201808.03
    • 201808.05
    • 201808.06
    • 201808.07
    • 201808.08

    清除所用資源

    完成本教學課程後,您可以清除在 Google Cloud 建立的資源,這樣日後就不需再為這些資源付費。下列各節將說明如何刪除或關閉這些資源。

    刪除專案

    如要避免付費,最簡單的方法就是刪除您針對教學課程使用的專案。

    如要刪除專案,請進行以下操作:

    1. 前往 Google Cloud 控制台的「Projects」(專案) 頁面。

      前往「Projects」(專案) 頁面

    2. 在專案清單中,選取要刪除的專案,然後按一下「刪除專案」選擇專案名稱旁邊的核取方塊後,按一下「刪除專案」
    3. 在對話方塊中輸入專案 ID,然後按一下 [Shut down] (關閉) 以刪除專案。

    後續步驟