Your SlideShare is downloading. ×
Developing R Graphical User Interfaces
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Developing R Graphical User Interfaces

4,672
views

Published on

Developing R Graphical User Interfaces, presented at …

Developing R Graphical User Interfaces, presented at
1. Workshop on Development of R software for data analysis, Hasselt University, Belgium, March 13th, 2013.
2. Joint Seminar, Medical Epidemiology and Biostatistics Department, Karolinska Institutet, April 4th, 2013.

Published in: Education

0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
4,672
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
151
Comments
0
Likes
4
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • http://uhasselt.openanalytics.eu:8080/rsb/rsb.html?form=isogene
  • Transcript

    • 1. Developing R Graphical User InterfacesSetia PramanaMedical Epidemiology and Biostatistics DepartmentKarolinska 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
    • 15. IsoGeneGUI: Isotonic Regression PlotCommand line:IsoPlot(dose, express , type="ordinal", add.curve=TRUE) 4/2/2013 15
    • 16. IsoGeneGUI: Isotonic Regression PlotCommand line:IsoPlot(dose, express , type="ordinal", add.curve=TRUE) 4/2/2013 16
    • 17. IsoGeneGUI: Significant Analysis Microarrayqqstat <- Isoqqstat(x, y, fudge="pooled", niter=50)allfdr <- Isoallfdr(qqstat, , stat = "E2")IsoSAMPlot(qqstat, allfdr, FDR = 0.1, stat = "E2")SAM.Res <- IsoTestSAM(x, y, fudge="pooled", niter=50, FDR=0.05, stat="E2") 4/2/2013 17
    • 18. IsoGeneGUI: Significant Analysis Microarrayqqstat <- Isoqqstat(x, y, fudge="pooled", niter=50)allfdr <- Isoallfdr(qqstat, , stat = "E2")IsoSAMPlot(qqstat, allfdr, FDR = 0.1, stat = "E2")SAM.Res <- IsoTestSAM(x, y, fudge="pooled", niter=50, FDR=0.05, stat="E2") 4/2/2013 18
    • 19. IsoGeneGUI Manual Guide IsoGeneGUI help: htlm 4/2/2013 19
    • 20. IsoGeneGUI Manual Guide IsoGeneGUI help: htlm 4/2/2013 20
    • 21. IsoGeneGUI Manual Guide IsoGeneGUI help: htlm Vignette: http://www.bioconductor.org/packages/2.11/bioc/vignettes/IsoGe neGUI/inst/doc/IsoGeneGUI.pdf Users’ manual: http://www.ibiostat.be/software/IsoGeneGUI/files/IsoGeneGUI% 20users%20manual.pdf 4/2/2013 21
    • 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
    • 23. neaGUI Output 4/2/2013 23
    • 24. neaGUI Output 4/2/2013 24
    • 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
    • 26. Create Main Windowtt <- tktoplevel()tkwm.title(tt,"My New GUI")topMenu <- tkmenu(tt)tkconfigure (tt,menu=topMenu)fileMenu <- tkmenu(topMenu,tearoff=FALSE)openMenu <- tkmenu(topMenu,tearoff=FALSE)tkadd(openMenu,"command",label="xls file", command= getXls)tkadd(openMenu,"command",label="text file”) 4/2/2013 26
    • 27. Create Main Windowtt <- tktoplevel()tkwm.title(tt,"My New GUI")topMenu <- tkmenu(tt)tkconfigure (tt,menu=topMenu)fileMenu <- tkmenu(topMenu,tearoff=FALSE)openMenu <- tkmenu(topMenu,tearoff=FALSE)tkadd(openMenu,"command",label="xls file", command= getXls)tkadd(openMenu,"command",label="text file”) () { getXls <- function fileName <- tclvalue(tkgetOpenFile(filetypes= gettext( {"Excel Files" {".xls"}} {"All Files" {"*"}}))) data <- get( fileName) } 4/2/2013 27
    • 28. Create Main Windowtt <- tktoplevel()tkwm.title(tt,"My New GUI")topMenu <- tkmenu(tt)tkconfigure (tt,menu=topMenu)fileMenu <- tkmenu(topMenu,tearoff=FALSE)openMenu <- tkmenu(topMenu,tearoff=FALSE)tkadd(openMenu,"command",label="xls file", command= getXls)tkadd(openMenu,"command",label="text file")tkadd(fileMenu,"cascade",label="Open data", menu=openMenu)tkadd(fileMenu,"cascade",label="Edit data")tkadd(fileMenu,"command",label="Quit",command=function() tkdestroy(tt))tkadd(topMenu,"cascade",label="File",menu=fileMenu)tkadd(topMenu,"cascade",label="Help")tkfocus(tt) 4/2/2013 28
    • 29. Create a Dialog Box Create the windowrequire(tcltk)tt<-tktoplevel()tkwm.title(tt,"Input Window") Edit BoxName <- tclVar("")entry.Name <-tkentry(tt,width="20", textvariable=Name)tkgrid(tklabel(tt,text="Name:"), entry.Name) 4/2/2013 29
    • 30. Create a Dialog Box Radio buttonrb1 <- tkradiobutton(tt)rb2 <- tkradiobutton(tt)rbValue <- tclVar("Male")tkconfigure(rb1,variable=rbValue, value="Male")tkconfigure(rb2,variable=rbValue, value="Female")tkgrid(tklabel(tt,text="Sex:"))tkgrid(tklabel(tt,text="Male"),rb1)tkgrid(tklabel(tt,text="Female"),rb2) 4/2/2013 30
    • 31. Create a Dialog Box List box with scroll barscr <- 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 buttonOK.but <-tkbutton(tt,text=" OK ", command=OnOK)tkgrid(OK.but)tkgrid.configure(OK.but)tkfocus(tt) 4/2/2013 32
    • 33. Run the function (OK button) 4/2/2013 33
    • 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
    • 39. R CommanderMain Window: Script Window Output Window Messages 4/2/2013 39
    • 40. RcmdrPlugin.biclustGUI An extension for the Rcmdr for biclustering analysis. Standard Rcmdr Menu 4/2/2013 40
    • 41. RcmdrPlugin.biclustGUI An extension for the Rcmdr for biclustering analysis. Rcmdr with biclustering plugin Standard Rcmdr Menu 4/2/2013 41
    • 42. Create a Dialog BoxinitializeDialog(title = gettextRcmdr("Biclustering-CC"))specFrame <- tkframe(top, borderwidth=5)tkgrid(labelRcmdr(specFrame , text=gettextRcmdr("CC Specification:")))deltaVal <- tclVar(“ ")deltaField <- ttkentry(specFrame, width = "5",textvariable = deltaVal )tkgrid(labelRcmdr(specFrame , text=gettextRcmdr("Delta:")), deltaField)alphaVal <- tclVar("2")alphaField <- ttkentry(specFrame, width = "5",textvariable = alphaVal )tkgrid(labelRcmdr(specFrame , text=gettextRcmdr("Alpha:")), alphaField) 4/2/2013 42
    • 43. Create a Dialog BoxnumberVal <- tclVar("100")numberField <- ttkentry(specFrame, width = "5”, textvariable = numberVal)tkgrid(labelRcmdr(specFrame , text=gettextRcmdr("Maximal Numbers : ")),numberField)OKbutton <- buttonRcmdr(specFrame , text = gettextRcmdr("Show Result"), width = "12", command = onOK, default = "active", borderwidth = 3)tkgrid(OKbutton,Plotbutton ,exitButton ,helpButton)tkgrid(specFrame)dialogSuffix() 4/2/2013 43
    • 44. Submitting the job (OK button)onOK <- function() { .activeDataSet <- ActiveDataSet() delta <- paste(tclvalue(deltaVal )) alpha <- paste(tclvalue(alphaVal )) number <- if (tclvalue( numberVal) == "") "100“ else paste(tclvalue(numberVal)) doItAndPrint(paste("CCbics <-biclust(as.matrix(",.activeDataSet,"), method=BCCC(), delta=", delta, ", alpha= ", alpha, ", number= ",number ,")" , sep="") ) doItAndPrint("CCbics ") tkfocus(CommanderWindow())} 4/2/2013 44
    • 45. doItAndPrint(paste("CCbics <-biclust(as.matrix(",.activeDataSet,"),method=BCCC(), delta=", delta, ", alpha= ", alpha, ", number= ",number ,")" ,sep="") )doItAndPrint("CCbics ") 4/2/2013 45
    • 46. Output 4/2/2013 46
    • 47. RcmdrPlugin.biclustGUI 4/2/2013 47
    • 48. RcmdrPlugin: Menu-Definition File The plugin menus are defined the file: menus.txt. 4/2/2013 48
    • 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
    • 65. The GUIs IsoGeneGUI:http://www.bioconductor.org/packages/2.11/ bioc/html/IsoGeneGUI.html neaGUI: https://r-forge.r-project.org/projects/neagui/ biclustGUI: http://www.ibiostat.be/software/BiclustGUI/index.html Examples of RGUI: • http://www.sciviews.org/_rgui/ • http://bioinf.wehi.edu.au/~wettenhall/RTclTkExamples/ • http://setiopramono.wordpress.com/r-programming/ 4/2/2013 65
    • 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
    • 67. RSB-IsoGene 4/2/2013 67
    • 68. Web based neaGUI 4/2/2013 68
    • 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
    • 70. Thank you for your attention… 4/2/2013 70
    • 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

    ×