Simulator
SimCell’s
simulation viewer is essentially a computer movie generator. It
simply displays the 2D mesoscale dynamics of the model as calculated
using SimCell’s DCA algorithm. For the most part a DCA simulation looks
like a series of multicolored objects moving randomly about, with some
disappearing and appearing. The simulation viewer can also display
multi-color line graphs of molecular species as their quantities change
over time. Information on quantities, spatial positions, state and
time can also be saved as a flat file for more detailed analysis at a
later time. The simulation viewer, also allows a simulation to be
stopped and rerun at any given time. Alternately, a simulation may
be stopped, the starting model edited (with the model rendering tool),
and then a completely new simulation launched. For very large and
complex simulations, the graphical rendering option may be turned off to
accelerate the overall computational speed. Because each model
generated by SimCell’s model rendering tool has a unique random number
associated with it, every time the model is run the same “movie” will be
regenerated. In other words, all simulations can be replayed at
any time, on any computer without any loss of information. The use
of a random number seed avoids the need to store great quantities of
positional and temporal data for every simulation.
The
dynamics seen in SimCell’s simulation viewer are generated through
global movement cycles calculated by a DCA algorithm. Each
movement cycle involves up to 8 steps or checks on that are performed on
every molecule in the system. These include: a creation/decay
state check, the assignment of random direction vector, a mobility
check, a boundary check, a collision check, a movement step, a
neighborhood check, and finally a neighbor interaction step.
During the creation/decay check, each molecule or class of molecules is
queried to see if it has been assigned a non-zero creation or decay
rate. Those molecules having non-zero rates are then either added,
disassociated or removed in a stochastic manner (+/- 10% error) relative
to their assigned rates. Specifically each molecule is given a
probability of elimination (if it is a monomer) or dissociation (if it
is a complex) based on the total number of molecules and associated
rates for that class of molecules. If the assigned probability
exceeds a predetermined threshold, the molecule is either eliminated or
disassociated. In the disassociation process 2 daughter molecules
are created from the parent molecule, with one staying in the parent
square and the other being placed at least 1 (unoccupied) square away.
If the user has designated a creation rate for a particular group of
molecules, molecules are added to unoccupied squares using the location
and distribution rules initially assigned to that class of molecules.
More specifically, unoccupied squares in the simulation grid are
assigned molecular creation probabilities based on the product of the
user-designated creation rates (probabilities) and user-assigned spatial
distributions. If the creation probability for a particular square for a
particular class of molecules exceeds a predetermined threshold, a
molecule belonging to that class is added to that square.
After the
creation/decay calculations have been performed, individual molecular
motion vectors are then assigned. Specifically, each mobile
molecule (protein/RNA, membrane protein, small molecule) in the lattice
is given a random number between 1 and 9. Numbers 1-8 designate
movement to adjacent squares (N, S, E, W, NE, SE, NW and SW), while 9
means that the molecule remains in that square. After the
direction vectors have been assigned, a mobility check is run to deal
with any membrane proteins in the system. The mobility checker
determines whether the assigned movement vector will still keep the
protein inside the membrane. If not, the motion is disallowed and
the protein stays put. After the mobility check is run, a boundary
check is performed. In the boundary check, molecules are
tested to see if they lie at the outer boundaries of the simulation
grid. SimCell uses periodic boundary conditions so that those
molecules designated to move beyond a grid boundary will always appear
back within the simulation frame, but on the opposite side of the grid.
During the boundary check, all mobile molecules at a given boundary are
assigned information about the state and location of proximal molecules
on the opposite boundary to where their direction vector is to take
them.
After the
boundary check is completed, a collision detection step is performed on
all mobile molecules except small molecules and membrane proteins.
The collision detector checks to see if the given molecule’s randomly
chosen direction vector will send it to a square currently occupied by
another molecule or another non-mobile entity such as a membrane or a
DNA molecule. If the properties assigned to that molecule allow it
to co-occupy the chosen space (such as a small molecule or membrane
protein) the movement is allowed. If the properties assigned to
that molecule do not allow it to co-occupy that space, then the move is
disallowed (the direction vector is reassigned to 9) and the molecule
remains stationary. After collision detection has been done on all
relevant molecules, the movement step is finally performed. In the
movement step, all molecules that can be moved are moved according to
their assigned velocities (max. 5 nm/ms), movement rules and directions.
Molecules that have assigned velocities below 5 nm/ms are given a
probability of moving corresponding to their fractional maximum speed.
Once all
the molecules on the grid have been moved, a neighborhood checking
algorithm is run. During the neighborhood checking step each
molecule is queried to see if it is in contact with another molecule or
entity with which it may interact. Using the model’s interaction
matrix and the assigned interaction rules, interaction operations are
performed on that central molecule. To simplify calculations, all
neighbor checks are performed in a clockwise manner about the molecule
of interest. The interaction steps in SimCell are considered to be
“instantaneous” and occur only after all molecules have completed their
regular move steps. If interactions have defined off/on rates or
probabilities, random numbers are generated to determine if the
interaction (binding, catalysis) is allowed to take place. If no
rates or probabilities are provided, the program assumes these
interactions occur with 100% probability. It is important to note
that many interaction steps require relatively different molecular
movements or grid manipulations. For instance, if two molecules
are allowed to bind to each other to create a third molecule, the
exterior (small) molecule is merged into the central (protein) molecule
and the new central molecule is assigned the properties of the third
molecule. If the two binding molecules are proteins, the same
merging process is performed. This molecular merging simplifies
the movement calculations as the program does not have to track or
render large protein complexes consisting of multiple squares.
In the
case of degradation or proteolysis, the surrounding molecule or
molecules are eliminated, while the central molecule remains unchanged.
For enzymatic reactions, the surrounding molecules are transformed from
substrate to products or vice versa – depending on the local
substrate/product abundance and pre-assigned conversion probabilities or
rate constants. For transport interactions, the adjacent molecule
or molecules are moved “instantaneously” across the membrane to the
nearest free square on the opposite side of the membrane. To model
DNA binding or transcriptional activation/repression, the binding
molecule remains stationary and attached to the DNA binding site for as
long as the on/off rates require. When the bound protein is
released from the DNA, it is moved to the nearest free, non-adjacent
square.
It is
only after all allowed interactions on all grid molecules have been
performed that the next movement cycle in the simulation may be
started. Note that in SimCell, the movement and interaction steps
for individual molecules or components are calculated over the grid using a left
to right, top-down scanning protocol. This iterative movement and
state-updating process is repeated until the simulation is terminated – either
interactively by the user or by specific limits placed on the program.
When SimCell is run on a moderately fast desk-top computer (1
GHz processor) with 256 MB of memory, the typical update or movement
cycle for an averaged sized model (300 molecular entities, 10,000
squares) takes approximately 0.1 CPU seconds. Since each cycle
typically corresponds to 1 millisecond of “real” time inside the cell,
this means that the DCA method allows simulations to be run with a
fractional slow-down of just 100. Additional temporal or spatial
abstractions can sometimes allow DCA simulations to be run in real time
(no slow-down). Compared to standard molecular or Brownian dynamics
calculations where fractional slow-downs of 1013 are typical
[Karplus and McCammon, 2002; Shen and Freed, 2002], the DCA approach
clearly provides a very significant speed-up.

This allows the User to Hide or Show the Simulation Graphics as the Simulator
is running
This allows the User to adjust the speed of the
Simulation
This button starts/resumes the Simulation process
This button brings up the Screenshot Window
This button pauses the Simulation process
This button quits the Simulation process
This button brings up the Graph Window
This button allows the user to highlight portions of the
Simulation cell