美文网首页
09-Nextflow Configuration(2)

09-Nextflow Configuration(2)

作者: 亦是旅人呐 | 来源:发表于2021-09-24 16:08 被阅读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


    相关文章

      网友评论

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

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