Исполняемый файл Snakefile - PullRequest
0 голосов
/ 11 октября 2018

Несколько лет назад я был вне себя от радости, узнав, что я могу сделать исполняемый файл Makefile с помощью шебанга:

#!/usr/bin/env make -f

Таким образом, я могу вызывать свой рабочий процесс с помощью ./my-pipeline вместо make -f my-pipeline.

С тех пор я начал отдавать предпочтение Snakemake, а не GNU Make для рабочих процессов анализа.Есть ли простой способ реализовать подобное поведение с помощью Snakemake?

1 Ответ

0 голосов
/ 11 октября 2018

В зависимости от вашей платформы и от того, нужно ли вам передавать дополнительные аргументы, вы можете легко это сделать или сделать что-то хакерское, чтобы заставить его работать.

Если

#!/usr/bin/env make -f

работает для вас, это фантастика, потому что это означает, что вы можете передавать произвольно много параметров через шебанг (например, если вы работаете в MacOS, это, вероятно, работает).Так что вы должны просто сказать:

#!/usr/bin/env snakemake -s

Хитрость в том, что имя файла скрипта, который вы выполняете в данный момент, будет передано в качестве последнего аргумента тому, что вы вызываете в строке shebang, так чтострока запускает snakemake, используя сам файл в качестве входных данных, как бы он ни назывался (то есть он не должен называться Snakefile).

Для меня это не работает, потому что я могу передать только один аргумент черезлиния Шебанга в моей системе Linux.Если я знаю путь к snakemake, и мне не нужно указывать дополнительные аргументы командной строки, я все равно могу заставить его работать так:

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

Если вам нужно сделать что-нибудь более сложное или пересечь-платформа, это может быть хорошим местом для начала: Как использовать несколько аргументов для awk с шебангом (то есть #!)?

...