标准化工作流中的Snakemake规则使用script
指令运行Python脚本,例如以下模板规则:
rule XXXXX:
input:
...,
output:
....,
params:
...,
conda:
"../envs/python.yaml"
script:
"../scripts/XXXX.py"
然后在脚本中,可以使用snakemake
对象.然而,脚本随后与该规则紧密结合,这似乎是一个很大的缺点.
为什么这种方法比使用调用脚本的shell 的方法更可取,比如在下面的规则中?
rule XXXXX:
input:
...,
output:
....,
params:
absolute_script_path = ..., # get
argument1 = ...,
conda:
"../envs/python.yaml"
shell:
"python {params.absolute_script_path} {input} {params.argument1} > {output}"
在这种方法中,Python脚本与Snakemake规则分离.此外,它看起来更有内聚力,因为被调用的参数在规则中是明确的,而不是隐藏在脚本中. 我只是从编写Snakemake工作流开始,所以我只是一个初学者.我不明白为什么第一种方法比第二种方法更受欢迎(或在标准化的Snakemake工作流程中使用)?我是不是遗漏了什么?第二种方法有什么问题吗? 非常感谢您的回答!