如何在 Slurm 集群上运行 Snakemake >= 8?

问题描述 投票:0回答:1

我需要编写工作流程,并且一直在寻找工作流程管理系统。我选择 Snakemake 是因为它集成了 Conda,而且我想要一个可以在本地或集群 (Linux) 中轻松运行的工作流程。因此,在阅读文档和教程后,我在集群的登录机器中制作了这个Conda环境:

name: testing
channels:
    - conda-forge
    - bioconda
    - defaults
    - R
dependencies:
    - r-base=4.3.2
    - snakemake=8.4.2

然后我制定了一个测试规则,然后我去

snakemake --cores 1
,一切正常。现在我想测试Snakemake是否将规则发送到Slurm。所以我尝试了我在文档和几乎每个教程中看到的
--cluster
命令:

snakemake: error: unrecognized arguments: --cluster

我也尝试了

--slurm
,也没有被识别。
--cluster-config
似乎也不能被 Snakemake 理解。

在寻找一些解释时,我发现显然 Snakemake 8 包含不向后兼容的更改(https://snakemake.readthedocs.io/en/stable/getting_started/migration.html)。看起来现在的情况是这样的:

New designed: Now if you want to use --cluster CMD, please use --executor cluster-generic --cluster-generic-submit-cmd CMD instead.

Note you should install cluster-generic using command pip install snakemake-executor-cluster-generic

好吧,忽略 pip 或 pip3,无论是在 Conda 内部还是外部,都找不到这样的包(我认为这本身应该是另一个问题),我真的非常非常困惑,因为:

  1. Snakemake 最新文档(8.4.3)仍然包含
    --cluster
    不再起作用的参考文献
  2. 每次我在官方之外搜索教程/文档时,我发现他们总是使用
    --cluster
  3. 也许我不知道如何正确查找信息,但似乎没有人真正对所有这些迁移内容有问题?感觉就像我疯了一样,在寻找并不存在的东西
  4. 这种管理集群内容的新方法看起来比
    --cluster
    更复杂?我的意思是现在我需要手动安装以前默认工作的东西,我什至无法将其包含在 Conda 环境 YAML 中。

我是 Snakemake 的新手,看起来我刚刚陷入了一个充满重大变化的雷区。 我应该把这一切都扔到地狱去并选择 Snakemake 7 版本吗?或者我应该继续使用版本 8,以便我习惯它,因为现在事情就是这样运作的?在这种情况下,你知道我可以在哪里找到如何运行这个东西的资源吗?我认为选择 Snakemake 的优点是拥有大量有用的文档,但老实说我快要疯了。

snakemake
1个回答
0
投票

我遇到了一个非常相似的问题。我曾经对 SGE/UGE 集群做过类似的事情:

snakemake \
        --cluster-config cluster.json \
        -j 1 \
        --cluster 'qsub -q all.q -l h_vmem={cluster.mem} -pe smp {cluster.num_cores} -V -cwd'

cluster.json
的内容是:

{
  "__default__": {
    "mem": "8G",
    "num_cores": "{threads}",
    "jobname": "{rule}"
  }
}

在 Snakemake 8 中,您首先需要安装一个新插件:

pip install snakemake-executor-plugin-cluster-generic

--cluster-config
参数不再可用。所以第一个命令变成:

 snakemake \
         --executor cluster-generic \
         --cluster-generic-submit-cmd 'qsub -N {rule} -q all.q -l h_vmem=8G -pe smp {threads} -V -cwd'

此逻辑应该适用于其他集群(例如 SLURM)。

© www.soinside.com 2019 - 2024. All rights reserved.