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 di Genome Analysis Toolkit (GATK) versione 3.7:
- Allineamento
- Ordinamento
- Rimozione duplicati
- Ricollimazione del punteggio di qualità di base (BQSR)
- Chiamata delle varianti
I formati di input includono:
- file fastq
- File BAM allineati e ordinati
Obiettivi
Al termine di questo tutorial saprai come:
- Esegui una pipeline su Google Cloud utilizzando Sentieon® DNASeq®
- Scrivere 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.
Prima di iniziare
- 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.
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Life Sciences, Compute Engine, and Cloud Storage APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Life Sciences, Compute Engine, and Cloud Storage APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Update and install
gcloud
components:gcloud components update
gcloud components install beta - Installa git per scaricare i file richiesti.
-
Per impostazione predefinita, Compute Engine ha implementato quote delle risorse per evitare un utilizzo involontario. Aumentando le quote, puoi avviare più macchine virtuali contemporaneamente, aumentando il throughput e riducendo i tempi di risposta.
Per ottenere risultati ottimali in questo tutorial, devi richiedere una quota aggiuntiva superiore a quella predefinita del progetto. I consigli per gli aumenti di quota sono riportati nel seguente elenco insieme alle quote minime necessarie per eseguire il tutorial. Invia le richieste di quota nella regione
us-central1
:- CPU: 64
- Disco permanente standard (GB): 375
Puoi lasciare vuoti gli altri campi di richiesta di quota per mantenere le quote attuali.
Licenza di valutazione Sentieon®
Quando utilizzi questa pipeline, Sentieon® ti concede automaticamente una licenza di valutazione 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 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
Se non hai virtualenv, esegui il seguente comando per installarlo utilizzando pip:
pip install virtualenv
Esegui il seguente 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 il seguente 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
Informazioni sul formato di input
La pipeline utilizza come input i parametri specificati in un file JSON.
Nel repository 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 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 impostato, si presume che i file di indicizzazione 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 zone Google Cloud da utilizzare per il nodo worker. |
PROJECT_ID |
L'ID del tuo progetto Google Cloud. |
REQUESTER_PROJECT |
Un progetto da fatturare durante il trasferimento dei dati dai bucket Requester Pays. |
EMAIL |
Il tuo indirizzo email. |
esegui la pipeline.
Nella directory
sentieon-google-genomics
, modifica il fileexamples/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" }
Imposta la variabile PROJECT_ID nell'ambiente:
export PROJECT_ID=PROJECT_ID
Esegui il seguente 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 preemptibili, la pipeline si riavvia ogni volta che le sue istanze vengono prelevate. Al termine della pipeline, viene visualizzato un messaggio nella console che indica se l'operazione è riuscita o meno.
Configurazione consigliata
Nella maggior parte dei casi, puoi ottimizzare i tempi di risposta e i costi utilizzando la seguente configurazione. La configurazione esegue un genoma umano 30 volte a un costo di circa 1,25 $e richiede circa 2 ore. Un exome umano completo costa circa 0,35 $e richiede circa 45 minuti. Entrambe queste stime si basano sul fatto che le istanze della pipeline non vengono prelevate.
{ "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 virgola come input, come mostrato dalla 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 come input file BAM separati da virgole utilizzando la chiave JSON BAM
. Le letture nei file BAM non sono allineate al genoma di riferimento.
ma iniziano dalla fase di deduplica dei dati della pipeline. L'esempio seguente mostra una configurazione che utilizza due file BAM come input:
"BAM": "gs://my-bucket/s1_prep1.bam,gs://my-bucket/s1_prep2.bam"
Dati di genoma intero o configurazione di set di dati di grandi dimensioni
Le impostazioni nella configurazione consigliata sono ottimizzate per i campioni del genoma umano sequenziati con una copertura media di 30 volte. Per i file molto più piccoli o più grandi dei set di dati del genoma intero standard, puoi aumentare o diminuire le risorse disponibili per l'istanza. Per 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 della piattaforma CPU Compute Engine valido (ad esempio "Intel Skylake"). |
Istanze preemptible
Puoi utilizzare le istanze preemtibili 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 preattivabili 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 volte per tentare la pipeline quando si utilizzano istanze preemtibili. |
NONPREEMPTIBLE_TRY |
Determina se provare a eseguire la pipeline con un'istanza standard dopo che sono stati esauriti i tentativi con prelazione. |
Gruppi di lettura
I gruppi di letture 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 letture 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 показано показано 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 in streaming da Cloud Storage
Puoi trasmettere in streaming i file fastq di input da Cloud Storage, il che può ridurre il tempo di esecuzione totale della pipeline. Per eseguire lo streaming dei 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 riprodurre in streaming i 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 dei segni duplicati. Valori validi:
|
Ricollimazione 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 la ricerca di query basata sui brevetti fornendo ai siti noti la chiave JSON BQSR_SITES
. Se specificato, 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ò velocizzare l'elaborazione e ridurre le chiamate di varianti fuori 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 intervalli genomici da elaborare. |
INTERVAL |
Una stringa contenente un intervallo genomico da elaborare. |
Opzioni di output
Per impostazione predefinita, la pipeline produce un BAM pre-elaborato, le metriche di controllo qualità e le chiamate delle varianti. Puoi disattivare uno 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 pre-elaborato. |
NO_METRICS |
Determina se generare le metriche dei file di output. |
NO_HAPLOTYPER |
Determina se stampare le chiamate alle varianti. |
GVCF_OUTPUT |
Determina se le chiamate alle varianti devono essere generate 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
, ad esempio:
"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:
- Nella console Google Cloud, vai alla pagina Progetti.
- Nell'elenco dei progetti, selezionare quello da eliminare e fai clic su Elimina progetto.
- 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.