Kartesio is a program I wrote in 2011 for calculating best fit curves from a set of points. Kartesio uses QCustomPlot widget to plot data, and Maxima to solve expressions. The icons used in Kartesio have been designed by KDE Oxygen team. Kartesio also uses ZorbaNeuralNetwork to recognize the best fit curve. ZorbaNeuralNetwork is a library for easy neural networks construction I started writing in 2006, and supports training with both Widrow-Hoff algoritm and genetic algorithm.Kartesio is not based on KDElibs anymore. I made this choice basically for two reasons: the main one is that I wanted Kartesio to run easily also on Windows, and KDElibs building is way too much complex for my taste. The second reason is that KDE developers seemed not particularly interested in Kartesio: maybe that's because this program is designed for science laboratories (in high schools and universities, for example) and this is a way too limited set of users for KDE Edu. Obiously, it's still a program meant to be used on KDE when possible (I'm using Oxigen icons to give that wonderful KDE feeling). But if you really want to use it without KDE, it's not a problem anymore.
|Using the neural network you can choose the function prototype from a combo box|
|Using the regression algorithm you can write your own function prototype (the only rule is that it must be in the form "y=...")|
Now, Kartesio is only based on Qt, and can be built everywhere you can install QtCreator just loading the "kartesio.pro" file and pressing the "build" button. That's how easy I wanted it to be. It would be cool to make an Android version of Kartesio, but maybe this is quite too complex. For now, I prepared some binary packages for Windows and Debian/Ubuntu (you can download them from https://github.com/zorbaproject/kartesio-build).
And here is the source code:
Of course, in this repository you'll find the source code of both Kartesio and ZorbaNN, since this one is just a couple of C++ files. In case you want to use ZorbaNN in a program of yours, just copy the files "neuralnet.ccp" and "neuralnet.h" in your program directory. And you'll find also a working copy of QCustomPlot. To compile Kartesio you will need QtCore, QtGui, and QtScript. On a Ubuntu system you just need to install these two packages: qt-sdk qtscript5-dev. On Windows you just need to install the QtSDK with QtCreator, it's already complete.
I added a feature called "Automatic recognize shape": it uses the neural network to find out which shape fits best the experimental points. The fun part is that the program shows you the neural network in real time: while the automatic recognition is running, a little window appears. This little window represents the structure of the neural network: every I is an input neuron, and the O is the output neuron. Every input is linked to the output neuron via a weight, which is written just under the I character. This way you can understand how a neural network works. For me it's particularly interesting when the neural network runs with only the genetic algorithm, cause you can see how the evolution works.
|Watch the neural network structure in real time|
I don't have too much time to work on this program (I'm a journalist, not a programmer), and if anybody else wants to contibute to Kartesio or just fork it and play with the code, I'll be very happy. I started writing this program when I was a chemistry student, becaused I needed a best fitting program and I couldn't find one good enough for my taste. Hope this can be useful also for someone else.
I may write a handbook in the next months, if I'll have some spare time. But, again, if someone wants to write a handbook for Kartesio I'll be very happy.
There is a bug I'm already aware of: the program crashes sometimes when the plot is painting. This is not really a bug in Kartesio, but in QCustomPlot, and I did not understand its cause. In fact, this problem presents rarely and in different situations. Should not be a real problem: if you correctly saved your data you can just reopen Kartesio after the crash and then load your table and function.