DeepVariant は、ディープ ニューラル ネットワークを使用して次世代 DNA 配列データから遺伝的バリアントをコールする解析用パイプラインです。
このチュートリアルでは、サンプルデータを使用して Google Cloud で DeepVariant を実行する方法について説明します。1 つの Compute Engine インスタンスで DeepVariant を実行します。
目標
このチュートリアルを完了すると、Google Cloud で DeepVariant を実行する方法が分かります。
費用
このドキュメントでは、Google Cloud の次の課金対象のコンポーネントを使用します。
- Compute Engine
料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。
始める前に
- Google Cloud アカウントにログインします。Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
-
Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。
-
Compute Engine API を有効にします。
-
Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。
-
Compute Engine API を有効にします。
- Google Cloud CLI をインストールします。
-
gcloud CLI を初期化するには:
gcloud init
ヒント: コマンド プロンプトが必要な場合は、Cloud Shellを使用できます。 Cloud Shell は、Google Cloud CLI がすでに含まれているコマンドライン環境であるため、インストールする必要はありません。
Compute Engine インスタンスを作成する
DeepVariant を実行するため、Google Cloud コンソールや gcloud CLI を使用して Compute Engine インスタンスを作成します。
Console
- Google Cloud コンソールで、[VM インスタンス] ページに移動します。
- [インスタンスを作成] をクリックします。
- インスタンスの名前を
PROJECT_ID-deepvariant-run
の形式で選択します。PROJECT_ID は Google Cloud プロジェクトの ID です。 -
インスタンスの [リージョン] と [ゾーン] を選択します。特定の場所でインスタンスを実行する特別な理由がない限り、[リージョン] として
us-central1 (Iowa)
、[ゾーン] としてus-central1-a
を選択します。 - [マシンタイプ] メニューで、[n1-standard-64 (64 vCPU, 240 GB memory)] を選択します。
- [CPU プラットフォーム] メニューで、[Intel Skylake or later] を選択します。
- [ブートディスク] で [変更] をクリックし、ブートディスクの構成を始めます。
- [公開イメージ] タブで、[Ubuntu 20.04 LTS] を選択します。[ブートディスクの種類] メニューで、[標準の永続ディスク] を選択します。[サイズ(GB)] フィールドで、「300」と入力します。[選択] をクリックします。
- [作成] をクリックしてインスタンスを作成します。
gcloud
gcloud compute instances create \ PROJECT_ID-deepvariant-run \ --project PROJECT_ID \ --zone ZONE \ --scopes "cloud-platform" \ --image-project ubuntu-os-cloud \ --image-family ubuntu-2004-lts \ --machine-type n1-standard-64 \ --min-cpu-platform "Intel Skylake" \ --boot-disk-size=300GB
以下を置き換えます。
- PROJECT_ID: 実際の Google Cloud プロジェクト ID
- ZONE: インスタンスがデプロイされているゾーンです。ゾーンとは、インスタンスとそのリソースが存在するおおよその場所です。たとえば、
us-west1-a
はus-west
リージョン内のゾーンです。以前にgcloud config set compute/zone
を使用してデフォルトゾーンを設定した場合は、このフラグの値でデフォルト値がオーバーライドされます。
インスタンスが起動するまで、しばらくお待ちください。準備が完了すると、[VM インスタンス] ページに緑色のステータス アイコン付きで表示されます。
インスタンスに接続する
インスタンスに接続するには、Google Cloud Console または gcloud CLI を使用します。
Console
- Google Cloud コンソールで、[VM インスタンス] ページに移動します。
- 仮想マシン インスタンスのリストで、作成したインスタンスの行の [SSH] をクリックします。
gcloud
gcloud compute ssh PROJECT_ID-deepvariant-run --zone ZONE
DeepVariant を実行する
作成した Compute Engine インスタンスで、環境を構成して DeepVariant を実行します。
Docker Community Edition(CE)をインストールします。
sudo apt-get -qq -y install \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable" sudo apt-get -qq -y update sudo apt-get -qq -y install docker-ce
次のコマンドをコピーしてローカル環境に貼り付けることで、DeepVariant 環境変数を構成します。
BIN_VERSION="1.2.0" BASE="${HOME}/deepvariant-run" INPUT_DIR="${BASE}/input" REF="GRCh38_no_alt_analysis_set.fasta" BAM="HG003.novaseq.pcr-free.35x.dedup.grch38_no_alt.chr20.bam" OUTPUT_DIR="${BASE}/output" DATA_DIR="${INPUT_DIR}/data" OUTPUT_VCF="HG003.output.vcf.gz" OUTPUT_GVCF="HG003.output.g.vcf.gz"
入力データ ディレクトリと出力ディレクトリのローカル ディレクトリ構造を作成します。
mkdir -p "${OUTPUT_DIR}" mkdir -p "${INPUT_DIR}" mkdir -p "${DATA_DIR}"
このチュートリアルでは、公開されている HG003 ゲノムを、GRCh38 参照にマッピングされている 30x カバレッジで使用します。DeepVariant が 20 番染色体(chr20)でのみ実行されるように、DeepVariant の実行時に、
--regions chr20
フラグを追加して、ランタイムを高速化します。サンプルデータは Illumina シーケンシングを使用して作成されましたが、DeepVariant では以下に挙げる他の種類の入力データもサポートされています。
- 全ゲノム(Illumina)(WGS)
- Exome(Illumina)(WES)
- 全ゲノム(PacBio)
- 全ゲノム PacBio と Illumina ハイブリッド(HYBRID_PACBIO_ILLUMINA)
gsutil cp
を実行して、入力テストデータをdeepvariant
Cloud Storage バケットから、作成したインスタンスのディレクトリにコピーします。# Input BAM and BAI files: gsutil cp gs://deepvariant/case-study-testdata/"${BAM}" "${DATA_DIR}" gsutil cp gs://deepvariant/case-study-testdata/"${BAM}".bai "${DATA_DIR}" # GRCh38 reference FASTA file: FTPDIR=ftp://ftp.ncbi.nlm.nih.gov/genomes/all/GCA/000/001/405/GCA_000001405.15_GRCh38/seqs_for_alignment_pipelines.ucsc_ids curl ${FTPDIR}/GCA_000001405.15_GRCh38_no_alt_analysis_set.fna.gz | gunzip > "${DATA_DIR}/${REF}" curl ${FTPDIR}/GCA_000001405.15_GRCh38_no_alt_analysis_set.fna.fai > "${DATA_DIR}/${REF}".fai
DeepVariant は、Container Registry 内の事前に構築された Docker イメージでステージングされたコンテナ化アプリケーションです。イメージを pull するには、次のコマンドを実行します。
sudo docker pull gcr.io/deepvariant-docker/deepvariant:"${BIN_VERSION}"
DeepVariant を起動するには、次のコマンドを実行します。
sudo docker run \ -v "${DATA_DIR}":"/input" \ -v "${OUTPUT_DIR}:/output" \ gcr.io/deepvariant-docker/deepvariant:"${BIN_VERSION}" \ /opt/deepvariant/bin/run_deepvariant \ --model_type=WGS \ --ref="/input/${REF}" \ --reads="/input/${BAM}" \ --output_vcf=/output/${OUTPUT_VCF} \ --output_gvcf=/output/${OUTPUT_GVCF} \ --regions chr20 \ --num_shards=$(nproc) \ --intermediate_results_dir /output/intermediate_results_dir
次の表に、コマンドに渡されるフラグを示します。
フラグ 説明 model_type
DeepVariant では、さまざまな種類の入力データがサポートされます。このチュートリアルでは、全ゲノム配列(WSG)を使用します。 ref
参照 FASTA ファイルの場所。 reads
入力 BAM ファイルの場所。 output_vcf
出力 VCF ファイルの場所。 output_gvcf
出力 gVCF ファイルの場所。 regions
(オプション)処理する染色体領域のスペース区切りリスト。個々の要素は、 chr20:10-20
または BED/BEDPE ファイルへのパスなど、リージョンのリテラルです。num_shards
並行して実行するシャードの数です。最適な結果を得るには、このフラグの値を、DeepVariant を実行するマシン上のコアの数に設定します。 intermediate_results_dir
make_examples ステージと call_variants ステージの中間出力のディレクトリを指定するオプション フラグ。コマンドが完了すると、ファイルは次の形式でローカル ディレクトリに保存されます。 dry_run
オプション フラグ。true に設定すると、コマンドは実行されずに出力されます。 call_variants_output.tfrecord.gz gvcf.tfrecord-SHARD_NUMBER-of-NUM_OF_SHARDS.gz make_examples.tfrecord-SHARD_NUMBER-of-NUM_OF_SHARDS.gz
DeepVariant が終了すると、次のファイルが
deepvariant-run/output
ディレクトリに出力されます。HG003.output.g.vcf.gz
HG003.output.g.vcf.gz.tbi
HG003.output.vcf.gz
HG003.output.vcf.gz.tbi
HG003.output.visual_report.html
次のコマンドを実行して、出力ディレクトリ内のファイルを一覧表示し、出力ファイルが表示されていることを確認します。
ls $OUTPUT_DIR
実行時間の推定
次の表に、BAM ファイルで 30 倍の全ゲノムサンプルを使用して DeepVariant を実行した場合の、およそのランタイムを示しています。これらの推定には、インスタンスの設定と Cloud Storage からのサンプルデータのダウンロードに必要な時間は含まれません。
1 時間あたりの料金については、Compute Engine の料金を参照できます。Spot VM の使用を検討してください。これは、通常の VM よりも大幅に低価格です。
マシンタイプ | 時間単位のランタイム |
---|---|
n1-standard-8 | 24.63 |
n1-standard-16 | 13.30 |
n1-standard-32 | 7.77 |
n1-standard-64 | 5.64 |
n1-standard-96 | 4.38 |
クリーンアップ
チュートリアルが終了したら、作成したリソースをクリーンアップして、割り当ての使用を停止し、課金されないようにできます。次のセクションで、リソースを削除または無効にする方法を説明します。
課金をなくす最も簡単な方法は、チュートリアル用に作成したプロジェクトを削除することです。
プロジェクトを削除するには:
- Google Cloud コンソールで、[リソースの管理] ページに移動します。
- プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
- ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。
次のステップ
- DeepVariant GitHub リポジトリには、より複雑な構成があります。たとえば、複数のインスタンスを使用して DeepVariant を実行できます。これらのバリエーションにより、処理速度の改善とコストの削減が実現します。
- DeepVariant のオープンソース リリースに関する Google AI のブログ投稿を確認します。
- DeepVariant について質問がある場合は、GitHub で問題を報告してください。 Google Cloud についてご不明な点がある場合は、gcp-life-sciences-discuss@googlegroups.com メーリング リストに投稿できます。