科学的工作流程管理系统


30

谁能推荐我一个好的工作流程管理系统(WMS),最好使用Python?到目前为止,我一直在使用GNU Make,但是它引入了一层我想避免的复杂性。一个好的WMS应该具有以下功能:

  • 与命令行工具和Python脚本轻松集成,
  • 简单易用,重量轻,
  • 处理依赖关系
  • 提供命令行界面,
  • 提供日志记录机制,
  • (可选)提供数据来源。

我知道WMS在生物信息学中非常流行(例如Galaxy),但是我正在寻找更通用的东西。


2
这不是一个完整的答案,但是由于您在同一问题中提到了GNU Make和Python,所以我想将您引向SCons:scons.org
Reid.Atcheson 2012年

谢谢。您是否知道使用SCons进行科学工作流的任何示例?
btel 2012年

我发现,只需做一些工作,您就可以让emacs完成大部分工作(有时通过与外部工具集成)。不过,由于我发现我通常仍然必须使用makefile来编译任何无关紧要的内容,因此它可能并不是您要查找的内容。
2012年

1
我可以写关于SCons和waf的答案,它们是Python构建系统工具。我已经使用SCons几个月了,可以为您提供相对于GNU Make优缺点的一些观点。就是说,我想知道您是否可以详细说明“提供日志记录机制”和“提供数据出处”的含义。在日志记录方面,您只需要一个日志文件,还是在寻找诸如版本控制系统之类的东西?
Geoff Oxberry 2012年

1
正如您建议的那样,日志记录可能非常简单,例如日志文件,其中包含所有运行的时间戳,stderr的重定向和(可选)stdout。另外,可以将工作流中每个步骤的中间结果保存在单独的目录中。数据源更像是一个控制版本系统,它保留所有计算脚本,输入和输出文件的历史记录。当前,我使用Makefiles + git,但是我希望找到更好的集成和更易于使用的东西。我听说过SCons,但我不知道它比Make有什么优势。
btel 2012年

Answers:


12

对于允许完全重现的日志记录,我强烈建议使用Sumatra python软件包。它很好地将版本控制提交号,机器状态和输出文件链接到每个运行的程序,并具有django Web界面以与运行信息数据库进行交互。python API使在我的脚本中包含日志变得非常容易。


苏门答腊看起来真的很有趣。我得试试看。
Geoff Oxberry 2012年

它不能满足我的所有要求,但最接近我的需求。因此,我接受了答案。披露:我是sumatra的开发人员之一。
btel 2012年

8

一个月前,我偶然发现了受到高度推荐的Hans-Martin诉Gaudecker网站,该网站教授诸如“经济学家的有效编程实践”之类的课程。在他的2010年秋季课程中,他介绍了SCons,在他的2011年秋季课程中,他切换到了waf,它应该比SCons更快,但仍基于Python。这两门课程的幻灯片都可以下载,我(作为一名社会科学家)发现它们很有启发性和启发性。


1
SCons非常好。它同样很好地支持非常复杂或非常简单的方案!
meawoppl 2012年

2
SCons和任何更快的构建工具之间的权衡通常与依赖性检查有关。对于主流语言(C,C ++,Fortran,D,Python,Java等),SCons将使用基于MD5哈希的算法(而不是时间戳)自动确定依赖关系,时间戳在处理生成的文件时可能很脆弱。其他所有方面在性能(构建软件所需的时间)方面都胜过SCons,因为它们没有做太多的依赖关系检查,或者将依赖关系检查转移到其他工具(例如使用的编译器)上。
Geoff Oxberry

1
您的答案的第一个链接是404。看来他的新页面在uni-bonn.de/~hmg308/teaching.html
liori 2012年

SCons具有可配置的“最新”检查,因此您可以在时间戳,哈希或某种组合之间进行选择。就是说,我对此越来越着迷了:有些事情非常容易(例如,使用SCons拥有好的Tool软件包的工具链来编译软件),几乎所有的事情都是可能的,但是很快就会变得丑陋。
埃里克·安德森

4

看看VisTrails。我没有使用过它(只是自制的东西make),但是它看起来很周到,文档很好,并且在NASA等都有真正的用户。
(您是否在寻找1-2人,4-5人的工具,更多吗? ?)

补充:并不是您的问题,但我认为值得重复:
对于统一,可重复的计算机实验,显然需要

  • 统一的目录结构,例如when-what / in / out / scripts / log /
  • 运行中所有参数的统一设置和回显
  • 脚本来总结/绘制/评估运行。

另请参阅software-carpentry.org:“我们试图解决的问题是,科学家经常将40%或更多的时间花在软件上,而95%或更多的时间主要是自学成才。”


4

您在问题中提到的所有要求都可以通过Swift并行脚本系统来满足。

我在Swift集团工作了一年,担任博士后研究员(科学工作流程的博士学位)。我们一直在帮助来自不同领域的科学家和研究人员解决他们的计算需求。

Swift是一个用于以并行方式运行工作流的开源框架。它被称为并行脚本,主要是为了强调它提供了一个脚本接口来创建工作流,而不是GUI框箭头接口。

我可以亲自帮助您开始使用Swift并运行您的应用程序。要了解有关Swift的更多信息,请在此处查看


欢迎来到scicomp!您介意将答案扩大一点(单击答案下方的灰色小编辑按钮)进行编辑。另外,您能否在回答中使与Swift的联系更加清晰?谢谢!
阿隆·艾玛迪亚

1

Taverna是一个开源WMS,不是Python,而是Java。


你用过吗?
死息2012年

谢谢你的建议。我看到了Taverna网站,但它看起来像一个主要的图形工具。我宁愿寻找基于命令行的东西。Taverna确实提供了命令行工具,但仅用于执行工作流,而不能构建工作流(对吗?)。似乎也非常注重生物信息学。
btel 2012年

在我看来,您是在寻找适合于数值实验的LIMS,而不是像make或scons这样的构建系统?
GertVdE 2012年

不好意思问。LIMS到底代表什么?
btel 2012年

1
实验室信息管理系统。这是用于记录实验室实验日志的一系列工具。但是这些通常例如用于化学分析。您可能希望Google进行“计算机模拟实验”,即在计算机上进行模拟并且需要“记录”的实验->存储输入/输出数据,使用的软件版本,假设,...
GertVdE


0

Dexy听起来确实就是您追求的目标。从站点:

Dexy是一款多功能项目自动化工具,具有许多旨在处理文档的功能。Dexy用Python编写,并具有命令行界面。它是具有MIT许可证的开源软件。

Dexy是做什么的?

Dexy通过为您做重复的部分使创建技术文档变得更加容易。Dexy为工具和脚本提供了一致的界面,因此您无需手动运行它们。项目的敏捷配置会跟踪运行什么,以什么顺序运行以及使用哪些参数。这样,您的整个过程将被捕获,因此任何人都可以使用一个简单的命令运行它,并且结果将保持一致。

您想写一篇博客文章,并附上示例,展示如何使用API​​。Dexy将自动:

  • 运行示例代码,保存结果
  • 将语法突出显示应用于示例代码(使用pygments)
  • 将API调用的结果和经过修饰的示例代码插入到帖子中(使用jinja)
  • 将您的markdown格式的博客文章转换为HTML(使用python markdown或pandoc)。
  • 以草稿模式将HTML上传到WordPress API(使用WordPress API)
  • 完成调整后,发布您的博客文章

我已经关注Dexy几年了,我的印象是它没有被广泛采用,并且没有得到积极开发。这些特征可能是鸡与蛋的问题(较小的用户群意味着它没有得到积极发展,没有得到积极发展会损害用户群的增长)。它看起来非常酷,而且从表面上看,我认为这正是科学家需要扩大IPython,knitr和定制脚本之外的重现性的方法,但是由于某些原因……它似乎并没有被使用。安娜·纳尔逊(Ana Nelson)甚至没有写太多关于它的文章,而是她写的。
2015年

好吧,最新的Blob发布是从一月份开始的,今年已经提交了3次。不是超级活跃,但没有死,特别是如果这只是一个稳定的项目而实际上并不需要任何工作的话。我还使用了其他项目,这些项目的最新发展历史令人er目结舌。至于鸡肉和鸡蛋的问题,也许在这里以及在SE上提到的其他地方都可以通过
投票赞成

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.