2017-05-25 136 views
1

我们需要创建一个由多个软件包中的命令组成的工作流程,最终该机构的其他成员(顺便说一下,不是计算机科学家)成为能够下载和使用它。如何创建适合在Python中分发的工作流程

在线搜索,有一些包创建工作流程(https://www.biostars.org/p/91301/),其中Snakemake(https://snakemake.readthedocs.io/en/v3.9.1/snakefiles/deployment.html)似乎是一个很好的候选人为此目的。

我们想知道这是否真的是最好的包装,如果有更好的选择?

回答

2

这很大程度上取决于所使用的计算机素养和可用预算。真正了解谁将使用你的软件//程序。一切都取决于此,它会减少可供选择的语言池。

退房本文太: https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5429012/

我们的小组选择Snakemake后大约6周调查景观(二月三月2017)

在刚刚适量的条款易于OF-使用,同时仍然允许有经验的编码人员进行足够的定制,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脚本来构建模块化管道。我所有的pipeling(依赖)都是用Snakemake写的,我的任务的执行是用Python完成的(有一点Bash)。牢固的缩放。通配符可能会非常棘手,但通过正则表达式的力量,可能会遇到困难。

作者仍然非常活跃,这对我们来说是一个巨大的考虑,在StackOverflow,BitBucket和Google Groups中。

从功能

除此之外,我们还考虑前进。 Snakemake似乎是由深深淹没在生物界的人写的。 BDS的作者遵循类似的思想。一些其他语言,比较大的语言,由公司运营。不是说公司不好,但我认为可能存在潜在的动机差异。

我们认为其他语言是:

  1. Nextflow:https://www.nextflow.io/ 这并不是说这是不是一个伟大的语言,该语言显著授权编码器,但是,他们作为开发人员决定发明新的术语,基于“数据流编程范例”。在尝试用语言进行开发时,它极大地增强了学习曲线。 https://www.nextflow.io/docs/latest/basic.html#processes-and-channels

  2. BigDataScript:https://pcingola.github.io/BigDataScript/bigDataScript_manual.html 我真的很喜欢这种语言,它更类似于你在学校里学到的编码语言(Java和C),它使用了很多相同的术语。这将是我们的第二选择,如果我们的团队不熟悉GNU Make的编码风格,那么我们可能最终会使用BDS。此外,该语言的作者是snpEff的作者。

有很多其他语言。我们的小组真的只是最终审查了三个细节。我在Snakemake和BDS上播放了幻灯片(PPTX中的20多张幻灯片),突出显示了我们每个人都非常重视的功能,如果有兴趣,我可以主持您的阅读。没什么特别的,主要是阅读每种语言手册的片段。

biostars链接你有我们也深深的重视。

这篇文章反映了我Snakemake和Nextflow之间的感情:https://jmazz.me/blog/NGS-Workflows

+0

感谢翔实的答案。如果您还可以在幻灯片中提供有关此主题的幻灯片或直接发送给我,我将不胜感激:[email protected] – user3015703

+1

通过电子邮件将它们发送给您。请享用! – TBoyarski

+0

关于Nextflow的一些注意事项:'process'不是一个函数,它是一个反应式数据流操作(函数可以在NF中定义,但它们不是这个模型的核心)。 “通道”是一个无界的异步队列,与Go通道类似。所使用的术语反映了基于其的数据流编程范例。 – pditommaso