カスタム perl スクリプトを実行できる Snakefile にルールを書き込もうとしています。2 つの入力ファイルと 1 つの出力ファイルがあります。さまざまなファイルに対してスクリプトを実行したいので、inputfile と outputfile にはワイルドカードが含まれています。しかし、さまざまな入力ファイルと出力ファイルを生成するために展開すると、perl スクリプトは可能なすべての入力ファイルを入力として受け取りますが、それらを 1 つずつ処理する必要があります。perl が入力ファイルを 1 つずつ「食べる」ようにするにはどうすればよいですか? これは私のコードです:
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}"