09-Nextflow Configuration(1)
Configuration file
当启动管道脚本时,Nextflow在多个位置查找配置文件。由于每个配置文件都可能包含冲突的设置,因此对源进行排序,以决定应用哪些设置。所有可能的配置源报告如下,按优先级列出:
- 命令行中指定的参数(--something value)
- 使用 -params-file 选项提供的参数
- 使用 -c my_config 选项指定的配置文件
- 当前目录下名为nextflow.config的配置文件
- 工作流项目目录中名为 nextflow.config 的配置文件
- 配置文件 $HOME/.nextflow/config
- 在管道脚本本身中定义的值(例如 main.nf)
当使用多个指定配置的方法时,它们将被合并,以便第一个方法中的设置覆盖可能出现在第二个方法中的相同设置,以此类推。
Tip
如果你想忽略任何默认配置文件,只使用自定义配置文件,可以使用命令行选项-C <config file>。
Config syntax
Nextflow配置文件是一个简单的文本文件,包含一组使用语法定义的属性:
name = value
请注意,字符串值需要用引号括起来,而数字和布尔值(true, false)则不用。还要注意,值是有类型的,例如,1与'1'不同,因为第一个被解释为数字1,而后者被解释为字符串值。
Config Variables
通过使用常用的{expression}语法,配置属性可以作为配置文件本身的变量使用。
propertyOne = 'world'
anotherProp = "Hello $propertyOne"
customPath = "$PATH:/my/app/folder"
请注意,使用String interpolation的通常规则,因此包含变量引用的字符串必须用双引号字符而不是单引号字符包装。
同样的机制允许您访问在托管系统中定义的环境变量。在Nextflow配置文件中没有定义名称的任何变量都应该是对具有该名称的环境变量的引用。因此,在上面的例子中,属性customPath被定义为字符串/my/app/文件夹被追加到的当前系统路径。
Config comments
配置文件使用与Groovy或Java编程语言使用的注释相同的约定。因此,使用//注释一行或
/*
..
..
*/
在多行上注释一个块。
Config include
一个配置文件可以包含一个或多个使用关键字include econfig的配置文件。例如:
process.executor = 'sge'
process.queue = 'long'
process.memory = '10G'
includeConfig 'path/foo.config'
当使用相对路径时,它将根据包含文件的实际位置解析。
Config scopes
见《09-Nextflow Configuration(2)》
Config profiles
配置文件可以包含一个或多个概要文件的定义。配置文件是一组配置属性,可以通过使用-profile命令行选项在启动管道执行时激活/选择这些属性。
配置概要文件通过使用特殊范围概要文件定义,该范围概要文件使用公共前缀将属于同一概要文件的属性分组。例如:
profiles {
standard {
process.executor = 'local'
}
cluster {
process.executor = 'sge'
process.queue = 'long'
process.memory = '10GB'
}
cloud {
process.executor = 'cirrus'
process.container = 'cbcrg/imagex'
docker.enabled = true
}
}
这个配置定义了三个不同的配置文件:标准、集群和云,它们根据目标运行时平台设置不同的流程配置策略。按照约定,当用户没有指定其他概要文件时,将隐式使用标准概要文件。
Tip
可以指定两个或多个配置文件,使用逗号分隔配置文件名称,例如:
nextflow run <your script> -profile standard,cloud
####################################################
!Danger
在配置文件中使用概要文件特性时,不要在概要文件上下文中和外部设置相同作用域的属性。例如:
process.cpus = 1
profiles {
foo {
process.memory = '2 GB'
}
bar {
process.memory = '4 GB'
}
}
在上面的示例中,process.cpus属性没有正确应用,因为process范围也在foo和bar配置文件上下文中使用。
####################################################
Environment variables
下面的环境变量控制Nextflow运行时及其使用的Java虚拟机的配置。
Name | Description |
---|---|
NXF_HOME | Nextflow 主目录(默认值:$HOME/.nextflow) |
NXF_VER | 定义要使用的 Nextflow 版本 |
NXF_ORG | 查找托管存储库时的默认组织前缀(默认:nextflow-io) |
NXF_GRAB | 提供从 Maven 存储库服务下载的额外运行时依赖项 |
NXF_OPTS | 为 Java 和 Nextflow 运行时提供额外的选项。它必须是 -Dkey[=value] 属性的空白分隔列表 |
NXF_CLASSPATH | 允许使用额外的 JAR 文件或类文件夹扩展 Java 运行时类路径 |
NXF_ASSETS | 定义存储下载的管道存储库的目录(默认值:$NXF_HOME/assets) |
NXF_PID_FILE | Nextflow 在后台启动时保存进程 PID 的文件的名称 |
NXF_WORK | 存储工作文件的目录(通常是您的临时目录) |
NXF_TEMP | 存放临时文件的目录 |
NXF_DEBUG | 定义脚本调试级别: 1 在任务日志文件中转储任务环境变量; 2 启用命令脚本执行跟踪; 3 启用命令包装器执行跟踪 |
NXF_EXECUTOR | 定义默认进程执行器,例如sge |
NXF_CONDA_CACHEDIR | 存储 Conda 环境的目录。使用计算集群时,它必须是所有计算节点都可以访问的共享文件夹 |
NXF_SINGULARITY_CACHEDIR | 存储远程 Singularity 图像的目录。使用计算集群时,它必须是所有计算节点都可以访问的共享文件夹 |
NXF_CHARLIECLOUD_CACHEDIR | 存储远程 Charliecloud 图像的目录。使用计算集群时,它必须是所有计算节点都可以访问的共享文件夹 |
NXF_JAVA_HOME | 定义用于运行 Nextflow 的 Java VM 安装的路径位置。如果已定义,此变量将覆盖 JAVA_HOME 变量 |
NXF_OFFLINE | 当 true 禁用从远程存储库自动下载和更新项目(默认值:false) |
NXF_CLOUD_DRIVER | 如果未在配置文件中指定或作为命令行选项(aws 或 google),则定义要使用的默认云驱动程序 |
NXF_ANSI_LOG | 启用/禁用 ANSI 控制台输出(检测到 ANSI 终端时默认为 true) |
NXF_ANSI_SUMMARY | 启用/禁用 ANSI 完成摘要:true/false(默认值:如果执行持续时间超过 1 分钟,则打印摘要) |
NXF_SCM_FILE | 定义 SCM 配置文件的路径位置(需要 20.10.0 或更高版本) |
NXF_PARAMS_FILE | 定义管道参数文件的路径位置(需要 20.10.0 或更高版本) |
JAVA_HOME | 定义用于运行 Nextflow 的 Java VM 安装的路径位置 |
JAVA_CMD | 定义用于启动 Nextflow 的 Java 二进制命令的路径位置 |
HTTP_PROXY | 定义 HTTP 代理服务器 |
HTTPS_PROXY | 定义 HTTPS 代理服务器 |