DeepVariant è una pipeline di analisi che utilizza una profonda rete neurale per chiamare varianti genetiche dai dati di sequenziamento del DNA di nuova generazione.
Questo tutorial spiega come eseguire DeepVariant su Google Cloud utilizzando dati di esempio. Esegui DeepVariant su una singola istanza di Compute Engine.
Obiettivi
Dopo aver completato questo tutorial, saprai come eseguire DeepVariant su Google Cloud.
Costi
In questo documento vengono utilizzati i seguenti componenti fatturabili di Google Cloud:
- Compute Engine
Per generare una stima dei costi in base all'utilizzo previsto,
utilizza il Calcolatore prezzi.
Prima di iniziare
- 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.
-
Nella console di Google Cloud Console, nella pagina del selettore dei progetti, seleziona o crea un progetto Google Cloud.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
-
Attiva l'API Compute Engine.
-
Nella console di Google Cloud Console, nella pagina del selettore dei progetti, seleziona o crea un progetto Google Cloud.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
-
Attiva l'API Compute Engine.
- Installa Google Cloud CLI.
-
Per inizializzare l'interfaccia a riga di comando gcloud, esegui il comando seguente:
gcloud init
Suggerimento: se hai bisogno di un prompt dei comandi, Puoi utilizzare Cloud Shell. Cloud Shell è un ambiente a riga di comando che include già Google Cloud CLI, per cui non è necessario installarlo.
Crea un'istanza di Compute Engine
Crea un'istanza di Compute Engine utilizzando la console Google Cloud o l'gcloud CLI per eseguire DeepVariant.
Console
- Nella console Google Cloud, vai alla pagina Istanze VM.
- Fai clic su Crea istanza.
-
Scegli un Nome per l'istanza nel formato
PROJECT_ID-deepvariant-run
, dove PROJECT_ID è l'ID del tuo progetto Google Cloud. -
Scegli una Regione e una Zona per l'istanza. A meno che non tu abbia un motivo specifico per eseguire l'istanza in una determinata posizione, seleziona
us-central1 (Iowa)
per l'area geografica eus-central1-a
per l'area zona. - Nel menu Tipo di macchina, seleziona n1-standard-64 (64 vCPU, 240 GB di memoria).
- Nel menu Piattaforma CPU, seleziona Intel Skylake o versioni successive.
- Nella sezione Disco di avvio, fai clic su Cambia per iniziare a configurare il disco di avvio.
- Nella scheda Immagini pubbliche, scegli Ubuntu 20.04 LTS. Nel menu Tipo di disco di avvio, seleziona Disco permanente standard. Nel campo Dimensioni (GB), inserisci 300. Fai clic su Seleziona.
- Fai clic sul pulsante Crea per creare l'istanza.
gcloud
gcloud compute instances create \ PROJECT_ID-deepvariant-run \ --project PROJECT_ID \ --zone ZONE \ --scopes "cloud-platform" \ --image-project ubuntu-os-cloud \ --image-family ubuntu-2004-lts \ --machine-type n1-standard-64 \ --min-cpu-platform "Intel Skylake" \ --boot-disk-size=300GB
Sostituisci quanto segue:
- PROJECT_ID: il tuo ID progetto Google Cloud
- ZONE: la zona in cui è stato eseguito il deployment dell'istanza. Una zona è una località geografica approssimativa in cui risiedono l'istanza e le relative risorse. Ad esempio,
us-west1-a
è una zona nella regioneus-west
. Se in precedenza hai impostato una zona predefinita utilizzandogcloud config set compute/zone
, il valore di questo flag sostituisce quella predefinita.
Potrebbe essere necessario un po' di tempo per l'avvio dell'istanza. Una volta pronto, verrà visualizzato nella pagina Istanze VM con un'icona di stato verde.
Connettersi all'istanza
Puoi connetterti all'istanza utilizzando la console Google Cloud o l'interfaccia alla gcloud CLI:
Console
- Nella console Google Cloud, vai alla pagina Istanze VM.
- Nell'elenco delle istanze di macchine virtuali, fai clic su SSH nella riga dell'istanza che hai creato.
gcloud
gcloud compute ssh PROJECT_ID-deepvariant-run --zone ZONE
Esecuzione di DeepVariant
Configura l'ambiente ed esegui DeepVariant sull'istanza di Compute Engine che hai creato:
Installa Docker Community Edition (CE):
sudo apt-get -qq -y install \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable" sudo apt-get -qq -y update sudo apt-get -qq -y install docker-ce
Configura le variabili di ambiente DeepVariant copiando e incollando i seguenti comandi nell'ambiente locale:
BIN_VERSION="1.2.0" BASE="${HOME}/deepvariant-run" INPUT_DIR="${BASE}/input" REF="GRCh38_no_alt_analysis_set.fasta" BAM="HG003.novaseq.pcr-free.35x.dedup.grch38_no_alt.chr20.bam" OUTPUT_DIR="${BASE}/output" DATA_DIR="${INPUT_DIR}/data" OUTPUT_VCF="HG003.output.vcf.gz" OUTPUT_GVCF="HG003.output.g.vcf.gz"
Crea la struttura di directory locale per la directory dei dati di input e la directory di output:
mkdir -p "${OUTPUT_DIR}" mkdir -p "${INPUT_DIR}" mkdir -p "${DATA_DIR}"
Questo tutorial utilizza un genoma HG003 disponibile pubblicamente e una copertura 30x mappato al riferimento GRCh38. Per garantire un runtime più rapido, aggiungi il flag
--regions chr20
quando esegui DeepVariant in modo che DeepVariant venga eseguito solo sul cromosoma 20 (chr20).I dati di esempio sono stati creati utilizzando la sequenza di Illumina, ma DeepVariant supporta anche i seguenti altri tipi di dati di input:
- Genoma intero (Illuminazione) (WGS)
- Exome (Illumina) (WES)
- Genoma intero (PacBio)
- Ibrido PacBio e Illumina genoma intero (HYBRID_PACBIO_ILLUMINA)
Esegui
gsutil cp
per copiare i dati di test di input dal bucket Cloud Storage dideepvariant
nelle directory dell'istanza che hai creato:# Input BAM and BAI files: gsutil cp gs://deepvariant/case-study-testdata/"${BAM}" "${DATA_DIR}" gsutil cp gs://deepvariant/case-study-testdata/"${BAM}".bai "${DATA_DIR}" # GRCh38 reference FASTA file: FTPDIR=ftp://ftp.ncbi.nlm.nih.gov/genomes/all/GCA/000/001/405/GCA_000001405.15_GRCh38/seqs_for_alignment_pipelines.ucsc_ids curl ${FTPDIR}/GCA_000001405.15_GRCh38_no_alt_analysis_set.fna.gz | gunzip > "${DATA_DIR}/${REF}" curl ${FTPDIR}/GCA_000001405.15_GRCh38_no_alt_analysis_set.fna.fai > "${DATA_DIR}/${REF}".fai
DeepVariant è un'applicazione containerizzata, archiviata in un'immagine Docker predefinita in Container Registry. Per eseguire il pull dell'immagine, esegui il comando seguente:
sudo docker pull gcr.io/deepvariant-docker/deepvariant:"${BIN_VERSION}"
Per avviare DeepVariant, esegui il comando seguente:
sudo docker run \ -v "${DATA_DIR}":"/input" \ -v "${OUTPUT_DIR}:/output" \ gcr.io/deepvariant-docker/deepvariant:"${BIN_VERSION}" \ /opt/deepvariant/bin/run_deepvariant \ --model_type=WGS \ --ref="/input/${REF}" \ --reads="/input/${BAM}" \ --output_vcf=/output/${OUTPUT_VCF} \ --output_gvcf=/output/${OUTPUT_GVCF} \ --regions chr20 \ --num_shards=$(nproc) \ --intermediate_results_dir /output/intermediate_results_dir
La tabella seguente descrive i flag trasmessi al comando:
Flag Descrizione model_type
DeepVariant supporta diversi tipi di dati di input. Questo tutorial utilizza la sequenza genomica completa (WSG). ref
La posizione del file FASTA di riferimento. reads
La posizione del file BAM di input. output_vcf
La posizione dei file VCF di output. output_gvcf
La posizione dei file di output gVCF. regions
(Facoltativo) Un elenco separato da spazi delle regioni cromosomiche da elaborare. I singoli elementi possono essere valori letterali di regione, come chr20:10-20
o percorsi a file BED/BEDPE.num_shards
Numero di shard da eseguire in parallelo. Per ottenere risultati ottimali, imposta il valore di questo flag sul numero di core sulla macchina su cui viene eseguita DeepVariant. intermediate_results_dir
Flag facoltativo che specifica la directory per gli output intermedi delle fasi make_examples e call_variants. Una volta completato il comando, i file verranno salvati nella directory locale nei seguenti formati: dry_run
Flag facoltativo. Se impostato su true, i comandi verranno stampati anziché eseguirli. call_variants_output.tfrecord.gz gvcf.tfrecord-SHARD_NUMBER-of-NUM_OF_SHARDS.gz make_examples.tfrecord-SHARD_NUMBER-of-NUM_OF_SHARDS.gz
Al termine di DeepVariant, i file seguenti vengono restituiti nella directory
deepvariant-run/output
:HG003.output.g.vcf.gz
HG003.output.g.vcf.gz.tbi
HG003.output.vcf.gz
HG003.output.vcf.gz.tbi
HG003.output.visual_report.html
Esegui questo comando per elencare i file nella directory di output e controlla che vengano visualizzati:
ls $OUTPUT_DIR
Stime di runtime
La seguente tabella mostra il tempo di esecuzione approssimativo durante l'esecuzione di DeepVariant utilizzando un campione di genoma intero 30x in un file BAM. Queste stime non includono il tempo necessario per configurare l'istanza e scaricare i dati di esempio da Cloud Storage.
Consulta i prezzi di Compute Engine per i prezzi orari. Prendi in considerazione l'utilizzo di VM Spot, che sono significativamente più economiche delle VM normali.
Tipo di macchina | Durata in ore |
---|---|
n1-standard-8 | 24,63 |
n1-standard-16 | 13,30 |
n1-standard-32 | 7,77 |
n1-standard-64 | 5,64 |
n1-standard-96 | 4,38 |
Esegui la pulizia
Al termine del tutorial, puoi eseguire la pulizia delle risorse che hai creato in modo che smettano di utilizzare la quota e vengano addebitati costi. Le seguenti sezioni descrivono come eliminare o disattivare queste risorse.
Il modo più semplice per eliminare la fatturazione è eliminare il progetto che hai creato per il tutorial.
Per eliminare il progetto:
- Nella console Google Cloud, vai alla pagina Gestisci risorse.
- Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare, quindi fai clic su Elimina.
- Nella finestra di dialogo, digita l'ID del progetto e fai clic su Chiudi per eliminare il progetto.
Passaggi successivi
- Sono disponibili configurazioni più complesse nel repository GitHub DeepVariant. Ad esempio, puoi eseguire DeepVariant utilizzando più istanze. Queste varianti migliorano la velocità di elaborazione e riducono i costi.
- Leggi un post del blog sull'AI di Google relativo al rilascio open source di DeepVariant.
- Se hai domande su DeepVariant, puoi segnalare un problema di GitHub. Per eventuali domande su Google Cloud, puoi pubblicare un messaggio nella mailing list gcp-life-sciences-Discussion@googlegroups.com.