gpt4 book ai didi

Snakemake:未输入的依赖项

转载 作者:行者123 更新时间:2023-12-03 19:43:52 25 4
gpt4 key购买 nike

我想知道在 Snakemake 中是否有一种方法可以定义实际上不是输入文件的依赖项。
我的意思是有些程序希望某些文件存在而命令行上没有提供。

让我们考虑 bwa举个例子。
这是来自 Johannes Köster mapping rules 的规则:

rule bwa_mem_map:
input:
lambda wildcards: config["references"][wildcards.reference],
lambda wildcards: config["units"][wildcards.unit]
output:
"mapping/{reference}/units/{unit}.bam"
params:
sample=lambda wildcards: UNIT_TO_SAMPLE[wildcards.unit],
custom=config.get("params_bwa_mem", "")
log:
"mapping/log/{reference}/{unit}.log"
threads: 8
shell:
"bwa mem {params.custom} "
r"-R '@RG\tID:{wildcards.unit}\t"
"SM:{params.sample}\tPL:{config[platform]}' "
"-t {threads} {input} 2> {log} "
"| samtools view -Sbh - > {output}"

这里,bwa 期望基因组索引文件存在,但它不是命令行参数(索引文件的路径是从基因组路径推导出来的)。

有没有办法告诉 Snakemake 索引文件是一个依赖项,如果 Snakemake 知道如何生成这个文件,他会查看它的规则?

我想您仍然可以将规则输入重写为:
rule bwa_mem_map:
input:
genome=lambda wildcards: config["references"][wildcards.reference],
fastq=lambda wildcards: config["units"][wildcards.unit]
index=foo.idx

并适应规则 run部分因此。
这是最好的解决方案吗?

提前致谢。
拜诺主义者

最佳答案

我认为snakemake 处理规则之间的依赖关系的唯一方法是通过文件,所以当你将索引文件明确地作为input 放置时,我会说你做得对。对于您的映射规则,即使此文件未出现在映射命令中。

对于它的值(value),我对 bam 索引文件做了同样的事情,这是某些工具的隐式依赖:我将排序的 bam 文件及其索引都放在 input 中。 ,但只能使用 shell 中的 bam 文件或 run部分。我有一个规则生成两个文件为 output .
inputoutput文件不需要出现在 shell/run规则的一部分。

关于Snakemake:未输入的依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40802755/

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