	       
       
                                                   
         CYBERCILLIN - an artificial life program  
                                                   
       


			Overview
			========

This program simulates the growth of a colony of single cell
bacteria in vitro, and the effect of an  'antibiotic' regimen. 
Each individual micro-organism is capable of:

  a) movement     
  b) asexual division (a 3 stage process) 
  c) genetic mutation 
  d) conjugation (sexual reproduction) 
  e) death by natural causes 
  f) death by antibiotic 
  g) antibiotic resistance


It is important to realise that the behaviour of the colony as a
whole is not pre-programmed. Each member of the colony is
allowed to behave independently, as would happen in a biological
situation. Any emergent behaviour of the colony as a whole stems
from an evolutionary process, based on the ideas of : 

   - mutation
   - exchange of genetic material
   - natural selection


The program is written for IBM compatible computers running
MSDOS or PCDOS (version 3.2 or later). The higher the processor,
the better (286, 386, 486 etc.) - although the program will run
slowly on an old 8088 XT machine. Memory requirement is 640kb.
Monitor and video card must be able to handle colour text: 50
lines x 80 columns.




			General
			=======

The program works by keeping track of each individual
micro-organism in the colony. Each has a set of genes that
determine:

  1. The motility of the micro-organism. 
  2. How often it divides asexually 
  3. Whether it has antibiotic resistance
  4. Natural lifespan 


Genetic variation is achieved by mutation of individual genes
during asexual division, and by conjugation (where two
micro-organisms exchange genetic material). The state of each
micro-organism in the colony is updated 5 times a second, and
represented graphically as an ASCII symbol in a 2-dimensional
bug-world (a grid 80 columns wide by 49 rows deep, surrounded by
an impenetrable boundary). While the colony remains small most
computers are powerful enough to update the display in 'real
time', but as the colony size increases the simulation slows
down (although the elapsed time is still displayed in seconds).
In order to reduce this effect, micro-organism images are not
updated every cycle. A micro-organism is only re-drawn when it :

   a) moves
   b) changes state, e.g. begins to divide  
   c) conjugates (image re-drawn every cycle)
   

In order to achieve large populations, two or more micro-organisms 
may occupy the same position in 2-D space; however only one can be 
displayed. In consequence, as the screen becomes full, one 
micro-organism may be temporarily overdrawn by another. 


A penicillin-like antibiotic may be introduced into the colony
as a user-defined regimen. The antibiotic brings about the lysis
of bacteria during asexual division. The antibiotic is denatured
by 'penicillinase' secreted from resistant organisms. In the
absence of antibiotic, the colony will normally develop a few
'penicillinase' emitters by mutation. When antibiotic is
introduced, these micro-organisms are favoured by natural
selection, and the colony rapidly becomes resistant. In
addition, the 'penicillinase' emitter gene is spread by
conjugation. If the dose of antibiotic is sufficiently high,
then even the 'penicillinase' emitters can be destroyed.


The model makes the following assumptions:

  1. There is an unlimited food source for the micro-organisms.
  2. There is no build up of waste material that might affect the
     development of the colony.




			The detailed model 
			==================

Genes
-----

Each individual micro-organism in the colony has its own set of
four genes controlling:


1. Motility. This is the percentage likelihood of movement at
each 0.2 second update. If the gene value is 100, then the
micro-organism will move continuously. If the figure is 50, then
there is a 50% chance of movement at each update; or put another
way, out of 100 updates the micro-organism is likely to move
during 50 of them. Direction of movement is chosen randomly in
one of 8 directions (N, NE, E, SE, S, SW, W, NW). Travel is
always to an immediate neighbour of the starting point, i.e. one
'square' of the bug-world grid.

2. Lifespan. This gene determines how long a micro-organism will
survive (in the absence of antibiotic). The actual lifespan (in
seconds) is calculated at random between upper and lower
boundaries contained in the gene. A micro-organism's life
'clock' is set at the time of 'birth' following asexual
reproduction. It is also reset after conjugation.

3. Breeder. This gene determines how frequently a micro-organism
divides asexually. The time to the next division is calculated
at random between upper and lower boundaries contained in the
gene. The 'countdown' is set at the time of 'birth' following
asexual reproduction, and also after conjugation. Breeder time
must be shorter than lifespan, or micro-organisms will die
before they have the opportunity to divide.

4. Antibiotic resistance. This gene determines whether or not
the micro-organism emits a 'penicillinase'.

			  ~~~~~~~~


The user must define and name three variations for each gene
type, e.g. motility:

	'speedy'.  ........       100% movement probability
	'rambler'  ........       55% movement probability        
	'snail'    ........       2% movement probability


These represent the gene pool, from which mutated genes are
selected.



Reproduction
------------

1. Asexual division. This is a 3 stage process that is triggered
by an individual micro-organism's 'clock'. The time taken for
each stage is defined by the user.

Stage 1:  Cell dividing wall begins to form. Movement still occurs.

Stage 2:  Dividing wall formed. No movement. During this stage, 
	  antibiotic can cause rupture of the cell wall and death.

Stage 3:  Two cells about to separate. Although effectively two
	  identical new cells, one is considered the parent and the
	  other the child. Mutation of the child may occur. 


2. Mutation. One or more of the child micro-organism's genes may
be randomly selected to mutate. The new genes are selected at
random from the user-defined gene pool. The overall likelihood
of mutation is set by a global percentage probability. 


3. Conjugation. This may occur when two micro-organisms occupy
the same position on the bug world grid. Only one pair of
micro-organisms may begin conjugation per update cycle, but the
process itself may last for many cycles (Conjugation time is a
user-defined parameter). The likelihood of conjugation occurring
is governed by a global percentage probability. During
conjugation there is exchange of genetic material between the
two micro-organisms; one or more genes may be affected. The
following table considers just one gene and shows the possible
outcomes for bug A and bug B, following various exchange
strategies:

				    Resulting gene
			Bug A                           Bug B
Exchange strategy       -----                           -----
-----------------
Both A                  No change                       A               
Both B                  B                               No change       
Swap                    B                               A       
Keep                    No change                       No change



Strategies are selected at random. There are no recessive or 
dominant genes.



Antibiotic
----------

Micro-organisms can only be killed by antibiotic during stage 2
of asexual division. The concentration of antibiotic to which
the colony is exposed is measured in arbitrary units (up to
32,000). Antibiotic concentration dynamically mimics blood
plasma levels during a typical oral antibiotic regimen. The peak
level, ramp gradient, frequency of dosing and number of doses
are defined by the user. The user must also define the
antibiotic level which will kill:

   a) All normal micro-organisms
   b) All resistant micro-organisms


When antibiotic level is below this 100% kill level, only a
proportion of the micro-organisms will be destroyed. For example:

    100% kill level = 10,000 units
    Actual level    = 5,000 units

    There is a 50% chance that each micro-organism will be killed;
    i.e. 50 out of 100 micro-organisms are likely to be killed.        



An antibiotic regimen is started manually by the user during the
simulation.



Seed
----

The colony begins with a single micro-organism. The user must
define its position, and its genes before the simulation can
begin.



Analysis
--------

The program is equipped with two methods for reporting on
population and gene statistics:


1. On terminating the simulation, an instant report is given of
gene distribution and total numbers alive and dead.

2. Before starting the simulation, an output file may be
enabled. This repeatedly writes to a disk file (at a user
defined interval), a 'snapshot' of gene distribution, population
and antibiotic level. In this way, a complete picture of the
colony over a period of time may be constructed. This file may
be read into most spreadsheet or database software for further
analysis, graphical presentation etc. 



The future
----------

This is a crude simulation -  population numbers and timescale
bear little relation to a real life situation. A lot of
assumptions have been made about the behaviour of the
micro-organisms; in particular, the gene model has been designed
from a software perspective rather than a biological one! The
program is slow and the bug world is 2 dimensional. 

However, even this simple colony simulation behaves in many ways
like its biological counterpart; the formation of an
antibiotic-resistant colony can be clearly demonstrated.

Possible improvements include:

1. Better models of micro-organism behaviour
2. Better gene models
3. A 3-dimensional bug world
4. Realistic population numbers
5. Real time performance.


In order to improve speed and colony size, future programs will
need to be written in assembly language (this program is written
in MicroSoft Visual Basic for DOS). The display of bacteria
included in this version is purely for dramatic effect, and
actually slows the simulation considerably. Future versions need
only display colony statistics; the bacteria can remain
'invisible'. In time it may be possible to produce accurate
simulations that are actually useful in clinical and research
situations, although it should be noted that bacteria only form
colonies in-vitro and not in-vivo. The program could also be
used as a teaching aid to demonstrate the development of 
antibiotic resistance.




	     Installation, and running the program
	     =====================================


The program will have either been:

a) supplied on a floppy disk, or 
b) downloaded from a BBS, FTP etc.

In either case, copy file CYCILLIN.EXE into a suitable directory 
on your hard disk, change to that directory and run by typing 
CYCILLIN. In case a), the program can also be run directly from 
the floppy.


The program generally follows MS Windows conventions. Use a
mouse (or press <ALT>) to activate menu bar, and read the help
options. Set up your own models using the parameter options -
online help is available. Note that your settings are
automatically saved at program shutdown and are restored when
you next run Cybercillin; the author's default values may be
restored by selecting default from the parameter menu list.
Begin the simulation by selecting colony from the run menu list
(or just <CONTROL> R). Once the colony has established itself,
begin the antibiotic regimen by pressing <F1>. Press <ESC> to
end the simulation. Select exit from the run menu (or <CONTROL> X) 
to quit the program.  


Paul Smith BSc BPharm MRPharmS
Leigh-on-Sea, Essex, United Kingdom
1st January 1996

Internet e-mail:  ps4@student.open.ac.uk
		  paul@baspharm.demon.co.uk


 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 The author is a UK registered Pharmacist working in the hospital 
 sector. He is currently completing an Open University degree in
 artificial intelligence, information technology and electronics.
		
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
