snakemake是用于处理输出介导的工作流程的正确工具

时间:2017-10-19 07:17:50

标签: bioinformatics snakemake

我是尝试使用snakemake(上周左右)的新手,以便处理较少的工作流细节,之前我已经通过python编写了我自己的特定工作流程。

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

我有两个问题。

  1. 给出动态输出/输入的推荐方法是什么?
  2. 目前我的策略是创建一个临时文件     包含检测到的物种,然后cat {input.species}进入     其他shell命令。这看起来并不优雅但是透视     我无法找到适合的文档。我注意到     PersistentDicts允许我在run:命令之间传递变量     但我不确定是否可以使用它将变量加载到shell中:     部分。我也注意到包装器可以让我处理它     但是从我需要的那个方面来看,我要把它包裹起来     我工作流程的其余部分。

    1. 如果我想在之后使用物种运行一组特定于物种的脚本(具有多种物种特定的工作流程),那么snakemake是否是正确的工具?
    2. 现在我对如何解决这个问题的印象是为物种提供了多个工作流文件,并且有一个带开关的运行,它根据物种调用相关的物种工作流程。

      欣赏对这些问题的任何见解。

      -Kim

1 个答案:

答案 0 :(得分:0)

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