Team:Dundee/Software

From 2012.igem.org



Lysis To Kill is a game developed for the Android platform. The concept of the game was inspired by Splashback which was a Flash game developed for the Cartoon Network [1]. The original concept involved adding drops of 'goo' to a playing board in order to burst 'blobs', creating a cascade of bursts. The aim was to clear the playing board in as few clicks as possible. In a similar fashion, Lysis To Kill draws on the same game concept with a twist to mirror the iGEM project we have undertaken.

You start the game with 10 clicks. You are in charge of the friendly, synthetically engineered E-coli cells (in green), and each time you click a cell it shrinks and eventually bursts. Your goal is to destroy all the C.diff cells with φCD27 endolysin, which is fired from your E.coli cells whenever they burst. Each level grants you an extra click, and points are awarded for every C.diff cell destroyed. Bonus points are awarded if you finish a level with a clear board. The game is free to download, and the full source code is provided.

The Dundee iGEM team of 2011 created an Android application named the Lazy Scientist, and this year we chose to follow up the application with a suite of useful tools for biology students. The main goal was to provide some useful applications and to provide access to the source code to enable developers to add, modify and change the application to suit their needs. The app is free to download, and the full source code is provided.

The application currently contains the following tools:

  • Ratio to Percentage/ Percentage to Ratio Convertor
  • OD660 to Cell Count Estimator
  • Simple Dilution Calculator
  • Serial Dilution Checker

(** Note: The OD660 calculator is based on a single sample set of data that, for obvious reasons, can only provide an estimate of cell count.
For more accurate OD calculations, in-situ, calibrated laboratory equipment should be used.)


Splicer is a short game of six test levels developed for the Windows desktop. The premise is simple - from a selection of Biobricks, you are tasked with the creation of biological solutions to given problems. By selecting each Biobrick, you insert it into the plasmid in the centre. Once you think you have a viable solution, you click on the 'Transcribe & Translate' button to see if you were right. If you are comfortable with C#, the full source code is included so that you may add more Biobricks and more levels.

The game was developed in Visual Studio using the XNA libraries, and full source code is provided in the download section, along with a full installable version of the game, which can be removed via the Windows control panel as normal.

From the onset of the project, the modelling team had to carry out investigative research to understand the biological processes that were involved in the project to ascertain appropriate modelling methodologies to adopt. Due to the unique combination of factors involved in the project, it became evident that there were considerable quantities of mathematical variables that defined the behaviour of the cellular interaction. From a software development perspective, it was attractive to take the mathematical axioms of behaviour, and to wrap them within a bespoke modelling solution to provide a visual representation of the project.

CellSim is a cross-platform, 2D, cellular automata [4] (CA) modelling tool that was developed to demonstrate, in a graphical manner, how the synthetically modified E-coli and C.diff cells could interact in a simulated environment. The application was designed to simulate the cellular interactions whilst also providing a customisable simulation environment that could enable the tool to be used in other, similar projects. CellSim was developed to enable it to be executed on either Linux or Windows based systems, and is released under the GNU GPL 3 license that permits copying, modification and redistribution of the program. The source code and full class diagram is provided within the download archives for educational purposes as well as encouraging others to build upon the initial release.

CellSim initialises the environment by parsing the text data file 'settings.dat' which must be located within the same folder as the program. The download archive contains an example of the settings file which provides all the parameters that are available for user modification. The current development version (1.0) provides an environment in which the following aspects can be simulated and defined by the user:
  • Cell Division Rates
  • Strains
  • Colony Size, Initial Positioning & Colouration
  • Medium Flow Effects
  • Mucus Wall Effects
  • Time Calibrated Rendering
  • Nutrient Availability, Supply & Absorption
  • Low Nutrient Mitosis Suppression

The program was developed around an MVC structural design pattern [3] with a subtle modification. The initial design adopted a classic MVC [3] architecture, whereby for each generation, each cell was updated within the model classes, and subsequently rendered within the view classes. Due to the large number of cells that the program is required to simulate, code profiling highlighted the inefficiency if iterating through all cells twice. Furthermore, the status of each cell is partly determined by neighbouring cells, and therefore a method was required to detect the presence of neighbouring cells and their status. To accomplish this through data provided solely within the model, for each cell, all other cells would require iteration and interrogation leading to a time complexity of at least O(n2). Due to the mitosis behaviour of cells, the source number of cells also increases in a quadratic manner. The quadratic mitosis behaviour cannot be alleviated, as it represents the real-world scenario, so a solution was sought to alleviate the compound quadratic time complexity that arose from the classic MVC [3] implementation.

The solution adopted was to carry out cell interrogation, cell update and rendering in a single pass, and establishing the presence of neighbouring cells by direct interrogation of the graphics memory as opposed to model data interrogation. By calculating the base address of the graphics memory in conjunction with the co-ordinates of the current cell, a direct memory address could be calculated and accessed to establish the presence of neighbouring cells, alleviating the need to iterate through all cells. By adopting these measures, the time complexity of the 'cell evolution' section of code was reduced to a constant, greatly improving the speed and number of cells that the program could comfortably emulate.

Cellular movement emulates fluid flow by imposing a circular pressure front that is circular in nature. This provides a simple model that affects each cell's horizontal position by exerting a greater force on those nearest to the centre of fluid flow. To enable variable flow rates to be simulated, a normalised force was calculated from the cell's co-ordinates (x, y) relative to the display screens height (Ymax), multiplied by a user adjustable force factor (f) and utilised to modify the horizontal position of the cell. By carrying out this calculation on each cell, a realistic, circular flow pressure is simulated. The new horizontal cell position is calculated from the following formula:

To provide a realistic and accurate movement of cells within CA environment, each cell contains co-ordinate members for the respective 'x' and 'y' position. These class members are defined as float data types as opposed to integers to permit gradual movements to be achieved. To render each cell, the co-ordinates are simply cast to integer types before being passed to the graphics interface. This permits cell movements to be calculable to fractions of a pixel, and provides an accurate representation of the behaviour required.

The application adopts the SDL (Simple Directmedia Layer) graphics API that was chosen primarily due to its flexibility, and is licensed under GNU LGPL version 2 [2]. Furthermore, the library provides binary compilations for a wide variety of operating systems including Windows, Linux and MacOS. To encourage development of the program, pre-developed Eclipse and Visual Studio 11 project files have been created, and are free to download and explore. Alternatively, the packages also include the pre-compiled binary versions of the application within the 'Release' folder of the download archive (ZIP) files.

NOTE: To run 'CellSim' under Windows, the Visual C++ Redistributable Package must be installed. This is free, and can be downloaded from https://www.microsoft.com/en-us/download/details.aspx?id=30679 Select the file named 'vcredist_x86.exe' (6.2MB), and once downloaded, run the program to install the Visual C++ libraries required prior to running the 'CellSim' program.

Download Links:
Lysis To Kill - Android Package [ Lysis To Kill.apk ]
Lysis To Kill Eclipse Project - Full Source [ Lysis To Kill.zip ]
Lazy Scientist II - Android Package [ Lazy Scientist II.apk ]
Lazy Scientist II Eclipse Project - Full Source [ Lazy Scientist II.zip ]
CellSim Linux x86 Eclipse Project - Full Program & Source [ CellSim Linux x86.zip ]
CellSim Windows x86 Visual Studio 11 Project - Full Program & Source [ CellSim Windows x86.zip ]
Splicer Source - Visual Studio 10 XNA Project - Full Program & Source [ Splicer Source.zip
Splicer Installer - Windows x86 Installer - Full Program [ Splicer Installer.zip

All software is provided under the GNU GPL 3 license terms ( full text here), and is provided 'as-is' without warranty of any kind.
By downloading any of the software provided, you are confirming your agreement to the terms of the license in full.

Some or all of the software provided may see further development by the author. Due to the Wiki freeze at the end of the competition, future versions will be released through the author's Blog at http://nibblesbytes.blogspot.co.uk