GSoC/GCI Archive
Google Summer of Code 2014

Ruby Science Foundation (SciRuby)

License: New and Simplified BSD licenses

Web Page:

Mailing List:

We believe that the time for a Ruby science and visualization package has come. Sometimes when a solution of sugar and water becomes super-saturated, from it precipitates a pure, delicious, and diabetes-inducing crystal of sweetness, induced by no more than the tap of a finger. So it is today with numeric and visualization libraries for Ruby. The SciRuby project is oriented towards providing computational research infrastructure. Infrastructure was the single common area of need identified by scientists, researchers, and engineers in discussions at the GSoC 2013 mentor summit. SciRuby consists of a fairly large number of gems, including statsample, distribution, minimization, integration, rubyvis, plotrb, MDArray, Publisci, Ruby-Band, and NMatrix. The last of these has been awarded grants by the Ruby Association (which develops the Ruby language) as well as Brighter Planet, and has a goal of supplying Ruby with a robust, versatile linear algebra library with support for both dense and sparse matrices. Statsample and its related packages (e.g., distribution) aim to provide the Ruby language with statistical analysis packages. Statsample-GLM and Statsample-TimeSeries were both written by a GSoC2013 student, as was Plotrb, a D3-based plotting tool. Other GSoC projects include Publisci, a tool for publishing RDF datasets (a simple way of making data available to other researchers via the semantic web), and Ruby-Band, a JRuby data mining tool. Working on SciRuby is a chance to get involved at the ground floor on a project which is viewed as critical by many Rubyists, including Ruby's creator, Matz. Further, since we are a science-related project, we expect that successful student projects could lead to publications. Better yet, you might get to see your code go into orbit, or used to save lives in biomedical research.


  • Interactive visualization builder based on D3.js D3.js is an interactive plotting tool and is widely used for generating visualization embedded in websites. We already have Plotrb for building charts via D3.js, but current Plotrb can only generate static charts. The goal of my project is to build interactive visualization, and still allows fast prototyping, customizability, and integration to other SciRuby components. My plan is inspired by Bokeh.
  • Interface with FFTW3 Currently, the SciRuby project is extending its library of core functions. This work aims to assist in those efforts, by interfacing with FFTW3 to aid in discrete signal processing, synthesis and analysis and ultimately create a gem which allows FFTW3 operations to be applied to NMatrix data types in Ruby. It is hoped that the proposed contribution could enhance the usability of SciRuby and allow Sciruby to become more a widely used product.
  • Minimization and Integration This project aims to build up on the existing Minimization and Integration gems. I will be implementing new functions in both modules in pure Ruby and will also add support for using Ruby GSL whenever available, to speed up the computations. JRuby based symbolic integration support will also be added using the JScience library.
  • Minimization and Integration My proposal includes information about numerical methods I'm willing to add to SciRuby Minimization, Integration and Differential equation solving.