Nextflow 快速搭建生信分析流程(三)- 实例讲解
在前面的两节内容中我们介绍了Nextflow的安装和流程监控平台Nextflow Tower, 大家如果对软件安装还有疑问可以查阅平台中前面两节的内容。这里我们以nextflow的一个具体运行脚本来进行讲解,脚本代码如下(可以将代码保存到文件example.nf中):
#!/usr/bin/env nextflow
nextflow.enable.dsl=2
process foo {
output:
path 'foo.txt'
script:
"""
echo 'Hello World’ > foo.txt
"""
}
process bar {
input:
path x
output:
path 'bar.txt'
script:
"""
cat$x > bar.txt
"""
}
workflow {
data = foo()
bar(data)
}
代码讲解:
nextflow.enable.dsl=2 表示我们将使用DSL的扩展版本2,最早开发版本为DSL 1,DSL 2在语法上更为简洁,推荐小伙伴们使用DSL 2,估计DSL 1 后面也不会更新了。
代码中process表示定义流程,在上面的代码中我们定义了两个流程:
第一个流程foo是将'HelloWorld’字符串输出到一个名称为 foo.txt的文件中,nextflow中的process可以理解为'函数’,process中包含输入和输出,输入在input中加入要使用的参数,output为输出的参数或文件;
第二个流程bar会读入一个文件,并将文件中的内容输出到'bar.txt’中;
Workflow中定义流程该如何执行,你可能会在脚本中写入N多个不同的process,但是只有在workflow中调用的process才会被执行,本例中我们是执行了foo和bar两个process。
data = foo() 表示data会接收foo() 这个process的output,并将输出传递给bar() 这个process。
程序执行,输入下面的命令:
nextflow run example.nf
运行完成后,会在程序所在的执行目录中生成一个work目录,并且会存在两个文件夹,文件夹中就保存了程序执行过程中生成的foo.txt和bar.txt文件。