Esegui Sentieon® DNASeq®

Questa pagina spiega come eseguire Sentieon® DNASeq® come pipelineGoogle Cloud per l'analisi genomica secondaria. La pipeline corrisponde ai seguenti risultati della versione 3.7 delle best practice del Genome Analysis Toolkit (GATK):

  • Allineamento
  • Ordinamento
  • Rimozione duplicati
  • Ricalibrazione del punteggio di qualità di base (BQSR)
  • Chiamata delle varianti

I formati di input includono:

  • file fastq
  • File BAM allineati e ordinati

Obiettivi

Dopo aver completato questo tutorial, saprai come:

  • Esegui una pipeline su Google Cloud utilizzando Sentieon® DNASeq®
  • Scrivi file di configurazione per diversi casi d'uso di Sentieon® DNASeq®

Costi

In questo documento, utilizzi i seguenti componenti fatturabili di Google Cloud:

  • Compute Engine
  • Cloud Storage

Per generare una stima dei costi in base all'utilizzo previsto, utilizza il calcolatore prezzi.

I nuovi Google Cloud utenti potrebbero avere diritto a una prova gratuita.

Prima di iniziare

  1. Installa Python 2.7 o versioni successive. Per ulteriori informazioni sulla configurazione dell'ambiente di sviluppo Python, ad esempio l'installazione di pip sul sistema, consulta la Guida alla configurazione dell'ambiente di sviluppo 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. Installa git per scaricare i file necessari.

    Scarica git

  14. Per impostazione predefinita, Compute Engine dispone di quote delle risorse per evitare utilizzi involontari. Aumentando le quote, puoi avviare più macchine virtuali contemporaneamente, aumentando il throughput e riducendo il tempo di risposta.

    Per ottenere risultati ottimali in questo tutorial, devi richiedere una quota aggiuntiva rispetto a quella predefinita del tuo progetto. I consigli per gli aumenti di quota sono forniti nell'elenco seguente insieme alle quote minime necessarie per eseguire il tutorial. Invia le richieste di quota nella regione us-central1:

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

    Puoi lasciare vuoti gli altri campi della richiesta di quota per mantenere le quote attuali.

  15. Licenza di valutazione Sentieon®

    Quando utilizzi questa pipeline, Sentieon® ti concede automaticamente una licenza di valutazione gratuita di due settimane del suo software da utilizzare con Google Cloud. Per ricevere la licenza, inserisci il tuo indirizzo email nel campo EMAIL durante la configurazione della pipeline. Per informazioni sull'impostazione di questo campo, consulta la sezione Informazioni sul formato di input.

    Per continuare a utilizzare Sentieon® dopo la scadenza della licenza di valutazione, contatta support@sentieon.com.

    Configura l'ambiente locale e installa i prerequisiti

    1. Se non hai virtualenv, esegui il seguente comando per installarlo utilizzando pip:

      pip install virtualenv
    2. Esegui questo comando per creare un ambiente Python isolato e installare le dipendenze:

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

    Scarica lo script della pipeline

    Esegui questo comando per scaricare i file di esempio e impostare la directory corrente:

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

    Comprendere il formato di input

    La pipeline utilizza come input i parametri specificati in un file JSON.

    Nel repository che hai scaricato, c'è un file examples/example.json con i seguenti contenuti:

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

    La tabella seguente descrive le chiavi JSON nel file:

    Chiave JSON Descrizione
    FQ1 La prima coppia di letture nel file fastq di input.
    FQ2 La seconda coppia di letture nel file fastq di input.
    BAM Il file BAM di input, se applicabile.
    REF Il genoma di riferimento. Se impostati, si presume che i file di indice fastq/BAM esistano.
    OUTPUT_BUCKET Il bucket e la directory utilizzati per archiviare i dati di output della pipeline.
    ZONES Un elenco separato da virgole di Google Cloud zone da utilizzare per il nodo di lavoro.
    PROJECT_ID L'ID del tuo progetto Google Cloud .
    REQUESTER_PROJECT Un progetto da fatturare durante il trasferimento dei dati dai bucket con pagamenti a carico del richiedente.
    EMAIL Il tuo indirizzo email.

    esegui la pipeline.

    1. Nella directory sentieon-google-genomics, modifica il file examples/example.json sostituendo le variabili BUCKET, REQUESTER_PROJECT, EMAIL e PROJECT_ID con le risorse pertinenti del tuo progetto Google Cloud :

      {
        "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. Imposta la variabile PROJECT_ID nel tuo ambiente:

      export PROJECT_ID=PROJECT_ID

    3. Esegui questo comando per eseguire la pipeline DNASeq® su un piccolo set di dati di test identificato dagli input nel file di configurazione. Per impostazione predefinita, lo script verifica che i file di input esistano nel bucket Cloud Storage prima di avviare la pipeline.

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

    Se hai specificato più tentativi di preemptive, la pipeline viene riavviata ogni volta che le sue istanze vengono interrotte. Al termine della pipeline, viene visualizzato un messaggio nella console che indica se la pipeline è riuscita o meno.

    Nella maggior parte dei casi, puoi ottimizzare i tempi di elaborazione e i costi utilizzando la seguente configurazione. La configurazione esegue un genoma umano 30x a un costo di circa 1,25 $e richiede circa 2 ore. L'esoma intero umano costa circa 0,35 $e richiede circa 45 minuti. Entrambe queste stime si basano sul presupposto che le istanze della pipeline non vengano interrotte.

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

    Opzioni aggiuntive

    Puoi personalizzare una pipeline utilizzando le seguenti opzioni aggiuntive.

    Opzioni file di input

    La pipeline supporta più file fastq separati da virgole come input, come mostra la seguente configurazione:

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

    La pipeline accetta file BAM separati da virgole come input utilizzando la chiave JSON BAM. Le letture nei file BAM non sono allineate al genoma di riferimento. Iniziano invece dalla fase di deduplicazione dei dati della pipeline. Il seguente esempio mostra una configurazione che utilizza due file BAM come input:

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

    Configurazione di dati dell'intero esoma o di set di dati di grandi dimensioni

    Le impostazioni nella configurazione consigliata sono ottimizzate per campioni di genoma umano intero sequenziati con una copertura media di 30x. Per i file molto più piccoli o più grandi dei set di dati standard dell'intero genoma, puoi aumentare o diminuire le risorse disponibili per l'istanza. Per ottenere risultati ottimali con set di dati di grandi dimensioni, utilizza le seguenti impostazioni:

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

    La seguente tabella fornisce una descrizione delle impostazioni utilizzate:

    Chiave JSON Descrizione
    DISK_SIZE Spazio SSD disponibile per il nodo worker.
    MACHINE_TYPE Il tipo di macchina virtuale Compute Engine da utilizzare. Il valore predefinito è n1-standard-1.
    CPU_PLATFORM La piattaforma CPU da richiedere. Deve essere un nome di piattaforma CPU Compute Engine valido (ad esempio "Intel Skylake").

    Istanze preemptible

    Puoi utilizzare le istanze preemptive nella pipeline impostando la chiave JSON PREEMPTIBLE_TRIES.

    Per impostazione predefinita, il runner tenta di eseguire la pipeline con un'istanza standard se i tentativi preemptible sono esauriti o se la chiave JSON NONPREEMPTIBLE_TRY è impostata su 0. Puoi disattivare questo comportamento impostando la chiave NONPREEMPTIBLE_TRY su false, come mostrato nella seguente configurazione:

    "PREEMPTIBLE_TRIES": 2,
    "NONPREEMPTIBLE_TRY": false
    

    La seguente tabella fornisce una descrizione delle impostazioni utilizzate:

    Chiave JSON Descrizione
    PREEMPTIBLE_TRIES Il numero di tentativi di esecuzione della pipeline quando utilizzi istanze preemptive.
    NONPREEMPTIBLE_TRY Determina se tentare di eseguire la pipeline con un'istanza standard dopo che i tentativi preemptible sono esauriti.

    Lettura gruppi

    I gruppi di lettura vengono aggiunti quando i file fastq vengono allineati a un genoma di riferimento utilizzando Sentieon® BWA. Puoi fornire più gruppi di lettura separati da virgole. Il numero di gruppi di lettura deve corrispondere al numero di file fastq di input. Il gruppo di lettura predefinito è @RG\\tID:read-group\\tSM:sample-name\\tPL:ILLUMINA. Per modificare il gruppo di lettura, imposta la chiave READGROUP nel file JSON di input, come mostrato nella seguente configurazione:

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

    La seguente tabella fornisce una descrizione dell'impostazione utilizzata:

    Chiave JSON Descrizione
    READGROUP Un gruppo di lettura contenente metadati di esempio.

    Per ulteriori informazioni sui gruppi di lettura, vedi Gruppi di lettura.

    Input di streaming da Cloud Storage

    Puoi trasmettere in streaming i file fastq di input da Cloud Storage, il che può ridurre il runtime totale della pipeline. Per trasmettere in streaming i file fastq di input da Cloud Storage, imposta la chiave JSON STREAM_INPUT su True:

    "STREAM_INPUT": "True"
    

    La seguente tabella fornisce una descrizione dell'impostazione utilizzata:

    Chiave JSON Descrizione
    STREAM_INPUT Determina se eseguire lo streaming dei file fastq di input direttamente da Cloud Storage.

    Contrassegno duplicato

    Per impostazione predefinita, la pipeline rimuove le letture duplicate dai file BAM. Puoi modificare questo comportamento impostando la chiave JSON DEDUP, come mostrato nella seguente configurazione:

    "DEDUP": "markdup"
    

    La seguente tabella fornisce una descrizione dell'impostazione utilizzata:

    Chiave JSON Descrizione
    DEDUP Comportamento di marcatura dei duplicati.
    Valori validi:
    • La configurazione predefinita rimuove le letture contrassegnate come duplicate.
    • markdup contrassegna i duplicati, ma non li rimuove.
    • nodup salta il contrassegno come duplicato.

    Ricalibrazione del punteggio di qualità di base (BQSR) e siti noti

    BSQR richiede siti noti di variazione genetica. Il comportamento predefinito prevede di saltare questa fase della pipeline. Tuttavia, puoi attivare BSQR fornendo siti noti con la chiave JSON BQSR_SITES. Se fornito, un file DBSNP può essere utilizzato per annotare le varianti di output durante la chiamata delle varianti.

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

    La seguente tabella fornisce una descrizione delle impostazioni utilizzate:

    Chiave JSON Descrizione
    BSQR_SITES Attiva BSQR e utilizza un elenco separato da virgole dei file forniti come siti noti.
    DBSNP Un file dbSNP utilizzato durante l'identificazione delle varianti.

    Intervalli

    Per alcune applicazioni, come il sequenziamento mirato o dell'intero esoma, potresti essere interessato solo a una parte del genoma. In questi casi, fornire un file di intervalli target può accelerare l'elaborazione e ridurre le chiamate di varianti off-target di bassa qualità. Puoi utilizzare gli intervalli con le chiavi JSON INTERVAL_FILE e INTERVAL.

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

    La seguente tabella fornisce una descrizione delle impostazioni utilizzate:

    Chiave JSON Descrizione
    INTERVAL_FILE Un file contenente gli intervalli genomici da elaborare.
    INTERVAL Una stringa contenente un intervallo genomico da elaborare.

    Opzioni di output

    Per impostazione predefinita, la pipeline produce un file BAM pre-elaborato, metriche di controllo qualità e chiamate di varianti. Puoi disattivare uno qualsiasi di questi output utilizzando le chiavi JSON NO_BAM_OUTPUT, NO_METRICS e NO_HAPLOTYPER. Se l'argomento NO_HAPLOTYPER non viene fornito o NULL, puoi utilizzare la chiave JSON GVCF_OUTPUT per produrre chiamate di varianti in formato gVCF anziché VCF.

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

    La seguente tabella fornisce una descrizione delle impostazioni utilizzate:

    Chiave JSON Descrizione
    NO_BAM_OUTPUT Determina se generare un file BAM preelaborato.
    NO_METRICS Determina se generare metriche dei file di output.
    NO_HAPLOTYPER Determina se generare chiamate di varianti.
    GVCF_OUTPUT Determina se generare chiamate di varianti in formato gVCF.

    Versioni di Sentieon® DNASeq®

    Puoi utilizzare qualsiasi versione recente del pacchetto software Sentieon® DNASeq® con l'API Cloud Life Sciences specificando la chiave JSON SENTIEON_VERSION, come segue:

    "SENTIEON_VERSION": "201808.08"
    

    Sono valide le seguenti versioni:

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

    Esegui la pulizia

    Al termine del tutorial, puoi eliminare le risorse che hai creato su Google Cloud in modo che non ti vengano addebitate in futuro. Le seguenti sezioni descrivono come eliminare o disattivare queste risorse.

    Elimina il progetto

    Il modo più semplice per eliminare la fatturazione è quello di eliminare il progetto utilizzato per il tutorial.

    Per eliminare il progetto:

    1. Nella console Google Cloud , vai alla pagina Progetti.

      Vai alla pagina Progetti

    2. Nell'elenco dei progetti, selezionare quello da eliminare e fai clic su Elimina progetto. Dopo aver selezionato la casella di controllo accanto al nome del progetto, fai clic su
      Elimina progetto.
    3. Nella finestra di dialogo, digita l'ID del progetto e fai clic su Chiudi per eliminare il progetto.

    Passaggi successivi

    • Se hai domande sulla pipeline o riscontri problemi, invia un'email all'indirizzo support@sentieon.com.