We wanted to simulate the growth of a tumor using autonomous agents. Previous work in the lab of Thomas S. Deisboeck had shown that these agents could be programmed with simple rules like nutrient searching, toxin avoidance and crowding avoidance, to produce 'emergent' patterns in 2D simulations (Mansury et.al. 2002). They were also able to show that sub-optimal search precision allowed a tumor to better optimise target finding, in this case first passage at a blood vessel a fixed distance away (Mansury & Deisboeck 2003).
My solution involved an additional layer of cell-reactions. This was implemented with an object oriented model of reaction kinetics. Additionally with a very coarse spatial resolution, the cell itself was divided into four equally sized compartments.
The program was based on an excellent agent-based simulation tool RePast based on some previous economic simulations from the university of chicago. Excellent support and detailed manuals and example source code.
Briefly the code available here is an extension of what has already been published. It considers a square initial condition of single cells of a tumor distributed in the centre of a regular lattice grid that is a segment of a toridal grid. The simulation is run until a single cell enters the edges of a cross-sectional blood vessel a given distance away (Athale et.al. 2005). Parameter scans are run using the batch-mode. Visualization is a bit memory intensive and needs to be tweaked. It represents single cells and their phenotypic states. The batch scan was used primarily to scan critial parameters like the growth factor receptor density (Athale and Deisboeck 2006).
| Time(min) | 0 | 28 | 200 | 238 | 260 |
|---|---|---|---|---|---|
|
|
|
|
|
The code presented here (zip-file) contains the following files:
I used Eclipse and Repast3 to compile the code with j2sdk on a windows desktop for display and it showed no problems for running without display on a UNIX/Linux machine.
Please cite the Athale, Mansury and Deisboeck (2005) paper if you use this code!