From lbajuk at tibco.com  Wed Jun 16 20:56:35 2010
From: lbajuk at tibco.com (Louis Bajuk-Yorgan)
Date: Wed, 16 Jun 2010 11:56:35 -0700
Subject: [Rd] GUI's and R background processes
Message-ID: <77EB52C6DD32BA4D87471DCD70C8D7000312F133@NA-PA-VBE03.na.tibco.com>

> I am new to R and have created an application using R 2.10, with a graphical UI using TclTk 8.5, running on windows 7, quad core machine. 
> The intention of the application is to launch calculations and display results on a graphical dashboard. 
> 
> I've reached a roadblock, and I need to confirm that the following CANNOT be done. I've been trying to find a mechanism for doing the following: 
> 
> 1. From the dashboard, start a huge calculation (i.e. call a function) that take at least 30 seconds to run, but without tying up the other dashboard features 
> 2. Dashboard can detect when the calculation is finished 
> 3. Dashboard can display incremental results as the calculation runs (i.e. status/progress) 
> 
> The requirement is to kickoff 4 calculations (#1), but I don't want the user to wait for the others to finish. 
> The calculations are not dependent. I just need to display results. 
> 
> I've been reading that threading in R is not an option. I tried using the multicore package, but that is still synchronous. I looked at multicore, fork(), addTaskCallback(), and TclTk threading, and none of these seem like an option. 
> 
> Is there a way to launch multiple R scripts from controller that can communicate back and forth? I believe this means that the separate processes are able to communicate. 
> 
> I certainly appreciate any direction you can provide. I really want to find some good news to tell the boss, though, since we went down this path before realizing the limitations.

Another option to consider is moving to a client/server architecture. Even if the dashboard and the R engine are on the same machine now, in the future you might want to deploy the dashboard to the web (or other client) to make it available to a wider audience. This also might make the asynchronous communication easier to manage, and offload computations from the client machine.

There are several options out there, including:
- Rserve, open source project maintained by Simon Urbanek. http://rosuda.org/Rserve/
- Biocep-R. http://biocep-distrib.r-forge.r-project.org/. Also open source.
- Spotfire Statistics Services: commercial solution from TIBCO (my company), that providers server access to a cluster of R and S+ engines via Java and C# APIs. http://spotfire.tibco.com/products/statistics-services/predictive-analytics.aspx

Good luck,
Lou

--------------------------
Lou Bajuk-Yorgan
Sr. Director, Product Management
Spotfire, TIBCO Software
206-802-2328
lbajuk at tibco.com
http://spotfire.tibco.com

TIBCO Spotfire Analytics
Better than BI.? Smarter than Spreadsheets.
(click here for the Top 5 reasons why...)



[Rd] GUI's and R background processes
Louis Bajuk-Yorgan