gpt4 book ai didi

makefile - Snakemake:命名规则而不是目标文件

转载 作者:行者123 更新时间:2023-12-02 01:20:29 28 4
gpt4 key购买 nike

这是蛇形教程高级部分的一个简短示例:

rule bwa_map:
input:
"data/genome.fa",
lambda wildcards: config["samples"][wildcards.sample]
output:
"mapped_reads/{sample}.bam"
threads: 8
shell:
"bwa mem -t {threads} {input} | samtools view -Sb - > {output}"

现在假设我几个月前写了这个规则,我不记得输出文件名。
我的理解是我不能通过调用规则名称来运行 snakemake,因为这会导致错误:
$ snakemake bwa_map
InputFunctionException in line 9 of Snakefile:
AttributeError: 'Wildcards' object has no attribute 'sample'
Wildcards:

$

首先,我不明白为什么 snakemake 不能使用 lambda 函数从配置文件中推断出输入文件,因为很明显我引用了“示例”部分。

其次,是否有解决方法?
因为使用旧的 Makefile 非常容易,只需使用旧的 Makefile 并通过键入类似的内容运行相同的 bwa_map 规则
$ make bwa_map INPUT=data/samples/A.fastq

在此先感谢您的帮助。
拜诺主义者

最佳答案

如果您将规则名称指定为目标并且该规则包含通配符,则 Snakemake 无法知道要为通配符使用什么值。在这种情况下,这只能从具体的输出文件中确定。
此输出文件可以来自下游规则,例如Snakefile 顶部的真正“全部”目标,或直接在命令行中提供。

但是,如果您在 Snakefile 顶部有适当的目标规则,则有 --until 标志,它允许您仅在给定规则之前执行工作流。

关于您的 make 示例,我不知道此功能。你能指点我关于这个的文档吗?我也可能会添加类似于 Snakemake 的东西。

另请注意,我只是在 Snakemake 的开发版本中改进了这种情况下的错误消息。它现在提供了更多信息并解释了问题。

关于makefile - Snakemake:命名规则而不是目标文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40538614/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com