为了减少工作流的小细节,我刚开始试用snakemake (上周左右),之前我已经通过python编写了自己的特定工作流。
我生成了一个小工作流,在这些步骤中将使用Illumina读取并运行Kraken来对付它们。然后,我将解析Kraken输出的输出,以检测未提供物种值的最常见物种(在一组允许的范围内)(与snakemake -s test.snake -config R1_reads= R2_reads= R2_reads==‘一起运行)。
我有两个问题。
目前,我的策略是创建一个包含检测到的物种的临时文件,然后将其cat {input.species}
到其他shell命令中。这看起来不太优雅,但仔细看一看文档,我就找不到合适的替代方法了。我注意到PersistentDicts允许我在run:命令之间传递变量,但我不确定是否可以使用它将变量加载到shell:节中。我还注意到,wrappers可以让我处理它,但是从我需要这个变量的角度来看,我将包装我工作流程的其余部分。
现在,我对如何解决这个问题的印象是,有多个工作流文件为物种,并有一个运行开关,它调用相关物种的工作流依赖于物种。
感谢你对这些问题的洞察力。
-Kim
发布于 2017-10-20 00:20:35
您可以将输出标记为动态(例如,期望每个物种有一个文件)。然后,在生成这些文件之后,Snakemake将确定作业的下游DAG。请参阅http://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#dynamic-files
https://stackoverflow.com/questions/46824515
复制