Archive for July, 2012

GUI performance nightmare if shrinking font of drop-down lists

Wednesday, July 18th, 2012

I was wanting to shrink the font of elements of the SOFA GUI dialogs so I could squeeze more in or relocate items to more logical positions. Can’t be that hard, surely? I have since discovered that if a drop-down list (wxPython wx.Choice widget) has lots of items e.g. 30+ it takes seconds for fresh items to be added the the widget if you are trying to use your own font selection (using setFont()) on Linux. SetItems() takes a long time as, presumably, it sets the font for each individual item. And given I can’t control how many items will appear in drop-down lists or avoid having to repopulate lists (e.g. new data table selected so variable lists have to be updated) the option of shrinking fonts is not viable. Back to the drawing board.

[UPDATE] I came up with a workaround. Because there is no performance problem when items are included with the initial instantiation of dropdown widgets, all dropdowns are rebuilt each time they are changed. This means they have to be destroyed before being replaced, and the panel they are on must be hidden temporarily to avoid flicker on Windows, but it works. The fact that I was able to clean up some code in the process almost compensates for the considerable extra work 🙂

1.1.7 Enables Series of Clustered Bar Charts and Multi-Line Charts

Friday, July 6th, 2012

Now SOFA lets you make series of Clustered Bar Charts and multi-line Line Charts.
Series of clustered bar charts

Series of multi-line line charts

And when a data type mismatch is encountered during an import, SOFA now reports on the first faulty cell (row, cell value, and expected type) to make it easier for to clean your data.

Mix of data types import message

In addition, here are the other features added in this release:

  • Now able to run multiple single line charts. And multiple line charts have a consistent y-axis for role as trellis charts.
  • SOFA now guesses whether an xls or ods spreadsheet has a header row or not when importing and sets the default buttons accordingly.
  • Tighter and more flexible spacing of x-axis title according to number of lines in x labels. Now show legend title before legend and only show legend if multiple series.
  • Smarter column resizing.
  • CSV importing correctly identifies if file has a header more accurately if only one column (and thus no delimiter identified initially).
  • Adjusted chart sizings to be more rational and less magic.
  • Better width settings for dojo histogram output when lots of bins (prevents x-axis labels bunching up).
  • Row stats tables show “Not calc” instead of nan (not a number) when appropriate.

And there are some important bug fixes as well:

  • Fixed bug encountered when importing spaces in fields.
  • Fixed bug when missing values in some fields in a boxplot with multiple series.
  • Table design changes now cope with pre-existing sofa id index and demo values no longer updated on exit (inadvertently via on_show event).
  • Fixed bug in tooltip display of averages in general charts – no longer rounds to lower integer.
  • Charts of averages don’t show percentages in tooltips.
  • All matplotlib histograms, including those in stats display such as for one-way ANOVAs, now cope with sigma of 0.
  • Fixed bug calculating percentages where all values in a chart (of a series) are 0.
  • Fixed bug in showing rotate when changing to clustered bar charts.
  • Fixed bug in ods importing where display of sample values didn’t include repeated cells (only showing the first value).
  • SQLite now correctly identifies more types as numeric.

I hope you like it.

SOFA Celebrates 100,000th Download!

Sunday, July 1st, 2012

SOFA Statistics had its 100,000th download today, which is a doubling in just over a year. And more features and user experience refinements are in the pipeline. So please spread the word. There is no advertising budget so we need you to blog, tweet, like, +1 etc. Thanks!

100,000 Download Milestone