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

Snakemake使用wildcard_constraints时出现缺失输入文件错误求助

Snakemake「Missing input files」错误排查与修复

以下是针对你遇到问题的具体排查方向和修复方案:

1. rule all 与 wildcard_constraints 范围不匹配

你在rule all中使用CONTIG_LIST展开输出,但RdTest_autosomes的wildcard_constraints仅限制chrom为常染色体(chr1-chr22)。如果CONTIG_LIST包含X/Y染色体,Snakemake找不到对应规则生成这些染色体的输出,会触发输入缺失错误。

  • 修复:
    • 若仅需处理常染色体,将rule all中的chrom = CONTIG_LIST改为chrom = AUTOSOMAL;
    • 若需处理X/Y染色体,单独编写对应规则(如RdTest_chrX、RdTest_chrY),并将这些规则的输出加入rule all的input列表。

2. wildcard 顺序不匹配导致路径解析错误

你的bed输入路径是BATCH + '.{chrom}.{source}.bed'(chrom在前,source在后),但输出路径是BATCH + '.{source}.{chrom}.metrics'(source在前,chrom在后)。Snakemake会按照输出中的wildcard顺序去匹配输入,这会导致实际文件路径与Snakemake解析的路径不匹配,找不到输入文件。

  • 修复:统一输入输出的wildcard顺序,例如调整输出路径为:
    metrics=OUTPUT_DIR + '/GenerateBatchMetrics/Metrics/' + BATCH + '.{chrom}.{source}.metrics'
    
    同时同步修改params中的prefix为BATCH + '.{chrom}.{source}',保持一致性。

3. 验证输入文件的实际存在性

即使路径格式正确,也要确认:

  • OUTPUT_DIR/GenerateBatchMetrics/All_Beds/SEP/下存在对应{BATCH}.{chrom}.{source}.bed的文件;
  • rules.ZPaste.output.matrix_file和rules.T_CalcMedCov.output指向的文件确实存在。
  • 可通过命令snakemake --dry-run --printshellcmds查看Snakemake尝试寻找的具体文件路径,对比实际文件系统中的路径是否一致。

修改后的示例代码

rule all:
    input:
        # 仅展开常染色体输出
        expand(rules.RdTest_autosomes.output, source=ALGO, chrom=AUTOSOMAL),
        # 若需处理X/Y,添加对应规则的输出
        # expand(rules.RdTest_chrX.output, source=ALGO),
        # expand(rules.RdTest_chrY.output, source=ALGO),

rule RdTest_autosomes:
    input:
        bed = OUTPUT_DIR + "/GenerateBatchMetrics/All_Beds/SEP/" + BATCH + '.{chrom}.{source}.bed',
        bincov = rules.ZPaste.output.matrix_file,
        medmat = rules.T_CalcMedCov.output,
    output:
        # 统一wildcard顺序与输入一致
        metrics=OUTPUT_DIR + '/GenerateBatchMetrics/Metrics/' + BATCH + '.{chrom}.{source}.metrics',
    wildcard_constraints:
        chrom='(' + '|'.join(AUTOSOMAL) + ')'   # <- from chr1 to chr22
    params:
        prefix = BATCH + '.{chrom}.{source}',
        famfile = config['base']['fam_file'],
        sample = OUTPUT_DIR + "/sample_list.txt",
        op_dir = OUTPUT_DIR + '/GenerateBatchMetrics/Metrics/',
    singularity:
        "sif_images/rdtest.sif"
    threads: workflow.cores * 0.4
    shell:
        """
        Rscript src/RdTest/RdTest.R \
            -b {input.bed} \
            -n {params.prefix} \
            -o {params.op_dir} \
            -c {input.bincov} \
            -m {input.medmat} \
            -f {params.famfile} \
            -w {params.sample} 
        
        touch {output}
        """

内容的提问来源于stack exchange,提问作者Cuong pham gia

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 02:01:14