Monday, November 5, 2007

New release of Epigrass coming soon!

I have finally found a justification to work on Epigrass again. I am publishing a paper on it and I want to have a fresh version out by the time he paper goes to press. It was a good thing since my wish list for the next release was becoming too long.

So here are the the things I have done so far and some I expect to get done before the new release:
  • Port to Qt4: Done. Not as hard as I suspected it would be. Now it will be possible to install it on Windows. I also did a lot improvements on the GUI, such as fixing bugs in the layouts, managed to figure out how to update the GUI (progress display) while the model was running, etc.
  • Wrote a GUI based .epg editor. Models are defined in Epigrass through a configuration file which is parsed by the ConfigParser module. To minimize the chances of users messing up the syntax of the file, I cooked up a configuration editor from scratch, which can be run independently of Epigrass to create an edit the .epg files.
  • Real-time visualization window: Partially written. I am trying to put together a map animation of the simulation which would run on a separate thread using Pyglet OpenGl interface. I am currently trying to figure out how to do OpenGL viewport auto-resize, so that I can load different maps and have they fit the window. If anyone knows how to do that, please tell me (I am learning OpenGL as I go).
  • Update Epigrass's KML output to generate time-animations of the map: Planning stage. This will require to generate multiple layers of the map, one for each time-step. I will probably have to generate a KMZ (a zipped version of a KML) instead of a KML in order to keep the file size from becoming very large. Most of the code is done since I will just re-use the KML-generation code, and call the layer generator multiple times, changing the colors of the polygons at each step.
  • Re-write the simulation scheduler to allow the parallelization of the simulation via parallel-python (PP): Planning stage. the coding part will be easy, but I expect a lot of debugging to deal with all the dependency code which needs to be declared when creating the separate jobs with PP. Moreover, I have no idea if I will stumble on unpicklable stuff. I just hope that if I do, I can find a way around the problem.
  • Revamp the setup.py, to conform with the latest version of setuptools. It's been broken for a while...
  • Maybe try Pyinstaller to release single file executables, and avoid dependency hell, at install time. Many dependencies are not easy_installable yet...
So... these are the main things I want to have working for the next release. It's a tall order for a single developer with a lot of other stuff to do before the year's end. If get to pull it off for the next release, it may be worth a 2.0 version upgrade. One thing I will leave for a future release though: Implement support for ZODB and Durus as Backends.

ccp

Amazon