我尝试在能够运行自定义 perl 脚本的 Snakefile 中编写规则。有两个输入文件和一个输出文件。输入文件和输出文件中有通配符,因为我想为各种文件运行脚本。但是当我扩展以生成不同的输入和输出文件时,perl 脚本将所有可能的输入文件作为输入,而我希望它们一个一个地去。我应该怎么做才能让 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}"