You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Snakemake Snakefile自动为用户指定目标文件生成报告

解决方案

方法1:利用workflow.targets自动获取目标并生成报告

在你的Snakefile中添加onsuccess规则,通过Snakemake内置的workflow.targets对象直接获取用户命令行指定的所有目标文件,流程执行成功后自动触发报告生成:

onsuccess:
    # 将目标文件对象转为字符串并拼接成命令行参数格式
    target_str = " ".join(str(t) for t in workflow.targets)
    # 调用snakemake生成报告,此时目标已完成,不会重复执行流程
    shell(f"snakemake --report report.html {target_str}")

无论用户指定单个目标(如files/output.txt)还是多个目标,流程结束后都会自动生成对应任务的报告。

方法2:自定义参数控制自动报告(可选)

如果需要给用户保留是否生成报告的选择权,可以添加自定义命令行参数:

# 在Snakefile开头添加参数解析
parser = argparse.ArgumentParser()
parser.add_argument("--auto-report", action="store_true", default=False, help="流程完成后自动生成报告")
args = parser.parse_args()

# 根据参数决定是否开启自动报告
if args.auto_report:
    onsuccess:
        target_str = " ".join(str(t) for t in workflow.targets)
        shell(f"snakemake --report report.html {target_str}")

用户运行时只需加上--auto-report参数即可触发自动报告,不加则不生成,灵活性更强。

注意事项

  • workflow.targets包含所有用户指定的目标(包括默认目标,若用户未指定具体文件),报告内容会准确匹配本次运行的任务。
  • 二次调用snakemake --report时,因所有目标文件已存在,Snakemake不会重复执行流程,仅生成报告,无额外资源消耗。
  • 若需自定义报告路径,可将report.html替换为配置参数(如config["report_path"]),方便用户修改。

内容的提问来源于stack exchange,提问作者Shruteek Mairal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 00:04:59