Skip to content
Daniel Mendler edited this page Feb 12, 2014 · 3 revisions

This is a brief list of software packages or libraries which are not part of SciRuby, and may not even have Ruby bindings, but are nonetheless interesting. These are packages that are worth remembering as possible targets of future work for SciRuby. All the software in this list is open source.

SciRuby needs plotting libraries.

  • Gnuplot is a mature product with a powerful feature set, especially for 2D plotting, and in particular it is easy to make a passable Ruby module that uses Gnuplot for plotting. You just have to open a pipe to Gnuplot in batch mode and send in commands. Gnuplot is the plotting engine behind Octave (MATLAB clone).

  • PLplot is an actual library, so you have to write bindings for it. There are already bindings for several programming language, so hopefully it won't be too hard to make Ruby bindings. I don't know exactly how its feature set compares to Gnuplot.

License: LGPL

A highly advanced package for scientific visualization and data analysis, primarily in the area of particle physics. ROOT is developed by CERN and contains many features specific to high energy physics, though it is also used for astrophysics and data mining. One important property of ROOT is that it already contains full Ruby bindings. ROOT is a somewhat overwhelming package, but it is very much keeping in mind for the future.

Sample plot

Features:

  • Histogramming and graphing to view and analyze distributions and functions.
  • Curve fitting (regression analysis) and minimization of functionals.
  • Statistics tools used for data analysis.
  • Matrix algebra.
  • Four-vector computations, as used in high energy physics.
  • Standard mathematical functions.
  • Multivariate data analysis, e.g. using neural networks.
  • Image manipulation, used, for instance, to analyze astronomical pictures.
  • Access to distributed data (in the context of the Grid).
  • Distributed computing, to parallelize data analyses.
  • Persistence and serialization of objects, which can cope with changes in class definitions of persistent data, access to databases.
  • 3D visualizations (geometry).
  • Creating files in various graphics formats, like PostScript, PNG and SVG.
  • Interfacing Python and Ruby code in both directions.
  • Interfacing Monte Carlo event generators.

License: GPL

HippoDraw provides a highly interactive data analysis environment. It is written in C++ with the Qt library from Trolltech. HippoDraw can be used as a stand-a-lone application or a Python extension module. In the latter case, Python is effectively the scripting language for HippoDraw.

Wikipedia says that HippoDraw is being developed primarily for the analysis and presentation of particle physics and astrophysics data, but may be useful in other fields. The sole developer is Paul Kunz (particle physicist, originator of GNUstep) who also maintains the Python bindings. The Python bindings seem to be a very important part of the project. It would be nice to talk to Dr Kunz about possible Ruby bindings at some point.

Sample plots

License: GPL

Madagascar is a software package for multidimensional data analysis and reproducible computational experiments. It appears to be geared toward geophysics. Among other things, Madagascar includes:

  • Standalone programs for out-of-core data analysis;
  • Standalone programs for geophysical data processing and imaging;
  • A development kit for C, C++, Java, Fortran-77, Fortran-90, Python, Matlab, and Octave.

Since there are already many bindings, it would be worth investigating whether Ruby can be added to the list.

License: GPL

Both of these are general purpose numerical libraries, with broadly similar goals. GSL is much older and complete, while ALGLIB seems to be easier to port to other languages. ALGLIB is written in specially designed pseudocode which is automatically translated into several target programming languages. Both libraries provide features like linear algebra, ODEs, numerical integration, FFTs and so on. I mentioned both because I don't know if it would be easier to first use ALGLIB and later "graduate" to GSL, or if it is better to just bite the bullet and go to GSL directly.

License: SOFA Software License

SOFA is a collection of subroutines that implement official IAU (International Astronomical Union) algorithms for astronomical computations. The library is available in Fortran and C. The subroutines in the libraries cover the following areas:

  • Calendars.
  • Time scales.
  • Earth's rotation and sidereal time.
  • Ephemerides (limited precision).
  • Precession, nutation, polar motion.
  • Proper motion.
  • Star catalog conversions.

The SOFA software license is a permissive license broadly similar to the 4-clause BSD license. That means that though it is probably open source, it is likely that it is not GPL compatible.

IPython implements a Python notebook for the webbrowser. They are currently moving to a multi language architecture and we can probably use it as a basis for our Ruby notebook.

Sage is a powerful opensource CAS

Opensource Matlab clone

Opensource Mathematica clone

Clone this wiki locally