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

Snakemake调用Bowtie2时索引路径传递失败问题求助

解决Snakemake中Bowtie2索引传递的问题

问题根源

  1. 使用multiext定义input.idx后,{input.idx}会展开所有索引文件路径,而Bowtie2的-x参数只需要索引前缀,不需要列出所有文件,导致命令格式错误。
  2. 直接将前缀作为输入时,Snakemake会验证该路径对应的文件是否存在,但前缀本身不是实际文件,因此触发MissingInputException。

正确实现方式

核心思路:用input声明所有索引文件(让Snakemake验证文件存在),用params传递索引前缀(供Bowtie2命令使用)。

修改后的规则:

rule test_bowtie2:
    input:
        idx=multiext(
            "/home/databases/genomes/Homo_sapiens/rCRS/bowtieindex/rCRS",
            ".1.bt2",
            ".2.bt2",
            ".3.bt2",
            ".4.bt2",
            ".rev.1.bt2",
            ".rev.2.bt2"
        ),
        fastq="sample.fq.gz"
    params:
        idx_prefix="/home/databases/genomes/Homo_sapiens/rCRS/bowtieindex/rCRS"
    output:
        "sample_bt.bam"
    shell:
        """
        nice -19 /home/ctools/bowtie2-2.4.4/bowtie2 -x {params.idx_prefix} --interleaved {input.fastq} | /home/ctools/bin/samtools view -bS -F4 - > {output}
        """

解释

  • input.idx:通过multiext列出所有Bowtie2索引文件,Snakemake会提前检查这些文件是否存在,避免运行时找不到索引的问题。
  • params.idx_prefix:直接传递索引前缀,Bowtie2会自动根据前缀找到对应的所有索引文件,符合命令行的正确用法。
  • 这样既满足了Snakemake的输入文件验证要求,又保证了Bowtie2命令的格式正确。

另一种简化写法(避免重复写前缀)

可以利用Python字符串处理从input.idx中提取前缀,减少重复代码:

rule test_bowtie2:
    input:
        idx=multiext(
            "/home/databases/genomes/Homo_sapiens/rCRS/bowtieindex/rCRS",
            ".1.bt2",
            ".2.bt2",
            ".3.bt2",
            ".4.bt2",
            ".rev.1.bt2",
            ".rev.2.bt2"
        ),
        fastq="sample.fq.gz"
    params:
        idx_prefix=lambda wildcards, input: input.idx[0].rsplit('.', 2)[0]
    output:
        "sample_bt.bam"
    shell:
        """
        nice -19 /home/ctools/bowtie2-2.4.4/bowtie2 -x {params.idx_prefix} --interleaved {input.fastq} | /home/ctools/bin/samtools view -bS -F4 - > {output}
        """

这里通过lambda函数从第一个索引文件路径(比如rCRS.1.bt2)中分割出前缀rCRS,适合索引路径较长的场景,避免手动重复输入前缀。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 08:25:33