如何使用Python快速开发R和Octave方法的GUI界面?

21

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

我们希望通过构建简单的向导式用户界面来访问我们的方法,例如类似RNAfold的Web应用程序或用于分析私有数据的独立应用程序,以扩展我们工作的范围。

理想情况下,我们希望界面可以进行一些数据检查,仅使用FOSS,在Mac和Windows环境中运行,并能够生成适合发表的简单图表和图形。此外,我们喜欢Python,因为它在实验室和我们的研究社区中很受欢迎。

然而,我们希望能够快速、廉价地开发和发布。我们很幸运能够在实验室中资助一名开发人员,他必须支持多个项目。

有很多与我们相同需求和限制的团体,因此能够为这种类型的挑战制定一致的长期策略将非常有用。

编辑 我询问了四种可能的方法,并包含了以下评论摘要:

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

我喜欢的答案

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

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

此外,看起来我们可能必须开始专门使用R实施我们的方法,并从MATLAB/Octave转换过来。在我的领域,这可能不是一个坏主意。

附录:

  1. 简化用户界面构建的Python库:
  2. 整合Python、R和Octave的其他项目:
  3. 制作GUI的GUI:

大家好,感谢各位的回答。继续提供意见,我会将它们编入问题中。如果我们达到某种临界质量,我将对各种推荐的方法进行快速评估。 - qdjm
使用工作流系统的优点在于它会跟踪比你自己的脚本更多的元数据。这是只有在以后才会变得重要的事情。 - Donal Fellows
7个回答

9

为什么不直接在R中进行开发呢?有许多包可以让您开发GUI(gWidgets RGtk、tcl/tk、RQt、Rwxwidgets、rjava)或Web应用程序


这是很好的建议,我没想到这是可能的。你对这些工具有什么经验? - qdjm

8
我会选择Python和PyQt4作为用户界面(UI)的开发工具,并使用Rpy来连接R语言。
可以使用QtDesigner进行界面设计并生成相应的Python代码。QtAssistant提供了一个完整的超链接文档集,是我使用过的最好的Qt文档。
非常值得一试!

5

这是一个很高的要求——多平台、多后端(R和Octave),同时又便宜、快速且易于使用!

从我头脑中想到的,可以看看这些:

  • Sage:他们有所谓的笔记本,这些是交互式的网页,并在useR! 2010展示了一个漂亮的演示;我认为Octave也被涵盖了

  • Shogun:它也与Python、R和Octave集成,可能有一些工具可以帮助你利用。


感谢您的评论。不妨有所追求。我会更仔细地研究Sage。 - qdjm

4

我一直在寻找类似的东西——在R中使用简单快速的GUI。看起来RStudio的人们提供了一个新的替代方案。

Shiny 可以满足小型Web界面的需求,无需过多编码。如果你需要一个简单的输入/输出风格的UI,似乎是一个可行的选择。


2

我没有直接连接Octave和Python的经验,除了设置Octave应用程序作为服务器并让Python客户端调用之外,但是我通过RPy成功地将R与Python集成。在我们的一些应用程序中,我们构建了一个wxPython+matplotlib Python前端,并直接通过RPy调用R脚本。


2

如果你想要将R和Python进行整合,你可能需要查看以下内容:


1
你可以尝试使用RedR,它可以让你在Python的图形用户界面中包装R包。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接