如何快速进行R和Octave方法的GUI开发(可能包含Python)?

21 投票
7 回答
6308 浏览
提问于 2025-04-16 04:00

我们是一个中型的学术研究实验室,主要的工作是开发新的统计方法来分析大数据集。我们通常使用R和MATLAB/Octave进行开发。

我们希望通过建立简单的向导式用户界面来扩大我们工作的影响力,这样用户就可以访问我们的方法,可能是像RNAfold这样的网页应用,或者是独立的应用程序来分析私人数据。

理想情况下,我们希望这些界面能够进行一些数据检查,使用自由开源软件(FOSS),能够在Mac和Windows环境下运行,并且能够生成简单的图表和图形,输出的结果适合发表。此外,我们喜欢Python,因为它在实验室和我们的研究社区中非常流行。

不过,我们希望能够快速且便宜地开发和发布。我们很幸运能够在实验室资助一名开发者,但他/她需要支持多个项目。

有很多团队和我们有相同的需求和限制,因此能够为这种挑战制定一个一致的长期策略将会很有帮助。

编辑
我请求对四种可能的方法进行评论,下面是总结的评论:

  1. 从Python调用R和Octave的方法。
    回答:
  2. 用Python重新实现我们的方法。一般来说,这并不容易,因为我们的方法依赖于其他也在R和Octave中实现的方法。 回答:
    • 对此方法没有评论,可能是个坏主意。
  3. 使用不同的框架来构建用户界面。
    回答:
    • 直接在R中构建GUI和网页应用怎么样?(来自hadley,请查看回答中的工具参考)
  4. 我们没有考虑的其他想法,例如,与工作流管理系统如Taverna集成。
    回答:

我偏好的答案

我首先会考虑Spacedman建议的方法:使用QtDesigner来构建PyQt4的用户界面,并用RPy调用R。我们有很多没有编程背景的学生想要在实验室做志愿者,QtDesigner看起来是我们可以有效培训他们使用的工具。

我想直接在R中开发GUI,正如hadley推荐的那样,但RQt,我想我需要使用QtDesigner,但似乎没有在积极开发(最后更新是在2009年夏天)。

此外,看起来我们可能需要开始专门在R中实现我们的方法,并将MATLAB/Octave的代码转换为R。在我的领域,这可能并不是个坏主意。

附录:

  1. 简化用户界面构建的Python库:
  2. 其他集成Python、R和Octave的项目:
  3. 用于创建GUI的GUI工具:

7 个回答

5

这要求可真高——要支持多个平台和后端(R和Octave),而且还要便宜、快速、易于使用!

我随便想了想,可以看看这些:

  • Sage:他们有一种叫做笔记本的东西,这是一种互动式网页,2010年在useR!大会上展示了很不错的演示;我觉得Octave也包括在内。

  • Shogun:这个工具也可以和Python、R以及Octave结合使用,可能有一些工具可以帮助你。

9

为什么不直接在R中继续开发呢?其实有很多工具包可以让你开发图形用户界面(GUI),比如gWidgets RGtk、tcl/tk、RQt、Rwxwidgets和rjava,或者你还可以开发网页应用

8

我推荐用Python和PyQt4来做用户界面(UI),然后用Rpy来和R语言连接。

你可以使用QtDesigner来设计界面,这个工具可以生成Python代码。QtAssistant则提供了一个完整的、带超链接的Qt文档,这个文档是我用过的最好的一份。

真的很值得!

撰写回答