可执行的Snakefile

时间:2018-10-11 14:44:28

标签: python command-line-interface snakemake

几年前,我得知我可以用shebang制作一个Makefile可执行文件而高兴极了:

#!/usr/bin/env make -f

这样,我可以使用./my-pipeline而不是make -f my-pipeline来调用我的工作流程。

自那以后,我开始在分析工作流程中开始优先使用Snakemake而不是GNU Make。有没有一种简单的方法可以用Snakemake实现类似的行为?

1 个答案:

答案 0 :(得分:1)

取决于您的平台以及是否需要传递其他参数,您也许可以轻松地做到这一点,或者做一些棘手的事情来使其工作。

如果

#!/usr/bin/env make -f

为您工作,这太棒了,因为它意味着您可以通过shebang传递任意多个参数(例如,如果您使用的是MacOS,则可能有效)。所以您应该只能说:

#!/usr/bin/env snakemake -s

这里的窍门是,您当前正在执行的脚本的文件名将作为最后一个参数传递给在shebang行中调用的任何内容,因此此行将使用文件本身作为输入来运行snakemake,无论它叫什么(即不必称为Snakefile)。

对我来说,这是行不通的,因为我只能通过Linux系统上的shebang行传递一个参数。如果我知道snakemake的路径,并且不需要指定其他命令行参数,则仍然可以使它像这样工作:

#!/usr/local/bin/snakemake -s

如果您需要做任何更复杂或跨平台的事情,这可能是一个不错的起点:How to use multiple arguments for awk with a shebang (i.e. #!)?