Architettura di riferimento per l'elaborazione dei dati genomici

Questo documento descrive le architetture di riferimento per l'utilizzo dell'API Cloud Life Sciences con altri prodotti Google Cloud al fine di eseguire l'elaborazione dei dati genomici utilizzando metodi e motori di flusso di lavoro diversi. Nello specifico, questo documento si concentra sull'allineamento e sulle varianti di chiamata dei passaggi dell'analisi secondaria ed è destinato a bioinformatici, ricercatori, team IT di ricerca e altri specialisti tecnici delle organizzazioni di scienze biologiche.

Google Cloud offre un set flessibile di API, servizi e strumenti per eseguire su larga scala una soluzione di analisi secondaria conveniente. L'analisi secondaria include, a titolo esemplificativo, il filtro delle letture non elaborate, l'allineamento e l'assemblaggio delle letture di sequenze e le chiamate di QA e di varianti per letture allineate.

Architettura

Il seguente diagramma illustra i passaggi dell'elaborazione dei dati genomici su larga scala e mostra quali passaggi vengono eseguiti in Google Cloud.

Elabora i dati genomici su larga scala con Google Cloud.

Come mostra il diagramma precedente, un campione di dati genomici viene prima sottoposto all'analisi primaria, quindi importato come dati non elaborati in Google Cloud per l'analisi secondaria. I dati elaborati vengono quindi sottoposti a un'analisi terziaria e producono report come i PDF, che possono essere scaricati dal cloud da bioinformatici e altri specialisti tecnici.

Componenti dell'architettura di riferimento per l'elaborazione dei dati genomici

Questo documento include dettagli sull'utilizzo dell'API Cloud Life Sciences e due panoramiche dell'architettura di riferimento che descrivono diversi modi di utilizzare l'API per eseguire l'elaborazione dei dati genomici.

Utilizzo dell'API Cloud Life Sciences

L'API Cloud Life Sciences offre un servizio di computing completamente gestito che offre risorse di calcolo ottimali in base ai requisiti delle risorse per un job batch. L'API fornisce un modo per creare, eseguire e monitorare gli strumenti a riga di comando sulle istanze di Compute Engine in esecuzione in un container Docker. Puoi organizzare più strumenti a riga di comando in modo che vengano eseguiti in un ordine specifico, con dipendenze tra i passaggi. L'API Cloud Life Sciences include il servizio WorkflowsServiceV2Beta, che puoi utilizzare per l'esecuzione di flussi di lavoro, come le pipeline costituite da container Docker.

Un oggetto Pipeline è costituito da una o più descrizioni Action e da un messaggio Resources che descrive le risorse cloud necessarie per eseguire la pipeline. Ogni azione descrive una singola esecuzione di container Docker, che può includere uno o più oggetti command. Gli oggetti Action vengono eseguiti in sequenza, con ogni oggetto in attesa di essere eseguito fino all'uscita dell'oggetto precedente, a meno che l'oggetto precedente non sia impostato per l'esecuzione in background. Esistono flag che influiscono sul modo in cui viene eseguito ogni oggetto Action e su come lo stato di uscita influisce sulle azioni nella pipeline, ad esempio se un oggetto Action deve essere eseguito in background o se lo stato di uscita deve essere ignorato. In qualità di autore della pipeline, puoi creare un messaggio Resources che descriva le risorse cloud necessarie per eseguire la pipeline.

Le specifiche nel messaggio Resources possono includere quanto segue:

  • Dimensioni delle macchine virtuali (VM), tra cui forme di macchine personalizzate e prerilasciabilità
  • Zone e regioni per l'allocazione delle VM
  • Opzioni di networking (importanti per progetti di elaborazione di grandi dimensioni, a causa dei limiti di dimensioni della rete)
  • Acceleratori collegati (GPU)
  • Dischi collegati
  • Account di servizio e ambito

L'API Cloud Life Sciences esegue le seguenti attività quando riceve un oggetto Pipeline tramite una chiamata API:

  1. Crea un'istanza VM di Compute Engine, in base ai contenuti del messaggio Resources.
  2. Scarica tutte le immagini Docker specificate in una descrizione Action.
  3. Esegue ogni oggetto Action come nuovo container Docker con l'immagine e il comando specificati.
  4. Elimina l'istanza VM di Compute Engine.

Un tipico insieme di attività descritto in una descrizione di Action può includere quanto segue:

  • Scarica file di input.
  • Esegui i comandi.
  • Copia i log in Cloud Storage.
  • Caricare i file di output.

L'API Cloud Life Sciences utilizza la potenza di elaborazione e archiviazione scalabile e ad alte prestazioni di Google Cloud, insieme a istanze VM prerilasciabile, GPU e TPU (Tensor Processing Unit), per contribuire a fornire un ambiente sicuro e scalabile per l'analisi dei dati. Ciò include l'esecuzione di framework di analisi secondari standard del settore, come Genome Analysis Toolkit (GATK) e DeepVariant, su un singolo campione o su set di dati congiunti, in modo rapido, semplice ed economico.

L'API Cloud Life Sciences è integrata con motori di flusso di lavoro open source come Cromwell, Nextflow e Galaxy. Inoltre, Nextflow e Galaxy supportano il computing su Google Cloud attraverso integrazioni dirette con Compute Engine e Cloud Storage. Il seguente diagramma mostra un'architettura di riferimento che include componenti dell'API Cloud Life Sciences, nonché altri servizi necessari per eseguire una pipeline di analisi secondaria genomica in Google Cloud.

Architettura di riferimento che mostra l'API Cloud Life Sciences in esecuzione sui nodi di computing di Compute Engine mediante Persistent Disk, Container-Optimized OS e GPU.

Elaborazione dei dati genomici: utilizzo di Cromwell per eseguire i flussi di lavoro delle best practice GATK

Puoi utilizzare l'API Cloud Life Sciences con un motore del flusso di lavoro per orchestrare le attività. Nell'esempio seguente, Cromwell viene utilizzato per eseguire analisi secondaria, applicando al contempo i flussi di lavoro delle best practice GATK.

Cromwell è un sistema di gestione dei flussi di lavoro open source che può essere eseguito in una varietà di ambienti per pianificare, eseguire e gestire i flussi di lavoro. Cromwell legge un flusso di lavoro definito nel Workflow Description Language (WDL) ed esegue singole attività dal flusso di lavoro utilizzando l'API Cloud Life Sciences. In questo caso, un server Cromwell viene eseguito su un'istanza VM di Compute Engine, con un server Cloud SQL per l'archiviazione dei dati operativi. La VM Cromwell esegue quindi ciascuna delle attività definite effettuando chiamate API all'API Cloud Life Sciences per avviare istanze VM per ognuna delle attività, come configurato nel WDL.

Il GATK include strumenti per la scoperta delle varianti e la genotipizzazione. I flussi di lavoro delle best practice GATK includono una serie di pipeline per casi d'uso specifici. Questo esempio è incentrato sul flusso di lavoro di produzione, PairedEndSingleSampleWf. Il flusso di lavoro include la pre-elaborazione dei dati, la variante iniziale che richiede polimorfismi a singolo nucleotide (polimorfismi a singolo nucleotide) della linea germinale e la scoperta di indel in un singolo campione di dati di sequenziamento dell'intero genoma umano.

Il flusso di lavoro prende i dati di sequenziamento dell'intero genoma umano nel formato BAM (uBAM) non mappato con uno o più gruppi di lettura e utilizza il genoma di riferimento Hg38 con contig ALT. Gli output includono un file cram, un indice cram, cram md5, GVCF e un indice corrispondente, un report BQSR e diverse metriche di riepilogo. L'esempio utilizzato è una versione ridotta di NA12878 che contiene solo 3 gruppi di lettura dell'intero campione. Il flusso di lavoro è pacchettizzato come una serie di file WDL che definiscono le singole attività, insieme a una specifica di input e opzioni generiche. I file WDL specificano le risorse cloud per ogni attività, ad esempio il numero di core della CPU e la memoria per ogni istanza VM, il container da installare su ogni istanza VM e il comando da eseguire, nonché le posizioni dei file di input e di output. Esistono anche altre specifiche, ad esempio se un passo deve essere eseguito su macchine prerilasciabili e il numero di tentativi di ripetizione di un oggetto Action.

Il seguente diagramma mostra una tipica architettura per l'esecuzione di analisi secondarie genomiche utilizzando Cromwell per l'esecuzione dei flussi di lavoro delle best practice GATK con l'API Cloud Life Sciences, inclusi i passaggi necessari per eseguire l'analisi.

Utilizzo di Cromwell per eseguire le best practice GATK con l'API Cloud Life Sciences.

Il diagramma mostra i seguenti passaggi per eseguire un'analisi secondaria:

  1. Dopo la sequenza, salvi le chiamate di base non elaborate nello spazio di archiviazione locale o in uno Network Attached Storage (NAS), dove vengono convertite in file uBAM. Poi trasferisci questi file uBAM in un bucket Cloud Storage.
  2. L'autenticazione per agire come account di servizio utilizzando Identity and Access Management (IAM).
  3. Invii il job al server Cromwell in esecuzione su Compute Engine.

    La richiesta passa attraverso Identity-Aware Proxy, che è configurato per consentire l'accesso a Virtual Private Cloud tramite le regole firewall di Google Cloud.

  4. Il server Cromwell estrae il flusso di lavoro per il GATK dai repository pubblici.

  5. Il server Cromwell effettua chiamate all'API Cloud Life Sciences per avviare i job.

  6. L'API Cloud Life Sciences estrae i container per ogni attività dai repository pubblici GATK.

  7. L'API Cloud Life Sciences avvia le VM su Compute Engine per ogni attività e avvia il container su ogni macchina.

  8. L'istanza VM recupera i file di input dai bucket Cloud Storage.

  9. L'istanza VM esegue attività di calcolo e salva file intermedi, di log e di output in un bucket Cloud Storage.

Elaborazione dei dati genomici: esecuzione di DeepVariant

DeepVariant è una pipeline di analisi open source che utilizza una rete neurale profonda per chiamare varianti genetiche dai dati di sequenziamento del DNA di nuova generazione. Questa pipeline di analisi è stata sviluppata da un team di ricerca di Google e utilizza TensorFlow per l'src e la variante indel che richiama esomi o genomi. DeepVariant viene utilizzata per trasformare le letture di sequenziamento allineate in chiamate di varianti.

Per utilizzare DeepVariant, al livello più alto devi fornire tre input:

  • Un genoma di riferimento in formato FASTA e il corrispondente file indice .fai, generato utilizzando il comando Samtools faidx.
  • Un file di lettura allineato in formato BAM e nel file di indice corrispondente (.bai). Le letture devono essere allineate al genoma di riferimento fornito.
  • Il modello di ML DeepVariant da utilizzare per le chiamate delle varianti.

L'output di DeepVariant è un elenco di tutte le chiamate delle varianti in formato VCF. DeepVariant è integrato con il framework di machine learning TensorFlow.

Puoi eseguire DeepVariant in un container Docker o nei programmi binari diretti e puoi eseguirlo utilizzando hardware on-premise o nel cloud. DeepVariant include il supporto per l'utilizzo di acceleratori hardware come GPU e TPU. Puoi utilizzare Docker per eseguire DeepVariant da un container Docker utilizzando un solo comando, come descritto nella guida rapida di DeepVariant. Per i casi d'uso in produzione su Google Cloud, consigliamo di integrare il processo DeepVariant nel flusso di lavoro ed effettuare la chiamata dal motore del flusso di lavoro.

In alternativa, puoi utilizzare DeepVariant Runner, che usa l'API Cloud Life Sciences in modo simile ai metodi descritti nel tutorial Esecuzione di DeepVariant. Ciò ti consente di eseguire DeepVariant su larga scala, utilizzando una pipeline basata su Docker ottimizzata per costi e velocità.

Il seguente diagramma mostra un'architettura tipica per l'esecuzione di una pipeline DeepVariant su Google Cloud.

Architettura per l'esecuzione di una pipeline DeepVariant su Google Cloud.

Di seguito sono riportati i passaggi per eseguire DeepVariant, come rappresentato nel diagramma precedente:

  1. Dopo aver creato letture di DNA mappate dai campioni, trasferisci questi file BAM in un bucket Cloud Storage.
  2. Per agire come account di servizio devi eseguire l'autenticazione utilizzando IAM.
  3. Esegui DeepVariant, che effettua chiamate all'API Cloud Life Sciences per avviare i job.
  4. L'API Cloud Life Sciences estrae il container DeepVariant per ogni attività dai repository pubblici.
  5. L'API Cloud Life Sciences avvia le VM su Compute Engine per ogni attività e avvia il container su ogni macchina.
  6. L'istanza VM recupera i file di input dai bucket Cloud Storage.
  7. L'istanza VM esegue attività di calcolo e salva file intermedi, di log e di output in un bucket Cloud Storage.

Governance dei dati

L'architettura descritta in questo documento si concentra sui componenti specifici per l'analisi dei dati genomici. Per un'integrazione di produzione che include dati genomici umani, potrebbe essere necessario configurare componenti aggiuntivi in Google Cloud, a seconda dei requisiti e delle best practice nella tua giurisdizione.

Google Cloud fornisce un'architettura end-to-end che incapsula le best practice di Google Cloud per soddisfare le esigenze di sicurezza, privacy e conformità del settore sanitario. Il Cloud Healthcare Data Protection Toolkit include molti dei controlli delle best practice per la sicurezza e la privacy consigliati per i dati sanitari, tra cui la configurazione dell'accesso appropriato, la gestione dei log di controllo e il monitoraggio di attività sospette. Per saperne di più su queste funzionalità e su come Google Cloud contribuisce a proteggere i dati dei clienti, consulta il white paper Riservatezza dei dati con Google Cloud.

Residenza dei dati

Per le organizzazioni con requisiti di residenza dei dati, consulta la sezione "Servizi generali" del documento Termini specifici dei servizi per esaminare l'impegno in materia di residenza dei dati di Google Cloud, che evidenzia gli strumenti e i controlli disponibili per aiutare a configurare gli ambienti degli utenti per supportare questi requisiti.

Criteri dell'organizzazione

Per limitare la località fisica di una risorsa in un progetto, puoi impostare un criterio dell'organizzazione che includa un vincolo sulla località delle risorse. Per un elenco dei servizi supportati, consulta la pagina relativa ai servizi supportati per le località delle risorse.

Identificatori di risorse Google Cloud

Ai fini del presente documento, gli impegni relativi alla residenza dei dati non si applicano a identificatori di risorse, attributi o altre etichette di dati. Hai la responsabilità di garantire che nessun dato sensibile venga esposto in questi identificatori, attributi o altre etichette dati, ad esempio in un nome file.

Regioni e zone dell'API Cloud Life Sciences

Quando effettui chiamate all'API Cloud Life Sciences, devi specificare la regione in cui verrà inviata la richiesta. L'esempio seguente mostra l'URI di un endpoint per l'esecuzione di una pipeline nel progetto Google Cloud foo e nella regione us-central1:

v2beta/projects/foo/locations/us-central1/workflows:runPipeline

Tutti i metadati salvati per l'operazione, inclusi i nomi delle immagini container, i nomi dei file di input e di output e altre informazioni inviate nella richiesta all'API Cloud Life Sciences, vengono salvati in questa regione.

Quando l'API Cloud Life Sciences avvia un'istanza VM di Compute Engine, la chiamata API deve includere una regione o una zona in cui avviare l'istanza VM. Puoi configurare una o più regioni o zone per limitare la località della VM. L'istanza VM, i dati at-rest in Compute Engine e i dischi permanenti rimangono nella regione specificata. Le funzionalità disponibili per le istanze di Compute Engine, ad esempio piattaforme CPU, tipi di macchine, SSD e GPU, variano in base alla regione e alla zona. Di conseguenza, assicurati che le risorse richieste siano disponibili in una regione o zona prima di limitare l'utilizzo a quella regione o zona.

Per ulteriori informazioni, consulta Dettagli e termini di residenza dei dati di Compute Engine.

Google Cloud Storage

Puoi archiviare file di input e di output, file di lavoro temporanei e snapshot del disco permanente in Cloud Storage. I dati at-rest nei bucket Cloud Storage rimangono all'interno di una singola regione, di una doppia o di più regioni selezionate durante la configurazione del bucket. Per ulteriori informazioni, consulta l'elenco attuale delle località dei bucket Cloud Storage.

Per ottimizzare disponibilità, prestazioni ed efficienza, puoi utilizzare una doppia regione di Cloud Storage. Quando selezioni questa opzione, i dati nel bucket vengono copiati in modo asincrono in due regioni specifiche, rendendoli ridondanti tra le regioni. Per ulteriori informazioni, consulta Due regioni di Cloud Storage.

Per le prestazioni e la residenza dei dati, utilizza la stessa regione per Cloud Storage, Compute Engine e l'API Life Sciences, se possibile.

Per ulteriori informazioni, consulta Dettagli e termini relativi alla residenza dei dati di Cloud Storage.

Passaggi successivi