DeepVariant è una pipeline di analisi che utilizza una rete neurale profonda 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 pagina del selettore di progetti della console Google Cloud, 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 pagina del selettore di progetti della console Google Cloud, 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 initialize gcloud CLI, esegui questo comando:
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, quindi non è necessario installarlo.
crea un'istanza Compute Engine
Crea un'istanza Compute Engine usando la console Google Cloud o 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 tu non abbia un motivo specifico per eseguire l'istanza in una determinata località, seleziona
us-central1 (Iowa)
per Regione eus-central1-a
per Zona. - Nel menu Tipo di macchina, seleziona n1-standard-64 (64 vCPU, 240 GB di memoria).
- Nel menu Piattaforma CPU, seleziona Intel Skylake o versione successiva.
- 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: l'ID del tuo progetto Google Cloud
- ZONE: la zona in cui viene eseguito il deployment dell'istanza. Una zona è una località regionale approssimativa in cui risiedono l'istanza e le relative risorse. Ad esempio,
us-west1-a
è una zona nella regioneus-west
. Se hai già impostato una zona predefinita utilizzandogcloud config set compute/zone
, il valore di questo flag sostituisce quello predefinito.
Potrebbe essere necessario un po' di tempo per l'avvio dell'istanza. Quando sarà pronta, verrà visualizzata nella pagina Istanze VM con un'icona di stato verde.
Connettersi all'istanza
Puoi connetterti all'istanza utilizzando la console Google Cloud o 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 il tuo 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 comandi seguenti nel tuo 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 a 30 volte di copertura mappato al riferimento GRCh38. Per garantire un runtime più rapido, aggiungi il flag
--regions chr20
quando esegui DeepVariant in modo che DeepVariant venga eseguita solo sul cromosoma 20 (chr20).I dati di esempio sono stati creati utilizzando il sequenziamento Illumina, ma DeepVariant supporta anche questi altri tipi di dati di input:
- Genoma intero (Illumina) (WGS)
- Esome (Illumina) (WES)
- Genoma intero (PacBio)
- Genoma intero PacBio e Illumina ibrida (HYBRID_PACBIO_ILLUMINA)
Esegui
gsutil cp
per copiare i dati di test di input dal bucket Cloud Storagedeepvariant
alle directory nell'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 integrata in un'immagine Docker predefinita in Container Registry. Per eseguire il pull dell'immagine, esegui questo comando:
sudo docker pull gcr.io/deepvariant-docker/deepvariant:"${BIN_VERSION}"
Per avviare DeepVariant, esegui questo comando:
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
Nella tabella seguente sono descritti i flag passati al comando:
Flag Descrizione model_type
DeepVariant supporta diversi tipi di dati di input. Questo tutorial utilizza il sequenziamento del genoma intero (WSG, Whole Genome Sequencing). 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
Il percorso dei file gVCF di output. regions
(Facoltativo) Un elenco separato da spazi di regioni di cromosomi da elaborare. I singoli elementi possono essere valori letterali di regione, come chr20:10-20
o percorsi ai 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 in 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é essere eseguiti. 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, DeepVariant genera i seguenti file 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 verifica che vengano visualizzati i file di output:
ls $OUTPUT_DIR
Stime del runtime
La seguente tabella mostra il runtime approssimativo quando si esegue DeepVariant utilizzando un campione di genoma intero 30 volte in un file BAM. Queste stime non includono il tempo necessario per configurare l'istanza e scaricare eventuali dati di esempio da Cloud Storage.
Puoi fare riferimento ai prezzi di Compute Engine per i prezzi orari. Prendi in considerazione l'utilizzo di VM spot, che sono molto più economiche delle VM normali.
Tipo di macchina | Runtime 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 smettano di essere addebitati. Le sezioni seguenti 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
- Nel repository GitHub di DeepVariant sono disponibili configurazioni più complesse. 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'IA di Google sulla release open source di DeepVariant.
- Se hai domande su DeepVariant, puoi inviare una segnalazione su GitHub. Se hai domande su Google Cloud, puoi pubblicare un post nella mailing list gcp-life-sciences-discuss@googlegroups.com.