What is BacSim?

BacSim is an extension of Gecko, an ecological flight simulator written by Ginger Booth, a programmer with the Center for Computational Ecology, Yale Institute for Biospheric Studies. Now renamed Center for Biodiversity Conservation and Science. Gecko started as a prototype based on John Holland's Echo models. It then became one of the first programs to be based on the Swarm toolkit for multi-agent based simulations written in Objective-C, originally developed at the Santa Fe Institute. Now Gecko is pure Java, using Ginger's own CourseWare, a Java Toolkit for online simulators for the teaching of ecology. Gecko in its various guises has been applied to grassland foodwebs and forrest simulations.

Given this history and the nature of the beast, it is not surprising that BacSim is both a model of Complex Adaptive Systems (microbial communities) and a Complex Adaptive System itself. Its co-evolution with Gecko started in 1997 with the original Objective-C colony model via the biofilm and biofilm with EPS production model to the current Java version of the latter.

The structure of the model is shown in this sketch, parameters in red are randomly varied in order to model the individual variability of bacteria.

The step from colony to biofilm model was major heart surgery as a more efficient diffusion-reaction algorithm was implemented. This was made possible by decoupling growth and diffusion on the basis of the different timescales of these processes. This resulted in a tremendous speed-up of model runs, by about 500 times. In addition, the model was extended to multi-species, multi-substrate systems with biofilm geometry (inert substratum at the bottom and bulk liquid at the top of the vertical dimension, periodic boundaries in the other two dimensions), and the bacteria are now living in a 3D space. This step was very much helped by Cristian Picioreanu, Hermann Eberl, and Mark van Loosdrecht.

A feature added later was the ability of bacteria to produce and excrete EPS, where the EPS is essentially treated as inert biomass (no metabolism or growth), subject to the same rules of biomass spreading.

The port from Objective-C to Java turned out to be a good bug hunting exercise for both versions of the model, as it involved careful examination of the whole source code. Simulation results of the two versions are not significantly different, but not identical since they use a different random number generator, and the precision of floating point calculations may be affected by program flow (on Intel machines, floating point calculations have higher precision (80 bit) in the CPU than storage in RAM (64 bit)). The Java version is probably better designed than the original and runs faster, much to my pleasant surprise (The bog standard biofilm simulation for 30,000 min of simulated time took 65% of CPU time with the IBM JDK1.3, and 82% of CPU time with the Sun JDK1.3 compared with the Objective-C version).

The Objective-C sources for the colony model and the biofilm/EPS models are available for documentation purposes - the source is the ultimate documentation of the model. (In order to compile these sources, you need to install the appropriate outdated versions of Swarm first, swarm-961002 (available for Unix systems only) for the colony model and Swarm-1.4.1 (available for Unix and Windows systems) for the biofilm/EPS models. This will not be easy.) If you would like to work with BacSim, please download the Java source code (source as tar.gz or zip archive), which has all the features of the biofilm/EPS model and is provided as a stand-alone package - you only need to install Java in order to use it.

Run BacSim in your browser

Since BacSim has now been rewritten in Java, you can try it out in your browser (Must be a Java 1.1 enabled browser, such as Netscape 4.5+ or Internet Explorer 4.0+. It was painstaking to make it work with these two browsers on Windows, Linux, and Mac. If you experience problems, let me know).

University of Birmingham | Centre for Systems Biology | Institute of Microbiology and Infection | School of Biosciences | Find The Lab