如何创建适合在 python 中分发的工作流程

How to create workflows suitable for distribution in python

我们需要创建一个由来自多个包的命令组成的工作流,最终研究所的其他成员(顺便说一句,他们不是计算机科学家)能够下载和使用它。

在线搜索,有一些用于创建工作流的包(https://www.biostars.org/p/91301/) and among them Snakemake (https://snakemake.readthedocs.io/en/v3.9.1/snakefiles/deployment.html)似乎是一个很好的选择。

我们想知道这是否真的是为此目的最好的软件包,是否有更好的选择?

这在很大程度上取决于所用基础的计算机知识和可用预算。真正了解谁将使用您的软件//程序。一切都取决于此,它将减少可供选择的语言库。

也看看这篇论文: https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5429012/

我们小组在调查景观(2017 年 2 月至 3 月)大约 6 周后选择了 Snakemake

就恰到好处的易用性而言,同时仍允许经验丰富的编码人员进行足够的自定义,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)。固体缩放。通配符可能很棘手,但借助正则表达式的强大功能,可以预料到困难。

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

除了功能之外,我们还考虑了向前发展。 Snakemake 似乎是深陷生物界的人写的。 BDS 的作者遵循类似的思路。其他一些较大的语言是 运行 公司的。不是说公司不好,但我认为可能存在潜在的动机差异。

我们考虑的其他语言是:

  1. 下一流程:https://www.nextflow.io/ 这并不是说这不是一种伟大的语言,这种语言显着地赋予了编码人员权力,但是,作为开发人员,他们决定根据 "dataflow programming paradigm" 发明新的术语。尝试使用该语言进行开发时,它会大大提高学习曲线。 https://www.nextflow.io/docs/latest/basic.html#processes-and-channels

  2. 大数据脚本:https://pcingola.github.io/BigDataScript/bigDataScript_manual.html 我真的很喜欢这门语言,它更像你在学校学习的编码语言,(Java, C),而且它使用了很多相同的术语。这将是我们的第二选择,如果我们的团队还没有非常熟悉 GNU Make 的编码风格,我们可能最终会使用 BDS。还有,这个语言的作者就是snpEff的作者。

还有许多其他语言。我们小组真的刚刚结束了对这三者的详细检查。我在 Snakemake 和 BDS 上有幻灯片放映(PPTX 中有 20 多张幻灯片),突出显示了我们在每个方面都重视的功能,如果有兴趣,我可以主持供您阅读。没什么特别的,主要是阅读每种语言的手册的片段。

biostarslink你有我们也很看重。

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