Este tutorial explica como executar um pipeline do Nextflow no Batch. Especificamente, este tutorial executa o pipeline de ciências da vida de exemplo rnaseq-nf
do Nextflow, que quantifica as caraterísticas genómicas a partir de dados de leitura curta através do RNA-Seq.
Este tutorial destina-se a utilizadores do Batch que querem usar o Nextflow com o Batch.
O Nextflow é um software de código aberto para orquestrar fluxos de trabalho de bioinformática.
Objetivos
Ao concluir este tutorial, vai aprender a fazer o seguinte:
- Instale o Nextflow no Cloud Shell.
- Crie um contentor do Cloud Storage.
- Configure um pipeline do Nextflow.
- Execute um pipeline de exemplo com o Nextflow no Batch.
- Veja as saídas do pipeline.
- Para evitar incorrer em custos adicionais, faça uma das seguintes ações:
- Elimine um projeto.
- Elimine recursos individuais.
Custos
Neste documento, usa os seguintes componentes faturáveis do Google Cloud:
- Batch
- Cloud Storage
Para gerar uma estimativa de custos com base na sua utilização projetada,
use a calculadora de preços.
Normalmente, os recursos criados neste tutorial custam menos de 1 €, se concluir todos os passos, incluindo a limpeza, de forma atempada.
Antes de começar
- 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.
-
Install the Google Cloud CLI.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init
-
Create or select a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Batch, Cloud Storage, Compute Engine, and Logging APIs:
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles.gcloud services enable batch.googleapis.com
compute.googleapis.com logging.googleapis.com storage.googleapis.com -
Install the Google Cloud CLI.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init
-
Create or select a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Batch, Cloud Storage, Compute Engine, and Logging APIs:
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles.gcloud services enable batch.googleapis.com
compute.googleapis.com logging.googleapis.com storage.googleapis.com -
Certifique-se de que o seu projeto tem uma rede da nuvem virtual privada (VPC) com uma configuração de rede válida para este tutorial.
Este tutorial pressupõe que está a usar a rede
default
. Por predefinição, Google Cloud os recursos usam a rededefault
, que fornece o acesso à rede necessário para este tutorial. -
Certifique-se de que o seu projeto tem, pelo menos, uma conta de serviço com as autorizações necessárias para executar a tarefa em lote neste tutorial.
Por predefinição, as tarefas usam a conta de serviço predefinida do Compute Engine, à qual é concedida automaticamente a função do IAM Editor (
roles/editor
) e que já tem todas as autorizações necessárias para este tutorial.Para garantir que a conta de serviço da tarefa tem as autorizações necessárias para permitir que o agente do serviço Batch crie e aceda a recursos para tarefas do Batch, peça ao seu administrador para conceder à conta de serviço da tarefa as seguintes funções do IAM:
-
Batch Agent Reporter (
roles/batch.agentReporter
) no projeto -
Administrador de armazenamento (
roles/storage.admin
) no projeto -
(Recomendado) Permitir que os trabalhos gerem registos no Cloud Logging:
Logs Writer (
roles/logging.logWriter
) no projeto
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
O administrador também pode conceder à conta de serviço da tarefa as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.
-
Batch Agent Reporter (
-
Certifique-se de que tem as autorizações necessárias para este tutorial.
Para receber as autorizações de que precisa para concluir este tutorial, peça ao seu administrador que lhe conceda as seguintes funções do IAM:
-
Editor de tarefas em lote (
roles/batch.jobsEditor
) no projeto -
Utilizador da conta de serviço (
roles/iam.serviceAccountUser
) na conta de serviço da tarefa -
Administrador de objetos de armazenamento (
roles/storage.objectAdmin
) no projeto
-
Editor de tarefas em lote (
-
Instale o Nextflow:
curl -s -L https://github.com/nextflow-io/nextflow/releases/download/v23.04.1/nextflow | bash
O resultado deve ser semelhante ao seguinte:
N E X T F L O W version 23.04.1 build 5866 created 15-04-2023 06:51 UTC cite doi:10.1038/nbt.3820 http://nextflow.io Nextflow installation completed. Please note: - the executable file `nextflow` has been created in the folder: ... - you may complete the installation by moving it to a directory in your $PATH
Na Google Cloud consola, aceda à página Recipientes.
Clique em
Criar.Na página Criar um contentor, introduza um nome globalmente exclusivo para o seu contentor.
Clique em Criar.
Na janela O acesso público vai ser impedido, clique em Confirmar.
Clone o repositório de tubagens de exemplo:
git clone https://github.com/nextflow-io/rnaseq-nf.git
Aceda à pasta
rnaseq-nf
:cd rnaseq-nf
Abra o ficheiro
nextflow.config
:nano nextflow.config
O ficheiro deve conter a seguinte secção
gcb
:gcb { 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-batch' process.container = 'quay.io/nextflow/rnaseq-nf:v1.1' workDir = 'gs://BUCKET_NAME/WORK_DIRECTORY' google.region = 'REGION' }
Na secção
gcb
, faça o seguinte:Substitua
BUCKET_NAME
pelo nome do contentor do Cloud Storage que criou nos passos anteriores.Substitua
WORK_DIRECTORY
pelo nome de uma nova pasta que o pipeline pode usar para armazenar registos e resultados.Por exemplo, introduza
workDir
.Substitua
REGION
pela região a usar.Por exemplo, introduza
us-central1
.Após o campo
google.region
, adicione os seguintes campos:Adicione o campo
google.project
:google.project = 'PROJECT_ID'
Substitua
PROJECT_ID
pelo ID do projeto do projeto Google Cloud atual.Se não estiver a usar a conta de serviço predefinida do Compute Engine como conta de serviço da tarefa, adicione o campo
google.batch.serviceAccountEmail
:google.batch.serviceAccountEmail = 'SERVICE_ACCOUNT_EMAIL'
Substitua
SERVICE_ACCOUNT_EMAIL
pelo endereço de email da conta de serviço da tarefa que preparou para este tutorial.
Para guardar as edições, faça o seguinte:
Prima
Control+S
.Introduza
Y
.Prima
Enter
.
Na Google Cloud consola, aceda à página Recipientes.
Na coluna Nome, clique no nome do contentor que criou nos passos anteriores.
Na página Detalhes do contentor, abra a pasta
WORK_DIRECTORY
.BUCKET_NAME
: o nome do contentor que criou nos passos anteriores.WORK_DIRECTORY
: o diretório que especificou no ficheironextflow.config
.Na Google Cloud consola, aceda à página Recipientes.
Na coluna Nome, clique no nome do contentor que criou nos passos anteriores.
Na página Detalhes do contentor, selecione a linha que contém a pasta
WORK_DIRECTORY
e, de seguida, faça o seguinte:Clique em Eliminar.
Para confirmar, introduza
DELETE
e, de seguida, clique em Eliminar.
BUCKET_NAME
: o nome do contentor que especificou nos passos anteriores.WORK_DIRECTORY
: o diretório para armazenar os ficheiros de saída do pipeline que especificou nos passos anteriores.Para saber como implementar fluxos de trabalho do Nextflow, consulte o repositório do GitHub do Nextflow.
Para saber mais sobre os processos, os scripts e as opções de configuração do Nextflow, consulte a documentação do Nextflow.
Crie um contentor do Cloud Storage
Para criar um contentor do Cloud Storage para armazenar ficheiros de trabalho e saída temporários do pipeline Nextflow, use a Google Cloud consola ou a linha de comandos.
Consola
Para criar um contentor do Cloud Storage através da Google Cloud consola, siga estes passos:
gcloud
Para criar um contentor do Cloud Storage através da CLI do Google Cloud,
use o comando
gcloud storage buckets create
.
gcloud storage buckets create gs://BUCKET_NAME
Substitua BUCKET_NAME
por um nome globalmente exclusivo para o seu contentor.
Se o pedido for bem-sucedido, a saída deve ser semelhante à seguinte:
Creating gs://BUCKET_NAME/...
```
Configure o Nextflow
Para configurar o pipeline do Nextflow para ser executado no Batch, siga estes passos na linha de comandos:
Execute a pipeline
Execute o pipeline de exemplo do Nextflow através da linha de comandos:
../nextflow run nextflow-io/rnaseq-nf -profile gcb
O pipeline executa um pequeno conjunto de dados com as definições que forneceu nos passos anteriores. Esta operação pode demorar até 10 minutos a ser concluída.
Depois de a pipeline terminar a execução, o resultado deve ser semelhante ao seguinte:
N E X T F L O W ~ version 23.04.1
Launching `https://github.com/nextflow-io/rnaseq-nf` [crazy_curry] DSL2 - revision: 88b8ef803a [master]
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
Uploading local `bin` scripts folder to gs://example-bucket/workdir/tmp/53/2847f2b832456a88a8e4cd44eec00a/bin
executor > google-batch (4)
[67/71b856] process > RNASEQ:INDEX (transcript) [100%] 1 of 1 ✔
[0c/2c79c6] process > RNASEQ:FASTQC (FASTQC on gut) [100%] 1 of 1 ✔
[a9/571723] process > RNASEQ:QUANT (gut) [100%] 1 of 1 ✔
[9a/1f0dd4] process > MULTIQC [100%] 1 of 1 ✔
Done! Open the following report in your browser --> results/multiqc_report.html
Completed at: 20-Apr-2023 15:44:55
Duration : 10m 13s
CPU hours : (a few seconds)
Succeeded : 4
Veja as saídas do pipeline
Após a conclusão da execução do pipeline, este armazena ficheiros de saída, registos, erros ou ficheiros temporários no ficheiro results/qc_report.html
na pasta WORK_DIRECTORY
do seu contentor do Cloud Storage.
Para verificar os ficheiros de saída do pipeline na pasta WORK_DIRECTORY
do seu contentor do Cloud Storage, pode usar a consola Google Cloud ou a linha de comandos.
Consola
Para verificar os ficheiros de saída do pipeline através da Google Cloud consola, siga estes passos:
Existe uma pasta para cada tarefa separada que o fluxo de trabalho executa. Cada pasta contém os comandos executados, os ficheiros de saída e os ficheiros temporários criados pelo pipeline.
gcloud
Para verificar os ficheiros de saída do pipeline através da CLI gcloud, use o comando gcloud storage ls
.
gcloud storage ls gs://BUCKET_NAME/WORK_DIRECTORY
Substitua o seguinte:
A saída apresenta uma pasta para cada tarefa separada que o pipeline executa. Cada pasta contém os comandos executados, os ficheiros de saída e os ficheiros temporários criados pelo pipeline.
Limpar
Para evitar incorrer em custos na sua conta do Google Cloud pelos recursos usados neste tutorial, elimine o projeto que contém os recursos ou mantenha o projeto e elimine os recursos individuais.
Elimine o projeto
A forma mais fácil de eliminar a faturação é eliminar o projeto atual.
Para eliminar o projeto atual, use a Google Cloud consola ou a CLI gcloud.
Consola
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
gcloud
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
Elimine recursos individuais
Se quiser continuar a usar o projeto atual, elimine os recursos individuais usados neste tutorial.
Elimine o contentor
Se já não precisar do contentor que usou neste tutorial, elimine-o.
Elimine os ficheiros de saída no contentor
Depois de a pipeline terminar a execução, cria e armazena ficheiros de saída na pasta WORK_DIRECTORY
do seu contentor do Cloud Storage.
Para reduzir os custos do armazenamento na nuvem para a conta atual, pode eliminar a pasta que contém os ficheiros de saída do pipeline através da consola ou da linha de comandos.Google Cloud Google Cloud
Consola
Para eliminar a pasta WORK_DIRECTORY
e todos os ficheiros de saída do seu contentor do Cloud Storage através da consolaGoogle Cloud , siga estes passos:
gcloud
Para eliminar a pasta WORK_DIRECTORY
e todos os ficheiros de saída do seu contentor do Cloud Storage através da CLI gcloud, use o comando gcloud storage rm
com a flag --recursive
.
gcloud storage rm gs://BUCKET_NAME/WORK_DIRECTORY \
--recursive
Substitua o seguinte: