Can you give a short introduction describing Kst, what is it and what does it do?
Kst is a plotting program which is optimized for easy and rapid exploration of very large data sets, and for real-time display. My original specific application was the display and real-time analysis of time stream data from balloon-borne telescopes my research group at the University of Toronto builds (my real job...). For example, we use Kst during the flight to display all of the pointing sensors (gyroscopes, sun sensors, etc) and, where relevant, their power spectra, in real time, as well as the motor signals (requested torque, current, rotation rates, etc.) in order to be sure that the payload is behaving correctly. Or after the flight, we use Kst to look at the several weeks worth of 100 Hz data during analysis. Kst has a very convenient mouse-based zooming capability, so you can look at small rare transients buried in millions of samples. It has all of the basic mathematical operations one might want, like power spectra, histograms, equations of curves, filters, and fits to make exploration of large data sets quite easy. While quite capable of publication quality plots (I use it for my papers) Kst's primary purpose is the exploration of large and/or real time data sets.
Kst was picked up for use by the Planck satellite which allowed us to hire professional programmers for several years, which really helped the project. Unfortunately, funding has reduced, limiting development to volunteers again.
In the last weeks of January Kst witnessed a round of significant performance optimisations. Can you tell something about those? What made them possible, and how come some of them provide huge increases of performance?
Kst is capable of reading data from a range of formats (Dirfiles, FITS, netCDF, and ASCII). The performance enhancements were for the ASCII reader, which, while very flexible, had not been particularly well optimized, in that it used the general and very convenient search type functions in QString for much of the parsing. Peter Kümmel 'rolled his own' C style parsing which could take advantage of things that we know about the format in advance, which made for very large improvements in the efficiency of reading ASCII files. He also found that the stock Linux atof was rather slow. We use our own now.
Are there more recent additions to Kst which are interesting?
The last few months have been spent in 'polishing': We have improved our dialogs, automatic labels, added export to SVG and EPS, added scientific notation in axis labels, improved drag and drop for laying out plots, and improved the auto-layout code. Kst in SVN is really in very good shape right now, and it is getting to be time for another release!
Why hasn't Kst migrated to Git from KDE's Subversion repository yet?
Mainly a lack of motivation. It would take a couple hours to fully figure out what to do, and then do it, and then tell everyone what we have done, and, given the size of the Kst team, we really haven't had any problems with SVN. This being said, I am not opposed to a change either.
What are the future plans for Kst's development?
Besides a long list of little UI improvements:
In the near future, I'm interested in improving Kst's ability to handle time. Right now, we can display time in human readable format if the X-data are, for example, ctime values. But we don't handle time zones, and we can't read ASCII date/time strings yet.
I'm also interested in a spreadsheet mode type interaction with the data, which would allow hand-editing of the data, for example.
Kst is currently a Qt4-only app. We have had a running low-level discussion about making it a full KDE app (which would help, for example, with timezones), but the worry is that this might make Windows or Mac installation more difficult. I would love opinions and advice on this.