Menjalankan Sentieon® DNASeq®

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

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

Format input mencakup hal berikut:

  • File fastq
  • File BAM yang disejajarkan 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 DNASeq® Sentieon®

Biaya

Dalam dokumen ini, Anda akan menggunakan komponen Google Cloudyang dapat ditagih berikut:

  • Compute Engine
  • Cloud Storage

Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda, gunakan kalkulator harga.

Pengguna Google Cloud baru mungkin memenuhi syarat untuk mendapatkan uji coba gratis.

Sebelum memulai

  1. Instal Python 2.7+. Untuk mengetahui informasi selengkapnya tentang cara menyiapkan lingkungan pengembangan Python, seperti menginstal pip di sistem Anda, 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. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  11. To initialize the gcloud CLI, run the following command:

    gcloud init
  12. After initializing the gcloud CLI, update it and install the required components:

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

    Download git

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

    Untuk mendapatkan hasil terbaik dalam tutorial ini, Anda harus meminta kuota tambahan di atas default project Anda. 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 Standard (GB): 375

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

  15. Lisensi evaluasi Sentieon®

    Saat menggunakan pipeline ini, Sentieon® secara 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 cara menyetel 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.

    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 bacaan pertama dalam file fastq input.
    FQ2 Pasangan bacaan 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 untuk digunakan pada 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. Di 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 preemptible, pipeline akan dimulai ulang setiap kali instance-nya di-preempt. Setelah pipeline 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. Seluruh ekson manusia berbiaya sekitar $0,35 dan memerlukan waktu sekitar 45 menit. Kedua perkiraan 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 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, mereka memulai di tahap penghapusan duplikat data dalam 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 seluruh genom manusia yang diurutkan hingga cakupan rata-rata 30x. Untuk file yang jauh lebih kecil atau lebih besar daripada set data genom utuh standar, Anda dapat menambah atau mengurangi 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 worker node.
    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 menyetel kunci JSON PREEMPTIBLE_TRIES.

    Secara default, pelari mencoba menjalankan pipeline dengan instance standar jika percobaan preemptible 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 Jumlah percobaan pipeline saat menggunakan instance yang dapat di-preempt.
    NONPREEMPTIBLE_TRY Menentukan apakah akan mencoba menjalankan pipeline dengan instance standar setelah percobaan instance yang dapat di-preempt habis.

    Membaca grup

    Grup baca ditambahkan saat file fastq disejajarkan dengan genom referensi menggunakan Sentieon® BWA. Anda dapat memberikan beberapa grup baca yang dipisahkan koma. Jumlah grup baca harus sesuai dengan jumlah file fastq input. Grup baca default 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 mengetahui informasi selengkapnya tentang grup baca, lihat Grup baca.

    Input streaming dari Cloud Storage

    Anda dapat melakukan streaming file input fastq dari Cloud Storage yang dapat mengurangi total runtime pipeline. Untuk melakukan streaming file fastq input dari Cloud Storage, setel 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 input fastq 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 bacaan yang ditandai sebagai duplikat.
    • markdup menandai duplikat, tetapi tidak menghapusnya.
    • nodup melewati penandaan duplikat.

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

    BSQR memerlukan situs variasi genetik yang diketahui. Perilaku defaultnya adalah melewati tahap pipeline ini. Namun, Anda dapat mengaktifkan BSQR dengan memberikan kunci JSON BQSR_SITES untuk situs yang diketahui. 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 tepercaya.
    DBSNP File dbSNP yang digunakan selama panggilan varian.

    Interval

    Untuk beberapa aplikasi, seperti penargetan atau pengurutan seluruh ekson, 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 genomik untuk diproses.
    INTERVAL String yang berisi interval genomik yang akan diproses.

    Opsi output

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

    Versi Sentieon® DNASeq®

    Anda dapat menggunakan paket software DNASeq® Sentieon® 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 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 berikutnya