流水线参数
前面提到的Nextflow wc.nf 脚本定义了一个管道参数 params.input。管道参数允许在运行时通过命令行或配置文件更改工作流的输入,因此它们不会硬编码到脚本中。
流水线参数是以前缀params.
来声明的,如params.input
。
它们的值可以在命令行上通过在参数名前面加一个双破折号来指定,例如 --input。
在前面的例子中,想要处理其他的文件,可以使用如下命令:
nextflow run wc.nf --input ‘data/yeast/reads/ref2_2.fq.gz’
我们还可以使用通配符来指定多个输入文件。在下面的示例中,我们使用 * 来匹配 ref2_ 和.fq.gz之间的任何字符序列。注意: 如果在命令行中使用通配符,则必须将值用引号括起来。
nextflow run wc.nf --input ‘data/yeast/reads/ref2_*.fq.gz’
增加参数到脚本
我们可以增加一个sleep参数到wc.nf脚本中: params.sleep = 2
。
修改脚本如下:
script:
"""
sleep ${params.sleep}
printf '${read} '
gunzip -c ${read} | wc -l
"""
我们现在可以从命令行更改 sleep 参数,例如:
nextflow run wc-params.nf --sleep 10
参数文件
如果有很多参数要传递给脚本,那么最好创建一个参数文件。参数以 JSON 或 YAML 格式存储。
params-file
选项用于将参数文件传递给脚本。
例如,文件 wc-params. json 包含参数 sleep 和 input。
{
"sleep": 5,
"input": "data/yeast/reads/etoh60_1*.fq.gz"
}
要使用这些参数运行 wc-params.nf 脚本,我们添加选项-params-file 并传递文件 wc-params.json:
nextflow run wc-params.nf -params-file wc-params.json
总结
- 流水线参数是通过将前缀
params
作为变量名前缀(由点.
分隔)来指定的。 - 要在命令行为 Nextflow 运行指定管道参数,请使用
--variable_name
语法。 - 可以将参数添加到 JSON 或 YAML 格式的文件中,并使用
-params-file
将它们传递给脚本。