小编gmi*_*543的帖子

具有不同文件名的多个目录上的 glob_wildcards

我正在尝试编写一个规则,该规则从不同的目录获取两个文件,并将规则的输出放入同一目录中,如下面的文件结构所示:

DIR_A 
    dir1    
        file1.clean.vcf  
    dir2  
        file2.clean.vcf  
    dir3
        file1.output.vcf
        file2.output.vcf
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经尝试使用 glob_wildcards:

(DIR,NAME) = glob_wildcards("DIR_A/{dir}/{name}.clean.vcf") 
input: expand("DIR_A/{dir}/{name}.clean.vcf", dir=DIR, name=NAME)
output: "DIR_A/dir3/{name}.output.vcf
Run Code Online (Sandbox Code Playgroud)

但它会抛出一个错误:

MissingInputException in line 80 of DIR_A:
Missing input files for rule convert_output:

DIR_A/dir1/file2.clean.vcf
DIR_A/dir2/file1.clean.vcf
Run Code Online (Sandbox Code Playgroud)

将 zip 添加到输入:

input: expand("DIR_A/{dir}/{name}.clean.vcf", zip, dir=DIR, name=NAME)
Run Code Online (Sandbox Code Playgroud)

if $ Snakemake -s Snakefile -n (试运行):

rule conv_output:
input: DIR_A/dir1/file1.clean.vcf, DIR_A/file2/file2.clean.vcf
Run Code Online (Sandbox Code Playgroud)

这被snakemake接受并防止上述错误,但现在 file1.clean.vcf 和 file2.clean.vcf 都是规则的输入,但 {name} 通配符使规则每个文件运行一次。这最终会导致多个文件到一个文件,而不是我正在寻找的一对一文件。

有没有办法进行设置,以便我可以获取规则 conv_output 的输出来作用于每个文件,然后将输出放入 dir3 中?任何帮助将不胜感激!!

snakemake

2
推荐指数
1
解决办法
3132
查看次数

标签 统计

snakemake ×1