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

标签 python workflow snakemake

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

在线搜索,有一些用于创建工作流的软件包( 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 周的景观调查(2017 年 2 月至 3 月)后选择了 Snakemake

就恰到好处的易用性而言,同时仍然允许经验丰富的编码人员进行足够的定制,Snakemake 正是合适的选择。功能很多,绰绰有余。出色的集群集成。包装器真的很酷,而且易于使用。我们想要更多的粒度和控制,所以我们实际上正在编写我们自己的所有模块(复制当前在 GNU Make 中编写的模块)。

对于分发,Snakemake有这个,很方便。 https://snakemake.readthedocs.io/en/latest/snakefiles/deployment.html

Snakemake 在 conda (Anaconda.org) 中也得到了很好的维护,这进一步支持了可移植性。当我在 CentOS5(旧操作系统)上运行时,这对我来说是一个重要问题。约翰在向后兼容性方面所做的努力非常出色。 https://anaconda.org/bioconda/snakemake

Snakemake 很好地利用了 python。 Python 和 R 是我认为与生物计算社区相关的两种语言,因此在寻找学生或雇用有经验的人方面,候选人库更大。我使用 python 脚本来构建模块化管道。我所有的管道(依赖项)都是用 Snakemake 编写的,我的任务的执行是用 Python 完成的(带有一点 Bash)。坚实的缩放。通配符可能很棘手,但借助正则表达式的强大功能,我们可以预见到困难。

作者在 StackOverflow、BitBucket 和 Google 网上论坛上仍然非常活跃,这对我们来说是一个重要的考虑因素。

除了功能之外,我们还考虑向前推进。 Snakemake 似乎是由一个深深沉浸在生物界的人写的。 BDS 的作者也遵循类似的思维方式。其他一些语言(较大的语言)由公司运行。并不是说公司不好,但我认为可能存在潜在的动机差异。

我们考虑的其他语言是:

  1. 下一个流程: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链接我们也非常重视。

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

关于python - 如何在 python 中创建适合分发的工作流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44175719/

相关文章:

c# - 需要工作流程编辑软件 - 推荐

xcode - 为什么 Xcode 5 助手编辑器默认为 .m 文件

python - Snakemake 使用脚本进行 shell I/O 重定向和访问 Snakemake 变量

带有混合通配符的输出文件

python - 运行时错误 : module compiled against API version a but this version of numpy is 9

python - Qt:曲线编辑器或类似的东西?

c# - 从 ASP.net 的提醒开始

SLURM/Sbatch 创建许多小的输出文件

python - 如何从 MYSQL DB 中仅捕获新记录

python - PHP 中 python3 的 function_exists