美文网首页人生几何?
09-Nextflow Configuration(1)

09-Nextflow Configuration(1)

作者: 亦是旅人呐 | 来源:发表于2021-09-20 07:11 被阅读0次

    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

    通过使用常用的propertyName或{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 代理服务器

    相关文章

      网友评论

        本文标题:09-Nextflow Configuration(1)

        本文链接:https://www.haomeiwen.com/subject/mqupwltx.html