Snakemake运行无报错不执行Bowtie规则,dryrun提示Nothing to be done
Snakemake不触发Bowtie规则问题修复方案
- 核心问题1:Bowtie规则被注释禁用
你提供的代码中#rule Bowtie:行前带有#注释符,整个Bowtie规则被Snakemake忽略,自然无法触发对应任务,首先删除该行前的#即可启用规则。 - 核心问题2:输入文件通配符不匹配
你通过glob_wildcards获取样本名时,匹配的是{sample}_{number, [1,2]}.{FILE_FORMAT}格式的双端测序文件,说明你的原始文件命名为样本名_1.后缀、样本名_2.后缀,但Bowtie规则中定义的R1、R2输入路径为INPUTDIR + "{sample}.fastq",缺少了_{number}后缀,Snakemake找不到对应输入文件,因此判定无法生成输出任务。 - 核心问题3:Bowtie索引路径配置错误
你已经单独定义了DATABASEPATH变量存储Bowtie数据库路径,但Bowtie规则的索引输入路径写为INPUTDIR + "/Bowtie_Database/{{bowtie_ref}}{ending}",和你预设的数据库路径不匹配,会导致索引查找失败。 - 其他可优化点
当前Bowtie规则中R1、R2输入路径完全相同,没有区分双端的_1和_2文件,即使规则启用也会出现比对错误;shell命令中没有调用你配置的threads参数,会导致线程配置不生效。
修正后Bowtie规则参考
#mapping on ref. genome with Bowtie2 rule Bowtie: params: threads = config["threads"] conda: "envs/fastqc.yml" # 若bowtie2不在该环境下,替换为对应环境配置文件路径 input: expand(DATABASEPATH + "/{{bowtie_ref}}{ending}", ending=[".1.bt2",".2.bt2",".3.bt2",".4.bt2",".rev.1.bt2",".rev.2.bt2"]), R1 = INPUTDIR + "/{sample}_1." + FILE_FORMAT, R2 = INPUTDIR + "/{sample}_2." + FILE_FORMAT output: OUTPUTDIR + "/Bowtie/{bowtie_ref}_{sample}.sam" message: "Alignment with Bowtie2 this will take a while" shell: "bowtie2 -x {DATABASEPATH}/{wildcards.bowtie_ref} -1 {input.R1} -2 {input.R2} -S {output} --threads {params.threads}"
验证方法
修正完成后运行snakemake --dryrun -R Bowtie强制检查Bowtie相关任务链,确认是否正常生成任务。如果仍提示无任务可执行,可运行snakemake --debug-dag打印DAG构建日志,定位具体的通配符匹配失败节点。
内容的提问来源于stack exchange,提问作者DarkDromeda
相关产品推荐
相关产品推荐

