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

SLURM集群中Snakemake规则资源配置语法报错排查

排查Snakemake规则内mem_mb_per_cpu资源配置的语法问题

常见错误场景及修复方案

  • 缩进不规范
    Snakemake对缩进要求苛刻,resources块必须和规则里的input、output、shell保持同一缩进层级。比如下面这种缩进错位会直接报错:

    rule samtools_sort:
        input: "bam/{sample}.bam"
        output: "sorted_bam/{sample}.sorted.bam"
      resources:
          mem_mb_per_cpu=4096
        shell: "samtools sort -@ {threads} -m {resources.mem_mb_per_cpu}M {input} -o {output}"
    

    调整缩进即可:

    rule samtools_sort:
        input: "bam/{sample}.bam"
        output: "sorted_bam/{sample}.sorted.bam"
        resources:
            mem_mb_per_cpu=4096
        shell: "samtools sort -@ {threads} -m {resources.mem_mb_per_cpu}M {input} -o {output}"
    
  • 资源名称拼写错误
    必须严格写mem_mb_per_cpu——注意下划线、大小写,别写成mem_mb_per_cpus或者Mem_Mb_Per_Cpu这类变体,Snakemake对资源名的拼写和大小写完全敏感。

  • 资源值带单位
    mem_mb_per_cpu的默认单位就是MB,别给数值加M或者其他单位,否则会触发语法错误。错误写法:

    resources:
        mem_mb_per_cpu="4096M"
    

    正确写法:

    resources:
        mem_mb_per_cpu=4096
    
  • 资源配置放错位置
    resources必须写在对应的规则块内部,不能全局定义或者放到其他规则里,确保是给samtools sort的规则单独配置资源。

  • shell命令引用错误
    要是shell里写了{resources.mem_mb_per_cpu},但规则里没定义这个资源,或者拼写错,也会报错。另外samtools sort的-m参数要加单位,记得在引用后补M,比如-m {resources.mem_mb_per_cpu}M。

快速验证方法

  1. 用snakemake --lint检查工作流,它会精准指出语法错误的位置和原因。
  2. 用snakemake --dry-run sorted_bam/your_test_sample.sorted.bam做预运行测试,看资源配置是否能正常解析。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 20:33:22