如果我的问题看起来有点愚蠢,我很抱歉。
所以,我目前正在尝试在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"
Run Code Online (Sandbox Code Playgroud)
至于 config.yaml,这是我现在使用的一个简单文件,用于放置所述“dirname”的路径
dirname:
Sero_1: /project/work/test_snake/Sero_1
Run Code Online (Sandbox Code Playgroud)
我知道还有很多东西需要重构(我仍然不习惯 Snakemake,因为除了教程之外,这是我制作的第一个工作流程)。我还了解到问题可能在于输入不能是目录。几天以来我尝试了一些事情,我想我可能会问一些建议,因为我正在挣扎
我如何放置允许用于脚本目录的输入?
如果有帮助,我通过执行以下操作解决了我的规则“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}"
Run Code Online (Sandbox Code Playgroud)
至于config.yaml文件:
dirname:
- /project/work/test_snake/Sero_1
- /project/work/test_snake/Sero_2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5543 次 |
| 最近记录: |