这是蛇制作教程高级部分的一个简短示例:
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
在此先感谢您的帮助。拜诺伊斯特