生物信息分析:从入门到精通

Nextflow的基本认知(系列之二)

2018-11-02  本文已影响248人  生信石头

基本概念

Nextflow,灵活的,优秀的,框架与DSL (Domain specific language)
其实我觉得,对于我目前的认知来看,那么有点应该是:

  1. 缓存
  2. 并行(自动处理好中间文件,不会导致文件覆盖)
  3. 模块化
  4. 管道(管道正如文件一样处理)
  5. 高度流程可重现

步骤与管道

Nextflow流程可用于合并不同的处理步骤。每一个步骤可以使用不同的语言(如Bash, Per, Ruby, Python, etc.). 而每一个步骤之间会有自动化的异步IO,使得不同进程不会有写入冲突(亮点)。此外每个步骤可定义多个输入输出(也是亮点)。
一个Nextflow脚本示例:

params.query = "$HOME/sample.fa"
params.db = "$HOME/tools/blast-db/pdb/pdb"

db = file(params.db)
query = file(params.query)

process blastSearch {
    input:
    file query

    output:
    file top_hits

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


process extractTopHits {
    input:
    file top_hits

    output:
    file sequences

    """
    blastdbcmd -db ${db} -entry_batch $top_hits > sequences
    """
}
配置一些参数

随着环境的改变,总是需要配置一些参数

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

env {
  PATH="$PWD/bowtie2:$PWD/tophat2:$PATH"
}
上一篇 下一篇

猜你喜欢

热点阅读