“选择要执行的作业...”实际上永远运行

Dan*_*her 5 solver snakemake

我有一个相当复杂的工作流程,有 750 个样本和大约 18.000 个作业,一开始 Snakemake 运行得很好,但在大约 4.000 个作业之后它突然冻结,重新启动后它会挂起“选择要执行的作业...”24 小时,之后我终止了它。不过,最初的 DAG 构建大约需要 2-3 分钟。

当我使用该--verbose选项运行 Snakemake(v5.32.0 和 v5.32.1)时,我得到大量与此类似的行:

Cbc0010I After 600 nodes, 304 on tree, -52534.791 best solution, best possible -52538.194 (7.08 seconds

我试图删除该.snakemake文件夹,希望那里会发生什么事情,但不幸的是,事实并非如此。对我来说,CBC MILP 求解器似乎在某种程度上没有收敛,并且它不断前进,并将最好最好的可能解决方案更紧密地结合在一起!?

现在我不知道如何继续并解决问题。我可能的解决方案是以某种方式改变收敛标准或求解器本身。在手册中我找到了该选项--scheduler-ilp-solver,但它显然只有一个选项,即默认选项COIN_CMD

终止(较短的)运行后,我得到了这个详细的输出

Result - User ctrl-cuser ctrl-c

Objective value:                52534.79114334
Upper bound:                    52538.202
Gap:                            -0.00
Enumerated nodes:               186926
Total iterations:               1807277
Time (CPU seconds):             1181.97
Time (Wallclock seconds):       1188.11
Run Code Online (Sandbox Code Playgroud)

接下来,我将尝试限制工作流程中的样本数量,看看这是否有任何影响(对于具有 500 个样本的其他数据集,它运行没有任何问题(使用 Snakemake 版本 5.24),但 DAG 构建需要几个小时。因此,我不太愿意尝试旧版本。)

因此,任何如何解决该问题的想法都受到高度赞赏。另外,我什至不知道这是否是一个错误!?

编辑实际上,我相信这是当前版本中的一个错误,我将 Snakemake 降级回版本 5.24,它在 10 分钟内创建了 DAG 并开始运行管道。所以,显然最新版本存在一些错误。我将以此作为我自己问题的答案,因为降级到旧版本解决了问题......

小智 2

我也在较小的工作流程(总共约 1500 个作业)和 Snakemake 版本 6.0.2 中遇到了这个问题。当工作流程卡住时,大约一半的作业已经运行,并且拒绝运行更多作业。看起来这是 ILP 求解器特有的问题,因为当我重新运行 时--scheduler greedy,它工作得很好。