我尝试在能够运行自定义perl脚本的Snakefile中编写规则。有两个输入文件和一个输出文件。输入文件和输出文件都有通配符,因为我想为各种文件运行脚本。但是当我为了生成不同的输入和输出文件而扩展时,perl脚本将所有可能的输入文件作为输入,而我希望它们一个接一个地输入。我应该怎么做才能让perl逐个“吃”输入文件?这是我的代码:如何将通配符参数传递给sfile文件中的perl脚本?
DOMAINS= ["Metallophos", "PP2C", "Y_phosphatase"]
SUPERGROUPS=["2supergroups","5supergroups"]
rule add_supergroups:
input:
newick=expand("data/{domain}/{supergroup}/RAxML_bipartitionsBranchLabels.bbhlist.txt.{domain}.fa.aligned.rp.me-25.id.phylip",domain=DOMAINS, supergroup=SUPERGROUPS),
sup="data/species.v3.1.1.supergroups.txt"
output:
expand("results/{domain}/{supergroup}/RAxML_bipartitionsBranchLabels.bbhlist.txt.{domain}.fa.aligned.rp.me-25.id.phylip.supergroups", domain=DOMAINS, supergroup=SUPERGROUPS)
shell:
"perl scripts/change_newick.pl {input.sup} {input.newick} {output}"
呵呵,你比我明明;-) – rioualen
我想有两个很好的答案,由两个新用户更快。保持。 :-) – simbabque
我们碰巧是法国“Snakemake社区”的一部分:) – rioualen