抱歉,如果这是一个幼稚的问题,但我仍在尝试理解 Snakemake 的复杂性。
我有一个目录,其中包含许多我想要并行应用规则的文件(即我想要向集群提交相同的脚本,为每次提交指定不同的输入文件)。
我第一次尝试使用 Expand 作为输入文件,但这只导致了一个作业提交:
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}"
Run Code Online (Sandbox Code Playgroud)
这里有替代方法吗?
谢谢你!
目前,您的工作流程确实只应用一次“vep”规则,它vep以所有输入和输出作为参数执行。我不知道如何vep工作,但它可能会失败或没有达到您的预期。
您可能应该在不扩展的情况下编写规则的输入和输出,并使用“全部”规则驱动它,这会扩展:
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}"
Run Code Online (Sandbox Code Playgroud)
为了生成“all”规则所需的输入,snakemake 将确定chrom需要应用“vep”规则多少次以及如何(即通配符的值是什么)。
请务必将“全部”规则放在所有其他规则之前。
| 归档时间: |
|
| 查看次数: |
1561 次 |
| 最近记录: |