Jalankan Sentieon® DNASeq®

Halaman ini menjelaskan cara menjalankan Sentieon® DNASeq® sebagai pipeline Google Cloud untuk analisis genom sekunder. Pipeline ini cocok dengan hasil berikut dari Praktik Terbaik Genome Analysis Toolkit (GATK) versi 3.7:

  • Perataan
  • Pengurutan
  • Penghapusan duplikat
  • Kalibrasi ulang skor kualitas dasar (BQSR)
  • Panggilan varian

Format input meliputi:

  • file fastq
  • File BAM yang diselaraskan dan diurutkan

Tujuan

Setelah menyelesaikan tutorial ini, Anda akan mengetahui cara:

  • Menjalankan pipeline di Google Cloud menggunakan Sentieon® DNASeq®
  • Menulis file konfigurasi untuk berbagai kasus penggunaan Sentieon® DNASeq®

Biaya

Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:

  • Compute Engine
  • Cloud Storage

Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda, gunakan kalkulator harga. Pengguna baru Google Cloud mungkin memenuhi syarat untuk mendapatkan uji coba gratis.

Sebelum memulai

  1. Instal Python 2.7+. Untuk mengetahui informasi selengkapnya tentang penyiapan lingkungan pengembangan Python, seperti menginstal pip di sistem Anda, lihat Panduan Penyiapan Lingkungan Pengembangan Python.
  2. Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
  3. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  4. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

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

    Enable the APIs

  6. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  7. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

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

    Enable the APIs

  9. Menginstal Google Cloud CLI.
  10. Untuk initialize gcloud CLI, jalankan perintah berikut:

    gcloud init
  11. Update dan instal komponen gcloud:
    gcloud components update
    gcloud components install beta
  12. Instal git untuk mendownload file yang diperlukan.

    Download git

  13. Secara default, Compute Engine menerapkan kuota resource untuk mencegah penggunaan yang tidak disengaja. Dengan meningkatkan kuota, Anda dapat meluncurkan lebih banyak virtual machine secara bersamaan, sehingga meningkatkan throughput dan mengurangi waktu penyelesaian.

    Untuk mendapatkan hasil terbaik dalam tutorial ini, Anda harus meminta kuota tambahan di atas kuota default project Anda. Rekomendasi untuk penambahan kuota tercantum dalam daftar berikut ini beserta kuota minimum yang diperlukan untuk menjalankan tutorial. Buat permintaan kuota Anda di region us-central1:

    • CPU: 64
    • Standar Persistent Disk (GB): 375

    Anda dapat mengosongkan kolom permintaan kuota lainnya untuk mempertahankan kuota saat ini.

Lisensi evaluasi Sentieon®

Saat menggunakan pipeline ini, Sentieon® otomatis memberi Anda lisensi evaluasi gratis selama dua minggu untuk software-nya agar dapat digunakan dengan Google Cloud. Untuk menerima lisensi, masukkan alamat email Anda di kolom EMAIL saat mengonfigurasi pipeline. Lihat Memahami format input untuk mengetahui informasi tentang setelan kolom ini.

Untuk terus menggunakan Sentieon® setelah masa berlaku lisensi evaluasi berakhir, hubungi support@sentieon.com.

Menyiapkan lingkungan lokal dan menginstal prasyarat

  1. Jika tidak memiliki virtualenv, jalankan perintah berikut untuk menginstalnya menggunakan pip:

    pip install virtualenv
    
  2. Jalankan perintah berikut untuk membuat lingkungan Python yang terisolasi dan menginstal dependensi:

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

Mendownload skrip pipeline

Jalankan perintah berikut untuk mendownload file contoh dan menetapkan direktori Anda saat ini:

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

Memahami format input

Pipeline menggunakan parameter yang ditentukan dalam file JSON sebagai inputnya.

Di repositori yang Anda download, ada file examples/example.json dengan konten berikut:

{
  "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"
}

Tabel berikut menjelaskan kunci JSON dalam file:

Kunci JSON Deskripsi
FQ1 Pasangan pembacaan pertama dalam file fastq input.
FQ2 Pasangan pembacaan kedua dalam file fastq input.
BAM File BAM input, jika ada.
REF Genom referensi. Jika disetel, file indeks fastq/BAM diasumsikan ada.
OUTPUT_BUCKET Bucket dan direktori yang digunakan untuk menyimpan output data dari pipeline.
ZONES Daftar zona Google Cloud yang dipisahkan koma yang akan digunakan untuk node pekerja.
PROJECT_ID ID Project Google Cloud Anda.
REQUESTER_PROJECT Project yang akan ditagih saat mentransfer data dari bucket Requester Pays.
EMAIL Alamat email Anda.

Menjalankan pipeline

  1. Dalam direktori sentieon-google-genomics, edit file examples/example.json, dengan mengganti variabel BUCKET, REQUESTER_PROJECT, EMAIL, dan PROJECT_ID dengan resource yang relevan dari project Google Cloud Anda:

    {
      "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. Tetapkan variabel PROJECT_ID di lingkungan Anda:

    export PROJECT_ID=PROJECT_ID
    

  3. Jalankan perintah berikut untuk menjalankan pipeline DNASeq® pada set data pengujian kecil yang diidentifikasi oleh input dalam file konfigurasi. Secara default, skrip memverifikasi bahwa file input ada di bucket Cloud Storage Anda sebelum memulai pipeline.

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

Jika Anda menentukan beberapa percobaan yang dapat dihentikan, pipeline akan dimulai ulang setiap kali instance-nya di-preempt. Setelah selesai, pipeline akan memberikan output pesan ke konsol yang menyatakan apakah pipeline berhasil atau gagal.

Untuk sebagian besar situasi, Anda dapat mengoptimalkan waktu dan biaya penyelesaian menggunakan konfigurasi berikut. Konfigurasi ini menjalankan genom manusia 30x dengan biaya sekitar $1,25 dan membutuhkan waktu sekitar 2 jam. Biaya seluruh exome manusia sekitar $0,35 dan memakan waktu sekitar 45 menit. Kedua estimasi ini didasarkan pada instance pipeline yang tidak di-preempt.

{
  "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"
}

Opsi tambahan

Anda dapat menyesuaikan pipeline menggunakan opsi tambahan berikut.

Opsi file input

Pipeline mendukung beberapa file fastq yang dipisahkan koma sebagai input, seperti yang ditunjukkan konfigurasi berikut:

"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",

Pipeline menerima file BAM yang dipisahkan koma sebagai input menggunakan kunci JSON BAM. Pembacaan dalam file BAM tidak selaras dengan genom referensi. Sebagai gantinya, peristiwa tersebut akan dimulai pada tahap penghapusan duplikat data dalam pipeline. Contoh berikut menunjukkan konfigurasi menggunakan dua file BAM sebagai input:

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

Konfigurasi data all-exome atau set data besar

Setelan dalam konfigurasi yang direkomendasikan dioptimalkan untuk sampel seluruh genom manusia yang diurutkan ke cakupan rata-rata 30x. Untuk file yang jauh lebih kecil atau lebih besar dari set data genom utuh standar, Anda dapat menambah atau mengurangi resource yang tersedia untuk instance. Untuk mendapatkan hasil terbaik dengan set data besar, gunakan setelan berikut:

{
  "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"
}

Tabel berikut memberikan deskripsi setelan yang digunakan:

Kunci JSON Deskripsi
DISK_SIZE Ruang SSD yang tersedia untuk node pekerja.
MACHINE_TYPE Jenis virtual machine Compute Engine yang akan digunakan. Nilai defaultnya adalah n1-standard-1.
CPU_PLATFORM Platform CPU yang akan diminta. Harus berupa nama platform CPU Compute Engine yang valid (seperti "Intel Skylake").

Preemptible instance

Anda dapat menggunakan instance yang dapat dihentikan di pipeline Anda dengan menetapkan kunci JSON PREEMPTIBLE_TRIES.

Secara default, runner akan mencoba menjalankan pipeline dengan instance standar jika percobaan yang dapat dihentikan habis atau jika kunci JSON NONPREEMPTIBLE_TRY ditetapkan ke 0. Anda dapat menonaktifkan perilaku ini dengan menyetel kunci NONPREEMPTIBLE_TRY ke false, seperti yang ditunjukkan dalam konfigurasi berikut:

"PREEMPTIBLE_TRIES": 2,
"NONPREEMPTIBLE_TRY": false

Tabel berikut memberikan deskripsi setelan yang digunakan:

Kunci JSON Deskripsi
PREEMPTIBLE_TRIES Frekuensi untuk mencoba pipeline saat menggunakan preemptible instance.
NONPREEMPTIBLE_TRY Menentukan apakah akan mencoba menjalankan pipeline dengan instance standar setelah percobaan yang dapat dihentikan habis.

Membaca grup

Grup baca ditambahkan saat file fastq diselaraskan dengan genom referensi menggunakan Sentieon® BWA. Anda dapat menyediakan beberapa grup baca yang dipisahkan koma. Jumlah grup baca harus sesuai dengan jumlah file fastq input. Grup baca default-nya adalah @RG\\tID:read-group\\tSM:sample-name\\tPL:ILLUMINA. Untuk mengubah grup baca, tetapkan kunci READGROUP dalam file input JSON, seperti yang ditunjukkan dalam konfigurasi berikut:

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

Tabel berikut memberikan deskripsi setelan yang digunakan:

Kunci JSON Deskripsi
READGROUP Grup baca yang berisi contoh metadata.

Untuk mengetahui informasi selengkapnya tentang grup baca, lihat Membaca grup.

Streaming input dari Cloud Storage

Anda dapat melakukan streaming file fastq input dari Cloud Storage yang dapat mengurangi total runtime pipeline. Untuk melakukan streaming file fastq input dari Cloud Storage, tetapkan kunci JSON STREAM_INPUT ke True:

"STREAM_INPUT": "True"

Tabel berikut memberikan deskripsi setelan yang digunakan:

Kunci JSON Deskripsi
STREAM_INPUT Menentukan apakah akan melakukan streaming file fastq input langsung dari Cloud Storage.

Penandaan duplikat

Secara default, pipeline menghapus pembacaan duplikat dari file BAM. Anda dapat mengubah perilaku ini dengan menetapkan kunci JSON DEDUP, seperti yang ditunjukkan dalam konfigurasi berikut:

"DEDUP": "markdup"

Tabel berikut memberikan deskripsi setelan yang digunakan:

Kunci JSON Deskripsi
DEDUP Perilaku penandaan duplikat.
Nilai yang valid:
  • Konfigurasi default menghapus pembacaan yang ditandai sebagai duplikat.
  • markdup menandai duplikat, tetapi tidak menghapusnya.
  • nodup tidak akan menandai duplikat.

Kalibrasi ulang skor kualitas dasar (BQSR) dan situs yang diketahui

BSQR memerlukan situs variasi genetik yang diketahui. Perilaku default-nya adalah melewati tahap pipeline ini. Namun, Anda dapat mengaktifkan BSQR dengan menyediakan kunci JSON BQSR_SITES untuk situs dikenal. Jika disediakan, file DBSNP dapat digunakan untuk menganotasi varian output selama panggilan varian.

"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"

Tabel berikut memberikan deskripsi setelan yang digunakan:

Kunci JSON Deskripsi
BSQR_SITES Mengaktifkan BSQR dan menggunakan daftar file yang disediakan, yang dipisahkan koma, sebagai situs yang dikenal.
DBSNP File dbTPM yang digunakan selama panggilan varian.

Interval

Untuk beberapa aplikasi, seperti pengurutan yang ditargetkan atau seluruh eksom, Anda mungkin hanya tertarik pada sebagian genom. Dalam kasus tersebut, menyediakan file interval target dapat mempercepat pemrosesan dan mengurangi panggilan varian di luar target berkualitas rendah. Anda dapat menggunakan interval dengan kunci JSON INTERVAL_FILE dan INTERVAL.

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

Tabel berikut memberikan deskripsi setelan yang digunakan:

Kunci JSON Deskripsi
INTERVAL_FILE File yang berisi interval genom yang akan diproses.
INTERVAL String yang berisi interval genomik yang akan diproses.

Opsi output

Secara default, pipeline menghasilkan BAM, metrik kontrol kualitas, dan panggilan varian yang telah diproses sebelumnya. Anda dapat menonaktifkan setiap output ini menggunakan kunci JSON NO_BAM_OUTPUT, NO_METRICS, dan NO_HAPLOTYPER. Jika argumen NO_HAPLOTYPER tidak diberikan atau NULL, Anda dapat menggunakan kunci JSON GVCF_OUTPUT untuk menghasilkan panggilan varian dalam format gVCF, bukan format VCF.

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

Tabel berikut memberikan deskripsi setelan yang digunakan:

Kunci JSON Deskripsi
NO_BAM_OUTPUT Menentukan apakah akan menghasilkan file BAM yang telah diproses sebelumnya atau tidak.
NO_METRICS Menentukan apakah akan menghasilkan metrik file.
NO_HAPLOTYPER Menentukan apakah akan menghasilkan panggilan varian.
GVCF_OUTPUT Menentukan apakah akan menghasilkan panggilan varian dalam format gVCF.

Versi Sentieon® DNASeq®

Anda dapat menggunakan versi terbaru paket software Sentieon® DNASeq® dengan Cloud Life Sciences API dengan menentukan kunci JSON SENTIEON_VERSION, seperti berikut:

"SENTIEON_VERSION": "201808.08"

Versi berikut valid:

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

Pembersihan

Setelah menyelesaikan tutorial, Anda dapat membersihkan resource yang dibuat di Google Cloud sehingga tidak akan ditagih pada masa mendatang. Bagian berikut menjelaskan cara menghapus atau menonaktifkan resource ini.

Menghapus project

Cara termudah untuk menghapus penagihan adalah dengan menghapus project yang Anda gunakan untuk tutorial.

Untuk menghapus project:

  1. Di konsol Google Cloud, buka halaman Project.

    Buka halaman Projects

  2. Dalam daftar project, pilih project yang ingin Anda hapus, lalu klik Delete project. Setelah memilih kotak centang di samping nama project, klik Delete project
  3. Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.

Langkah selanjutnya