NextFlow用法--基本概念

作者: 京古 | 来源:发表于2019-06-01 23:58 被阅读5次

    基本概念

    Nextflow是一个反应式工作流框架和编程DSL ,可以简化数据密集型pipelines的编写。

    它的设计理念是Linux平台是数据科学的通用语言。Linux提供了许多简单但功能强大的命令行和脚本工具,这些工具在链接在一起时可以简化复杂的数据操作。

    Nextflow扩展了这种方法,增加了定义复杂程序交互的能力和基于数据流编程模型的高级并行计算环境。

    Processes and channels

    实际上,通过将不同的processes连接在一起来创建NextflowPipeline 脚本。每个processes都可以用任何可以由Linux平台(Bash,Perl,Ruby,Python等)执行的脚本语言编写。

    processes独立执行并彼此隔离,即它们不共享共同(可写)状态。它们可以进行通信的唯一方法是通过异步FIFO队列,在Nextflow中称为通道(channels )。

    任何processes都可以将一个或多个通道定义为输入和输出。这些进程之间的交互以及最终的pipeline 执行流本身是由这些输入和输出声明隐式定义的。

    Nextflow脚本如下所示:

    上面的示例定义了两个processes。它们的执行顺序不是由blastSearch 出现在extractTopHits之前决定的(它也可以用其他方式编写)。

    相反,因为第一个processes在输出中声明了top_hits_ch通道,并且extractTopHits在输入中定义了channel (以第一个processes的输出为输入),所以建立了通信链接。

    通过通道链接意味着extractTopHits正在等待blastSearch的输出,然后当通道有内容时反应运行。

    Execution abstraction

    如果没有另外指定,则在本地计算机上执行进程。本地执行程序对于Pipeline 开发和测试目的非常有用,但对于大数据量的pipeline过程,通常需要指定HPC或云平台。

    换句话说,Nextflow提供了Pipeline 功能逻辑和底层执行系统之间的抽象。因此,只需在配置文件中定义目标执行平台,就可以编写一次Pipeline 并在计算机,网格平台或云上无缝地运行它,而无需对其进行修改。

    支持以下批处理调度程序:

    Open grid engine

    Univa grid engine

    Platform LSF

    Linux SLURM

    PBS Works

    Torque

    HTCondor

    支持以下云平台:

    亚马逊网络服务(AWS)

    Google云端平台(GCP)

    Kubernetes

    Scripting language

    Nextflow旨在以最小的学习成本学会。在大多数情况下,用户可以利用他们当前的技能来开发Nextflow工作流程。此外,它还提供了强大的DSL脚本语言。

    Nextflow脚本是Groovy编程语言的扩展,而Groovy编程语言又是Java编程语言的延申。Groovy可以被认为是Python for Java,因为它简化了代码编写并且更加平易近人。

    Configuration options

    Pipeline 配置属性nextflow.config在Pipeline 执行目录中指定的文件中定义。

    此文件可用于定义要使用的执行程序,进程的环境变量,Pipeline 参数等。

    基本配置文件可能如下所示:

    相关文章

      网友评论

        本文标题:NextFlow用法--基本概念

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