2017-10-19 49 views
1

我是新手,尝试使用snakemake(上周左右),以便处理较少的工作流细节,以前我编写了自己的特定工作流程通过python。snakemake是用于处理输出中介工作流程的正确工具

我生成了一个小工作流程,其中的步骤之间将使用Illumina PE读取并运行Kraken对他们。然后,我会解析Kraken输出的输出,以检测最常见的物种(在一组允许范围内),如果没有提供物种值(使用snakemake运行-s test.snake --config R1_reads = R2_reads = species = “”。

我有2个问题。

  1. 什么给出动态输出/输入推荐的方法?

目前我对于这个策略是创建一个临时文件,其中 包含将检测到的物种cat {input.species}再变成 其他s地狱命令。这似乎并不高雅,但通过 看文档,我不能找到一个适当的选择。我注意到 PersistentDicts会允许我在运行之间传递变量:命令 ,但我不确定是否可以使用它将变量加载到shell中: 部分。我还注意到,包装可以让我处理它 然而,从我需要这个变量的角度来看,我会包装 剩余的工作流程。

  1. 如果我希望事后使用物种运行特定物种的脚本(具有多种物种特定工作流程),snakemake是否是正确的工具?

现在我对如何解决这个问题的印象是有物种的多个工作流程文件,并有开关运行,根据物种调用相关的物种工作流程。

感谢有关这些问题的任何见解。

-Kim

回答

0

您可以将输出标记为动态(例如,期望每个物种有一个文件)。然后,Snakemake将确定这些文件生成后的作业的下游DAG。见http://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#dynamic-files

+0

感谢您的答复,这是有道理的,所以有动力输出,然后参考物种特定的每个相关的预期输出。我从中猜测,有时碰到临时文件是“正确”的进展方式? – Kim

相关问题