我是尝试使用snakemake(上周左右)的新手,以便处理较少的工作流细节,之前我已经通过python编写了我自己的特定工作流程。
我生成了一个小工作流程,其中的步骤将使用Illumina PE读取并运行Kraken对抗它们。然后我解析Kraken输出的输出以检测最常见的物种(在一组允许的范围内)如果物种值没有提供(用snakemake -s test.snake运行--config R1_reads = R2_reads =种类=''。
我有两个问题。
目前我的策略是创建一个临时文件
包含检测到的物种,然后cat {input.species}
进入
其他shell命令。这看起来并不优雅但是透视
我无法找到适合的文档。我注意到
PersistentDicts允许我在run:命令之间传递变量
但我不确定是否可以使用它将变量加载到shell中:
部分。我也注意到包装器可以让我处理它
但是从我需要的那个方面来看,我要把它包裹起来
我工作流程的其余部分。
现在我对如何解决这个问题的印象是为物种提供了多个工作流文件,并且有一个带开关的运行,它根据物种调用相关的物种工作流程。
欣赏对这些问题的任何见解。
-Kim
答案 0 :(得分:0)
您可以将输出标记为动态(例如,每个物种需要一个文件)。然后,Snakemake将在生成这些文件后确定作业的下游DAG。见http://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#dynamic-files