このページでは、二次ゲノム解析用の Google Cloud パイプラインとして Sentieon® DNASeq® を実行する方法について説明します。このパイプラインは、Genome Analysis Toolkit(GATK)のベスト プラクティス バージョン 3.7 の結果と一致します。
- 配置
- 並べ替え
- 重複除去
- ベース品質スコアの再キャリブレーション(BQSR)
- バリアント コール
入力形式は次のとおりです。
- fastq ファイル
- 整列と並べ替え済みの BAM ファイル
目標
このチュートリアルを完了すると、以下のことが行えます。
- Sentieon® DNASeq® を使用して Google Cloud 上でパイプラインを実行する
- さまざまな Sentieon® DNASeq® ユースケース用の構成ファイルを作成する
費用
このドキュメントでは、Google Cloud の次の課金対象のコンポーネントを使用します。
- Compute Engine
- Cloud Storage
料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。
始める前に
- Python 2.7 以上をインストールします。pip のシステムへのインストールなど、Python 開発環境の設定について詳しくは、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.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Update and install
gcloud
components:gcloud components update
gcloud components install beta - git をインストールして、必要なファイルをダウンロードします。
-
デフォルトで Compute Engine にはリソースの割り当てがあり、不注意による使用を防ぎます。割り当てを増やすことで、より多くの仮想マシンを同時に起動し、スループットを向上させ、ターンアラウンド タイムを短縮できます。
このチュートリアルでベストな結果を得るには、プロジェクトのデフォルトより多くの追加の割り当てをリクエストする必要があります。割り当ての増加に関する推奨事項は、チュートリアルを実行するために必要な最小限の割り当てとともに、次のリストに記載されています。
us-central1
リージョンで割り当てリクエストを作成します。- CPUs: 64
- Persistent Disk Standard(GB): 375
他の割り当てリクエスト フィールドは空のままにして、現在の割り当てを維持してもかまいません。
Sentieon® 評価ライセンス
このパイプラインを使用すると、Google Cloud で使用するソフトウェアの無料の 2 週間の評価ライセンスが自動的に付与されます。ライセンスを受け取るには、パイプラインの構成時にメールアドレスを EMAIL
フィールドに入力します。このフィールドの設定については、入力形式についてをご覧ください。
評価ライセンスの有効期限が切れた後に引き続き Sentieon® を使用するには、support@sentieon.com にお問い合わせください。
ローカル環境を設定し、前提条件をインストールする
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
パイプライン スクリプトをダウンロードする
次のコマンドを実行してサンプル ファイルをダウンロードし、現在のディレクトリを設定します。
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 ファイルの 2 番目の読み込みペア。 |
BAM |
入力 BAM ファイル(該当する場合)。 |
REF |
参照ゲノム。設定すると、fastq / BAM インデックス ファイルが存在するものとみなされます。 |
OUTPUT_BUCKET |
パイプラインから出力されたデータを格納するためのバケットとディレクトリ。 |
ZONES |
ワーカーノードに使用する Google Cloud ゾーンのカンマ区切りのリスト。 |
PROJECT_ID |
Google Cloud プロジェクト ID。 |
REQUESTER_PROJECT |
リクエスト元による支払いバケットからのデータ転送時に請求するプロジェクト。 |
EMAIL |
メールアドレス。 |
パイプラインの実行
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
複数のプリエンプティブル試行を指定した場合、そのインスタンスがプリエンプトされるたびにパイプラインが再起動します。パイプラインが終了すると、パイプラインが成功したか失敗したかを示すメッセージがコンソールに出力されます。
推奨される構成
多くの場合、次の構成を使用するとターンアラウンド タイムとコストを最適化できます。この構成では、約 $1.25 のコストで 30 倍のヒトゲノムを実行します。所要時間は約 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
JSON キーを使用して、カンマ区切りの BAM ファイルを入力として確定します。BAM ファイル内の読み取りは参照ゲノムに整列されません。代わりに、パイプラインのデータ重複排除ステージで開始されます。次のサンプルは、2 つの BAM ファイルを入力として使用する構成を示しています。
"BAM": "gs://my-bucket/s1_prep1.bam,gs://my-bucket/s1_prep2.bam"
全エクソーム データまたは大規模なデータセットの構成
推奨構成の設定は、ヒト全ゲノムサンプルを 30 倍の平均カバレッジに配列するように最適化されています。標準的な全ゲノム データセットと比べてファイルが大幅に小さい場合や大幅に大きい場合、インスタンスで利用可能なリソースを増減できます。大規模なデータセットで最適な結果を得るには、次の設定を使用します。
{ "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 |
プリエンプティブル試行が失敗した後、標準インスタンスでパイプラインを実行するかどうかを指定します。 |
リードグループ
リードグループは、Sentieon® BWA を使用して fastq ファイルを参照ゲノムと同調する際に追加されます。複数のリードグループをカンマで区切って指定できます。リードグループの数は入力 fastq ファイルの数と一致させる必要があります。デフォルトのリードグループは @RG\\tID:read-group\\tSM:sample-name\\tPL:ILLUMINA
です。リードグループを変更するには、次の構成に示すように READGROUP
キーを JSON 入力ファイルで設定します。
"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 ファイルをストリーミング入力するには、次のように JSON キー STREAM_INPUT
を True
に設定します。
"STREAM_INPUT": "True"
次の表で、使用されている設定について説明します。
JSON キー | 説明 |
---|---|
STREAM_INPUT |
Cloud Storage から fastq ファイルを直接ストリーミング入力するかどうかを指定します。 |
重複マーキング
デフォルトでは、パイプラインで BAM ファイルからの重複している読み取りは削除されます。この動作は、次の構成に示すように、DEDUP
JSON キーを設定することで変更できます。
"DEDUP": "markdup"
次の表で、使用されている設定について説明します。
JSON キー | 説明 |
---|---|
DEDUP |
重複マーキングの動作。 有効な値:
|
ベース品質スコアの再キャリブレーション(BQSR)および既知のサイト
BSQR には、遺伝的変異の既知のサイトが必要です。デフォルトの動作では、パイプラインのこの段階はスキップされます。ただし、既知のサイトに JSON キー BQSR_SITES
を指定することで、BSQR を有効にできます。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
の場合、JSON キー GVCF_OUTPUT
を使用して VCF 形式ではなく gVCF 形式でバリアント呼び出しを生成できます。
"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® DNASeq® ソフトウェア パッケージの最新バージョンは、次のように SENTIEON_VERSION
JSON キーを指定すると、Cloud Life Sciences API と一緒に使用できます。
"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 で作成したリソースをクリーンアップして、今後料金が発生しないようにします。以下のセクションでは、このようなリソースを削除または無効にする方法を説明します。
プロジェクトの削除
課金を停止する最も簡単な方法は、チュートリアル用に使用したプロジェクトを削除することです。
プロジェクトを削除するには:
- Google Cloud コンソールでプロジェクト ページに移動します。
- プロジェクト リストで、削除するプロジェクトを選択し、[プロジェクトの削除] をクリックします。
- ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。
次のステップ
- パイプラインに関する質問がある場合や問題が発生した場合は、support@sentieon.com までメールでご連絡ください。