如何快速进行R和Octave方法的GUI开发(可能包含Python)?
我们是一个中型的学术研究实验室,主要的工作是开发新的统计方法来分析大数据集。我们通常使用R和MATLAB/Octave进行开发。
我们希望通过建立简单的向导式用户界面来扩大我们工作的影响力,这样用户就可以访问我们的方法,可能是像RNAfold这样的网页应用,或者是独立的应用程序来分析私人数据。
理想情况下,我们希望这些界面能够进行一些数据检查,使用自由开源软件(FOSS),能够在Mac和Windows环境下运行,并且能够生成简单的图表和图形,输出的结果适合发表。此外,我们喜欢Python,因为它在实验室和我们的研究社区中非常流行。
不过,我们希望能够快速且便宜地开发和发布。我们很幸运能够在实验室资助一名开发者,但他/她需要支持多个项目。
有很多团队和我们有相同的需求和限制,因此能够为这种挑战制定一个一致的长期策略将会很有帮助。
编辑
我请求对四种可能的方法进行评论,下面是总结的评论:
- 从Python调用R和Octave的方法。
回答: - 用Python重新实现我们的方法。一般来说,这并不容易,因为我们的方法依赖于其他也在R和Octave中实现的方法。
回答:
- 对此方法没有评论,可能是个坏主意。
- 使用不同的框架来构建用户界面。
回答:- 直接在R中构建GUI和网页应用怎么样?(来自hadley,请查看回答中的工具参考)
- 我们没有考虑的其他想法,例如,与工作流管理系统如Taverna集成。
回答:- 尝试使用像RedR这样的可视化编程界面(来自chrisamiller)
我偏好的答案
我首先会考虑Spacedman建议的方法:使用QtDesigner来构建PyQt4的用户界面,并用RPy调用R。我们有很多没有编程背景的学生想要在实验室做志愿者,QtDesigner看起来是我们可以有效培训他们使用的工具。
我想直接在R中开发GUI,正如hadley推荐的那样,但RQt,我想我需要使用QtDesigner,但似乎没有在积极开发(最后更新是在2009年夏天)。
此外,看起来我们可能需要开始专门在R中实现我们的方法,并将MATLAB/Octave的代码转换为R。在我的领域,这可能并不是个坏主意。
附录:
- 简化用户界面构建的Python库:
- 其他集成Python、R和Octave的项目:
- 用于创建GUI的GUI工具:
- QtDesigner与PyQt4(来自Spacedman)。注意Qt4既有商业版也有LGPL版本。
7 个回答
为什么不直接在R中继续开发呢?其实有很多工具包可以让你开发图形用户界面(GUI),比如gWidgets RGtk、tcl/tk、RQt、Rwxwidgets和rjava,或者你还可以开发网页应用。
我推荐用Python和PyQt4来做用户界面(UI),然后用Rpy来和R语言连接。
你可以使用QtDesigner来设计界面,这个工具可以生成Python代码。QtAssistant则提供了一个完整的、带超链接的Qt文档,这个文档是我用过的最好的一份。
真的很值得!