我想编写一个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
我尝试使用以下最小示例(具有三个输入文件 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}
"""