LimSim 1.0

An example of lateral inhibition in the eye of the horseshoe crab
What is this, you ask?

Well, it's not Conway's Game of Life. It's not a combinatorial optimization problem; heck, it's not even a simple feed forward neural network. What it is is a demonstration of lateral inhibition.

Lateral inhibition is an effect found in many complicated eyes and serves to enhance contrast of objects in the visual field before any other processing is done. The effect usually occurs in a layer of cells that recieves the visual signals immediately after the light has entered the eye. This particular simulation is based on the well studied eye of the Limulus Polyphemus, or horseshoe crab, and is modeled after the Pascal code found in James Anderson's "An Introduction to Neural Networks," an excellent text for any wishing to learn what neural networks are and how they work.

A similar but more complicated form of lateral inhibition is found in the human eye -- a form known as "center-surround." While the form of LI implemented in this simulation has every cell inhibiting both itself and the cells around it, center-surround may have a cell inhibit or promote the cells around it depending on their distance. (The name comes from the fact that a central cell is affected in a specific way by the cells that surround it.)

Development: This applet started from C code implementing a 1D model of LI done as an assignment for a Computational Neuroscience course I took at UW-Madison. I extended it from 1D to 2D as part of my senior project (using it to measure the effects of LI on pattern recognition in a NN), and after I'd graduated I created a simple java applet that read in an array of values and displayed it in 4 shade grayscale; the array was drawn from data already processed as part of my senior project.

It had always been my intent to move the processing code over to the java applet and give the applet the power to do more than simply display pre- processed data -- and that is what you find here. I've taken the kludgy C (and original Pascal) interface and given it a Java GUI; I've also abstracted out a concept or two that may allow others to use my class files for their own purposes.

Note that this will be the only version of this applet to use the AWT GUI classes; I prefer the new JFC ("Swing") classes to AWT, and will make all future improvements using JFC. AWT was chosen because as of October 1998 no browsers could support JFC and in fact Netscape only recently fully supported AWT. The JFC version(s) of these classes will probably not support use as an applet and will assume the user has JRE with JFC installed, facilitating a much cleaner user interface.

Cheers,
Jim Lesko
Jan 1999


Back