本頁說明如何執行 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。
事前準備
- 安裝 Python 2.7 以上版本。如要進一步瞭解如何設定 Python 開發環境,例如在系統上安裝 pip,請參閱 Python 開發環境設定指南。
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Life Sciences, Compute Engine, and Cloud Storage APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Life Sciences, Compute Engine, and Cloud Storage APIs.
-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
After initializing the gcloud CLI, update it and install the required components:
gcloud components update gcloud components install beta
- 安裝 git 以下載必要檔案。
-
根據預設,Compute Engine 設有資源配額,可防止不慎超出使用量。您可以增加配額來並行啟動更多虛擬機器,藉以增加總處理量並減少作業時間。
如要在本教學課程中獲得最佳結果,您應要求高於專案預設配額的更多配額。以下清單提供了增加配額的建議,還有執行教學課程所需的最低配額。請在
us-central1
地區提出配額要求:- CPU:64 個
- 永久磁碟標準 (GB):375
如要保留目前的配額,可將其他配額要求欄位保留空白。
如果沒有 virtualenv,請執行下列指令,使用 pip 安裝:
pip install virtualenv
執行下列指令,建立獨立的 Python 環境並安裝依附元件:
virtualenv env source env/bin/activate pip install --upgrade \ pyyaml \ google-api-python-client \ google-auth \ google-cloud-storage \ google-auth-httplib2
在
sentieon-google-genomics
目錄中,編輯examples/example.json
檔案,並將 BUCKET、REQUESTER_PROJECT、EMAIL 和 PROJECT_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" }
在環境中設定 PROJECT_ID 變數:
export PROJECT_ID=PROJECT_ID
執行下列指令,在設定檔輸入識別的小型測試資料集上執行 DNASeq® 管道。根據預設,啟動管道之前,指令碼會驗證輸入檔案是否存在於 Cloud Storage 值區中。
python runner/sentieon_runner.py --requester_project $PROJECT_ID examples/example.json
- 預設設定會移除標示為重複的讀數。
markdup
會標示重複的讀數,但不會移除重複的讀數。nodup
會略過重複項標示。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 控制台的「Projects」(專案) 頁面。
-
在專案清單中,選取要刪除的專案,然後按一下「刪除專案」。
- 在對話方塊中輸入專案 ID,然後按一下 [Shut down] (關閉) 以刪除專案。
- 如果您有管道方面的問題,請寄送電子郵件到 support@sentieon.com。
Sentieon® 評估授權
使用這項管道時,Sentieon® 會自動授予您兩週的免費評估授權,供您搭配 Google Cloud使用其軟體。如要接收授權,請在設定管道時,於 EMAIL
欄位中輸入電子郵件地址。如要瞭解如何設定這個欄位,請參閱「瞭解輸入格式」。
評估授權到期後,如要繼續使用 Sentieon®,請傳送電子郵件到 support@sentieon.com。
設定本機環境及安裝必備條件
下載管道指令碼
執行下列指令,下載範例檔案並設定目前的目錄:
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.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 |
重複項標示行為。 有效值: |
鹼基品質分數重新校正 (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_FILE
與 INTERVAL
的間隔。
"INTERVAL_FILE": "gs://my-bucket/capture-targets.bed",
"INTERVAL": "9:80331190-80646365"
下表提供使用設定的說明:
JSON 金鑰 | 說明 |
---|---|
INTERVAL_FILE |
包含要處理之基因體間隔的檔案。 |
INTERVAL |
包含要處理之基因體間隔的字串。 |
輸出選項
根據預設,管道會產生預先處理的 BAM、品質控制指標與變體識別。您可以使用 NO_BAM_OUTPUT
、NO_METRICS
與 NO_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"
有效版本如下:
清除所用資源
完成本教學課程後,您可以清除在 Google Cloud 建立的資源,這樣日後就不需再為這些資源付費。下列各節將說明如何刪除或關閉這些資源。
刪除專案
如要避免付費,最簡單的方法就是刪除您針對教學課程使用的專案。
如要刪除專案,請進行以下操作: