CatacombComponents And Tools for Accessible COomputer Modeling in (neuro)Biology
Catacomb is a library of models (data structures and algorithms) covering a range of problems in neuroscience together with a versatile graphical user interface for constructing and running specific instances of the models. It is distributed under the GNU General Public License.
As the name suggests, catacomb consists of components and tools. These may be accessed from or incorporated into other modeling environments to provide facilities not present in catacomb. In particular, the high level interpreted, object oriented language Python has a Java version which is capable of instantiating Catacomb objects and calling their methods. This provides command line and scripting facilities that can be used with Catacomb and a great deal more.
Roughly half the code for a typical model (and much more for some) is dedicated to its user interface with the rest going on numerics and bookkeeping. The idea behind this is not just to provide convenient short cuts to things that could be done from a script or the command line, but to facilitate those things which are very difficult without a GUI. In particular, it is meant to facilitate an exploratory style of use where a parameter or structure can be changed and the results are shown almost immediately. This is in contrast to a more pre-planned type of investigation in which it is so easy to overlook features that are difficult to manipulate.
The numerical methods are described in more detail elsewhere but inevitably, they are a compromise between simplicity and robustness. In particular, almost everything is done implicitly - there are no forward Euler methods or the like. But most calculations are also first order in the timestep; firstly because it is so easy to change the timestep and check how big the errors are, and secondly because obsessive numerical accuracy is almost irrelevant where the original parameters are so imprecise. Furthermore, for optimization algorithms, it is frequently more helpful to have a simple algorithm with known systematic errors but a smooth parameter dependence, than a more subtle one with smaller errors but a jagged parameter dependence.
Recorded sessions are Catacomb objects just like anything else. They contain a string array which stores the starting state of the session in the same format as a save file. This is used to restore the configuration at playback. GUI events are stored in another string array containing the target GUI component, event type and any related data. The main cost of this is that there may be strings within strings, within strings, which needs many backslashes when converted to simple ascii, but it is all handled by the IO routines.
There is an AppletConfig object designed to save a group of windows as a single applet. It comes with an interface allowing panels to be extracted from windows currently on the screen and packaged together to form a single applet and can write a template html file for loading the corresponding model as an applet from a Web site.