考虑以下蛇文件:
NUMS = ["1", "2"]
#wildcard_constraints:
# num="\d+"
rule all:
input:
"all_text.txt"
rule generate_text:
output:
text_file = temp("text_{num}.txt")
shell:
"""
echo "test" > {output.text_file}
"""
rule gather_results:
input:
expand("text_{num}.txt", num=NUMS)
output:
"all_text.txt"
shell:
"""
cat {input} > {output}
"""
如果我取消注释该wildcard_constraints部分,则标记的文件temp不会被删除。
这可能是什么原因?
更多测试
放入wildcard_constraints规则:
rule generate_text:
output:
text_file = temp("text_{num}.txt")
wildcard_constraints:
num="\d+"
shell:
"""
echo "test" > {output.text_file}
"""
这具有相同的效果:temp文件不会被删除。
将通配符约束放在generate_text规则的输出文件名中:
rule generate_text:
output:
text_file = temp("text_{num,\d+}.txt")
shell:
"""
echo "test" > {output.text_file}
"""
在这种情况下,temp文件将按预期删除。
将约束放在gather_results规则的输入文件名中:
rule gather_results:
input:
expand("text_{num,\d+}.txt", num=NUMS)
output:
"all_text.txt"
shell:
"""
cat {input} > {output}
"""
这会导致错误:
/tmp/Snakefile 第 20 行中的 WildcardError:
没有为通配符 'num,\d+' 指定值。
文件“/tmp/Snakefile”,第 20 行,在
我怀疑这是由于使用expand.