Wednesday, July 13, 2011

7/6 - 7/13


Tasks accomplished this week:
  • Multiple networks can be loaded in one applet, to make comparisons easy.  Also, many dimension-calculations can be run on each network without losing old results.
  • Threading is fixed, so gui always remains responsive
  • Interface in general is (hopefully) cleaner and more intuitive -though it's also more complicated with added functionality
  • There's a progress bar to show progress of dimension calculation, which can take a while for larger networks.
  • File uploading is exponentially faster (I discovered that using + concatenation to build a big string from a file is a bad idea - as the result string gets bigger and bigger it takes longer and longer to add the next piece.  Using a StringBuilder and .append() is much better.  Now files that used to take me almost a minute to read into a string are done in a blink.)
 Some screenshots:
What it looks like on startup.
The information about the network (n, k, D) is now contained in the tab for that network.  The loading panel is always accessible for loading more, and old networks stay "alive" (you can keep running analyses on them if you like).
 
Analysis in progress.
Panels with results from dimension calculation display the input used to create them as well as the computed dimension and r, an indication of the deviation of the data from a straight line (and hence sort of the reliability of the dimension value, though it's not really the best way to measure that).  The "use D" button averages this value of D with any other computations of it that the user chose to "use" and displays that up above, where it now says "D: uncalculated".  This way a user can experiment with different inputs and keep only the results from combinations that turn out to be helpful.
Things to work on:
  • Figure out a better way (besides "r") to measure how well a line fits the data (working with Jed on this tomorrow)
  • Add options in the loading panel to generate graphs of predefined types - random, trees, lattices, etc. - so users can compare the analysis of their networks with that of other models with the same n and k (number of nodes and average degree)
  • Experiment with algorithm speed improvement - look into optimizations and approximations
  • Make it sounder - make sure users can't overflow the memory and take care of bad input
  • Let the user cancel computations
  • Improve the progress indicator - parts of the computation are so black-boxed it's hard to accurately tell the progress without compromising encapsulation.  Also if a user runs two different long computations at once they can only see the progress of the most recent one.
  • Keep looking into applications

No comments:

Post a Comment