Cern Sft Template Information
Complete ROOTR: an R interface for ROOT 5 and 6 with Cint/Cling support.
- Information about yourself
- Commitments after GSoC
- Proposal at Google Site
Abstract: ROOT - R interface
Provide a short (one paragraph) description of your proposal.
Description: Develop an interface in ROOT to call R function using the R C++ interface (Rcpp, see http://dirk.eddelbuettel.com/code/rcpp.html). As a proof of concept implement the Minimizer interface of ROOT to use a R package for minimization. Developing this interface opens the possibility in ROOT to use the very large set of mathematical and statistical tools provided by R.
Implement C++ class(es) to perform a conversion of ROOT C++ object to R objects, transform the returned R objects into ROOT C++ objects.
Expected Results: One or more C++ classes which perform the conversion of ROOT C++ object to R objects, able to call R functions and transform the returned R objects in ROOT C++ objects. The class(es) should implement some of the existing algorithm interface in ROOT, so that the R functionality can be used directly for fitting or statistical studies in ROOT.
Mentor: Lorenzo Moneta
Requirements: Basic knowledge of C++. Knowledge of ROOT and/or R would be advantages.
Describe your application in detail. Provide some background, describe the work that you are expecting to do in the time leading to the GSoC start.
I will create a library called libRInterface which will be in charge of communicationg ROOTwith R through RCpp and RInside packages(also based in RCpp).
What do you expect as a deliverable for your project? Please try to be as precise as you can (e.g. a ready to deploy package (or a patch) ABC implementing XYZ feature tested on Linux/Mac/Windows)
Source Code in an repository that lets you use R in ROOT with the next features:
1) Classes TRInterface, TRFunction and TRObjectProxy: 1.1) With support to pass basic objects from ROOT like TArrays, TVectors and (if is posible TMatrix), with templates for Double_t, Float_t and Int_t to R 1.2) With support to pass objects from standard c++ like std::vector, std::map, std::list, std::array with templates for Double_t, Float_t and Int_t to R 1.3) That lets you pass string values (char*, std::string, TString) and string arrays to R 1.4) That lets parse R code and get the return value using std::vector,TVector, TArray,TString (or if is posible TMatrix). 1.5) That lets you run functions passed from string (the string can have C-Functions if is posible). 1.6) with operators overloaded for facilities. 1.7) with support to run on root interpreter. 2) Examples and tests codes: 2.1) An interpolation example passing points from ROOT to R and calling the R's interpolation functions, result will be plotted whit ROOT's TGraph class. 2.2) Other basic examples calling some useful funtions of R 2.3) test cases for every feature 3) Integrate to ROOT: 3.1) support for autotools and CMake 3.2) support for Linux 3.3) support for c++11
Outline at least three milestones and describe what you are planning to have accomplished for each of them.
Tell us what do you expect from us, what help are you going to need.
- Help and guidance coupling with ROOT libraries.
- A git branch and a page in drupal should be nice.
Tell us about yourself (be verbose!). A paragraph that states your work and education experience should suffice. List the projects that you have participated in, it can be open source projects, university projects, freelance projects or anything else which you think might be relevant. If you have a blog where you write about the work you do or things you study please provide a link to it. Do not forget to provide us with your email address and other contact details (e.g. Jabber ID, skype)
Why choose me?
- I am a student that knows pretty well ROOT's development technologies.
- I was a GSoC student last year with a project for ROOT that is ready to be integrated with the main project any time soon.
- I am still developing and maintaining the projects from previous GSoCs.
- I am a passionate student with my work and I want to continue contributing with the development of ROOT's libraries.
- Latin America High Performance and Grid Computing - The Abdus Salam International Centre for Theoretical Physics (ICTP)
- Scipy Conference 2010 at Austin Texas.
- Gtoc5: with Computational Physics and Astrophysics Group (FACom)
- Google Summer of Code 2010.
- Google Summer of Code 2012.
- Computational Physics, Physics Institute, Universidad de Antioquia: Teacher Jorge Zuluaga Callejas, PhD.
- Advanced Scientific Programming in Python: Teacher Fernando Perez University of California at Berkeley PhD
- Orbital Mechanics: Teacher Ricardo Restrepo Msc and Ph.D Student University of Texas at Austin. Aerospatial Engineering.
- Computational Numerical Methods:Teacher Jorge Zuluaga Callejas, PhD.
- Developer in Phenomenology of Fundamental Interactions Group (Gfif)http://gfif.udea.edu.co Division of computer science Gfif Developers (GfifDev)
- System Manager of Regional Center for Simulation and Advanced Computing (CRESCA), University’s headquarters of research (SIU), Universidad de Antioquia (2009)
- Developer of Computer Science Division, of Computational Physics and Astrophysics Group (FACom) Univerdiad de Antioquia.
- Computer Assistant in the Journal of Physics: Sociedad Colombiana de Física. (2010)
- Teacher/trainer of Scientific Computing in Python http://gfif.udea.edu.co/web/tiki-index.php?page=Extension+Python&structure=gfif+(es)
- Software developer in C + + for Orbital Mechanics Group at the University of Texas at Austin, mentored by Dr. Cesar Ocampo Ph.D
- To write a system to load .root files from R
- To write a system to read ROOT's trees from R.
- To write a system to read ROOT's histograms from R.
- To write support for Windows and Mac.