Esegui Sentieon® DNASeq®

Questa pagina spiega come eseguire Sentieon® DNASeq® come pipeline di Google Cloud per l'analisi genomica secondaria. La pipeline corrisponde ai seguenti risultati delle best practice per il toolkit per l'analisi dei genomi (GATK), versione 3.7:

  • Allineamento
  • Ordinamento
  • Rimozione duplicata
  • Ricalibrazione punteggio di qualità base (BQSR)
  • Chiamate delle varianti

I formati di input includono:

  • file fastq
  • File BAM allineati e ordinati

Obiettivi

Una volta completato il tutorial, saprai come:

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

Costi

In questo documento vengono utilizzati 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 utenti di Google Cloud possono essere idonei a una prova senza costi aggiuntivi.

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 tuo sistema, consulta la guida alla configurazione dell'ambiente di sviluppo di Python.
  2. Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
  3. Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  4. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  5. Abilita le API Cloud Life Sciences, Compute Engine, and Cloud Storage.

    Abilita le API

  6. Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  7. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  8. Abilita le API Cloud Life Sciences, Compute Engine, and Cloud Storage.

    Abilita le API

  9. Installa Google Cloud CLI.
  10. Per initialize gcloud CLI, esegui questo comando:

    gcloud init
  11. Aggiorna e installa i componenti di gcloud:
    gcloud components update
    gcloud components install beta
  12. Installa Git per scaricare i file richiesti.

    Scarica Git

  13. Per impostazione predefinita, Compute Engine prevede la quota delle risorse per impedire l'utilizzo involontario. Aumentando le quote, puoi avviare più macchine virtuali contemporaneamente, aumentando la velocità effettiva e riducendo i tempi di esecuzione.

    Per ottenere i migliori risultati in questo tutorial, devi richiedere una quota aggiuntiva superiore a quella predefinita del tuo progetto. I suggerimenti per gli aumenti delle quote sono riportati nel seguente elenco insieme alle quote minime necessarie per eseguire il tutorial. Effettua 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.

Licenza di valutazione Sentieon®

Quando utilizzi questa pipeline, Sentieon® ti concede automaticamente una licenza di valutazione gratuita di 2 settimane del suo software da utilizzare con Google Cloud. Per ricevere la licenza, inserisci il tuo indirizzo email nel campo EMAIL quando configuri la pipeline. Per informazioni sull'impostazione di questo campo, consulta Comprendere il 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 comando seguente per installarlo usando 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 attuale:

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

Comprendere il formato di input

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

Nel repository che hai scaricato è presente 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 seguente tabella 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 impostato, si presume che i file di indice fastq/BAM esistano.
OUTPUT_BUCKET Il bucket e la directory utilizzati per archiviare l'output dei dati dalla pipeline.
ZONES Un elenco separato da virgole di zone Google Cloud da utilizzare per il nodo worker.
PROJECT_ID Il tuo ID progetto Google Cloud.
REQUESTER_PROJECT Un progetto da fatturare quando si trasferiscono dati dai bucket Payer Pays.
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 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 prerilasciabili, la pipeline viene riavviata ogni volta che vengono prerilasciate le istanze. Al termine, la pipeline genera un messaggio nella console che indica se la pipeline è riuscita o meno.

Per la maggior parte dei casi, puoi ottimizzare i tempi e i costi di elaborazione utilizzando la seguente configurazione. La configurazione esegue un genoma umano 30x a un costo di circa 1,25 $e richiede circa 2 ore. Un esoma umano intero costa circa 0,35 $e richiede circa 45 minuti. Entrambe le stime si basano sul prerilascio delle istanze della pipeline.

{
  "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 opzioni aggiuntive indicate di seguito.

Opzioni del file di input

La pipeline supporta più file fastq separati da virgola 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 virgola come input utilizzando la chiave JSON BAM. Le letture nei file BAM non sono allineate al genoma di riferimento. ma iniziano nella fase di deduplicazione dei dati della pipeline. Il seguente esempio mostra una configurazione utilizzando due file BAM come input:

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

Configurazione di dati interi e di set di dati di grandi dimensioni

Le impostazioni nella configurazione consigliata sono ottimizzate per esempi di genoma intero umano in sequenza per una copertura media di 30 volte. Per i file di dimensioni molto più piccole o superiori rispetto ai set di dati dell'intero genoma standard, 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 tabella seguente 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 di Compute Engine da utilizzare. Il valore predefinito è n1-standard-1.
CPU_PLATFORM La piattaforma CPU da richiedere. Deve essere un nome di piattaforma CPU di Compute Engine valido (ad esempio "Intel Skylake").

Istanze prerilasciabili

Puoi utilizzare istanze prerilasciabili nella tua pipeline impostando la chiave JSON PREEMPTIBLE_TRIES.

Per impostazione predefinita, il runner tenta di eseguire la pipeline con un'istanza standard se i tentativi prerilasciabili 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 tabella seguente fornisce una descrizione delle impostazioni utilizzate:

Chiave JSON Descrizione
PREEMPTIBLE_TRIES Il numero di tentativi di creazione della pipeline quando si utilizzano istanze prerilasciabili.
NONPREEMPTIBLE_TRY Determina se provare a eseguire la pipeline con un'istanza standard dopo l'esaurimento dei tentativi prerilasciabili.

Lettura dei gruppi

I gruppi di lettura vengono aggiunti quando i file Fastq sono allineati con 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 di input JSON, 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 tabella seguente fornisce una descrizione dell'impostazione utilizzata:

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

Per saperne di più sui gruppi di lettura, consulta Gruppi di lettura.

Input di flusso da Cloud Storage

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

"STREAM_INPUT": "True"

La tabella seguente fornisce una descrizione dell'impostazione utilizzata:

Chiave JSON Descrizione
STREAM_INPUT Determina se trasmette in streaming i file fastq di input direttamente da Cloud Storage.

Marcatura duplicata

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 tabella seguente fornisce una descrizione dell'impostazione utilizzata:

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

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

BSQR richiede siti noti di variazioni genetiche. Il comportamento predefinito prevede di saltare questa fase della pipeline. Tuttavia, puoi abilitare BSQR fornendo ai siti noti 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 tabella seguente fornisce una descrizione delle impostazioni utilizzate:

Chiave JSON Descrizione
BSQR_SITES Attiva BSQR e utilizza un elenco separato da virgole di file forniti come siti noti.
DBSNP Un file dbSNP utilizzato durante una chiamata alle varianti.

Intervalli

Per alcune applicazioni, come la sequenza mirata o completamente esotica, potrebbe interessarti solo una parte del genoma. In questi casi, fornire un file di intervalli target può velocizzare l'elaborazione e ridurre le chiamate alternative al di fuori del 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 tabella seguente fornisce una descrizione delle impostazioni utilizzate:

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

Opzioni di output

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

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

La tabella seguente fornisce una descrizione delle impostazioni utilizzate:

Chiave JSON Descrizione
NO_BAM_OUTPUT Determina se generare un file BAM pre-elaborato.
NO_METRICS Determina se generare metriche sul file.
NO_HAPLOTYPER Determina se generare chiamate di varianti.
GVCF_OUTPUT Determina se generare chiamate delle varianti in formato gVCF.

Versioni Sentieon® DNASeq®

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

"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 ripulire le risorse che hai creato su Google Cloud in modo che non ti vengano più addebitati costi. Le sezioni seguenti 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

  • In caso di domande sulla pipeline o se riscontri problemi, invia un'email all'indirizzo support@sentieon.com.