Snakemake:通配符列表中通配符的随机顺序
Snakemake: Random order of wildcards in wildcards list
我在函数中索引 snakemake 通配符时遇到问题。由于某种原因,变量在 "Wildcards" 列表中的存储顺序有所不同。我使用该函数为我的一个规则生成输入文件的路径,并且随着正确值的位置发生变化,该规则仅在每几次查询中成功一次。如何控制或固定通配符在 "Wildcards" 列表中的位置?
我添加了我的Snakefile的相关内容。
谢谢,
祖普
#!/usr/bin/env python3
import glob
import re
R_BIN = "Rscript"
pop = "lineA lineB".split()
group = "test control".split()
chrom = "X Y".split()
def getInput(Wildcards):
pop = str(Wildcards[0])
group = str(Wildcards[1])
chrom = str(Wildcards[2])
path = "Resources/bed/" + pop + "_" + group + r"_rep[1-5]/" + pop + "_" + group + r"_rep[1-5]_chr" + chrom + ".bed"
return(glob.glob(path))
rule BED2BS:
input:
getInput
output:
wd + "Resources/bs/{pop}_{group}/{group}_chr{chrom}.RDS"
shell:
R_BIN + " Scripts/Script1.R {input} {output}"
Snakemake 不保留来自的通配符顺序(请注意,不同的输出和输入文件可以在不同的顺序中使用相同的通配符。因此,没有可以从通配符在文件模式)。但是,您可以按名称处理通配符值,例如:
wildcards.group
请考虑通过Snakemake tutorial。
我在函数中索引 snakemake 通配符时遇到问题。由于某种原因,变量在 "Wildcards" 列表中的存储顺序有所不同。我使用该函数为我的一个规则生成输入文件的路径,并且随着正确值的位置发生变化,该规则仅在每几次查询中成功一次。如何控制或固定通配符在 "Wildcards" 列表中的位置? 我添加了我的Snakefile的相关内容。
谢谢, 祖普
#!/usr/bin/env python3
import glob
import re
R_BIN = "Rscript"
pop = "lineA lineB".split()
group = "test control".split()
chrom = "X Y".split()
def getInput(Wildcards):
pop = str(Wildcards[0])
group = str(Wildcards[1])
chrom = str(Wildcards[2])
path = "Resources/bed/" + pop + "_" + group + r"_rep[1-5]/" + pop + "_" + group + r"_rep[1-5]_chr" + chrom + ".bed"
return(glob.glob(path))
rule BED2BS:
input:
getInput
output:
wd + "Resources/bs/{pop}_{group}/{group}_chr{chrom}.RDS"
shell:
R_BIN + " Scripts/Script1.R {input} {output}"
Snakemake 不保留来自的通配符顺序(请注意,不同的输出和输入文件可以在不同的顺序中使用相同的通配符。因此,没有可以从通配符在文件模式)。但是,您可以按名称处理通配符值,例如:
wildcards.group
请考虑通过Snakemake tutorial。