使用带有 Snakemake 通配符的扩展来跨样本聚合时出错

问题描述 投票:0回答:1

我想编写一个snakemake规则,该规则可以聚合通配符以生成所有样本的摘要。对我来说,这似乎是一个非常简单的情况,但我无法弄清楚我遇到的语法错误。

我使用了在这里找到的代码:https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#the-expand-function

修改为如下所示:

规则plot_coverage:

    input:  
            expand("{sample}.dedup.bam",sample=all_samples)
    output:  
            "coverage_plot.png"
    shell:   
            """  
            echo "test"
            """  

并得到以下错误:
“语法无效。也许您忘记了逗号?: 展开(“{sample}.dedup.bam”,样本= all_samples)”

但是如果我使用相同的语法在文件中的其他位置打印一行,它可以正常工作并产生预期的结果:

all_samples=["TN2L_S1","TN3L_S3","TN2R_S2","TN3R_S4"]
print(expand("{sample}.dedup.bam",sample=all_samples))

结果:['TN2L_S1.dedup.bam'、'TN3L_S3.dedup.bam'、'TN2R_S2.dedup.bam'、'TN3R_S4.dedup.bam']

如果我仅注释掉上面显示的 9 行代码,以及要求此规则输出的行,则文件的其余部分将按预期运行,不会出现错误。

版本信息: Snakemake 8.25.5 hdfd78af_0 Bioconda
Snakemake-interface-common 1.17.4 pyhdfd78af_0 bioconda
Snakemake-interface-executor-plugins 9.3.2 pyhdfd78af_0 bioconda
Snakemake-接口-报告-插件 1.1.0 pyhdfd78af_0 bioconda
Snakemake-接口-存储-插件 3.3.0 pyhdfd78af_0 bioconda
Snakemake-最小 8.25.5 pyhdfd78af_0 bioconda
python 3.11.7 hab00c5b_1_cpython conda-forge

wildcard bioinformatics snakemake
1个回答
0
投票

我尝试使用以下最小示例(具有三个输入文件 a.txt、b.txt 和 c.txt)重新创建您的错误,但效果很好。这对您也适用吗?如果适用,您能告诉我们您的代码有何不同吗?

all_samples = ["a","b","c"]

rule all:
    input:
        "coverage_plot.png"  

rule test:
    input:
        expand("{sample}.txt",sample=all_samples)
    output:
        "coverage_plot.png"
    shell:
        """  
        echo {input}
        """  
© www.soinside.com 2019 - 2024. All rights reserved.