对不起,我的问题似乎有点愚蠢。
所以,我目前正在尝试在snakemake上写一个工作流(我首先作为一名受训者),我必须自动化几个步骤,这些步骤完全取决于已经制作的python脚本。 我的麻烦是这些脚本的输入和输出都是文件夹本身(它们的内容与第一个目录内容链接的文件相对应。)。
到目前为止,我已经做到了(我们无法预期)
configfile: "config.yaml"
rule all:
input:
"{dirname}/directory_results/sub_dir2", dirname=config["dirname"]
rule script1:
input:
"{dirname}/reference/{files}.gbff", dirname=config["dirname"]
output:
"{dirname}/directory_results", dirname=config["dirname"]
shell:
"python script_1.py -i {dirname}/reference -o {output}"
rule script2:
input:
"{dirname}/directory_results/sub_dir1/{files}.gbff.gff", dirname=config["dirname"]
output:
"{dirname}/directory_results/sub_dir2", dirname=config["dirname"]
shell:
"python script_2.py -i {dirname}/directory_results/sub_dir1"
对于config.yaml,这是我现在使用的一个简单文件,用于放置所述“目录名”的路径
dirname:
Sero_1: /project/work/test_snake/Sero_1
我知道要重构的东西很多(我仍然不习惯使用蛇形制作,因为在本教程旁边,这是我有史以来的第一个工作流程)。我也理解问题可能在于输入不能是目录。从几天开始,我尝试了几件事,但我想我可能会因为自己的挣扎而问一些建议
我如何放置一个允许用于脚本目录的输入?
答案 0 :(得分:1)
如果有帮助,我可以通过以下方法解决规则“ script1”:
configfile: "config.yaml"
dirname = config["dirname"]
rule all:
input:
expand("{dirname}/directory_results/", "{dirname}/directory_results/subdir2" dirname=dirname)
rule script1:
input:
expand("{dirname}/reference/", dirname=dirname)
output:
directory(expand("{dirname}/directory_results", dirname=dirname))
shell:
"python script_1.py -i {input} -o {output}"
rule script2:
input:
rules.script1.output
output:
directory(extend("{dirname}/directory_results/sub_dir2", dirname=dirname))
shell:
"python script_2.py -i {input}"
对于config.yaml文件:
dirname:
- /project/work/test_snake/Sero_1
- /project/work/test_snake/Sero_2