Skip to content

Scientific projects in Ruby

Rob Burrowes edited this page Dec 2, 2015 · 2 revisions

SciRuby isn't the only project dealing with scientific applications in Ruby. In this page, we'll maintain a list of gems with similar purposes or with a specific goal in mind. Also, we'll include bindings for important projects.

Creosote - A Mathematics Package for Ruby

The creosote gem provides two distinct functionalities that aid in using mathematics Ruby extensions. Firstly, creosote can provide awareness between unrelated mathematical libraries (such as GMP and Msieve), allowing data to be passed between them. Secondly, creosote can install prerequisite C libraries that certain Rubygems might need (inspired by RVMs same ability). For example, if one wishes to install the gmp_ecm gem, but do not have the ecm library, or its prerequisites installed, creosote can help.

Creosote was selected by the Ruby Association in their 2012 Grant, together with SciRuby. It's objective is different than ours, but seems very useful and active.

Official site

Repository

BioRuby: Open source bioinformatics for Ruby

BioRuby project provides an integrated environment in bioinformatics for the Ruby language. This project is supported by University of Tokyo (Human Genome Center), Kyoto University (Bioinformatics Center) and the Open Bio Foundation.

It's a library with a very narrow (arguably) scope, but it seems pretty advanced too. There's documentation, both in japanese and in english, a plugin system, a videocast and other things. Unfortunately, the repository appears to be not very active.

The license for each file is different, but it's very flexible in general. We could reuse some parts of its code, e.g. the format converters. There's probably something in there that's useful for a wider audience.

Official site

Repository

AI4R: Artificial Intelligence for Ruby

AI4R is a collection of ruby algorithms implementations, covering several Artificial intelligence fields, and simple practical examples using them. A Ruby playground for AI researchers.

This library is pretty neat, with implementations of various common algorithms. I think its style is not very good, idiomatic ruby and there are some places I'd simply rewrite. It's a nice perspective for SciRuby, NMatrix in particular: to make implementing these algorithms much faster and easier, with matrix/vector operations built-in.

It's also a good alternative when we need some AI algorithm and don't have enough time to implement it with SciRuby's tools (or they don't cover a topic yet).

Official site

Repository

Ruby-OpenCV

OpenCV is an open source library for computer vision with lots of features, widely used and well documented. There's a Python API (which I've used and is very good) and I think we should have one as well.

There isn't much documentation and the install process should be improved, but it's a nice and useful gem nonetheless.

Repository

Ruby-fann

Bindings to use FANN (Fast Artificial Neural Networks), a C library that implements multilayer neural networks. If you're into this kind of research, it's very useful.

Official site FANN official site

RAtlas

Two versions of Ruby API's to the Atlas BLAS and LAPACK libraries

[Official site]https://github.com/rbur004/ratlas/ Matrices stored in C structs, exposed as ruby Objects: A parent class Blas, which children classes FloatBlas, DoubleBlas, ComplexBlas, DoubleComplexBlas, GBFloatBlas, GBDoubleBlas, GBComplexBlas, GBDoubleComplexBlas, HEFloatBlas, HBDoubleBlas, ... The Ruby interfaces to the cLapack library build on these Blas objects. Hence there are FloatLapack, DoubleLapack, ComplexLapack, ... objects which inherit from the Blas objects of the same date type and matrix storage type.

BSD License (Same License as Atlas). Test suite for implemented calls. Last check in was 2 years ago. (Not all Atlas calls have been implemented)

[Official site]https://github.com/danielcooper/ratlas Haven't looked closely at the implementation. Last check in was 5 years ago.

Clone this wiki locally