Snakemake规则输入文件数量的优雅获取方法问询
更简洁的Snakemake输入文件数量获取方法
你可以直接利用Snakemake支持在shell脚本中嵌入Python表达式的特性,用len()函数直接获取输入文件列表的长度,替代原来繁琐的shell管道统计方式,代码更简洁且避免了文件名含空格等潜在问题。
核心实现
直接在shell命令中通过{len(input.files)}获取输入组files的文件数量:
rule x: input: files = ["file1", "file2"], output: "output.txt" shell: """ N={len(input.files)}; # 直接返回输入文件数量,无需shell处理 touch {output} """
扩展场景
如果需要统计所有输入文件的总数(而非特定输入组),可以用len(input):
rule x: input: "file1", files = ["file2", "file3"], output: "output.txt" shell: """ TOTAL_FILES={len(input)}; # 这里会返回3(file1 + file2 + file3) touch {output} """
这种方法不仅代码更简洁,还能避免原方法中因文件名含空格导致的统计错误,同时性能更优,无需启动额外的shell进程处理文本。
内容的提问来源于stack exchange,提问作者Quentin BLAMPEY
相关产品推荐
相关产品推荐

