如何在Snakemake任务失败时屏蔽冗长剩余任务列表输出?
屏蔽Snakemake运行失败时冗长
Remaining jobs输出的方法 自Snakemake 7.0.0版本起,任务执行失败时终端会默认打印全量剩余待运行任务列表。该功能在包含数千个任务的大型工作流场景下会输出大量冗余内容,挤占报错信息位置,干扰用户快速定位失败原因,可通过以下几种方式屏蔽该段输出:
- 原生CLI参数(优先推荐,适用于Snakemake ≥ 7.25.0版本)
运行工作流时追加--no-print-remaining-jobs参数,即可完全关闭剩余任务列表打印,不会影响正常报错堆栈、任务执行状态等核心日志的输出。
如果不需要完全屏蔽,只想缩短列表长度,可以使用--job-stack-size N参数(N为要展示的剩余任务条数,比如设为5就只展示前5条剩余任务),兼顾提示作用和日志简洁度。 - 配置文件固定设置
若不想每次运行都手动加参数,可在Snakemake配置文件中添加对应配置实现永久关闭:
全局生效:写入~/.config/snakemake/snakemake.yaml
单工作流生效:写入工作流目录下的config.yaml
配置内容如下:
注意:该配置仅在支持print-remaining-jobs: false--no-print-remaining-jobs参数的版本生效 - 旧版本兼容方案(适用于7.0.0~7.24.0无原生开关的版本)
该版本区间没有提供官方关闭选项,可以通过管道过滤日志的方式屏蔽目标输出段,Linux/macOS环境下运行命令参考:
过滤逻辑会匹配到以snakemake [原有运行参数] 2>&1 | awk '/^Remaining jobs:/{skip=1; next} /^[^[:space:]]/{skip=0} !skip'Remaining jobs:开头的行后跳过后续缩进排列的任务列表,直到遇到下一个顶格开头的正常日志行再恢复打印,不会误删真正的报错信息。
内容的提问来源于stack exchange,提问作者Cornelius Roemer
相关产品推荐
相关产品推荐

