使用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,说明路径解析出现偏差,大概率是工作目录不匹配或路径拼写/格式错误。
具体解决步骤
替换绝对路径
用绝对路径替代相对路径,避免工作目录带来的解析混乱。修改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 """验证工作目录与文件路径
执行Snakemake前,先确认当前工作目录下的相对路径是否正确:# 检查输入文件是否存在 ls ../data/01-trimmed/Input_Si_B-Catenin_HepG2_S0_R*.fq.gz如果返回文件不存在,说明路径错误,需要调整规则中的路径写法。
核对文件名后缀与格式
从注释掉的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"添加调试规则验证路径解析
新增临时规则打印解析后的路径,确认是否符合预期: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
相关产品推荐
相关产品推荐

