我一直收到关于输出规则中不具有相同通配符的错误,并且我不知道错误的来源是什么:
SyntaxError:
Not all output, log and benchmark files of rule bcftools_filter contain the same wildcards. This is crucial though, in order to avoid that two or more jobs write to the same file.
...
rule merge_YRI_GTEx:
input:
kg=expand("kg_vcf/1kg_yri_chr{q}.vcf.gz", q=range(1,23)),
gtex=expand("gtex_vcf/gtex_chr{v}.snps.recode.vcf.gz", v=range(1, 23))
output:
"merged/merged_chr{i}.vcf.gz"
shell:
"bcftools merge \
-0 \
-O z \
-o {output} \
{input.kg} \
{input.gtex}"
rule bcftools_filter:
input:
expand("merged/merged_chr{i}.vcf.gz", i=range(1,23))
output:
filt="filtered_vcf/merged_filtered_chr{i}.vcf.gz",
chk=touch(".bcftools_filter.chkpnt")
threads:
4
shell:
"bcftools filter \
--include 'AN=1890 && AC > 0' \
--threads {threads} \
-O z \
-o {output.filt} \
{input}"
...
rule list_merged_filtered_vcfs:
input:
".bcftools_filter.chkpnt"
output:
"processed_vcf_list.txt"
shell:
"for i in {{1..22}}; do \ "
"echo \"{config[sprime_dir]}/filtered_vcf/merged_filtered_chr${{i}}.vcf.gz\" >> \
{output}; done"它抱怨的具体代码行是"bcftools filter \,这对我来说更令人费解。我试着给输入的通配符命名,甚至仔细检查了调用bcftools_filter的output的规则以及生成bcftools_filter的input的规则,但都无济于事,不知道是什么导致了这个错误。
发布于 2019-09-10 15:32:29
我认为错误来自不包含通配符{i}的chk=touch(".bcftools_filter.chkpnt")。
除此之外,我不确定你的规则是不是很明智。您正在向bcftools filter传递一个输入文件列表(来自expand(...)),但我认为bcftools filter不会接受多个输入文件。此外,您的规则将使用相同的输入文件列表创建输出文件filtered_vcf/merged_filtered_chr{i}.vcf.gz (i的每个值对应一个)。你确定你想要expand("merged/merged_chr{i}.vcf.gz", i=range(1,23))而不只是"merged/merged_chr{i}.vcf.gz",并给出上游的值吗?
https://stackoverflow.com/questions/57859893
复制相似问题