09-Nextflow Configuration(2)

2021-09-24  本文已影响0人  亦是旅人呐

Config scopes

配置设置可以组织在不同的作用域中,方法是用作用域标识符在属性名前加点前缀,或者使用花括号标记将相同作用域中的属性分组。下面的例子显示了这一点:

alpha.x  = 1
alpha.y  = 'string value..'

beta {
     p = 2
     q = 'another string ..'
}

Scope env

env作用域允许定义一个或多个变量,这些变量将被导出到将要执行工作流任务的环境中。

只需在变量名前加上env作用域的前缀,或者用花括号括起来,如下所示:

env.ALPHA = 'some value'
env.BETA = "$HOME/some/path"

env {
     DELTA = 'one more'
     GAMMA = "/my/path:$PATH"
}

Scope params

params作用域允许您定义可在管道脚本中访问的参数。只需在参数名称前加上params作用域或用花括号括起来,如下所示:

params.custom_param = 123
params.another_param = 'string value .. '

params {

   alpha_1 = true
   beta_2 = 'another string ..'

}

Scope process

process配置作用域允许您为管道中的流程提供默认配置。

您可以在这里指定process指令和executor部分中描述的任何属性。例子

process {
  executor='sge'
  queue='long'
  clusterOptions = '-pe smp 10 -l virtual_free=64G,h_rt=30:00:00'
}

通过使用此配置,管道中的所有进程都将通过SGE集群执行,并具有指定的设置。


Process selectors

withLabel选择器允许配置所有带标签指令的进程,如下所示:

process {
    withLabel: big_mem {
        cpus = 16
        memory = 64.GB
        queue = 'long'
    }
}

上面的配置示例为所有标注了big_mem标签的进程分配了16个cpu、64 Gb内存和长队列。
以同样的方式,withName选择器允许通过管道中的名称配置特定的进程。例如:

process {
    withName: hello {
        cpus = 4
        memory = 8.GB
        queue = 'short'
    }
}

Tip
标签和进程名都不需要用引号括起来,只要名称包含特殊字符(例如-,!等),或者它不是关键字或内置类型标识符。如果有疑问,可以用单引号或双引号字符将标签名称或进程名称括起来。


Selector expressions

标签和进程名选择器都允许使用正则表达式,以便对匹配指定模式条件的所有进程应用相同的配置。例如:

process {
    withLabel: 'foo|bar' {
        cpus = 2
        memory = 4.GB
    }
}

上面的配置片段将2个cpu和4 GB内存设置为带有标签foo和bar的注释进程。
可以对进程选择器进行反求,用特殊字符!作为前缀。例如:

process {
    withLabel: 'foo' { cpus = 2 }
    withLabel: '!foo' { cpus = 4 }
    withName: '!align.*' { queue = 'long' }
}

上面的配置片段为带foo标签的进程设置了2个cpu,为所有没有带foo标签的进程设置了4个cpu。最后,它将长队列的使用设置为所有名称不是以align开头的进程。


Selectors priority

当混合通用流程配置和选择器时,应用以下优先级规则(从低到高):

1、通用的配置过程。
2、工作流脚本中定义的特定于流程的指令。
3、withLabel选择器定义。
4、withName选择器定义。

process {
    cpus = 4
    withLabel: foo { cpus = 8 }
    withName: bar { cpus = 32 }
}

使用上面的配置片段,如果没有在工作流脚本中指定,所有工作流进程都使用4个cpu。此外,带有foo标签的进程使用8个cpu。最后,名为bar的进程使用32个cpu。


Scope executor

执行器配置范围允许您设置可选的执行器设置,如下表所示。

Name Description
name 使用执行人的名称,例如local、sge等
queueSize 执行器将以并行方式处理的任务数量(默认:100)
pollInterval 确定为检查进程终止而进行轮询的频率
dumpInterval 确定将执行器状态写入应用程序日志文件的频率(默认为5分钟)
queueStatInterval 确定从集群系统获取队列状态的频率。此设置仅由网格执行器使用(默认为1分钟)
exitReadTimeout 确定当进程被终止但退出文件不存在或为空时,执行器在返回错误状态之前等待多长时间。此设置仅由网格执行器使用(默认值:270秒)
killBatchSize 确定在单个命令执行中可以终止的作业数量(默认值:100)
submitRateLimit 确定每个时间单元的最大作业提交速率,例如“10秒”。每秒最多10个作业或“50/2分钟”,即每2分钟提交50个作业(默认:无限制)
perJobMemLimit 指定平台LSF每作业内存限制模式。看到LSF
jobName 确定提交给底层集群执行器(例如executor)的作业的名称。jobName = {"task.name -task.name ";注意:当使用此选项时,您需要确保生成的作业名称匹配底层批处理调度程序的验证约束
cpus 底层系统可用的cpu的最大数量(仅由本地执行器使用)
memory 底层系统可用的最大内存量(仅由本地执行程序使用)

执行器的设置可以定义如下:

executor {
    name = 'sge'
    queueSize = 200
    pollInterval = '30 sec'
}

当在管道中使用两个(或更多)不同的执行器时,可以通过在执行器名称前加上符号$并将其用作特殊的作用域标识符来分别指定它们的设置。例如:

executor {
  $sge {
      queueSize = 100
      pollInterval = '30sec'
  }

  $local {
      cpus = 8
      memory = '32 GB'
  }
}

上面的配置示例可以使用点符号重写,如下所示:

executor.$sge.queueSize = 100
executor.$sge.pollInterval = '30sec'
executor.$local.cpus = 8
executor.$local.memory = '32 GB'

Scope docker

docker配置作用域控制Nextflow如何执行docker容器。
可进行以下设置:

Name Description
enabled 将此标志改为true以启用Docker执行(默认为false)
envWhitelist 要包含在容器环境中的环境变量名列表,由逗号分隔
legacy 使用版本1.10后删除的命令行选项。x(默认值:false)
sudo 以sudo方式执行Docker run命令(默认为false)
tty 分配一个伪tty(默认值:false)
temp 将您选择的路径挂载到容器中作为/tmp目录。每次创建容器时,使用特殊值auto创建临时目录
remove 在执行之后清理容器(默认值:true)。详情请参见:https://docs.docker.com/engine/reference/run/#clean-up-rm
runOptions 此属性可用于提供docker run命令支持的任何额外命令行选项。详情请参见:https://docs.docker.com/engine/reference/run/
registry 获取Docker映像的注册表。它只能用于指定私有注册中心服务器。它不应该包括协议前缀,如http://
fixOwnership 修复由docker容器创建的文件的所有权问题
engineOptions 这个属性可以用来提供Docker引擎支持的任何选项,例如Docker [OPTIONS]
mountFlags 添加指定的标志到卷挂载,例如mountFlags = ' ro,Z '

上面的选项可以用docker作用域作为前缀,或者用花括号括起来,如下所示:s

process.container = 'nextflow/examples'

docker {
    enabled = true
    temp = 'auto'
}

阅读Docker containers页了解更多如何使用Docker容器与Nextflow


更多配置范围见
https://www.nextflow.io/docs/latest/config.html#config-scopes


上一篇下一篇

猜你喜欢

热点阅读