Decimaker: A statistical software using R, Microsoft .NET, R

Decimaker:
A statistical software using
R, Microsoft .NET, R (D)COM
Server and graphical libraries
Julien Vanwinsberghe, ClinBAY, France
Francois Vandenhende, ClinBAY, Belgium
Presentation outline

Decimaker software highlight

Build a software using R: Why & How?

Open Source components that can be
useful

Decimaker demonstration

Installation & required components

Some tools used during development

Conclusion
Decimaker software highlight

Decimaker: software for Adaptive
Dose-Response Trials and Bayesian
Decision Analysis
◦ Designed to assist clinical
development teams
◦ protocol design, trial simulations and
analysis

User-friendly graphical interface

Components
◦ Statistics: R and Open Bugs
◦ GUI: C# and .NET Framework 2.0
◦ Connection to R: R(D)COM Server
Build a software using R:
Why & How?
Build a software using R:
Part 1 - Why?





R is command-line statistical software widely
used by researchers
A lot of statistical methods have been developed
in R
R is open-source
◦ Number of packages steadily increasing
◦ Fast and robust
lack of an intuitive graphical interface for novices
-> develop an interface easily understandable
around the R programs
Decimaker: kernel is a set of R programs,
enhanced by a graphical interface
Build a software using R:
Part 2 - How?

R (D)COM Server: COM server used to connect
a client application (e.g. Microsoft Excel) with R
◦ Environment: MS Windows
◦ Methods to transfer data to/from R

Add the COM references to the C# .NET project

Use the methods of the StatConnector object
to evaluate R commands
STATCONNECTORSRVLib.StatConnector R = new STATCONNECTORSRVLib.StatConnector();
R.Init("R");
R.EvaluateNoReturn("a<-12");
object ret = R.Evaluate("a");
Graphical open source components
that can be useful
Because adding a professional and pleasant
interface to an application can be the most
time-consuming part of the development
Open Source components that can be useful:
Part 1 – R Server ActiveX components

R (D)COM Server includes two ActiveX
controls
• Easy to implement
• To show R graphical
output
• To Show R text
output
Display plots
Transmit text outputs
Open Source components that can be useful:
Part 1 – R Server ActiveX components

R (D)COM Server includes two ActiveX
controls
public void TestAxStatConnectors()
{
// Create an instance of the StatConnector
STATCONNECTORSRVLib.StatConnector R = new
STATCONNECTORSRVLib.StatConnector();
// Initialize R
R.Init("R");
// Connect graphical and text devices
R.AddGraphicsDevice("gfx", axStatConnectorGraphicsDevice.GetGFX());
R.SetCharacterOutputDevice((StatConnectorCommonLib.IStatConnectorCharacterDevice)ax
StatConnectorCharacterDevice.GetOcx());
// Test with R commands
R.EvaluateNoReturn("print(\"plot(sin(1:100))\")");
R.EvaluateNoReturn("plot(sin(1:100))");
R.EvaluateNoReturn("print(\"Done.\")");
}
Open Source components that can be useful:
Part 2 – Charting and Gauge controls
•
ZedGraph and A.J. Bauer Gauge are open-source charting and
gauge libraries
ZedGraph
 2D line
and bar
charts of
arbitrary
datasets
 High
degree of
flexibility
•
A.J. Bauer
gauge
 Fast and
performing
 Several
themes
 Fully
customizable
Necessitates more code, but as a result, the quality of the
graphical outputs is significantly improved
Open Source components that can be useful:
Part 3 – Icons

FAMFAMFAM Silk icon library
• To add a final polish
• Smooth, colourful icons
for any purpose
• > 700 16x16 px icons
Decimaker Demonstration
Website : www.decimaker.com
Decimaker installation &
required components
Decimaker required components

Platform: Microsoft
Windows

Required
components:
◦ R and required
packages
◦ R (D)COM Server
◦ .NET Framework 2.0

Very complicated
◦ Errors in the first
attempt to execute
the application
Decimaker required components

Test the proper
installation of
required
external
components
string Rpath; // Variable that will contain R install path
Microsoft.Win32.RegistryKey key =
Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"SOFTWARE\R-core\R");
if (key != null)
{
Rpath = key.GetValue("InstallPath", "").ToString(); // Can be in DOS format
if (System.IO.Directory.Exists(Rpath)) // Transform to complete path
Rpath = (new System.IO.DirectoryInfo(installedPath)).FullName;
}
Some tools used during
software development
Some tools used during
development

Subversion: version control system
◦ used on many open source projects (Apache, KDE, Pyton, …)
◦ manages current and historical versions of files

BugTracker .NET: open-source, web-based bug tracker
◦ particularly easy to handle
◦ permits to keep track of reported software bugs
◦ supports integration with Subversion

FxCop: Microsoft application that analyzes managed code
◦ to find possible improvements that can be made

Testlink: test tool
◦ web based interface
◦ create, manage and plan tests
Conclusion

Significant time was spent on searching,
assessing and in integrating existing components

Accurate results, fast computations and very nice
and usable graphical outputs.

The open source community provides key
products

The power of R

A downside: users are bound to install all
required R components
◦ Quality of results, speed up development
◦ Decimaker is not a black-box: import statistical models,
define R formulas and queries, export results as R objects
Thank you!
Julien Vanwinsberghe
[email protected]
Licenses
R (D)COM Server
R

Not included in
Decimaker
ZedGraph
Lesser General Public
License (LGPL)

FamFamFam Silk Icons
Creative Commons
Attribution 2.5 License

A.J. Bauer Gauge
No license (just keep
included code header)

Krypton Toolkit

Free to use runtime
Another tool to access R from and
application: R Serve

Rserve is a TCP/IP server

supports remote connection,
authentication and file transfer

Easy integration:
Rconnection c = new Rconnection();
double d[]=c.eval("rnorm(10)").asDoubleArray();

Not advised for windows servers
http://www.rforge.net/Rserve/
Open Source components that can be useful:
Part 3 – Windows Form Controls

Component Factory Toolkit library
• Improved versions of
common used form
controls
• Pretty design
• More functionalities
• Often updated