我们需要创建一个工作流,该工作流由多个包中的命令组成,并最终使该研究所的其他成员(顺便说一下,他们不是计算机科学家)也可以下载和使用它。
在线搜索中,有一些用于创建工作流(https://www.biostars.org/p/91301/)的软件包,其中Snakemake(https://snakemake.readthedocs.io/en/v3.9.1/snakefiles/deployment.html)似乎是用于此目的的不错选择。
我们想知道这是否真的是最好的软件包,是否有更好的选择?
最佳答案
这在很大程度上取决于所使用的计算机的读写能力以及可用的预算。真正了解谁将使用您的软件//程序。一切都取决于此,它将减少可供选择的语言。
也可以查看这篇文章:
https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5429012/
经过大约6周的景观调查,我们小组选择了Snakemake(2017年2月至3月)
就适当程度的易用性而言,尽管仍然允许经验丰富的编码人员进行足够的自定义,Snakemake才是合适的选择。如果有很多功能,那就绰绰有余了。出色的集群集成。包装器真的很酷,并且易于使用。我们想要更多的粒度和控制能力,因此我们实际上是在编写所有自己的模块(复制当前在GNU Make中编写的模块)。
对于发行,Snakemake拥有此功能,非常方便。
https://snakemake.readthedocs.io/en/latest/snakefiles/deployment.html
Snakemake在conda(Anaconda.org)中的维护也很好,这进一步支持了可移植性。当我在CentOS5(旧操作系统)上运行时,这对我来说是一个重要的问题。 Johannes在向后兼容方面的努力非常出色。
https://anaconda.org/bioconda/snakemake
Snakemake很好地利用了python。 Python和R是我认为与生物计算社区相关的两种语言,因此,在寻找学生或雇用有经验的人方面,您的候选人池更大。我使用python脚本构建模块化的管道。我所有的流水(依赖项)都是用Snakemake编写的,我的任务的执行是用Python(有少量的Bash)完成的。稳固缩放。通配符可能很棘手,但是使用正则表达式的强大功能可以预见困难。
作者仍然非常活跃,这对我们来说是StackOverflow,BitBucket和Google网上论坛中的一个重要考虑因素。
https://bitbucket.org/snakemake/snakemake-wrappers
https://groups.google.com/forum/#!forum/snakemake
https://bitbucket.org/snakemake/snakemake/issues
除了功能之外,我们还考虑了向前发展。 Snakemake似乎是由深深浸入生物界的人所写。 BDS的作者遵循类似的心态。其他一些语言(较大的语言)由公司运行。并不是说公司不好,但是我认为可能存在潜在的动机差异。
我们考虑的其他语言是:
下一流程:https://www.nextflow.io/
并不是说这不是一门好语言,而是该语言极大地增强了编码人员的能力,但是,随着开发人员决定基于“数据流编程范例”发明新的术语,他们开始了。尝试以语言进行开发时,它会极大地加深学习曲线。
https://www.nextflow.io/docs/latest/basic.html#processes-and-channels
BigDataScript:https://pcingola.github.io/BigDataScript/bigDataScript_manual.html
我真的很喜欢这种语言,它更类似于您在学校学习的编码语言(Java,C),并且使用了很多相同的术语。如果我们的小组尚未对GNU Make的编码风格非常熟悉,那么这将是我们的第二选择。我们可能最终会使用BDS。同样,该语言的作者是snpEff的作者。
还有很多其他语言。我们小组实际上只是最后详细研究了这三个。我在Snakemake和BDS上有幻灯片放映(在PPTX中有20多张幻灯片),着重介绍了我们在每张幻灯片中都看重的功能,如果有兴趣的话,我可以主持给您阅读。没什么特别的,主要只是阅读每种语言的手册的摘要。
我们也非常珍视您与生物明星的联系。
本文反映了我在Snakemake和Nextflow之间的感受:https://jmazz.me/blog/NGS-Workflows
关于python - 如何创建适合在python中分发的工作流,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44175719/