Questa pagina spiega come eseguire una pipeline Nextflow su Google Cloud.
La pipeline utilizzata in questo tutorial è una proof of concept di una pipeline RNA-Seq con lo scopo di mostrare l'utilizzo di Nextflow su Google Cloud.
Obiettivi
Dopo aver completato questo tutorial, saprai come:
- Installa Nextflow in Cloud Shell.
- Configurare una pipeline Nextflow.
- Eseguire una pipeline utilizzando Nextflow su Google Cloud.
Costi
In questo documento vengono utilizzati i seguenti componenti fatturabili di Google Cloud:
- Compute Engine
- Cloud Storage
Per generare una stima dei costi basata sull'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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
-
Abilita le API Cloud Life Sciences, Compute Engine, and Cloud Storage.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
-
Abilita le API Cloud Life Sciences, Compute Engine, and Cloud Storage.
Crea un bucket Cloud Storage
Crea un bucket con nome univoco seguendo le indicazioni in
linee guida per la denominazione dei bucket. Il bucket archivia i file di lavoro e di output temporanei
durante questo tutorial. Per DNS
compatibilità, questo tutorial non funziona con i nomi dei bucket contenenti
trattino basso (_
).
Console
Nella console Google Cloud, vai alla pagina Browser di Cloud Storage:
Fai clic su Crea bucket.
Nella pagina Crea un bucket, inserisci le informazioni sul bucket.
Fai clic su Crea.
gcloud
Apri Cloud Shell:
Utilizza la
gcloud storage buckets create
:gcloud storage buckets create gs://BUCKET_NAME
Sostituisci BUCKET_NAME con il nome che vuoi assegnare al bucket, in base ai requisiti di denominazione. Ad esempio:
my-bucket
.Se la richiesta ha esito positivo, il comando restituisce il seguente messaggio:
Creating gs://BUCKET_NAME/...
Crea un account di servizio e aggiungi ruoli
Completa i seguenti passaggi per creare un account di servizio e aggiungere quanto segue Ruoli di Identity and Access Management:
- Cloud Life Sciences Workflows Runner
- Utente account di servizio
- Service Usage Consumer
Storage Object Admin
Console
Crea un account di servizio utilizzando la console Google Cloud:
Nella console Google Cloud, vai alla pagina Account di servizio.
Fai clic su Crea account di servizio.
Nel campo Nome account di servizio, inserisci
nextflow-service-account
e fai clic su Crea.Nella sezione Concedi a questo account di servizio l'accesso al progetto, aggiungi i seguenti ruoli Nell'elenco a discesa Seleziona un ruolo:
- Cloud Life Sciences Workflows Runner
- Utente account di servizio
- Service Usage Consumer
- Storage Object Admin
Fai clic su Continua, quindi su Fine.
Nella pagina Account di servizio, individua l'account di servizio che hai creato. Nella riga dell'account di servizio, fai clic sul , quindi fai clic su Gestisci chiavi.
Nella pagina Chiavi, fai clic su Aggiungi chiave, quindi su Crea nuova chiave.
Seleziona JSON per Tipo di chiave e fai clic su Crea.
Un file JSON contenente le chiavi scaricate sul tuo computer.
gcloud
Completa i seguenti passaggi utilizzando Cloud Shell:
Apri Cloud Shell.
Imposta le variabili da utilizzare nella creazione dell'account di servizio, sostituendo PROJECT_ID con il tuo ID progetto.
export PROJECT=PROJECT_ID export SERVICE_ACCOUNT_NAME=nextflow-service-account export SERVICE_ACCOUNT_ADDRESS=${SERVICE_ACCOUNT_NAME}@${PROJECT}.iam.gserviceaccount.com
Crea il service account.
gcloud iam service-accounts create ${SERVICE_ACCOUNT_NAME}
L'account di servizio richiede i seguenti ruoli IAM:
roles/lifesciences.workflowsRunner
roles/iam.serviceAccountUser
roles/serviceusage.serviceUsageConsumer
roles/storage.objectAdmin
Concedi questi ruoli eseguendo i comandi seguenti in Cloud Shell:
gcloud projects add-iam-policy-binding ${PROJECT} \ --member serviceAccount:${SERVICE_ACCOUNT_ADDRESS} \ --role roles/lifesciences.workflowsRunner gcloud projects add-iam-policy-binding ${PROJECT} \ --member serviceAccount:${SERVICE_ACCOUNT_ADDRESS} \ --role roles/iam.serviceAccountUser gcloud projects add-iam-policy-binding ${PROJECT} \ --member serviceAccount:${SERVICE_ACCOUNT_ADDRESS} \ --role roles/serviceusage.serviceUsageConsumer gcloud projects add-iam-policy-binding ${PROJECT} \ --member serviceAccount:${SERVICE_ACCOUNT_ADDRESS} \ --role roles/storage.objectAdmin
Fornisci le credenziali alla tua applicazione
Puoi fornire le credenziali di autenticazione al codice della tua applicazione
impostando la variabile di ambiente
GOOGLE_APPLICATION_CREDENTIALS
al percorso del file JSON che
contiene la chiave dell'account di servizio.
I passaggi seguenti mostrano come impostare GOOGLE_APPLICATION_CREDENTIALS
variabile di ambiente:
Console
Apri Cloud Shell.
Nel menu Altro
di Cloud Shell, seleziona Carica file e seleziona il file della chiave JSON che hai creato. Il file è nella home directory di Cloud Shell in esecuzione in un'istanza Compute Engine.Verifica che il file caricato si trovi nella directory attuale e conferma il nome file eseguendo questo comando:
ls
Imposta le credenziali, sostituendo KEY_FILENAME.json con il del tuo file di chiave.
export GOOGLE_APPLICATION_CREDENTIALS=${PWD}/KEY_FILENAME.json
gcloud
Completa i seguenti passaggi utilizzando Cloud Shell:
Apri Cloud Shell.
Nel menu Altro
di Cloud Shell, seleziona Carica file e seleziona il file della chiave JSON che hai creato. Il file è nella home directory di Cloud Shell in esecuzione in un'istanza Compute Engine.Verifica che il file caricato si trovi nella directory attuale e conferma il nome file eseguendo questo comando:
ls
Imposta il file della chiave privata su la variabile di ambiente
GOOGLE_APPLICATION_CREDENTIALS
:export SERVICE_ACCOUNT_KEY=${SERVICE_ACCOUNT_NAME}-private-key.json gcloud iam service-accounts keys create \ --iam-account=${SERVICE_ACCOUNT_ADDRESS} \ --key-file-type=json ${SERVICE_ACCOUNT_KEY} export SERVICE_ACCOUNT_KEY_FILE=${PWD}/${SERVICE_ACCOUNT_KEY} export GOOGLE_APPLICATION_CREDENTIALS=${PWD}/${SERVICE_ACCOUNT_KEY}
Installa e configura Nextflow in Cloud Shell
Per evitare di dover installare alcun software sul tuo computer, continua a eseguire l'intero in questo tutorial di Cloud Shell.
Se non è già aperto, apri Cloud Shell.
Installa Nextflow eseguendo questi comandi:
export NXF_VER=21.10.0 export NXF_MODE=google curl https://get.nextflow.io | bash
Se l'installazione viene completata correttamente, viene visualizzato il seguente messaggio:
N E X T F L O W version 21.10.0 build 5430 created 01-11-2020 15:14 UTC (10:14 EDT) cite doi:10.1038/nbt.3820 http://nextflow.io Nextflow installation completed. Please note: ‐ the executable file `nextflow` has been created in the folder: DIRECTORY ‐ you may complete the installation by moving it to a directory in your $PATH
Esegui questo comando per clonare il repository della pipeline di esempio. La che include la pipeline da eseguire e i dati di esempio che la pipeline utilizzi.
git clone https://github.com/nextflow-io/rnaseq-nf.git
Completa i seguenti passaggi per configurare Nextflow:
Passa alla cartella
rnaseq-nf
.cd rnaseq-nf git checkout v2.0
Utilizzando un editor di testo di tua scelta, modifica il file denominato
nextflow.config
e apporta i seguenti aggiornamenti alla sezione con l'etichettagls
:- Aggiungi la riga
google.project
se non è presente. - Sostituisci PROJECT_ID con l'ID progetto.
- Se vuoi, modifica il valore di
google.location
. Deve essere uno di Le località dell'API Cloud Life Sciences attualmente disponibili. - Se vuoi, modifica il valore di
google.region
che specifica la in cui vengono avviate le VM di Compute Engine. Consulta regioni e zone di Compute Engine disponibili. - Sostituisci BUCKET con il nome del bucket creato in precedenza.
- Sostituisci WORK_DIR con il nome della cartella da utilizzare per il logging e l'output. Utilizza un nuovo nome della directory che non esistono ancora nel tuo bucket.
gls { params.transcriptome = 'gs://rnaseq-nf/data/ggal/transcript.fa' params.reads = 'gs://rnaseq-nf/data/ggal/gut_{1,2}.fq' params.multiqc = 'gs://rnaseq-nf/multiqc' process.executor = 'google-lifesciences' process.container = 'nextflow/rnaseq-nf:latest' workDir = 'gs://BUCKET/WORK_DIR' google.location = 'europe-west2' google.region = 'europe-west1' google.project = 'PROJECT_ID' }
- Aggiungi la riga
Torna alla cartella precedente
cd ..
Esegui la pipeline con Nextflow
Eseguire la pipeline con Nextflow. Dopo l'avvio continua a essere eseguita in background fino al completamento. Il completamento della pipeline potrebbe richiedere fino a 10 minuti.
./nextflow run rnaseq-nf/main.nf -profile gls
Al termine della pipeline, viene visualizzato il seguente messaggio:
N E X T F L O W ~ version 21.10.0 Launching `rnaseq-nf/main.nf` [suspicious_mestorf] - revision: ef908c0bfd R N A S E Q - N F P I P E L I N E =================================== transcriptome: gs://rnaseq-nf/data/ggal/transcript.fa reads : gs://rnaseq-nf/data/ggal/gut_{1,2}.fq outdir : results executor > google-lifesciences (4) [db/2af640] process > RNASEQ:INDEX (transcript) [100%] 1 of 1 ✔ [a6/927725] process > RNASEQ:FASTQC (FASTQC on gut) [100%] 1 of 1 ✔ [59/438177] process > RNASEQ:QUANT (gut) [100%] 1 of 1 ✔ [9a/9743b9] process > MULTIQC [100%] 1 of 1 ✔ Done! Open the following report in your browser --> results/multiqc_report.html Completed at: DATE TIME Duration : 10m CPU hours : 0.2 Succeeded : 4
Visualizzazione dell'output della pipeline Nextflow
Al termine della pipeline, puoi controllare l'output e gli eventuali log, gli errori, i comandi e i file temporanei.
La pipeline salva il file di output finale, results/qc_report.html
, nel bucket Cloud Storage
specificato nel file nextflow.config
.
Per controllare i singoli file di output di ogni attività e i file intermedi, completa i seguenti passaggi:
Console
Nella console di Cloud Storage, apri la pagina Browser Storage:
Vai al BUCKET e vai al WORK_DIR specificato nel file
nextflow.config
.Esiste una cartella per ogni attività separata che è stata eseguita nel una pipeline o un blocco note personalizzato.
La cartella contiene i comandi eseguiti, i file di output i file temporanei utilizzati durante il flusso di lavoro.
gcloud
Per visualizzare i file di output in Cloud Shell, devi prima aprire Cloud Shell:
Esegui questo comando per elencare gli output nel tuo Cloud Storage di sincronizzare la directory di una VM con un bucket. Aggiorna BUCKET e WORK_DIR con le variabili specificato nel file
nextflow.config
.gcloud storage ls gs://BUCKET/WORK_DIR
L'output mostra una cartella per ciascuna delle attività eseguite. Vai all'elenco i contenuti delle sottodirectory successive per vedere tutti i file creati della pipeline. Aggiorna TASK_FOLDER una delle cartelle delle attività elencato dal comando precedente.
gcloud storage ls gs://BUCKET/WORK_DIR/FOLDER/TASK_FOLDER
Puoi visualizzare i file intermedi creati dalla pipeline e scegliere quali conservare o rimuoverle per ridurre i costi associate a Cloud Storage. Per rimuovere i file, consulta l'articolo sull'eliminazione dei file intermedi nel bucket Cloud Storage.
Risoluzione dei problemi
Se riscontri problemi durante l'esecuzione della pipeline, consulta Risoluzione dei problemi dell'API Cloud Life Sciences.
Se la pipeline presenta errori, puoi controllare i log per ogni attività osservando dei file di log in ognuna delle cartelle di Cloud Storage,
.command.err
,.command.log
,.command.out
e così via.
Esegui la pulizia
Per evitare che al tuo Account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo tutorial, elimina il progetto che contiene le risorse oppure mantieni il progetto ed elimina le singole risorse.
Al termine del tutorial, puoi eseguire la pulizia delle risorse che hai creato in modo che smettono di usare la quota e comportano addebiti. Le seguenti sezioni descrivono come eliminare o disattivare queste risorse.
Elimina i file intermedi nel bucket Cloud Storage
Quando esegui la pipeline, i file intermedi vengono archiviati in
gs://BUCKET/WORK_DIR
. Puoi
rimuovere i file al termine del flusso di lavoro per ridurre
Costi di Cloud Storage.
Per visualizzare la quantità di spazio utilizzata nella directory, esegui questo comando:
gcloud storage du gs://BUCKET/WORK_DIR --readable-sizes --summarize
Per rimuovere file da WORK_DIR, completa i seguenti passaggi:
Console
Nella console di Cloud Storage, apri la pagina Browser Storage:
Vai al BUCKET e vai al WORK_DIR specificato nel file
nextflow.config
.Sfoglia le sottocartelle ed elimina i file indesiderati. . Per eliminare tutti i file, elimina l'intero WORK_DIR.
gcloud
Apri Cloud Shell ed esegui questo comando:
Per rimuovere i file intermedi in WORK_DIR esegui questo comando:
gcloud storage rm gs://BUCKET/WORK_DIR/**
Elimina il progetto
Il modo più semplice per eliminare la fatturazione 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
Le pagine seguenti forniscono ulteriori informazioni di base, documentazione e assistenza per l'utilizzo di Nextflow: