0

我的 Snakefile 有两条规则:一条使用通配符生成多组文件,另一条将所有内容合并到一个文件中。我是这样写的:

chr = range(1,23)

rule generate:
    input:
        og_files = config["tmp"] + '/chr{chr}.bgen',
    output:
        out = multiext(config["tmp"] + '/plink/chr{{chr}}',
                       '.bed', '.bim', '.fam')
    shell:
        """
        plink \
        --bgen {input.og_files} \
        --make-bed \
        --oxford-single-chr \
        --out {config[tmp]}/plink/chr{chr}
        """
rule merge:
    input:
        plink_chr = expand(config["tmp"] + '/plink/chr{chr}.{ext}',
                           chr = chr,
                           ext = ['bed', 'bim', 'fam'])
    output:
        out = multiext(config["tmp"] + '/all',
                       '.bed', '.bim', '.fam')
    shell:
        """
        plink \
        --pmerge-list-dir {config[tmp]}/plink \
        --make-bed \
        --out {config[tmp]}/all
        """

不幸的是,这不允许我跟踪从第一条规则到第二条规则的文件:

$ snakemake -s myfile.smk -c1 -np                                                                           
Building DAG of jobs...                                                                                                                                       
MissingInputException in line 17 of myfile.smk:                            
Missing input files for rule merge: 
[list of all the files made by expand()]   

我可以使用什么来生成带有通配符的 22 组文件chrgenerate但能够在输入中跟踪它们merge?预先感谢您的帮助

4

0 回答 0