Halaman ini menjelaskan cara menjalankan pipeline analisis genomik sekunder di Google Cloud menggunakan Praktik Terbaik Toolkit Analisis Genomik (GATK). Praktik Terbaik GATK disediakan oleh Broad Institute.
Alur kerja yang digunakan dalam tutorial ini adalah implementasi Praktik Terbaik GATK untuk penemuan varian dalam data pengurutan genom secara keseluruhan (WGS). Alur kerja ditulis dalam Workflow Definition Language (WDL) Broad Institute dan berjalan di runner WDL Cromwell.
Tujuan
Setelah menyelesaikan tutorial ini, Anda akan tahu cara:
- Menjalankan pipeline menggunakan Praktik Terbaik GATK dengan data dari build 38 genom referensi manusia
- Menjalankan pipeline menggunakan Praktik Terbaik GATK menggunakan data Anda sendiri
Biaya
Dalam dokumen ini, Anda akan menggunakan komponen Google Cloud yang dapat ditagih berikut:
- Compute Engine
- Cloud Storage
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Sebelum memulai
- 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.
- 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 -
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 - Instal git untuk mendownload file yang diperlukan.
-
Secara default, Compute Engine memiliki kuota resource untuk mencegah penggunaan yang tidak disengaja. Dengan meningkatkan kuota, Anda dapat meluncurkan lebih banyak virtual machine secara serentak, yang akan meningkatkan throughput dan mengurangi waktu penyelesaian.
Untuk mendapatkan hasil terbaik dalam tutorial ini, Anda harus meminta kuota tambahan di atas kuota default project. Rekomendasi untuk penambahan kuota diberikan dalam daftar berikut, dan kuota minimum yang diperlukan untuk menjalankan tutorial. Buat permintaan kuota Anda di region
us-central1
:- CPU: 101 (minimum 17)
- Persistent Disk Standar (GB): 10.500 (minimal 320)
- Alamat IP yang digunakan: 51 (minimum 2)
Anda dapat mengosongkan kolom permintaan kuota lainnya untuk mempertahankan kuota saat ini.
Membuat bucket Cloud Storage
Buat bucket Cloud Storage menggunakan perintah gcloud storage buckets create
. Karena persyaratan di mesin Cromwell, jangan gunakan karakter garis bawah
(_
) dalam nama bucket atau Anda akan mengalami error.
gcloud storage buckets create gs://BUCKET
Pipeline menghasilkan hasil, log, dan file perantara ke bucket ini.
Mendownload file contoh
Jalankan perintah berikut untuk mendownload WDL dan skrip helper:
git clone https://github.com/broadinstitute/wdl-runner.git git clone https://github.com/gatk-workflows/broad-prod-wgs-germline-snps-indels.git
Repositori gatk-workflows/broad-prod-wgs-germline-snps-indels berisi file berikut yang diperlukan untuk menjalankan pipeline:
*.wdl
: Definisi alur kerja*.inputs.json
: Parameter input, termasuk jalur ke file BAM dan genom referensi*.options.json
: Opsi runtime alur kerja
Anda dapat menemukan file definisi pipeline Cromwell yang digunakan untuk menjalankan pipeline WDL di repositori broadinstitute/wdl-runner/wdl_runner/.
Menjalankan pipeline menggunakan data sampel
Bagian ini menunjukkan cara menjalankan pipeline dengan data WGS menggunakan build 38 dari genom referensi manusia. File input adalah file BAM yang tidak selaras.
Untuk menjalankan pipeline, selesaikan langkah-langkah berikut:
Buat variabel lingkungan
GATK_GOOGLE_DIR
yang mengarah ke folder yang berisi file pipeline Broad:export GATK_GOOGLE_DIR="${PWD}"/broad-prod-wgs-germline-snps-indels
Buat variabel lingkungan
GATK_OUTPUT_DIR
yang mengarah ke bucket Cloud Storage dan folder untukoutput
alur kerja, filework
perantara, danlogging
:export GATK_OUTPUT_DIR=gs://BUCKET/FOLDER
Ubah direktori ke folder
/wdl_runner
di repositori yang Anda download. Direktori ini berisi file definisi pipeline untuk menjalankan pipeline berbasis WDL di Google Cloud:cd wdl-runner/wdl_runner/
Menjalankan pipeline:
Pilih salah satu opsi berikut, bergantung pada apakah Anda menggunakan VPC default atau VPC kustom:
VPC Default
gcloud beta lifesciences pipelines run \ --pipeline-file wdl_pipeline.yaml \ --location us-central1 \ --regions us-central1 \ --inputs-from-file WDL=${GATK_GOOGLE_DIR}/PairedEndSingleSampleWf.wdl,\ WORKFLOW_INPUTS=${GATK_GOOGLE_DIR}/PairedEndSingleSampleWf.hg38.inputs.json,\ WORKFLOW_OPTIONS=${GATK_GOOGLE_DIR}/PairedEndSingleSampleWf.options.json \ --env-vars WORKSPACE=${GATK_OUTPUT_DIR}/work,\ OUTPUTS=${GATK_OUTPUT_DIR}/output \ --logging ${GATK_OUTPUT_DIR}/logging/
VPC Kustom
Buat variabel lingkungan
NETWORK
danSUBNETWORK
untuk menentukan nama jaringan dan subnetwork VPC Anda:export NETWORK=VPC_NETWORK export SUBNETWORK=VPC_SUBNET
Edit file
PairedEndSingleSampleWf.options.json
yang berada di direktoribroad-prod-wgs-germline-snps-indels
dan ubah zona agar hanya menyertakan zona dalam region subnet Anda. Misalnya, jika Anda menggunakan subnetus-central1
, kolomzones
akan terlihat seperti ini:"zones": "us-central1-a us-central1-b us-central1-c us-central1-f"
.gcloud beta lifesciences pipelines run \ --pipeline-file wdl_pipeline.yaml \ --location us-central1 \ --regions us-central1 \ --network ${NETWORK} \ --subnetwork ${SUBNETWORK} \ --inputs-from-file WDL=${GATK_GOOGLE_DIR}/PairedEndSingleSampleWf.wdl,\ WORKFLOW_INPUTS=${GATK_GOOGLE_DIR}/PairedEndSingleSampleWf.hg38.inputs.json,\ WORKFLOW_OPTIONS=${GATK_GOOGLE_DIR}/PairedEndSingleSampleWf.options.json \ --env-vars WORKSPACE=${GATK_OUTPUT_DIR}/work,\ OUTPUTS=${GATK_OUTPUT_DIR}/output,\ NETWORK=${NETWORK},\ SUBNETWORK=${SUBNETWORK} \ --logging ${GATK_OUTPUT_DIR}/logging/
Perintah ini menampilkan ID operasi dalam format
Running [operations/OPERATION_ID]
. Anda dapat menggunakan perintahgcloud beta lifesciences describe
untuk melacak status pipeline dengan menjalankan perintah berikut (pastikan nilai flag--location
cocok dengan lokasi yang ditentukan pada langkah sebelumnya):gcloud beta lifesciences operations describe OPERATION_ID \ --location=us-central1 \ --format='yaml(done, error, metadata.events)'
Perintah
operations describe
menampilkandone: true
saat pipeline selesai.Anda dapat menjalankan skrip yang disertakan dengan
wdl_runner
untuk memeriksa setiap 300 detik apakah tugas sedang berjalan, telah selesai, atau menampilkan error:../monitoring_tools/monitor_wdl_pipeline.sh OPERATION_ID us-central1 300
Setelah pipeline selesai, jalankan perintah berikut untuk membuat daftar output di bucket Cloud Storage Anda:
gcloud storage ls gs://BUCKET/FOLDER/output/
Anda dapat melihat file perantara yang dibuat oleh pipeline dan memilih file mana yang ingin disimpan, atau menghapusnya untuk mengurangi biaya yang terkait dengan Cloud Storage. Untuk menghapus file, lihat Menghapus file perantara di bucket Cloud Storage.
Menjalankan pipeline Praktik Terbaik GATK pada data Anda
Sebelum menjalankan pipeline pada data lokal, Anda perlu menyalin data ke bucket Cloud Storage.
Menyalin file input
Pipeline dapat berjalan dengan file BAM yang tidak selaras yang disimpan di Cloud Storage. Jika file Anda dalam format yang berbeda, seperti BAM atau FASTQ yang sejajar, Anda harus mengonversinya sebelum dapat diupload ke Cloud Storage. Anda dapat mengonversinya secara lokal, atau menggunakan Pipelines API untuk mengonversinya di cloud.
Contoh berikut menunjukkan cara menyalin satu file dari sistem file lokal ke bucket Cloud Storage:
gcloud storage cp FILE gs://BUCKET/FOLDER
Untuk contoh selengkapnya tentang cara menyalin file ke bucket Cloud Storage, lihat bagian Menyalin data ke Cloud Storage.
gcloud CLI memverifikasi checksum secara otomatis, sehingga saat transfer berhasil, data Anda kompatibel untuk digunakan dengan Praktik Terbaik GATK.
Menjalankan pipeline pada data Anda
Untuk menjalankan Praktik Terbaik GATK pada file BAM yang tidak diselaraskan, buat salinan
PairedEndSingleSampleWf.hg38.inputs.json
,
lalu perbarui jalur agar mengarah ke file Anda di bucket Cloud Storage.
Kemudian, Anda dapat mengikuti langkah-langkah di Menjalankan pipeline menggunakan data contoh, menggunakan file PairedEndSingleSampleWf.hg38.inputs.json
yang telah diperbarui.
Jika data Anda tidak terdiri dari file BAM yang tidak diselaraskan, dan berisi genom referensi, pengurutan eksom, panel yang ditargetkan, dan data somatik, Anda harus menggunakan alur kerja yang berbeda. Lihat Forum Dukungan GATK dan repositori GitHub Broad Institute untuk mengetahui informasi selengkapnya.
Pemecahan masalah
Pipeline dikonfigurasi untuk menggunakan instance Compute Engine di region dan zona tertentu. Saat Anda menjalankan gcloud CLI, CLI akan otomatis menggunakan region dan zona default berdasarkan lokasi tempat project Google Cloud Anda dibuat. Hal ini dapat menyebabkan pesan error berikut saat menjalankan pipeline:
"ERROR: (gcloud.beta.lifesciences.pipelines.run) INVALID_ARGUMENT: Error: validating pipeline: zones and regions cannot be specified together"
Untuk mengatasi masalah ini, hapus region dan zona default dengan menjalankan perintah berikut, lalu jalankan pipeline lagi:
gcloud config unset compute/zone gcloud config unset compute/region
Untuk informasi tambahan tentang cara menetapkan region dan zona default untuk project Google Cloud Anda, lihat Mengubah zona atau region default.
Jika Anda mengalami masalah saat menjalankan pipeline, lihat pemecahan masalah Cloud Life Sciences API.
GATK memiliki ekspektasi yang ketat tentang format file input. Untuk menghindari masalah, Anda dapat memvalidasi bahwa file Anda lulus ValidateSamFile.
Jika GATK gagal dijalankan, Anda dapat memeriksa log dengan menjalankan perintah berikut:
gcloud storage ls gs://BUCKET/FOLDER/logging
Jika Anda mengalami error izin, pastikan akun layanan Anda memiliki akses baca ke file input dan akses tulis ke jalur bucket output. Jika Anda menulis file output ke bucket di project Google Cloud yang bukan milik Anda, Anda harus memberikan izin akun layanan untuk mengakses bucket tersebut.
Pembersihan
Menghapus file perantara di bucket Cloud Storage
Saat Anda menjalankan pipeline, pipeline akan menyimpan file perantara di
gs://BUCKET/FOLDER/work
. Anda dapat menghapus file setelah alur kerja selesai untuk mengurangi biaya Cloud Storage.
Untuk melihat jumlah ruang yang digunakan di direktori work
, jalankan perintah
berikut. Perintah mungkin memerlukan waktu beberapa menit untuk dijalankan karena ukuran
file dalam direktori.
gcloud storage du gs://BUCKET/FOLDER/work --readable-sizes --summarize
Untuk menghapus file perantara di direktori work
, jalankan perintah berikut:
gcloud storage rm gs://BUCKET/FOLDER/work/**
Menghapus project
Cara termudah untuk menghilangkan penagihan adalah dengan menghapus project yang Anda gunakan untuk tutorial.
Untuk menghapus project:
- Di konsol Google Cloud, buka halaman Project.
- Dalam daftar project, pilih project yang ingin Anda hapus, lalu klik Hapus project.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
Langkah selanjutnya
- Situs dan forum Broad Institute GATK memberikan informasi latar belakang, dokumentasi, dan dukungan lainnya untuk alat GATK dan WDL.