美文网首页
02-Nextflow中一些概念

02-Nextflow中一些概念

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

Basic concepts

Nextflow 是一种反应式工作流框架和一种编程DSL,可简化数据密集型计算管道的编写。

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

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

Processes and channels

在实践中,Nextflow管道脚本是通过连接不同的进程来创建的。每个进程都可以用任何可以在Linux平台上执行的脚本语言编写(Bash、Perl、Ruby、Python等)。

进程是独立执行的,并且彼此隔离,也就是说,它们不共享共同的(可写的)状态。它们通信的唯一方式是通过异步FIFO队列,在Nextflow中称为channels
(FIFO是先入先出的意思,即谁先进入队列,谁先出去)

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

举个例子,如下脚本(仅理解用):

// Script parameters
params.query = "/some/data/sample.fa"
params.db = "/some/path/pdb"

db = file(params.db)
query_ch = Channel.fromPath(params.query)

process blastSearch {
    input:
    file query from query_ch

    output:
    file "top_hits.txt" into top_hits_ch

    """
    blastp -db $db -query $query -outfmt 6 > blast_result
    cat blast_result | head -n 10 | cut -f 2 > top_hits.txt
    """
}

process extractTopHits {
    input:
    file top_hits from top_hits_ch

    output:
    file "sequences.txt" into sequences_ch

    """
    blastdbcmd -db $db -entry_batch $top_hits > sequences.txt
    """
}

上面的例子定义了两个进程。 它们的执行顺序不是由blastSearch进程在脚本中出现在extractTopHits 之前的事实决定的(也可以反过来写)。

相反,由于第一个进程在其输出声明中定义了通道 top_hits_ch,而进程 extractTopHits 在其输入声明中定义了通道,因此建立了通信链接。

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

请阅读 ChannelProcess 部分以了解有关这些特性的更多信息。


Execution abstraction

虽然进程定义了必须执行的命令或脚本,但执行器确定该脚本在目标系统上实际运行的方式。

如果没有另外指定,进程将在本地计算机上执行。 本地执行器对于管道开发和测试目的非常有用,但对于现实世界的计算管道,通常需要 HPC 或云平台。换句话说,Nextflow 提供了管道功能逻辑和底层执行系统之间的抽象。 因此,只需在配置文件中定义目标执行平台,就可以编写一次管道并在您的计算机、网格平台或云上无缝运行它,而无需修改它

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

请阅读Executors以了解有关Nextflow执行器的更多信息。


Scripting language

Nextflow被设计为具有最小的学习曲线,不需要学习新的编程语言。在大多数情况下,用户可以利用他们目前的技能来开发Nextflow工作流程。但是,它也提供了一个强大的脚本DSL(domain-specific language)。

Nextflow脚本是Groovy编程语言的扩展,而Groovy又是Java编程语言的超集。Groovy可以被看作是Java的Python,因为它简化了代码的编写,而且更容易掌握。


Configuration options

管道配置属性在管道执行目录中名为nextflow.config的文件中定义。

一个基本的配置文件看起来像这样:

process {
  executor='sge'
  queue = 'cn-el6'
}

请阅读Configuration部分以了解有关Nextflow配置文件和设置的更多信息。


参考:https://www.nextflow.io/docs/latest/basic.html

相关文章

  • 02-Nextflow中一些概念

    Basic concepts Nextflow 是一种反应式工作流框架和一种编程DSL[http://en.wik...

  • Laravel 中的一些概念

    laravel 中的一些概念 核心概念 容器:是运行依赖和注入的场所;几乎所有服务容器的绑定都是在服务提供者中进行...

  • Spring中的一些概念

    IOC反转控制inverser of control DI依赖注入 BeanFactory原始接口,功能单一。每次...

  • keystone中的一些概念

    在openstack中的keystone模块中,对于它中涉及的一些概念进行了学习,借鉴了前辈们的经验和查阅一些资...

  • presto中的一些概念

    一.Presto中的节点类型 presto中含有两种节点类型:coordinator和worker。 1.Coor...

  • 赋中的一些概念

    1、什么叫发送? 答:“发”又叫发语词,是文言文句首常见的语言现象,经常放在句首表示要发议论。 “送”又称“送语”...

  • MVVM 双向绑定的实现

    这篇文章主要记录学习 JS 双向绑定过程中的一些概念与具体的实现 MVVM 具体概念 MVVM 中有一些概念是通用...

  • 总章(一)

    Eureka的一些概念:在Eureka的服务治理中,会涉及到下面一些概念:服务注册:Eureka Client会通...

  • JS 中的一些概念问题

    Q:描述 JavaScript 中的继承和原型链,并举例子。 JavaScript 是基于原型的面向对象语言,并无...

  • NIO中的一些概念理解

    Selector 一个Selector可以管理多个channel,我们可以创建一个Selector,然后创建cha...

网友评论

      本文标题:02-Nextflow中一些概念

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