本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Nextflow 工作流程定义细节
HealthOmics 支持 Next DSL1 flow 和。 DSL2有关更多信息,请参阅 Nextflow版本支持。
Nextflow 基 DSL2 于 Groovy 编程语言,因此参数是动态的,并且可以使用与 Groovy 相同的规则进行类型强制。输入 JSON 提供的参数和值可在工作流程的参数 (params
) 映射中找到。
使用 nf 架构和 nf 验证插件
注意
插件 HealthOmics 支持摘要:
v22.04 — 不支持插件
v23.10 — 支持和
nf-schema
nf-validation
v24.10 — 支持
nf-schema
HealthOmics 为 Nextflow 插件提供了以下支持:
-
对于 Nextflow v23.10, HealthOmics 预安装 nf-validation @1 .1.1 插件。
-
对于 Nextflow v23.10 及更高版本, HealthOmics 预安装 nf-schema @2 .3.0 插件。
-
在工作流程运行期间,您无法检索其他插件。 HealthOmics 忽略您在
nextflow.config
文件中指定的任何其他插件版本。 -
对于 Nextflow v24 及更高版本,
nf-schema
是已弃用nf-validation
插件的新版本。有关更多信息,请参阅 Next GitHub flow 存储库中的 nf-schema。
指定存储 URIs
使用 Amazon S3 或 HealthOmics URI 构建 Nextflow 文件或路径对象时,只要授予读取权限,它就会使匹配的对象可供工作流程使用。Amazon S3 URIs 允许使用前缀或目录。有关示例,请参阅 亚马逊 S3 输入参数格式。
HealthOmics 支持在 Amazon S3 URIs 或 HealthOmics 存储 URIs中使用全局模式。在工作流程定义中使用 Glob 模式来创建path
或file
频道。
使用时间指令设置最大任务持续时间
HealthOmics 提供了可调整的配额(参见HealthOmics 服务配额),用于指定跑步的最大持续时间。对于 Nextflow v23 和 v24 工作流程,您还可以使用 Nextflow 时间指令指定最大任务持续时间。
在新工作流程开发过程中,设置最大任务持续时间可以帮助你捕捉失控的任务和长时间运行的任务。
有关 Nextflow 时间指令的更多信息,请参阅 Nextflow 参考中的时间指令
HealthOmics 为 Nextflow 时间指令提供了以下支持:
-
HealthOmics 支持时间指令的 1 分钟粒度。您可以指定一个介于 60 秒和最大运行持续时间值之间的值。
-
如果您输入的值小于 60,则将其 HealthOmics 四舍五入到 60 秒。对于大于 60 的值,向下 HealthOmics 舍入到最接近的分钟。
-
如果工作流程支持重试任务,则在任务超时时时 HealthOmics 重试该任务。
-
如果任务超时(或上次重试超时),则 HealthOmics 取消该任务。此操作的持续时间可能为一到两分钟。
-
任务超时时, HealthOmics 将运行和任务状态设置为失败,并取消运行中的其他任务(适用于处于 “启动”、“待处理” 或 “正在运行” 状态的任务)。 HealthOmics 将其在超时之前完成的任务的输出导出到您指定的 S3 输出位置。
-
任务处于待处理状态的时间不计入任务持续时间。
-
如果运行是运行组的一部分,并且运行组的超时时间早于任务计时器,则运行和任务将转换为失败状态。
使用以下一个或多个单位指定超时持续时间:ms
s
、m
、h
、或d
。您可以在 Nextflow 配置文件和工作流程定义中指定时间指令。以下列表显示优先级顺序,从低到高优先级:
-
配置文件中的全局配置。
-
工作流定义的任务部分。
-
配置文件中特定于任务的选择器。
以下示例说明如何在 Nextflow 配置文件中指定全局配置。它将全局超时设置为 1 小时 30 分钟:
process { time = '1h30m' }
以下示例说明如何在工作流定义的任务部分中指定时间指令。此示例将超时设置为 3 天、5 小时和 4 分钟。此值优先于配置文件中的全局值,但不优先于配置文件my_label
中特定于任务的时间指令:
process myTask { label 'my_label' time '3d5h4m' script: """ your-command-here """ }
以下示例说明如何根据名称或标签选择器在 Nextflow 配置文件中指定特定于任务的时间指令。此示例将全局任务超时值设置为 30 分钟。它将任务的值设置为 2 小时myTask
,将带有标签的任务的值设置为 3 小时my_label
。对于与选择器匹配的任务,这些值优先于全局值和工作流程定义中的值:
process { time = '30m' withLabel: 'my_label' { time = '3h' } withName: 'myTask' { time = '2h' } }
导出任务内容
对于用 Nextflow 编写的工作流程,请定义 PublishDir 指令以将任务内容导出到输出 Amazon S3 存储桶。如以下示例所示,将 p ublishDir 值设置为。/mnt/workflow/pubdir
要将文件导出到 Amazon S3,文件必须位于此目录中。
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 """ }