The document outlines how to develop graphical user interfaces (GUIs) for R. It discusses motivations for building R GUIs and provides examples of existing R GUI projects like IsoGeneGUI and neaGUI that were developed using tcl/tk. It also describes how to build independent and embedded R GUIs, with steps for creating main windows, dialog boxes, and buttons. Plugins like RcmdrPlugin.biclustGUI that extend the R Commander interface are presented as a way to embed additional statistical analyses into an existing GUI framework.
Similar to function OnOK() { # get values from dialog box # close dialog box tkdestroy(tt)}This shows the basic steps to create dialog boxes in R GUI using tcltk
Similar to function OnOK() { # get values from dialog box # close dialog box tkdestroy(tt)}This shows the basic steps to create dialog boxes in R GUI using tcltk (20)
function OnOK() { # get values from dialog box # close dialog box tkdestroy(tt)}This shows the basic steps to create dialog boxes in R GUI using tcltk
1. Developing R Graphical User Interfaces
Setia Pramana
Medical Epidemiology and Biostatistics Department
Karolinska Institutet, Stockholm, Sweden
2. Outlines
• Motivations
• R GUI
• IsoGeneGUI
• neaGUI
• How to develop an R GUI?
• Independent GUI
• Embedded GUI (RcmdrPlugin.BiclustGUI)
• Summary
4/2/2013 2
3. R Pros and Con
Free open source and widely used.
Can be integrated with other languages
(C/C++, Java).
R can interact with many data sources and
other statistical packages (SAS, Stata, SPSS,
and Minitab).
For the high performance computing task
multiple cores, either on a single machine or
across a network.
4/2/2013 3
4. R: A Command line interface (CLI)
Users type commands to perform a statistical
analysis.
Is preferred for advanced users allows
direct control, more accurate, flexible and the
analysis is reproducible.
4/2/2013 4
5. R: A Command line interface (CLI)
Requires good knowledge of the language
difficult for beginners or less frequent users.
R provides tools for building GUIs RGUI
4/2/2013 5
6. Graphical User Interface (GUI)
A tool to provide an event-driven user
interface.
An extra layer between the user and the
program
Based on menus, dialog boxes, icons and
controls.
Window, icon, menu, and pointing device
(WIMP) paradigm
4/2/2013 6
7. R GUI Projects
Integrated development environment
(IDE)/Script Editors aimed to provide feature-
rich environments to edit R scripts and code:
Rstudio (www.rstudio.com), and architect
(www.Openanalytics.eu)
Web based application: the Rweb (Banfield,
1999), R.Net (www.u.arizona.edu/~ryckman/Net.php), or
gWidgetsWWW (Verzani, 2012).
4/2/2013 7
8. R GUI Projects
Python: OpenMeta-Analyst (Wallace et al, 2012)
Java: JGR (Java GUI for R), Deducer (Fellows,
2012), and Glotaran (Snellenburg, 2012).
Php: R-php (http://dssm.unipa.it/R-php/)
Other extensions connect R to graphical
toolboxes for developing menus and dialog
boxes: Tcltk, Gtk.
Today, we focus on Tcltk
4/2/2013 8
9. R GUI Tcl/Tk
Most commonly used: easy, no additional
software needed and ready to be used in R
(tcltk package)
R-Tcl/Tk interface from the tcltk package
(Dalgaard, 2001 and Welch, 2000).
The tcltk package allows the use of the Tk
(toolkit) graphical user interface elements
within R by embedding Tk commands into the
R language.
4/2/2013 9
10. R GUI Tcl/Tk
R GUIs developed by using tcl/tk or RGtk:
• LimmaGUI (Wettenhall and Smyth, 2004),
• LMMNorm (Haldermans, 2010),
• IsoGeneGUI (Pramana et al. , 2010, 2012)
• NeaGUI (Pramana et.al, 2013)
• Rcommander (Fox, 2005)
• RcmdrPlugin.biclustGUI (Pramana, 2011)
4/2/2013 10
11. R GUI Tcl/Tk
R GUIs developed by using tcl/tk or RGtk: Independent
GUI
• LimmaGUI (Wettenhall and Smyth, 2004),
• LMMNorm (Haldermans, 2010),
• IsoGeneGUI (Pramana et al. , 2010, 2012)
• NeaGUI (Pramana et.al, 2013)
• Rcommander (Fox, 2005)
• RcmdrPlugin.biclustGUI (Pramana, 2011)
4/2/2013 11
12. R GUI Tcl/Tk
R GUIs developed by using tcl/tk or RGtk:
• LimmaGUI (Wettenhall and Smyth, 2004),
• LMMNorm (Haldermans, 2010),
• IsoGeneGUI (Pramana et al. , 2010, 2011)
• NeaGUI (Pramana et.al, 2013)
Embeded GUI
• Rcommander (Fox, 2005)
• RcmdrPlugin.biclustGUI (Pramana, 2011)
4/2/2013 12
13. IsoGeneGUI
To perform dose response microarray
analysis in early drug development.
Identify genes with a monotonic trend in the
expression levels with respect to the
increasing doses
CLI based: IsoGene package (Pramana,2010)
4/2/2013 13
14. IsoGeneGUI
Main window of IsoGeneGUI
4/2/2013 14
22. neaGUI
To help interpretation of
differentially expressed (DE)
genes in context of
biological processes,
pathways and networks.
Perform network enrichment
analysis.
Input: DE genes
Output: enriched pathways
statistics based on gene
interaction networks.
4/2/2013 22
25. RGUI, How to Build One?
Choose one of RGUI categories, and tools to be used
(tcltk, java, etc.) which suit with the package
purpose.
Make sketches of the window box and consider:
• Input
• Options
• Output
Can all functions be run in a single window (e.g.
neaGUI)? Or a main window with menu
(IsoGeneGUI) and separate dialog boxes are
needed? 4/2/2013 25
31. Create a Dialog Box
List box with scroll bar
scr <- tkscrollbar(tt, repeatinterval=5,
command=function(...) tkyview(tl,...))
tl<-tklistbox(tt,height=4,selectmode="single",
background="white")
tkgrid(tklabel(tt,text="City:"), tl, scr)
city <- c("Brussels","Jakarta", "London",
"Stockholm")
for (i in (1:4)) tkinsert(tl,"end",city [i])
tkselection.set(tl,1)
tkgrid.configure(scr,rowspan=4,sticky="nsw")
4/2/2013 31
32. Create a Dialog Box
OK button
OK.but <-tkbutton(tt,text=" OK ",
command=OnOK)
tkgrid(OK.but)
tkgrid.configure(OK.but)
tkfocus(tt)
4/2/2013 32
34. Run the function (OK button)
OnOK <- function() {
NameVal <- tclvalue(Name)
rbVal <- as.character(tclvalue
(rbValue))
if (rbVal=="Male") pref = "Mr."
if (rbVal=="Female") pref = "Mrs.“
cityChoice <- city [as.numeric(tkcurselection(tl))+1]
tkdestroy(tt)
msg <- paste("Good morning ",pref , NameVal , "from", cityChoice,
sep=" ")
tkmessageBox(message=msg)
}
4/2/2013 34
35. Embeded R GUI: Rcmdr Plugin
GUIs that are embedded/attached into another
GUI, i.e., R Commander (Rcmdr)
Rcmdr was originally developed as a basic-
statistics graphical user interface (“GUI”) to R.
Rcmdr needs extension for specific statistical
analysis
More than 20 Rcmdr plugins today
4/2/2013 35
36. Rcmdr Plugin Advantages
Does not need to develop GUI for common
procedures: Open, save and manipulate data.
Can use standard statistical analysis.
In term of programming: easier (standard tcltk
commands are provided)
Users know how to work in command line
4/2/2013 36
37. R Commander (Rcmdr)
Developed by John Fox from McMaster
University, Canada.
Not only providing GUIs but also rendering users
to R commands
Advantages:
• Ease of use. Beginners will have less problem to start to
use Rcmdr.
• Coverage. Offers wide range of basic statistics analysis
and data management.
4/2/2013 37
38. R Commander (Rcmdr)
Advantages:
• Cross-platform functionality. Primarily under
Windows, but also available in Linux and Macintosh
OS/X.
• Extensibility: one can develop “plug-in" packages for
new methods/analysis.
• Protects the novices from errors. Limited options
related to the current context will minimize the errors
made by users.
• Exposes users to R commands.
4/2/2013 38
49. RcmdrPlugin: Menu-Definition File
The plugin menus are defined the file: menus.txt.
The first line in menus.txt defines the top-level biclustGUI
menu:
Menu biclustMenu topMenu ““ ““ ““ ““
4/2/2013 49
50. RcmdrPlugin: Menu-Definition File
The plugin menus are defined the file: menus.txt.
Define
menu/item line in menus.txt defines the top-level biclustGUI
The first
menu:
Menu biclustMenu topMenu ““ ““ ““ ““
4/2/2013 50
51. RcmdrPlugin: Menu-Definition File
The plugin menus are defined the file: menus.txt.
Name of
The first line in menus.txt defines the top-level biclustGUI
new menu
menu:
Menu biclustMenu topMenu ““ ““ ““ ““
4/2/2013 51
52. RcmdrPlugin: Menu-Definition File
The plugin menus are defined the file: menus.txt.
Parent of
The first line in menus.txt defines the top-level biclustGUI
the menu
menu:
Menu biclustMenu topMenu ““ ““ ““ ““
4/2/2013 52
53. RcmdrPlugin: Menu-Definition File
The plugin menus are defined the file: menus.txt.
The first line in menus.txt defines the top-level biclustGUI
menu:
Menu biclustMenu topMenu ““ ““ ““ ““
The second line in menus.txt defines a menu item under biclust
menu:
item biclustMenu command "Biclustering Plaid " PlaidWin "" "packageAvailable
('RcmdrPlugin.BiclustGUI')"
4/2/2013 53
54. RcmdrPlugin: Menu-Definition File
The plugin menus are defined the file: menus.txt.
The first line in menus.txt defines the top-level biclustGUI
menu:
Menu biclustMenu topMenu ““ ““ ““ ““
Define
menu item
The second line in menus.txt defines a menu item under biclust
menu:
item biclustMenu command "Biclustering Plaid " PlaidWin "" "packageAvailable
('RcmdrPlugin.BiclustGUI')"
4/2/2013 54
55. RcmdrPlugin: Menu-Definition File
The plugin menus are defined the file: menus.txt.
The first line in menus.txt defines the top-level biclustGUI
menu:
Menu biclustMenu topMenu ““ ““ ““ ““
Menu item
The second line
belongs to in menus.txt defines a menu item under biclust
menu:
item biclustMenu command "Biclustering Plaid " PlaidWin "" "packageAvailable
('RcmdrPlugin.BiclustGUI')"
4/2/2013 55
56. RcmdrPlugin: Menu-Definition File
The plugin menus are defined the file: menus.txt.
The first line in menus.txt defines the top-level biclustGUI
menu:
Menu biclustMenu topMenu ““ ““ ““ ““
Menu item
The second line in menus.txt
invokes a defines a menu item under biclust
command
menu:
item biclustMenu command "Biclustering Plaid " PlaidWin "" "packageAvailable
('RcmdrPlugin.BiclustGUI')"
4/2/2013 56
57. RcmdrPlugin: Menu-Definition File
The plugin menus are defined the file: menus.txt.
The first line in menus.txt defines the top-level biclustGUI
menu:
Menu biclustMenu topMenu ““ ““ ““ ““
Text
The second line in menus.txt defines
displayed a menu item under biclust
menu:
item biclustMenu command "Biclustering Plaid " PlaidWin "" "packageAvailable
('RcmdrPlugin.BiclustGUI')"
4/2/2013 57
58. RcmdrPlugin: Menu-Definition File
The plugin menus are defined the file: menus.txt.
The first line in menus.txt defines the top-level biclustGUI
menu:
Menu biclustMenu topMenu ““ ““ ““ ““
Called
The second line in menus.txt defines afunction
menu item under biclust
menu:
item biclustMenu command "Biclustering Plaid " PlaidWin "" "packageAvailable
('RcmdrPlugin.BiclustGUI')"
4/2/2013 58
59. RcmdrPlugin: Menu-Definition File
The plugin menus are defined the file: menus.txt.
The first line in menus.txt defines the top-level biclustGUI
menu:
Menu biclustMenu topMenu ““ ““ ““ ““
Conditional activation
The second line in menus.txt defines a menu item under biclust
and installation
menu:
item biclustMenu command "Biclustering Plaid " PlaidWin "" "packageAvailable
('RcmdrPlugin.BiclustGUI')"
4/2/2013 59
60. Next Stage
Error handling: message boxes, warnings, etc.
Trial by other people.
Compile as a package.
Submit in a repository for development we can use R-
forge.
When all ready, submit to a repository, Bioconductor, or
CRAN.
Bioconductor more restrict and have to comply all
guidelines:
http://www.bioconductor.org/developers/package-
guidelines/ 4/2/2013 60
61. Summary
A GUI could help novice R users for utilizing all the power of
R.
Increase the use of our package/methods especially by scientists
with no/less knowledge of R.
4/2/2013 61
62. Summary
A GUI could help novice R users for utilizing all the power of
R.
Increase the use of our package/methods especially by scientists
with no/less knowledge of R.
Things to consider in developing a GUI:
• Type of GUI (spreadsheets, menu/dialog boxes),
• Tool to develop (tcltk, java)
• Embedded/Independent.
• Single/Multi dialog boxes
4/2/2013 62
63. Summary
Independent GUI: really for a specific use, no need of “useless”
capabilities, simpler.
Rcmdr PlugIn in: easier, all standard data manipulation and
analysis is ready, users can learn the command.
4/2/2013 63
64. Summary
Independent GUI: really for a specific use, no need of “useless”
capabilities, simpler.
Rcmdr PlugIn in: easier, all standard data manipulation and
analysis is ready, users can learn the command.
Make sure GUI is simple and user friendly.
Design Development Trial Packaging and Storing
4/2/2013 64
66. Next Development:
Isogene RSB : Web based development using R Service
Bus: http://www.openanalytics.eu/r-service-bus
R Service Bus: plug R into a processes independently of
the technology used by other software applications
involved in the workflow.
Web Based neaGUI using shiny
Shiny: Easy web applications in R:
http://www.rstudio.com/shiny/
4/2/2013 66
69. Collaborator
Karolinska Institutet, Sweden: Yudi Pawitan & Woojoo Lee
Scilifelab, Sweden: Andrey Alexeyenko
Johnson & Johnson Research and Development, Belgium: Luc
Bijnes & Willem Talloen.
Hasselt University, Belgium: Ziv Shkedy, Dan Lin, Philippe H,
Martin O Pushpike, Tatsiana K.
Open Analytics, Belgium: Tobias Verbeke
Johannes Kepler University of Linz, Austria: Sepp Hochreiter’s
Group
LMU Munich, Germany: Sebastian Kaiser
4/2/2013 69
71. References
Pramana, S., Lin, D., and Shkedy Z., (2010), IsoGeneGUI
Bioconductor Package Vignette.
Pramana, S., Lin, D., Haldermans, P., Shkedy Z., and Verbeke, T., De
Bondt, A., Talloen, W., Göehlmann,. H and Bijnens, L. (2010).
“IsoGene: An R Package for Analyzing Dose-response Studies in
Microarray Experiments", R Journal 2/1.
Pramana, S., Lin, D., Haldermans P., and Verbeke, T. (2102). “A
User Friendly Interface for Analyzing Dose-response Studies in
Microarray Experiments: The IsoGene-GUI package”, in Lin, D.,
Shkedy, Z., Yekutieli, D., Amaratunga, D. and Bijnens L. (editors).
Modeling Dose-response Microarray Data in Early Drug
Development Experiments Using R, Springer.
4/2/2013 71
72. References
Pramana (2011) RcmdrPlugin.BiclustGUI: A User Friendly Interface
for Biclustering Analysis, a chapter of PhD: “Statistical Methods for
Microarray Experiments: Analysis Dose-response Studies and
Software Development in R”, Hasselt University, Belgium.
Pramana, S., Lee, W., Alexeyenko, A., Pawitan., Y. (2012). neaGUI:
A Graphical User Interface for Network Enrichment Analysis.
Fox J (2005). The R Commander: A Basic-Statistics Graphical User
Interface to R." Journal of Statistical Software, 14(9), 1-42.
Valero-Mora, P.M and Ledesma R.D. (2012) “Graphical User
Interfaces for R”. Journal of Statistical Software.
Verzani J (2007). An Introduction to gWidgets." R News, 7(3), 26-33.
4/2/2013 72