home last next
Hexatron presents:
Bacterial Navigation
You need Java to for this.


This applet simulates a model of how swimming bacteria follow a chemical gradient to find food.

RunAnimate the germs
StepSingle-step the germs
RestartPut the germs at random locations
Faster,SlowerThere are four speeds
You can set the total number of germs. They do not reproduce or die.
Click the mouse to add more food.

A bacterium has several problems to overcome when trying to find food:

Because a bacterium is so small, it can detect a gradient only by moving, and comparing the chemical concentration where it is now to the concentration where it was recently. If the 'now' concentration is greater, it is moving in a good direction; otherwise it is not.

The bacterium swims by spinning its screw-shaped flagellum. It can also spin the flagellum in the direction opposite the screw. This causes the bacterium to spin and tumble, but not move much. These two actions provide the bacterium's response:

This works surprising well, as the simulation demonstrates.

In the simulation, at each time-step, each germ compares the concentration where it is with the concentration at the last time-step.

The concentration from each food source (yellow dot) is the source's value divided by the distance to the germ, squared. The value decreases when a germ is near it ('eats'). When the value is zero, the source disappears and, if there are fewer then two sources left, a new source is created. Adding the concentrations from all the food sources gives the concentration each germ sees.

The mechanisms used by real bacteria are considerably more complex than the one shown here. A search for 'bacterial navigation' will turn up lots of information. Here are two URLs that worked when this page was created:
Sensing: Bacterial Navigation & Applications To Marine Sensing
Neural Networks in Bacteria
©2005 Hexatron -- All Rights Reserved