Orange GSoC: Visualizations with Qt

Hello, my name is Miha Čančula and this summer I’m working on Orange as part of Google’s Summer of Code program, mentored by Miha Štajdohar. My task is to replace the current visualization framework based on Qwt with a custom library, depending only on Qt. This library will better support Orange’s very specific visualizations and will replace the unmaintained PyQwt.

I have a lot of experience with Qt and its graphics classes, both in C++ and Python, but I’m relatively now to Orange. As a physics student, especially now that I’m selecting a computational physics program, this a great learning opportunity for me.

I think my work is progressing very well, because many visualizations already work with the new library with only minor modifications:

  • Scatterplot
  • Linear projections
  • Discretize
  • All the visualizations in VizRank and FreeViz dialogs

The library is written partially in C++, especially the performance-sensitive parts, and partially in Python. It uses the Qt Graphics View Framework, with several reimplemented or wrapped method to preserve the old behavior and API. I have tried to keep the necessary modification to the widgets themselves to a minimum, so the large majority of changes are in the OWGraph class which server as the base class for all graphs.

Graphs made by Qwt are not very flexible, they only support graphs with cartesian axes. On the other hand, visualization Orange often use custom axes and transformations. That’s why I designed the new library with support for arbitrary axes, curves and other elements. All of these can be extendeng with classes written in Python, C++, or a combination thereof. The required changes to visualizations I already ported to the new OWGraph class were mostly simplifications, with very little new code added.

For example, zooming and selection is implemented completely in the new OWGraph class, with the same function and attribute names as before, so visualizations themselves didn’t need any changes at all.

The new framework is also able to produce much nicer graphs. I haven’t had the time to customize the looks much, but it’s possible to set colors, line widths, point sizes and symbols from Python. There are still some settings that have no UI configuration, but I will focus on that after making sure that visualization widgets work with the new library.

Currently I’m trying to change as many widgets as possible to the new classes. As I said above, I only completed a few of them, but I believe the others won’t require too much work.

Orange GSoC: MF Techniques for Data Mining

I am one of three students who are working on GSoC projects for Orange this year. The objective of the project Matrix Factorization Techniques for Data Mining is to provide the Orange community with a unified and efficient interface to matrix factorization algorithms and methods.

For that purpose I have been developing a library which will include a number of published factorization algorithms and initialization methods and will facilitate combinations of these to produce new strategies. Extensive documentation with working examples that demonstrate applications, commonly used benchmark data and possibly some visualization methods will be provided to help with the interpretation and comprehension of the factorization results.

Main factorization techniques and their variations included in the library are:

  • family of nonnegative matrix factorization algorithms (NMF), including Brunet NMF, sparse NMF, non-smooth NMF, least-squares NMF, local Fisher NMF;
  • probabilistic factorization (PMF) and its sparse variant (PSMF);
  • Bayesian decomposition (BD);
  • iterated conditional modes (ICM) algorithm.

Different multiplicative and update algorithms for NMF will be analyzed which minimize least-squares error or generalized Kullback-Leibler divergence.

For those interested some more information with details about algorithms is available at project home page.

There is still much work to do but I have been enjoying at it and I am looking forward to continuing with the project.

Thanks to the Orange team and mentor prof. dr. Blaz Zupan for support and advice.

Orange T-shirts

If you maybe missed on our Facebook page: we have made our own fruity t-shirts. They are simply awesome and show to everybody around you that you have a taste! Just check the handsomeness:

Miha wearing an Orange t-shirt

We will be selling them on the website soon for $15 (shipping costs included), but if you want to have one (or more) in advance, drop us a line and we will see what we can do. We have them for all you brave girls and boys and in different sizes.

Orange t-shirt (front)Orange t-shirt (back)