并联蛇形夹

2024-03-28 14:40:21 发布

您现在位置:Python中文网/ 问答频道 /正文

抱歉,如果这是一个天真的问题,但我仍在试图把我的头围绕在错综复杂的蛇。在

我有一个目录,其中包含许多要并行应用规则的文件(即,我希望向集群提交相同的脚本,为每次提交指定不同的输入文件)。在

我首先尝试对输入文件使用扩展,但这只导致了一个作业提交:

CHROMS = [str(c) for c in range(1, 23)] + ["X"]
rule vep:
    input:
        expand("data/split/chr{chrom}.vcf", 
               chrom=CHROMS)
    output:
        expand("data/vep/split/chr{chrom}.ann.vcf",
               chrom=CHROMS)
    shell:
        "vep "
        "{input} "
        "{output}"

有没有其他方法?在

谢谢你!在


Tags: 文件目录脚本inputoutputdata规则集群
1条回答
网友
1楼 · 发布于 2024-03-28 14:40:21

目前,您的工作流程确实包含只应用一次“vep”规则,其中它执行vep,并将您的所有输入和输出作为参数。我不知道vep是如何工作的,但它可能要么失败,要么没有做您期望的事情。在

您可能应该在不进行扩展的情况下编写规则的输入和输出,并使用“all”规则来驱动它,这样可以进行扩展:

CHROMS = [str(c) for c in range(1, 23)] + ["X"]


rule all:
    input:
        expand("data/vep/split/chr{chrom}.ann.vcf",
               chrom=CHROMS)

rule vep:
    input:
        "data/split/chr{chrom}.vcf"
    output:
        "data/vep/split/chr{chrom}.ann.vcf"
    shell:
        "vep "
        "{input} "
        "{output}"

为了生成“all”规则的所需输入,snakemake将确定需要应用“vep”规则的次数和方式(即chrom通配符的值)。在

一定要把“全部”规则放在所有其他规则之前。在

相关问题 更多 >