Menjalankan 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 Toolkit Analisis Genomik (GATK) versi 3.7:

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

Format input mencakup hal berikut:

  • file fastq
  • File BAM yang disejajarkan dan diurutkan

Tujuan

Setelah menyelesaikan tutorial ini, Anda akan tahu cara:

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

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. Pengguna baru Google Cloud mungkin memenuhi syarat untuk mendapatkan uji coba gratis.

Sebelum memulai

  1. Instal Python 2.7+. Untuk informasi selengkapnya tentang cara menyiapkan lingkungan pengembangan Python, seperti menginstal pip di sistem, lihat Panduan Penyiapan Lingkungan Pengembangan Python.
  2. 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.
  3. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  4. Make sure that billing is enabled for your Google Cloud project.

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

    Enable the APIs

  6. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  7. Make sure that billing is enabled for your Google Cloud project.

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

    Enable the APIs

  9. Install the Google Cloud CLI.
  10. To initialize the gcloud CLI, run the following command:

    gcloud init
  11. Update and install gcloud components:

    gcloud components update
    gcloud components install beta
  12. Instal git untuk mendownload file yang diperlukan.

    Download git

  13. 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, sehingga 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 bersama dengan kuota minimum yang diperlukan untuk menjalankan tutorial. Buat permintaan kuota Anda di region us-central1:

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

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

Lisensi evaluasi Sentieon®

Saat menggunakan pipeline ini, Sentieon® akan otomatis memberi Anda lisensi evaluasi dua minggu gratis untuk software-nya guna 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 cara menetapkan kolom ini.

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

Menyiapkan lingkungan lokal dan menginstal prasyarat

  1. Jika Anda 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.

Dalam repositori yang Anda download, terdapat 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 ditetapkan, 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 Pemohon Membayar.
EMAIL Alamat email Anda.

Menjalankan pipeline

  1. Di direktori sentieon-google-genomics, edit file examples/example.json, ganti 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 akan 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 preemptible, pipeline akan dimulai ulang setiap kali instance-nya di-preempt. Setelah selesai, pipeline akan menampilkan pesan ke konsol yang menyatakan apakah pipeline berhasil atau gagal.

Untuk sebagian besar situasi, Anda dapat mengoptimalkan waktu penyelesaian dan biaya menggunakan konfigurasi berikut. Konfigurasi ini menjalankan genom manusia 30x dengan biaya sekitar $1,25 dan memerlukan waktu sekitar 2 jam. Exome utuh manusia berkisaran biaya sekitar $0,35 dan memerlukan waktu sekitar 45 menit. Kedua estimasi ini didasarkan pada instance pipeline yang tidak didahului.

{
  "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 ini mendukung beberapa file fastq yang dipisahkan koma sebagai input, seperti yang ditunjukkan oleh 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 disejajarkan dengan genom referensi. Sebagai gantinya, proses ini dimulai pada tahap penghapusan duplikat data di pipeline. Contoh berikut menunjukkan konfigurasi yang menggunakan dua file BAM sebagai input:

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

Konfigurasi data whole-exome atau set data besar

Setelan dalam konfigurasi yang direkomendasikan dioptimalkan untuk sampel genom utuh manusia yang diurutkan dengan cakupan rata-rata 30x. Untuk file yang jauh lebih kecil atau lebih besar dari set data genom lengkap standar, Anda dapat meningkatkan atau menurunkan resource yang tersedia untuk instance. Untuk 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 preemptible di pipeline dengan menetapkan kunci JSON PREEMPTIBLE_TRIES.

Secara default, runner mencoba menjalankan pipeline dengan instance standar jika upaya preemptible habis atau jika kunci JSON NONPREEMPTIBLE_TRY ditetapkan ke 0. Anda dapat menonaktifkan perilaku ini dengan menetapkan 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 percobaan pipeline saat menggunakan instance yang dapat di-preempt.
NONPREEMPTIBLE_TRY Menentukan apakah akan mencoba menjalankan pipeline dengan instance standar setelah upaya preemptible habis.

Grup yang diambil datanya

Grup baca ditambahkan saat file fastq disejajarkan dengan genom referensi menggunakan Sentieon® BWA. Anda dapat menyediakan beberapa grup baca yang dipisahkan koma. Jumlah grup baca harus cocok 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 metadata sampel.

Untuk informasi selengkapnya tentang grup baca, lihat Grup baca.

Input streaming 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 pemberian tanda duplikat.
Nilai yang valid:
  • Konfigurasi default menghapus pembacaan yang ditandai sebagai duplikat.
  • markdup menandai duplikat, tetapi tidak menghapusnya.
  • nodup melewati pemberian tanda 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 memberikan kunci JSON BQSR_SITES ke situs yang diketahui. Jika disediakan, file DBSNP dapat digunakan untuk menganotasi varian output selama pemanggilan 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 diketahui.
DBSNP File dbSNP yang digunakan selama panggilan varian.

Interval

Untuk beberapa aplikasi, seperti penentuan urutan eksom keseluruhan atau yang ditargetkan, Anda mungkin hanya tertarik pada sebagian genom. Dalam kasus tersebut, menyediakan file interval target dapat mempercepat pemrosesan dan mengurangi panggilan varian off-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 untuk diproses.
INTERVAL String yang berisi interval genom yang akan diproses.

Opsi output

Secara default, pipeline menghasilkan BAM yang telah diproses sebelumnya, metrik kontrol kualitas, dan panggilan varian. Anda dapat menonaktifkan 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.
NO_METRICS Menentukan apakah akan menampilkan metrik file.
NO_HAPLOTYPER Menentukan apakah akan menampilkan panggilan varian.
GVCF_OUTPUT Menentukan apakah akan menampilkan panggilan varian dalam format gVCF.

Versi Sentieon® DNASeq®

Anda dapat menggunakan paket software Sentieon® DNASeq® versi terbaru 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 Anda tidak akan ditagih untuk resource tersebut di masa mendatang. Bagian berikut menjelaskan cara menghapus atau menonaktifkan resource ini.

Menghapus project

Cara termudah untuk menghilangkan 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 Hapus project. Setelah memilih kotak centang di samping nama project, klik
      Hapus project
  3. Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.

Langkah selanjutnya