Rerun分析任务
基于 Snakemake 框架
SAW 分析流程是基于 Snakemake 计算框架构建的。Snakemake 是一个强大且灵活的工作流管理系统,专为创建可重复、可扩展的数据分析流程而设计。它在生物信息学和计算生物学领域尤为流行,但同样适用于任何涉及数据处理流程的领域。其工作流采用基于 Python 的语言进行定义,这使得代码既具备极高可读性,又支持高度自定义。
核心特性
- 可重复性 (Reproducibility):Snakemake 通过自动追踪输入文件、输出文件以及生成它们的步骤(规则,rules)之间的依赖关系,确保工作流的绝对可重复执行。
- 可扩展性 (Scalability):支持在多种环境中执行,从本地计算机到高性能计算(HPC)集群,再到云平台(如 AWS、Google Cloud)。
- 可移植性 (Portability):得益于与 Docker 和 Singularity 等容器化工具的深度集成,工作流可以在不同的系统和环境间无缝移植。
- 并行执行 (Parallel execution):Snakemake 会在条件允许的情况下自动并行化任务,从而最大化优化资源利用率并显著缩短运行时间。
- 动态工作流设计 (Dynamic workflow design):允许在运行时动态确定输入和输出文件,从而实现灵活且具备自适应能力的工作流。
- 与 Python 无缝集成 (Integration with Python):Snakemake 利用 Python 作为脚本语言,使用户能够直接在工作流中整合复杂的逻辑、数据处理操作以及外部第三方库。
- 可视化 (Visualization):提供工作流可视化工具,使理解和调试复杂的分析流程变得更加直观和容易。
功能模块
- 规则 (Rules):这是 Snakemake 工作流的核心构建块。每条规则定义了工作流中的一个具体步骤,明确指定了输入文件、输出文件以及需要执行的命令或脚本。
- 有向无环图 (DAG):Snakemake 会构建一个有向无环图(Directed Acyclic Graph)来精确表示规则和文件之间的依赖关系,确保所有任务按照正确的逻辑顺序执行。
- 配置文件 (Configuration files):可以使用外部配置文件(如 JSON、YAML)对工作流进行参数化设置,使其更加模块化且易于复用。
- 日志与报告 (Logging and reporting):Snakemake 提供极其详细的日志记录和报告功能,允许用户实时监控工作流的执行状态并生成全面的摘要报告。
- 集群与云端集成 (Cluster and cloud integration):支持将作业提交至各种集群调度系统(如 SLURM、PBS)和云平台,轻松实现大规模的扩展执行。
- 容器化 (Containerization):与 Docker 和 Singularity 的集成确保了工作流始终在隔离的环境中运行,进一步增强了结果的可重复性
SAW rerun
什么是 rerun?
Snakemake 的重运行功能基于其强大的依赖追踪能力,能够智能判断工作流中哪些部分需要重新执行。这主要通过以下核心原理实现:
- 文件时间戳 (File Timestamps):Snakemake 会比对输入文件和输出文件的时间戳。如果输入文件的更新时间晚于其对应的输出文件,则该规则将被标记为需要重跑。
- 基于内容哈希 (Content-Based Hashing):Snakemake 可以利用基于内容的哈希(例如 MD5 校验和)来检测输入文件是否发生更改,确保即使是极微小的修改也能准确触发重运行。
- 规则依赖 (Rule Dependencies):如果某条规则依赖于另一条规则的输出结果,当上游规则被触发重运行时,所有相关的下游规则也将自动被标记为需要重跑。
- 条件执行 (Conditional Execution):允许分析人员自定义触发重运行的条件,例如配置参数的修改或外部数据源的更新。
如何执行 rerun?
saw count 流程的断点重跑功能直接受益于 Snakemake 计算框架的上述天然优势。在运行分析任务时,您可能会遇到以下突发情况:
- 计算环境中的计算资源不足,或服务器机器突然关机,导致分析任务意外中断
- 不小心手动终止(kill)了分析任务
如果第二次运行时的输入参数与第一次完全一致(可以通过将当前参数与第一次运行时保存在 /pipeline-logs/config.yaml 中的记录信息进行比对来验证),分析任务将自动从断点处恢复并继续执行,无需从头开始运行。