Description of cell model (1)
Description of cell model (1)
Ken Webb, 1999
I am a software developer, currently focused professionally on real-time telecommunications. As a personal project, using standard real-time development technologies, I am producing sophisticated biological simulations. This work includes interfaces for external software that may want to present aspects of the simulation to human users as 2D and 3D graphics. One possible use of this simulation engine is as an tool for teaching biology.
I develop software for a local company called ObjecTime Limited. ObjecTime has partnered with a much larger American company, Rational Software, to produce a product called Rational Rose RealTime (RRT). RRT is used by software developers at many of the world's largest telecommunications companies, to visually model and develop products such as cell phones, photocopiers and large digital telephone/internet switches. My main role at ObjecTime is developing sample models.
Over the past year I have been working on a much larger simulation model, as a personal project and challenge. This is an RRT/C++ simulation of a biological cell, and various larger biological systems that contain cells. My thinking was that biological entities are even more complex than the most complex digital devices being manufactured today, and that this would be an excellent learning exercise for me. I've been able to borrow many architectural concepts used within hi-tech companies such as Nortel Networks, where I worked for three years on a large project that involved 300 software and hardware developers. Part of my role there was making the overall architecture of this highly complex system more visible to the entire development team using innovative graphics.
My biological system has become quite large, and now includes some 400 classes from the cell and biology domain. Depending on how it's configured, it includes up to 100,000 or more objects at run-time. The core simulation engine includes the logical structure and behavior of the various biological classes, but does not include any direct end-user graphics.
Over the past few months I have been adding support for 2D, 3D and statistical observation of the simulation as it runs. This includes having an observer of the simulation continuously generate 3D (VRML for now) instructions which it passes to a VRML browser for display. As the C++ executable changes, so does the 3D output. At the same time as the scene is changing, the human observer can rotate and navigate through it, and interactively query the simulation for details about itself.
I'll provide a few more details about the content of the simulation. If the entire RRT/C++ model is compiled, it currently includes the following components all of which interact continuously as the model executes:
- A simple ecology with one plant and a human being.
- A sun to provide solar energy to the plant, and to make the plant visible to the human being.
- A nervous system that in the simulation allows the human to see the plant and to inform the muscles in the mouth. It includes some 300 neurons with connecting synapses.
- A digestive system that allows the human to digest what the mouth provides and pass the digested small molecules to the blood.
- A circulatory system with a heart that continuously pumps some 200 red blood cells through a network of veins, arteries and capillaries. It exchanges sugars, oxygen and carbon dioxide with mucosal cells, neurons, and the lung.
- A respiratory system that exchanges oxygen and carbon dioxide between the external atmosphere and internal capillaries.
- Constant interaction between enzymes/proteins and the small molecules they act on, using standard Michaelis-Menten and other kinetic equations. This includes the Glycolytic Pathway, the TCA cycle, and the movement of small molecules across membranes such as between the cytosol and the compartments of mitochondria. In the complete simulation, small sugar molecules originate in the lettuce plant, are eaten and passed to the blood and eventually find their way into the nerve cells.
- An external gene database specifies the attributes of genes in each cell's chromosomes. Enzymes within each cell are configured by messenger RNA and ribosomes, using the attributes contained in the genes. Thus the behavior (such as which small molecules they act on) of enzymes in the simulation can be changed, or new enzymes can be added, by editing the gene database.
The much smaller version of the C++ executable that I generate as a prototype for working with graphical 2D/3D visualization, contains just two cells. Using RRT is somewhat like clicking together lego blocks, so it's very easy to generate and compile any combination of model elements, anything between the complete simulation described above, and something much simpler that demonstrates some very specific topic. From a single RRT model, it's possible to generate an unlimited number of different run-time configurations/executables.
The system I'm building has the following properties that make for a very flexible, engaging experience for users, and would provide lots of opportunity to demonstrate educational concepts:
- can compile any number of different executables from the model,
- can configure things through the gene database and through other configuration options,
- can attach numerous different observers to the model, allowing many different 2D, 3D or statistical observations of the same objects in the RRT/C++ executable, without having to change the core model,
- can navigate anywhere within the resulting VRML or other 3D display.
The use of RRT allows a large number of objects to concurrently execute and continuously interact, and is an essential part of producing such a large model. This high level of concurrency is a major requirement of telecommunication customers who purchase RRT. Biological and other real-world systems are by their nature highly concurrent, and need to be able to react to new events in real-time.
As an initial prototype for exploring graphic interfaces, I am using Netscape, Java and a VRML browser, to observe the model through a TCP-IP socket connection, with everything running on a Windows NT platform. Other configurations are possible, including use of OpenGL or Direct3D to render the graphics directly to the display, or a proprietary interface. Everything could run on one computer, or it could be web based.
3D graphics technology is maturing rapidly, and I think this is the right time to get into this area. My goal is to combine the best of today's engaging 3D graphics and sound as demonstrated by state-of-the-art 3D games, with the best real-time behavioral modeling and development tool, to produce exciting biological and other simulations.