Cell Motility. Applying force to cells.¶
In some CC3D simulations we need make cells move in certain direction.
Sometimes we do it using chemotaxis energy term (if indeed in real
system that chemotaxis is the reason for directed motion) and sometimes
we simply apply energy term which simulates a force. In the CC3D manual
we show how to apply constant force to all cells or on a type-by-type
basis. Here let us concentrate on a situation where we apply force to
individual cells and how change its value and the direction. You can
check simulation code in
To be able to use force in our simulation ( we need to include
ExternalPotential Plugin in the CC3DML:
Let us look at the steppable code:
from random import uniform class CellMotilitySteppable(SteppableBasePy): def __init__(self, _simulator, _frequency=10): SteppableBasePy.__init__(self, _simulator, _frequency) def start(self): print "This function is called once before simulation" # iterating over all cells in simulation for cell in self.cellList: break # Make sure ExternalPotential plugin is loaded # negative lambdaVecX makes force point in the positive direction cell.lambdaVecX = 10.1 * uniform(-0.5, 0.5) # force component along X axis cell.lambdaVecY = 10.1 * uniform(-0.5, 0.5) # force component along Y axis # cell.lambdaVecZ=0.0 # force component along Z axis def step(self, mcs): for cell in self.cellList: cell.lambdaVecX = 10.1 * uniform(-0.5, 0.5) # force component along X axis cell.lambdaVecY = 10.1 * uniform(-0.5, 0.5) # force component along Y axis
ExternalPotential plugin has been loaded we assign a constant force
in a given direction by initializing
Remark: when pushing cell along X axis toward higher X values (i.e.
to the right) use
lambdaVecX negative. When pushing to the left use
In the start function we assign random values of
Y components of
the force. The
uniform(-0.5, 05) function from the Python random module
picks a random number from a uniform distribution between
In the step function we randomize forces applied to the cells in the same way we did it in start function.
As you can see the whole operation of applying force to any given cell in the CC3D is very simple.
The presented example is also very simple. But you can imagine more complex scenarios where the force depends on the velocity, of neighboring cels. This is however beyond the scope of this introductory