This plugin allows storing list of all pixels belonging to a given cell. The syntax is as follows:
This plugin is also used by other plugins (e.g. Mitosis) as a helper module. Simple example can be found in Demos/PixelTrackerExample.
MomentOfInertia Plugin
This plugin updates tensor of inertia for every cell. Internally it uses parallel axis theorem to calculate most up-to-date tensor of inertia. It can be called directly:
However, most commonly it is called indirectly by other plugins like Elongation plugin.
MomentOfInertia plugin gives users access (via Python scripting) to current lengths of cell’s semiaxes. Examples in Demos/MomentOfInertia demonstrate how to get lengths of semiaxes:
axes=self.momentOfInertiaPlugin.getSemiaxes(cell)
axes is a 3-component vector with 0th element being length of minor axis, 1st – length of median axis (which is set to 0 in 2D) and 2nd element indicating the length of major semiaxis.
Important: Because calculating lengths of semiaxes involves quite a few of floating point operations it may happen (usually on hexagonal lattice) that for cells composed of 1, 2, or 3 pixels one moment the square of one of the semiaxes may end up being slightly negative leadind to NaN (not a number)length. This is due to roundoff error and whenever CC3D detects very small absolute value of square of the length of semiaxes (10-6) it sets length of this semiaxes to 0.0 regardless whether the squared value is positive or negative. However it is a good practice to test whether the length of semiaxis is sane by doing simple if (here we show how to test for a NaN)
jf length!=length:
print “length is NaN”:
else:
print “length is a proper floating point number”
SimpleClock plugin
This plugin adds an integer as a cell attribute:
ConvergentExtension plugin
Remark: This is very specialized plugin which currently is in Tier 2 plugins in terms of support. It attempts to implement energy term described in “Simulating Convergent Extension by Way of Anisotropic Differemtial Adhesion,” Zajac M, Jones GL, and Glazier JA, Journal of Theoretical Biology 222 (2), 2003. However due to certain ambiguities in the plugin description we had difficulties to getting it to work properly.
CC3D’s ConvergentExtension plugin is a somewhat simplified version of energy term described in the paper.
This plugin uses the following syntax:
0.99
0.99
2
The Alpha tag represents numerical value of parameter from the paper.
Steppable Section
Steppables are CompuCell modules that are called every Monte Carlo Step (MCS). More precisely, they are called after all the pixel copy attempts in a given MCS have been carried out. Steppables may have various functions - for example solving PDE's, checking if critical concentration threshold have been reached, updating target volume or target surface given the concentration of come growth factor, initializing cell field, writing numerical results to a file etc... In general, steppables perform all functions that need to be done every MCS. In the reminder of this section we will present steppables currently available in the CompuCell3D and describe their usage.
UniformInitializer Steppable
This steppable lays out cells on the lattice. It allows users to specify rectangular regions of field with square (or cube in 3D) cells of user defined types (or random types). Cells can be touching each other or can be separated by a gap.
The syntax of the plugin is as follows:
0
5
psm
Above we have defined a 2D rectangular box filled with 5x5 cells touching each other (Gap=0) and having type psm. Notice that if you want to initialize 2D box in xz plane as above then y_min and y_max have to be 0 and 1 respectively.
Users can include as many regions as they want. The regions can overlap each other and as expected region defined later in the code overshadows the one defined earlier. As a result cells from ‘earlier’ regions may get overwritten by cells from regions defined later in the code. Cells that are overwritten will either disappear or be truncated.
Additionally users can initialize region with random cell types chosen from provided list of cell types:
0
5
psm,ncad,ncam
When user specifies more than one cell type between tags then cells for this region will be initialized with types chosen randomly from the provided list (here the choices would be psm, ncad, ncam).
Remark: The types have to be separated with ',' and there should be no spaces)
Remark: If one of the type names is repeated inside element this type will get greater weighting means probability of assigning this type to a cell will be greater. So for example psm,ncad,ncam,ncam,ncam ncam will assigned to a cell with probability 3/5 and psm and ncad with probability 1/5.
BlobInitializer Steppable
This steppable is used to lay out circular blob of cells on the lattice. Original (and deprecated) syntax of this plugin looks as follows:
0
5
yes
40
The blob is centered in the middle of th lattice and has radius given by parameter all cells are initially squares (or cubes in 3D) - determines the length of the cube or square side and determines space between squares or cubes. tag and value yes is used to initialize cells randomly with type id being either 1 or 2. Otherwise all cells will have type id 1. This can be easily modified in Python .
The most recent syntax for this plugin gives users additional flexibility in initializing cell field using BlobFieldInitializer:
0
5
40
Condensing,NonCondensing
Similarly as for the UniformFieldInitializer users can define many regions each of which is a blob of a particular center point, radius and list of cell types that will be assigned to cells forming the blob. Listing types in the tag follows same rules as in the UniformInitializer.
Share with your friends: |