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

使用Snakemake调用Bowtie2双端比对时遇输入文件缺失错误求助

解决Snakemake调用Bowtie2时的输入文件缺失问题

我是生物信息学专业学生,首次在Linux环境下用Snakemake执行序列比对,编写Snakefile调用Bowtie2做双端比对(单样本测试),但一直触发输入文件缺失错误。已修正路径、确认YAML配置无误,问题仍存在。

我的Snakefile代码

# samples, = glob_wildcards('/../data/01-trimmed/-{sample}_S0.fastq.gz') 

samples = ["Input_Si_B-Catenin_HepG2_S0"]

#reads = ["1","2"]

rule all:
    input:
#       QCreads= expand("..*(I specified the right path)*/data/QC-{s}_L001_R1_001_fastqc.html",s=samples),
#       trimmed=expand("../data/fastq/{s}_R1_trimmed.fastq.gz",s=samples),
#       QCreads2= expand("../data/QC/{s}_R2_trimmed_fastqc.html",s=samples),
        map=expand("../data/04-mapped/{s}.bam",s=samples),
        #insertsize=expand("../data/QC/{s}.insert.metric.tab",s=samples)
#
rule bowtie2:
    input:
        R1="../data/01-trimmed/{sample}_R1.fq.gz",
        R2="../data/01-trimmed/{sample}_R2.fq.gz"
    output:
        "../04-mapped/{sample}.bam"
    threads: 10
    shell:
        """
        module load bowtie2/2.4.4
        module load samtools/1.15.1
        bowtie2 --phred33 --local -p {threads} -x /../hg38 -1 {input.R1} -2 {input.R2} | samtools view -bhS > {output}
        samtools stats {output} > ../04-mapped/{wildcards.sample}_raw_stats.txt
        """ 

报错信息

Building DAG of jobs...
MissingInputException in rule bowtie2 in file /../data/snakefile_mapping, line 15:
Missing input files for rule bowtie2:
    output: ../04-mapped/Input_Si_B-Catenin_HepG2_S0.bam
    wildcards: sample=Input_Si_B-Catenin_HepG2_S0
    affected files:
        ../Input_Si_B-Catenin_HepG2_S0_R2.fq.gz
        ../Input_Si_B-Catenin_HepG2_S0_R1.fq.gz

问题分析与解决方法

问题核心

报错显示Snakemake查找的输入路径是../Input_Si_B-Catenin_HepG2_S0_R1.fq.gz,但规则定义的路径是../data/01-trimmed/{sample}_R1.fq.gz,说明路径解析出现偏差,大概率是工作目录不匹配或路径拼写/格式错误。

具体解决步骤

  1. 替换绝对路径
    用绝对路径替代相对路径,避免工作目录带来的解析混乱。修改bowtie2规则的输入、输出及shell语句中的路径:

    rule bowtie2:
        input:
            R1="/完整路径/data/01-trimmed/{sample}_R1.fq.gz",
            R2="/完整路径/data/01-trimmed/{sample}_R2.fq.gz"
        output:
            "/完整路径/data/04-mapped/{sample}.bam"
        threads: 10
        shell:
            """
            module load bowtie2/2.4.4
            module load samtools/1.15.1
            bowtie2 --phred33 --local -p {threads} -x /../hg38 -1 {input.R1} -2 {input.R2} | samtools view -bhS > {output}
            samtools stats {output} > /完整路径/data/04-mapped/{wildcards.sample}_raw_stats.txt
            """ 
    
  2. 验证工作目录与文件路径
    执行Snakemake前,先确认当前工作目录下的相对路径是否正确:

    # 检查输入文件是否存在
    ls ../data/01-trimmed/Input_Si_B-Catenin_HepG2_S0_R*.fq.gz
    

    如果返回文件不存在,说明路径错误,需要调整规则中的路径写法。

  3. 核对文件名后缀与格式
    从注释掉的trimmed路径推测,实际文件名可能带有_trimmed后缀,或者后缀是.fastq.gz而非.fq.gz。修改规则中的输入文件名,比如:

    input:
        R1="../data/01-trimmed/{sample}_R1_trimmed.fastq.gz",
        R2="../data/01-trimmed/{sample}_R2_trimmed.fastq.gz"
    
  4. 添加调试规则验证路径解析
    新增临时规则打印解析后的路径,确认是否符合预期:

    rule debug_path:
        input:
            R1="../data/01-trimmed/{sample}_R1.fq.gz"
        params:
            sample="Input_Si_B-Catenin_HepG2_S0"
        shell:
            "echo 解析后的输入路径: {input.R1}"
    

    执行snakemake debug_path,查看输出的路径是否指向实际存在的文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 23:30:58