Loading...
 

GSoC 2014

Cern Sft Template Information

Complete ROOTR: an R interface for ROOT 5 and 6 with Cint/Cling support.

Index


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.

Application:

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.

Basic Desing

Image

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).

Deliverables:

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

Timeline:

Outline at least three milestones and describe what you are planning to have accomplished for each of them.

April 21:

19:00 UTC

Accepted student proposals announced on the Google Summer of Code 2014 site.

Community Bonding Period:

Students get to know mentors, read documentation, get up to speed to begin working on their projects.

May 19:

 

ROOT 6 migration

1) Classes TRInterface and TRObjectProxy:

1.1) With support to pass some 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 some objects from standard c++ like  std::vector, std::map, std::list 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 you 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.

Work Period:

Mentors give students a helping hand and guidance on their projects.

June 23:

19:00 UTC

Mentors and students can begin submitting mid-term evaluations.

June 27:

19:00 UTC

ROOT 6 migration

2) Examples and tests codes:

2.1) Example with linear minimization.

2.2) Other basic examples calling some useful funtions of R

2.3) test cases for every feature

3) Integration to ROOT:

3.1) support for autotools and CMake

3.2) support for Linux/Mac

 

Work Period:

Mentors give students a helping hand and guidance on their projects.

August 11:

Suggested 'pencils down' date. Take a week to scrub code, write tests, improve documentation, etc.

August 18:

19:00 UTC

Firm 'pencils down' date. Mentors, students and organization administrators can begin submitting final evaluations to Google.

August 22:

19:00 UTC

1) Final evaluation deadline

2)Google begins issuing student and mentoring organization payments provided forms and evaluations are on file.

August 22:

20:00 UTC

Students can begin submitting required code samples to Google

Requirements:

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.

Information about yourself


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.


Full Name: Omar Andres Zapata Mesa
email: andresete.chaos at gmail.com
Systems’ Engineering Student 3th Year
at Instituto Tecnologico Metropolitano www.itm.edu.co

ACADEMIC EVENTS

  • 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.

COMPLEMENTARY STUDIES

  • 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.

WORK EXPERIENCE

  • 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

Commitments after GSoC

  • 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.



Visits

Related Sites