An Introduction to GUI Programming Using R

25
An Introduction to GUI Development using R

description

GUI Programming using R

Transcript of An Introduction to GUI Programming Using R

Page 1: An Introduction to GUI Programming Using R

An Introduction to GUI Development using R

Page 2: An Introduction to GUI Programming Using R

Overview

• Introduction– R Interfaces– GUIs for programming

• Programming for GUIs– GUIs for teaching how to program– GUI task-oriented applications– gWidgets package

• Integrating R into other applications– GUI deployment

Page 3: An Introduction to GUI Programming Using R

IntroductionR Interfaces/Console alternatives

• RStudio – Programmed in C++ and GTK+

• JGR– Java

• Revolution R Productivity Environment (RPE)– MS Visual Studio

• Red-R (Open Source visual programming for R

• SciViews (extends Komodo edit)

Page 4: An Introduction to GUI Programming Using R

GUIs for Programming (code editors)• R internal editor (on Mac!)

• Emacs + ESS

• Eclipse + StatET

• Gvim/Vim-R

• Notepad++ / NppToR

• WinEdt/RWniEdt ($30!!!)

• Tinn-R (MS Windows only)

• jEdit (doesn't pass code to R)

Page 5: An Introduction to GUI Programming Using R

GUIs to learn programming

• R Commander (Rcmdr package)– Satistical analysis functions

• RKWard (Linux only)

Page 6: An Introduction to GUI Programming Using R

Poll from KDnuggets.com (data miners!)

Page 7: An Introduction to GUI Programming Using R

GUI Programming using R• gWidgets package

– written by J. Verzani

– “gWidgets provides a toolkit-independent API for building interactive GUIs.”

– At least one of gWidgetstcltk, gWidgetsRGtk2, gWidgetsQt (on R-Forge only) and qWidgetsrJava needs to be installed.”

– i.e. GUI toolkits must be installed (except Tcltk, pre-installed, default)

– the user can switch between GUI toolkits with relative ease and can write code in a toolkit independent way

• Well, not quite

Page 8: An Introduction to GUI Programming Using R

GTK+ toolkit

• www.gtk.org

Page 9: An Introduction to GUI Programming Using R

gWidgetsfunctions

Page 10: An Introduction to GUI Programming Using R

GUI contruction using gWidgets

• Use containers (in ggroup, gwindow, gnotebook functions) to nest widgets• Handlers i.e. event handling, define the executed operation• Handlers can be added after the GUI is created e.g. addHandlerClicked(…)• Drag-and-drop is also featured in gWidgets

• Demo....

library(gWidgets)options("guiToolkit"="RGtk2")

win <- gwindow("Hello World, ad nauseum", visible=TRUE)group <- ggroup(horizontal = FALSE, container=win)

obj <- gbutton("Hello...",container=group, handler = function(h,...) gmessage("world"))

obj <- glabel("Hello...", container =group,handler = function(h,...) gmessage("world"))

obj <- gcombobox(c("Hello","world"), container=group)obj <- gedit("Hello world", container=group)obj <- gtext("Hello world", container=group, font.attr=list(style="bold"))

Page 11: An Introduction to GUI Programming Using R

Sample Problem• Survey conducted to see changes in HIV and

non-HIV services in sub-Saharan Africa– Conducted across health centres & hospitals, also

individual health-worker data, in several sub-saharan Africa countries

• Relatively small questionnaire resulting in 800 variables!– Variables names themselves are not very useful

• e.g. “Q001”. Great scope for programming error

– Variable labels (the actual questions) contain the information on what is collected

– With the concept of variable names dropped, an interactive GUI might work better with variable labels than programming!

Page 12: An Introduction to GUI Programming Using R

Solution• Create new sets of labels

– which work as indexes– These can be used to filter, manage and

analyze data

- Restructuring of data not required

• Begin with a search & replace dialogue screen– How would you design it (so that it would be

a better option than just using grep or regexpr)?

• Demo...

Page 13: An Introduction to GUI Programming Using R

Deducer

• “An intuitive, cross-platform graphical data analysis system”

• Deducer is based upon rJava and provides access to the Java Swing Network

Related Packages Description

DeducerExtras Additional dialogs and functions for Deducer

DeducerPlugIn Example Deducer Plug-in Example

DeducerPlugInScaling Reliability and factor analysis plugin

DeducerSpatial Deducer for spatial data analysis

DeducerSurvival Add Survival Dialogue to Deducer

DeducerText Deducer GUI for Text Data

Page 14: An Introduction to GUI Programming Using R

gWidgets versus Deducer

• Deducer has a slightly lower level library, but more flexible and compatible with JGR

• Deducer requires you to explicitly specify positions of widgets, and is a little more verbose when you come to add event handling logic

• Visit www.r-bloggers.com for a discussion

Page 15: An Introduction to GUI Programming Using R

Other R GUI packages and tools (which I know little about!)

• PBS (Pacific Biological Station) packages

• Rattle (data mining GUI)

• Brodgar (used for class-room teaching etc.)

• pmg (poor man’s GUI, similar to Rcmdr)

Page 16: An Introduction to GUI Programming Using R

Current List of Packages with tools for GUI development or utilize a programmed GUI*

*as of January 2013

Page 17: An Introduction to GUI Programming Using R

Package description

ade4TkGUI GUI for ade4 package

AtelieR Basic statistical inference & bayesian analysis

BiodiversityR Biodiversity, suitability, community ecology analysis

biOpsGUI Basic image operations

BiplotGUI Interactive Biplots in R

CADStat Statistical methods useful for causal assessment

caGUI A Tcl/Tk GUI for the functions in the ca package

cncaGUI Canonical Non-symmetrical Correspondence Analysis

DALY Stochastic DALY calculations

detrendeR Start the detrendeR Graphical User Interface (GUI)

digeR GUI tool for analyzing 2D DIGE data

GGEBiplotGUI GGEBiplotGUI: Interactive GGE Biplots in R

GrapheR Multi-platform GUI for drawing customizable graphs

MDSGUI A GUI for interactive MDS in R

MergeGUI A GUI for Merging Datasets in R

Metabonomic GUI for Metabonomic Analysis

Page 18: An Introduction to GUI Programming Using R

Package description

migui Graphical User Interface of the mi Package

MissingDataGUI A GUI for Missing Data Exploration

MSeasyTkGUI A GUI for Missing Data Exploration

multibiplotGUI Multibiplot Analysis in R

mutossGUI A graphical user interface for the MuToss Project

PBSadmb ADMB for R Using Scripts or GUI

PMSddesolve Solver for Delay Differential Equations

PBSmapping Mapping Fisheries Data and Spatial Analysis Tools

PBSmodelling Interact with Models, Explore Data, Dynamic Presentations

playwith A GUI for interactive plots using GTK+

pmg Poor Man's GUI

ProgGUIinR book "Programming Graphical User Interfaces in R"

QCAGUI QCA Graphical User Interface

R2STATS Fit and compare GLM and GLMM in R

RandForestGUI Random Forests

RenextGUI GUI for Renext

Page 19: An Introduction to GUI Programming Using R

Package description

ResearchMethods GUIs to help teach statistics to non-statistics students

reshapeGUI A GUI for the reshape2 and plyr packages

RPMG Interactive R analysis sessions

RunuranGUI A GUI for the UNU.RAN random variate generators

Rz GUI Tool for Data Management like SPSS or Stata

sculpt3d A simple toolbar GUI for brushing RGL plots

sdcMicroGUI Graphical user interface for package sdcMicro

SeqGrapheR Graph based visualization of cluster of DNA seq reads

Sim.DiffProcGUI Simulation of Diffusion Processes

speedR A GUI based importing and filtering tool

TGUICore Teaching GUI - Core functionality

TGUITeaching Teaching GUI - prototype

tourrGUI A Tour GUI using gWidgets

traitr creating GUIs (traits UI module for python)

WMCapacity Bayesian working memory models

x12GUI X12 - Graphical User Interface

Page 20: An Introduction to GUI Programming Using R

Package description

Common JavaJars Useful libraries for building a Java based GUI

fgui Function GUI

miniGUI tktcl quick and simple function GUI

Page 21: An Introduction to GUI Programming Using R

Considerations in GUI development & deployment• Which Widget library?

– GTK+, Java, Qt?

• Program the UI or use a UI designer? – e.g. QtDesigner

• Choice of software for GUI deployment?– R (gWidgets package etc.)– Python (wxPython, PyQt, PyQt4 libraries)

• R/Python integration (call R using Rpy, Rpy2)

– Sage (www.sagemath.org)?• Sage uses existing open-source libraries wherever they exist! • See sagemath.org, writen in Python & Cython, not supported by

MS Windows

Page 22: An Introduction to GUI Programming Using R

Web-applications

• rApache project (www.rapache.net)– Embed R in the Apache web server

• Rook package– Provides an interface to build web-

applications with rApache

• gWidgetsWWW– It’s independent of gWidgets!– Use JavaScript libraries, rapache

• Shiny in Rstudio!!!

Page 23: An Introduction to GUI Programming Using R

Documentation

• Lots of material on the web

• Journal of Statistical Software (Vol. 49)– Special issue of R on GUIs

• Lawrence and Verzani book (2012)

• gWidgets package vignette

Page 24: An Introduction to GUI Programming Using R

Final comments

• Don’t write a GUI which you hope others will find useful. Write one you use yourself and hopefully it may be of use other people

• A successful GUI will requires the right balance of detail and simplicity

• Writing a GUI using R may not be the optimal deployment of a GUI, but it is nevertheless easy to do!– “It is my opinion that programing from within R is a very good

way to get a working GUI quickly, but you are better served leaving R for something polished and professional looking.” R-Blogger

Page 25: An Introduction to GUI Programming Using R

Thank you!