Wednesday, December 9, 2015

Announcing QSoas, a powerful y=f(x) data analysis software

Why a new data analysis software ?

I'm a researcher at the interface between physics, chemistry and biology, and in our team, we pride ourselves on making the most of the data we acquire, especially through quantitative analysis and modelling. In fact, we spend a lot of time doing fitting simple formulas or complex differential equations to our data. As we were not really satisfied with the data fitting capacities of the software available, we've had our custom data processing/fitting tool, SOAS, for ages. However, that tool was hard to maintain (Fortran + Fortran libraries interfacing with X11 with ABI changing every once in a while without notice), impossible to port to non-X11 platforms, not very user-friendly, and not easy to extend at all. So, when I got my permanent position, a rewrote a completely new version from scratch, called QSoas using C++, Qt, Ruby and the GNU Scientific Library. The result is incomparably more powerful, more easy to maintain, more user-friendly, and more portable (I build it for Linux, Mac and Windows).

What does it do ?

The main features of QSoas are:
  • all standard data processing capacities (filtering, baseline subtraction, arithmetic transformations);
  • fully scriptable (can process hundreds of data files in one go);
  • easy to use data fitting interface, based on the recognition that initial parameters are very important for difficult fits, and that being able to change them easily is an absolute must (screenshot);
  • easy fit parameter save and reuse;
  • very powerful "global fits", with parameters that can be common to several datasets and others that can be dataset-specific (at the option of the user);
  • integration of differential equations and kinetic systems;
  • quick data browsing;
  • peak detection;
  • arbitrary fit functions, and many built-in fit functions with smart initial parameters detection;
  • infinite undo/redo and much more...

What has it done already ?

We've relied heavily on QSoas's functionalities for the past 3-4 years, and a great part of the team's publications just wouldn't be there without QSoas. More precisely on selected examples:
I hope it will also help you get more than you previously could from your data (and faster, too !).

I want it, where can I get it ?

You can download QSoas version 1.0 on its website. The source code is fully available under the GNU General Public License. For those not too compilation-savvy, we sell pre-built binaries for windows and mac, in collaboration with Satt Sud-Est and eValorix. Compilation under Linux is very simple, but I'm willing to come up with a Debian package, should some of you want that. You should definitely have a look at the tutorial and the command reference.


Felix Hagemann said...

I'm unable to compile it on a Debian testing machine:

src/ error: ‘RFLOAT’ was not declared in this scope
#define RFLOAT_LVALUE(x) (RFLOAT(x)->float_value)

Any idea where that RFLOAT macro should come from?

Vincent Fourmond said...

Hah, true enough ! Install ruby2.1-dev and run

qmake RUBY=ruby2.1

This should get you going.

For the record, before 2.2, you could directly modify the "double" value of a Float in ruby, which is nice for programs like QSoas that look for performance. From 2.2 onwards, the internals of Float are hidden even to extensions, which is why this fails.

Have fun !

Felix Hagemann said...

Thanks, that got me a bit further. Unfortunately compilation now fails due to an API change in GSL 2.0:
src/ error: too many arguments to function ‘int gsl_bspline_deriv_eval(double, size_t, gsl_matrix*, gsl_bspline_workspace*)’
splinesWS, derivWS);

Any idea, if and when you are going to adapt?

Vincent Fourmond said...

Yeah, I got hit by that too. My strategy as of now is to stick to the 1.16 version of the GSL... Just use libgsl0-dev. I've also updated the compilation notes at

Anonymous said...
This comment has been removed by a blog administrator.
Qualitative data analysis said...

Will be easier to check with specialized help. There are a lot of data analyzing services with their own software. I just proposing, on my opinion, one of the best.

Qualitative data analysis said...

Will be easier to check with specialized help. There are a lot of data analyzing services with their own software. I just proposing, on my opinion, one of the best.