基本概念
Nextflow,灵活的,优秀的,框架与DSL (Domain specific language)
其实我觉得,对于我目前的认知来看,那么有点应该是:
- 缓存
- 并行(自动处理好中间文件,不会导致文件覆盖)
- 模块化
- 管道(管道正如文件一样处理)
- 高度流程可重现
步骤与管道
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"
}