View a markdown version of this page

Especificações da definição do fluxo de trabalho do Nextflow - AWS HealthOmics

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Especificações da definição do fluxo de trabalho do Nextflow

HealthOmics suporta Nextflow DSL1 e DSL2. Para obter detalhes, consulte Suporte à versão Nextflow.

O Nextflow DSL2 é baseado na linguagem de programação Groovy, portanto, os parâmetros são dinâmicos e a coerção de tipo é possível usando as mesmas regras do Groovy. Os parâmetros e valores fornecidos pelo JSON de entrada estão disponíveis no mapa parameters (params) do fluxo de trabalho.

Use plug-ins de esquema nf e validação de nf

nota

Resumo do HealthOmics suporte para plug-ins:

  • v22.04 — sem suporte para plug-ins

  • v23.10 — suporta e nf-schema nf-validation

  • v24.10 — suporta nf-schema

  • v25.10, v26.04 — suportanf-schema,, e nf-core-utils nf-fgbio nf-prov

HealthOmics fornece o seguinte suporte para plug-ins do Nextflow:

  • Para o Nextflow v23.10, HealthOmics pré-instala o plugin nf-validation @1 .1.1.

  • Para o Nextflow v23.10 e v24.10, HealthOmics pré-instala o plugin nf-schema @2 .3.0.

  • Para o Nextflow v25.10, HealthOmics pré-instala os plug-ins nf-schema @2 .6.1, nf-core-utils @0 .4.0, nf-prov @1 .7.0 e nf-fgbio @1 .0.1.

  • Para o Nextflow v26.04, HealthOmics pré-instala os plug-ins nf-schema @2 .7.2, nf-core-utils @0 .4.0, nf-prov @1 .7.0 e nf-fgbio @1 .0.1.

  • Você não pode recuperar plug-ins adicionais durante a execução de um fluxo de trabalho. HealthOmics ignora qualquer outra versão do plug-in que você especificar no nextflow.config arquivo.

  • Para o Nextflow v24 e superior, nf-schema é a nova versão do plug-in obsoleto. nf-validation Para obter mais informações, consulte nf-schema no repositório Nextflow. GitHub

Especifique URIs de armazenamento

Quando um Amazon S3 ou HealthOmics URI é usado para construir um arquivo ou objeto de caminho do Nextflow, ele disponibiliza o objeto correspondente para o fluxo de trabalho, desde que o acesso de leitura seja concedido. O uso de prefixos ou diretórios é permitido para URIs do Amazon S3. Para obter exemplos, consulte Formatos de parâmetros de entrada do Amazon S3.

HealthOmics suporta parcialmente o uso de padrões globais em URIs do Amazon S3 ou HealthOmics URIs de armazenamento. Use padrões Glob na definição do fluxo de trabalho para a criação de path nossos file canais. Para saber o comportamento esperado e os casos exatos, consulteNextflow: Tratamento do padrão Glob nas entradas do Amazon S3.

Diretivas Nextflow

Você configura as diretivas do Nextflow no arquivo de configuração do Nextflow ou na definição do fluxo de trabalho. A lista a seguir mostra a ordem de precedência HealthOmics usada para aplicar as definições de configuração, da prioridade mais baixa para a mais alta:

  1. Configuração global no arquivo de configuração.

  2. Seção de tarefas da definição do fluxo de trabalho.

  3. Task-specific seletores no arquivo de configuração.

Estratégia de repetição de tarefas usando ErrorStrategy

Use a errorStrategy diretiva para definir a estratégia para erros de tarefas. Por padrão, quando uma tarefa retorna com uma indicação de erro (um status de saída diferente de zero), a tarefa para e HealthOmics encerra toda a execução. Se você definir comoretry, errorStrategy tente uma nova HealthOmics tentativa da tarefa que falhou. Para aumentar o número de novas tentativas, consulteTentativas de repetição de tarefas usando MaxRetries.

process { label 'my_label' errorStrategy 'retry' script: """ your-command-here """ }

Para obter informações sobre como HealthOmics lidar com novas tentativas de tarefas durante uma execução, consulte. Tentativas de tarefas

Tentativas de repetição de tarefas usando MaxRetries

Por padrão, HealthOmics não tenta nenhuma nova tentativa de uma tarefa que falhou ou tenta uma nova tentativa se você configurar. errorStrategy Para aumentar o número máximo de novas tentativas, errorStrategy defina retry e configure o número máximo de novas tentativas usando a maxRetries diretiva.

O exemplo a seguir define o número máximo de tentativas como 3 na configuração global.

process { errorStrategy = 'retry' maxRetries = 3 }

O exemplo a seguir mostra como definir maxRetries na seção de tarefas da definição do fluxo de trabalho.

process myTask { label 'my_label' errorStrategy 'retry' maxRetries 3 script: """ your-command-here """ }

O exemplo a seguir mostra como especificar a configuração específica da tarefa no arquivo de configuração do Nextflow, com base nos seletores de nome ou rótulo.

process { withLabel: 'my_label' { errorStrategy = 'retry' maxRetries = 3 } withName: 'myTask' { errorStrategy = 'retry' maxRetries = 3 } }

Desativar a tarefa e tentar novamente usando o omics 5xx RetryOn

Para o Nextflow v23 e versões posteriores, HealthOmics oferece suporte a novas tentativas de tarefas se a tarefa falhar devido a erros de serviço (códigos de status HTTP 5XX). Por padrão, HealthOmics tenta até duas novas tentativas de uma tarefa que falhou.

Você pode configurar omicsRetryOn5xx para desativar a nova tentativa de tarefa devido a erros de serviço. Para obter mais informações sobre a repetição da tarefa HealthOmics, consulteTentativas de tarefas.

O exemplo a seguir configura omicsRetryOn5xx na configuração global a opção de não tentar novamente a tarefa.

process { omicsRetryOn5xx = false }

O exemplo a seguir mostra como configurar omicsRetryOn5xx na seção de tarefas da definição do fluxo de trabalho.

process myTask { label 'my_label' omicsRetryOn5xx = false script: """ your-command-here """ }

O exemplo a seguir mostra omicsRetryOn5xx como definir uma configuração específica da tarefa no arquivo de configuração do Nextflow, com base nos seletores de nome ou rótulo.

process { withLabel: 'my_label' { omicsRetryOn5xx = false } withName: 'myTask' { omicsRetryOn5xx = false } }

Duração da tarefa usando a diretiva de tempo

HealthOmics fornece uma cota ajustável (consulteHealthOmics cotas de serviço) para especificar a duração máxima de uma corrida. Para fluxos de trabalho Nextflow v23 e posteriores, você também pode especificar durações máximas de tarefas usando a diretiva Nextflow. time

Durante o desenvolvimento de um novo fluxo de trabalho, definir a duração máxima da tarefa ajuda você a identificar tarefas descontroladas e tarefas de longa duração.

Para obter mais informações sobre a diretiva de horário Nextflow, consulte a diretiva de tempo na referência do Nextflow.

HealthOmics fornece o seguinte suporte para a diretiva de horário Nextflow:

  1. HealthOmics suporta granularidade de 1 minuto para a diretiva de tempo. Você pode especificar um valor entre 60 segundos e o valor máximo da duração da execução.

  2. Se você inserir um valor menor que 60, HealthOmics arredonda para 60 segundos. Para valores acima de 60, HealthOmics arredonda para baixo para o minuto mais próximo.

  3. Se o fluxo de trabalho suportar novas tentativas para uma tarefa, HealthOmics repita a tarefa se o tempo limite for atingido.

  4. Se uma tarefa atingir o tempo limite (ou se a última tentativa expirar), HealthOmics cancela a tarefa. Essa operação pode durar de um a dois minutos.

  5. No tempo limite da tarefa, HealthOmics define a execução e o status da tarefa como falhados e cancela as outras tarefas na execução (para tarefas no status Iniciante, Pendente ou Em Execução). HealthOmics exporta as saídas das tarefas concluídas antes do tempo limite para o local de saída designado do S3.

  6. O tempo que uma tarefa passa no status pendente não conta para a duração da tarefa.

  7. Se a execução fizer parte de um grupo de execução e o grupo de execução atingir o tempo limite antes do cronômetro da tarefa, a execução e a tarefa passarão para o status de falha.

Especifique a duração do tempo limite usando uma ou mais das seguintes unidades:ms,s, mh, oud.

O exemplo a seguir mostra como especificar a configuração global no arquivo de configuração do Nextflow. Ele define um tempo limite global de 1 hora e 30 minutos.

process { time = '1h30m' }

O exemplo a seguir mostra como especificar uma diretiva de tempo na seção de tarefas da definição do fluxo de trabalho. Este exemplo define um tempo limite de 3 dias, 5 horas e 4 minutos. Esse valor tem precedência sobre o valor global no arquivo de configuração, mas não tem precedência sobre uma diretiva de tempo específica da tarefa no arquivo de my_label configuração.

process myTask { label 'my_label' time '3d5h4m' script: """ your-command-here """ }

O exemplo a seguir mostra como especificar diretivas de tempo específicas da tarefa no arquivo de configuração do Nextflow, com base nos seletores de nome ou rótulo. Este exemplo define um valor de tempo limite de tarefa global de 30 minutos. Ele define um valor de 2 horas para a tarefa myTask e define um valor de 3 horas para tarefas com rótulomy_label. Para tarefas que correspondem ao seletor, esses valores têm precedência sobre o valor global e o valor na definição do fluxo de trabalho.

process { time = '30m' withLabel: 'my_label' { time = '3h' } withName: 'myTask' { time = '2h' } }

Use perfis Nextflow

Os perfis do Nextflow são conjuntos nomeados de configurações que você pode selecionar em tempo de execução. Defina perfis no profiles bloco do seu nextflow.config arquivo:

profiles { standard { process.cpus = 2 process.memory = '4 GB' } production { process.cpus = 16 process.memory = '64 GB' params.input = 's3://bucket/production-data.bam' } }

Ao iniciar uma execução, especifique um ou mais perfis usando o engineSettings parâmetro. HealthOmics passa o -profile sinalizador para o mecanismo Nextflow. Para obter mais informações, consulte Especifique as configurações do mecanismo Nextflow.

aws omics start-run \ --workflow-id workflow-id \ --role-arn role-arn \ --output-uri s3://bucket/prefix/ \ --engine-settings '{"profile": "production"}'

Quando vários perfis são especificados (por exemplo,"test,docker"), o Nextflow os aplica na ordem em que são especificados na linha de comando. Perfis posteriores substituem os anteriores devido a configurações conflitantes. Para versões do Nextflow inferiores a 26, os perfis são aplicados na ordem em que são definidos no arquivo de configuração, em vez da ordem da linha de comando.

Observe o seguinte:

  • O suporte de perfil está disponível para todas as versões HealthOmics suportadas do Nextflow.

  • Os perfis podem conter parâmetros, diretivas de processo, includeConfig declarações e substituições de manifesto (inclusive). manifest.nextflowVersion

  • Os parâmetros de execução explícitos têm precedência sobre os valores dos parâmetros definidos pelo perfil.

  • Se você especificar um perfil inexistente, HealthOmics retornará um erro de validação.

  • Os perfis devem ser definidos no arquivo zip de definição do fluxo de trabalho. HealthOmics não suporta a busca de definições de perfil de fontes externas.

  • Se você não especificar um perfil, a execução usará o standard perfil se ele estiver definido em perfis na definição do fluxo de trabalho. Caso contrário, a execução usa a configuração padrão (de nível superior).

  • Ao usar perfis, recomendamos fixar a versão do Nextflow em sua definição de fluxo de trabalho manifest.nextflowVersion para garantir um comportamento consistente do aplicativo de perfil em todas as execuções.

Exportar conteúdo em nível de fluxo de trabalho

Para o Nextflow v25.10 e versões posteriores, você pode exportar arquivos produzidos fora de tarefas individuais, como relatórios de proveniência ou DAGs de pipeline. Para exportar esses arquivos, escreva-os em/mnt/workflow/output/. HealthOmics exporta arquivos colocados nesse diretório para o output/ prefixo no local de saída do Amazon S3 da sua execução.

O exemplo a seguir mostra como configurar o nf-prov plug-in para escrever um relatório de proveniência. /mnt/workflow/output/

prov { formats { bco { file = "/mnt/workflow/output/pipeline_info/manifest.bco.json" } } }

Você também pode passar esse caminho como um parâmetro no JSON de entrada da sua execução. Essa abordagem é comum com fluxos de trabalho nf-core que usam. params.outdir

{ "outdir": "/mnt/workflow/output/" }

Exportar conteúdo da tarefa

Para fluxos de trabalho escritos em Nextflow, defina uma diretiva PublishDir para exportar o conteúdo da tarefa para seu bucket de saída do Amazon S3. Conforme mostrado no exemplo a seguir, defina o valor publishDir como/mnt/workflow/pubdir. Para exportar arquivos para o Amazon S3, os arquivos devem estar nesse diretório.

nextflow.enable.dsl=2 workflow { CramToBamTask(params.ref_fasta, params.ref_fasta_index, params.ref_dict, params.input_cram, params.sample_name) ValidateSamFile(CramToBamTask.out.outputBam) } process CramToBamTask { container "<account>.dkr.ecr.us-west-2.amazonaws.com/genomes-in-the-cloud" publishDir "/mnt/workflow/pubdir" input: path ref_fasta path ref_fasta_index path ref_dict path input_cram val sample_name output: path "${sample_name}.bam", emit: outputBam path "${sample_name}.bai", emit: outputBai script: """ set -eo pipefail samtools view -h -T $ref_fasta $input_cram | samtools view -b -o ${sample_name}.bam - samtools index -b ${sample_name}.bam mv ${sample_name}.bam.bai ${sample_name}.bai """ } process ValidateSamFile { container "<account>.dkr.ecr.us-west-2.amazonaws.com/genomes-in-the-cloud" publishDir "/mnt/workflow/pubdir" input: file input_bam output: path "validation_report" script: """ java -Xmx3G -jar /usr/gitc/picard.jar \ ValidateSamFile \ INPUT=${input_bam} \ OUTPUT=validation_report \ MODE=SUMMARY \ IS_BISULFITE_SEQUENCED=false """ }

Para o Nextflow v25.10 e versões posteriores, como alternativa, você pode usar as saídas do fluxo de trabalho para publishDir exportar o conteúdo da tarefa. O exemplo a seguir mostra como definir um output bloco de fluxo de trabalho que exporta resultados de tarefas para o Amazon S3.

process myTask { input: val data output: path 'result.txt' script: """ echo ${data} > result.txt """ } workflow { main: output_file = myTask('hello') publish: results = output_file } output { results { path '.' } }

Para obter mais informações sobre as saídas do fluxo de trabalho, consulte Saídas do fluxo de trabalho na documentação do Nextflow.

Gere relatórios de execução do Nextflow

O Nextflow pode produzir quatro relatórios integrados para cada execução: um relatório de execução (report), um cronograma (), um arquivo de rastreamento (timeline) e um diagrama de fluxo de trabalho (trace). dag HealthOmics Para exportar esses arquivos para o local de saída do Amazon S3 da sua execução, configure cada um para escrever sua saída /mnt/workflow/output/ em seu nextflow.config arquivo:

report { enabled = true file = '/mnt/workflow/output/report.html' overwrite = true } timeline { enabled = true file = '/mnt/workflow/output/timeline.html' overwrite = true } trace { enabled = true file = '/mnt/workflow/output/trace.txt' overwrite = true } dag { enabled = true file = '/mnt/workflow/output/dag.html' overwrite = true }

HealthOmics exporta arquivos gravados sob /mnt/workflow/output/ o output/ prefixo no local de saída do Amazon S3 da sua execução. Para obter mais informações sobre esse caminho de exportação, consulteExportar conteúdo em nível de fluxo de trabalho. Os relatórios escritos externamente não /mnt/workflow/output/ são exportados para o local de saída do Amazon S3 da sua execução.

Os contêineres de tarefas devem incluir ps

Quando o trace relatórioreport,timeline, ou está ativado, o Nextflow coleta métricas por tarefa invocando ps dentro de cada contêiner de tarefas. A imagem do contêiner que você especifica com a container diretiva deve incluir o ps comando. Na maioria das distribuições Linux, instale-o com o pacote procps (Debian/Ubuntu) ou procps-ng (Amazon Linux, Red Hat, Fedora). Se um processo não declarar uma container diretiva, HealthOmics executa a tarefa em um contêiner padrão que já incluips.

Formato de diagrama de fluxo

O dag relatório suporta vários formatos de saída, selecionados pela extensão dedag.file. Os formatos HTML, Mermaid e DOT são renderizados diretamente pelo Nextflow e não requerem ferramentas adicionais. Os formatos PDF, PNG e SVG exigem o Graphviz, que não está incluído no HealthOmics mecanismo Nextflow. Se dag.file estiver definido como um caminho PDF, PNG ou SVG, o Nextflow registra um aviso e grava o diagrama do fluxo de trabalho como um arquivo de .dot origem em seu lugar; a execução ainda é concluída com êxito. Recomendamos dag.file definir um .dot caminho.html,.mmd, ou para evitar o aviso e produzir o formato solicitado.

Especifique a versão da sintaxe do Nextflow

O Nextflow v26.04.0 usa o analisador de sintaxe estrito (v2) por padrão. Essa é uma alteração importante para fluxos de trabalho escritos usando a sintaxe legada (v1), que é o padrão no Nextflow v25.10.0 e versões anteriores. Para obter informações sobre a sintaxe v2, consulte Sintaxe estrita na documentação do Seqera Nextflow.

Para executar um fluxo de trabalho criado com base no analisador legado (v1), engineSettings.syntaxVersion defina v1 como na solicitação: StartRun

{ "engineSettings": { "syntaxVersion": "v1" } }

Para o Nextflow v25.10.0 e versões anteriores, HealthOmics não oferece suporte ao analisador v2.

Validação automática de sintaxe durante a criação do fluxo de trabalho

HealthOmics executa automaticamente o linter DSL2 estrito integrado do Nextflow (nf-lang/v2) quando você cria ou atualiza um fluxo de trabalho DSL2 do Nextflow. Este linter funciona durante CreateWorkflow e. CreateWorkflowVersion Ela se aplica a todas as versões compatíveis do DSL2 (v22.04, v23.10, v24.10, v25.10 e v26.04). Os fluxos de trabalho DSL1 não estão bloqueados.

O linter opera no modo sem bloqueio. As descobertas do Lint não impedem que o fluxo de trabalho se torne ATIVO. As descobertas aparecem como JSON estruturado no statusMessage campo da GetWorkflow resposta.

nota

O linter integrado valida sua sintaxe de definição de fluxo de trabalho no momento da criação. É diferente do analisador de sintaxe estrito disponível para o Nextflow v26.04, que é controlado e afeta o comportamento do tempo de execução. engineSettings.syntaxVersion O linter verifica a sintaxe em todas as versões do DSL2 no momento da criação, independentemente de qual analisador o fluxo de trabalho usa em tempo de execução. No Nextflow v22.04, v23.10 e v24.10 (gramática antiga), as descobertas são consultivas. No Nextflow v25.10 e v26.04, as descobertas refletem os requisitos de sintaxe do modo estrito.

Para obter mais informações sobre o formato de saída do lint e como abordar as descobertas, consulteFluxo de trabalho intermitente em HealthOmics.

Usando o armazenamento de rascunhos com eficiência no Nextflow

A scratch diretiva do Nextflow controla onde um processo grava seus arquivos de trabalho temporários. Quando o armazenamento efêmero estiver habilitado (scratchStorageMode: LOCAL), use a scratch diretiva para direcionar o scratch I/O para o volume local rápido em. /tmp

A tabela a seguir descreve os valores de scratch diretiva suportados e seu comportamento em HealthOmics:

Valor Comportamento em HealthOmics Recomendação
scratch true Usa $TMPDIR. I/O O Scratch é direcionado para o volume efêmero local quando está. scratchStorageMode LOCAL Recomendado
scratch '/some/path' Usa o caminho literal especificado como o diretório de rascunho. Para usar o armazenamento temporário, defina o caminho para /tmp ou um subdiretório de. /tmp O caminho deve existir no contêiner e ser gravável. Funciona quando o caminho está abaixo /tmp
scratch 'ram-disk' Tentativas de usar /dev/shm (tmpfs na RAM). Isso não é recomendado para armazenamento local de arranhões em HealthOmics. Não recomendado

A abordagem recomendada é definir scratch true em sua definição de processo, que usa automaticamente $TMPDIR e não exige nenhuma configuração de caminho:

process my_process { scratch true disk '200 GB' script: """ my-tool --input ${input} --output ${output} """ }

Para obter mais informações sobre armazenamento efêmero e a disk diretiva, consulte. Armazenamento temporário para tarefas de fluxo de trabalho HealthOmics

Notas de lançamento do Nextflow v26.04

As tabelas a seguir resumem o HealthOmics suporte para novos recursos, aprimoramentos e suspensões lançados no Nextflow versão 26.04.

Novos recursos e aprimoramentos

Recurso Da versão HealthOmics apoio Observações
Analisador de sintaxe estrito (padrão) 26,04 Sim Ativado por padrão a partir da v26.04. Analisador legado disponível syntaxVersion: "v1" nas configurações do motor.
Tipos de registro 26,04 Sim Para obter mais informações, consulte Registros na documentação do Seqera Nextflow.
Resumos de saída do fluxo de trabalho 26,04 Sim Imprime um resumo das saídas do fluxo de trabalho ao concluir a execução. Formato de saída configurável através outputFormat das configurações do motor. Para obter mais informações, consulte Especifique as configurações do mecanismo Nextflow.
Modo de registro do agente 26,04 Sim Configurável por meio agentMode das configurações do motor. Para obter mais informações, consulte Especifique as configurações do mecanismo Nextflow.
Sistema de módulos (Nextflow Registry) 26,04 Não HealthOmics fluxos de trabalho são executados em uma rede isolada sem acesso externo à Internet. Você pode incluir módulos diretamente no zip do seu fluxo de trabalho.
Digitação estática (pré-visualização) 26,04 Não HealthOmics não oferece suporte a recursos de visualização.
Auto-load parâmetros de coleta de arquivos 26,04 Não Requer digitação estática (pré-visualização), que HealthOmics não é compatível.
Multi-revision finalização da compra de oleodutos 26,04 N/A Não aplicável. HealthOmics não usa o checkout do Git-based pipeline.

Defasagens

Item obsoleto Da versão Impacto Ação recomendada
Método listFiles() 26,04 Aviso de depreciação Substitua porlistDirectory().
sinalizador nextflow.enable.strict 26,04 Não é mais necessário Remova da configuração. O modo estrito agora é o padrão.
manifest.defaultBranch 26,04 Não é mais necessário Remova da configuração. HealthOmics não usa o Git-based pipeline checkout e nunca suportou essa opção.