Title: CompuCell3D: A Morphogenesis simulation package
1CompuCell3D A Morphogenesis simulation package
- Nan Chen and Mark Alber
- 2/20/2006
2Topics
- Introduction to CompuCell3D
- Cellular Potts Model
- Framework of CompuCell3D
- Usage of CompuCell3D
- Future Plans
3Introduction to CompuCell3D
4CompuCell3D overview
- Morphogenesis simulation package based on
Cellular Potts Model (CPM) - Capable of modeling cell clustering as well as
growth, division, death, intracellular adhesion,
and volume and surface area constraints - Partial differential equation models for external
chemical fields which can model
reaction-diffusion - Cell type automata provides a method for
categorizing cells by behavior into types and
algorithms for changing cell type - Chemotaxis and haptotaxis
5CompuCell3D overview
- Framework design allow scientists to focus on
simulation development - Visualization tool (CompCell Player)
- Standard input (XML) make the package easy to
use - Minimize the amount of coding required
- Flexible simulation framework
- Software design Pattern and Plug in feature
- Easy to extend and add new features
6CompuCell3D Applications
- Cell sorting
- Limb bud growth
- Amoeba migration
- Dictyostelium discoideum
- Somites formation
7Cell Sorting
8Limb bud growth
9Cellular Potts Model
10Cellular Potts Model
Cell structure is discretized into a cell map,
each number in the above cell map corresponds to
one cell.
11Cellular Potts Model
- System Hamiltonian consists of adhesion energy,
volume energy and chemical energy - Transition probability, W, is determined by the
change of free energy due to orientation
alteration. DG, according to above equation.
12Cellular Potts Model
- Energy minimization formalism
- extended by Graner and Glazier, 1992
- DAH Contact energy depending on cell types
(differentiated cells) - Extensions
- J_cell_cell is type dependent
- Other terms Cell volume, Chemotaxis/Haptotaxis
- Metropolis algorithm probability of
configuration change
13Framework of CompuCell3D
14Information flow chart for CompuCell3D
CompuCellPlayer
XML input
User
CompuCell3D Kernal
15CompuCellPlayer
- Visualization tool
- Using QT Lib
- 3D Visualization
- 2D Cross-section
- Zooming, rotating, translating
- Picture Generation
- pause a simulation
16CompuCell3D - XML input
ltPottsgt ltDimensions x51" y51" z"21"/gt
ltStepsgt10lt/Stepsgt ltTemperaturegt2lt/Temperaturegt
ltFlip2DimRatiogt1lt/Flip2DimRatiogt lt/Pottsgt
Potts Model Defination
ltPlugin Name"Volume"gt ltTargetVolumegt64lt/Targe
tVolumegt ltLambdaVolumegt0.05lt/LambdaVolumegt
lt/Plugingt
Volume volume volumeEnergy(cell)
ltPlugin Name"Surface"gt ltTargetSurfacegt77lt/Tar
getSurfacegt ltLambdaSurfacegt0.05lt/LambdaSurfacegt
lt/Plugingt
Surface area surfaceEnergy(cell)
ltPlugin Name"Contact"gt ltEnergy
Type1"Medium" Type2"Medium"gt0lt/Energygt
ltEnergy Type1"Light" Type2"Medium"gt0lt/Energygt
ltEnergy Type1"Dark" Type2"Medium"gt0.1lt/Energygt
ltEnergy Type1"Light" Type2"Light"gt0.5lt/Energy
gt ltEnergy Type1"Dark" Type2"Dark"gt3.0lt/Energy
gt ltEnergy Type1"Light" Type2"Dark"gt0.5lt/Energ
ygt lt/Plugingt
Contact contactEnergy( cell1, cell2)
17CompuCell3D Structure
Steppables are executed once per Monte Carlo step
and once before and after the main loop. They
are the main hooks for initialization and
rendering.
Plugins are loaded at runtime. They are the main
way of adding new features to CompuCell. They
can be Steppables, Steppers, CellChangeWatchers,
or Automatons.
CellChangeWatchers are executed once per each
successful spin flip. They are useful for
adjusting values that depend on the number of
lattice points in a cell.
Automatons enable cell state to change their
state as the simulation evolves.
Steppers are executed once per spin flip attempt.
They are the main hooks for energy functions.
18Quickstart Guide of CompuCell3D
19Installation
- For testing purpose, you could directly install
binary package - Easy to install
- For development purpose, you could download
source code and compile it - Your computer needs to have automake,
autoconfigure, autohead, libtool package - You could find this package from simtk.org
20Your first example-Foam simulation
Mcs 0
Mcs 50
Mcs 100
21Your first example
ltCompuCell3Dgt ltPottsgt ltDimensions
x"101" y"101" z"1"/gt ltAnnealgt0lt/Annealgt
ltStepsgt100lt/Stepsgt ltTemperaturegt5lt/Temp
eraturegt ltFlip2DimRatiogt1lt/Flip2DimRatiogt
ltBoundary_ygtPeriodiclt/Boundary_ygt
ltBoundary_xgtPeriodiclt/Boundary_xgt
ltFlipNeighborMaxDistancegt1.75lt/FlipNeighborMaxDist
ancegt lt/Pottsgt ltPlugin
Name"CellType"gt ltCellType
TypeName"Medium" TypeId"0"/gt
ltCellType TypeName"Foam" TypeId"1"/gt
lt/Plugingt ltPlugin Name"Contact"gt
ltEnergy Type1"Foam" Type2"Foam"gt20lt/Energygt
ltEnergy Type1"Medium" Type2"Medium"gt100lt/E
nergygt ltEnergy Type1"Medium"
Type2"Foam"gt100lt/Energygt
ltDepthgt1.5lt/Depthgt lt/Plugingt
ltSteppable Type"PIFInitializer"gt
ltPIFNamegtFoam_1.piflt/PIFNamegt lt/Steppablegt
lt/CompuCell3Dgt
1
2
3
4
22Setting for Potts Model
ltPottsgt ltDimensions x"101" y"101"
z"1"/gt ltAnnealgt0lt/Annealgt
ltStepsgt100lt/Stepsgt ltTemperaturegt5lt/Temperatu
regt ltFlip2DimRatiogt1lt/Flip2DimRatiogt
ltBoundary_ygtPeriodiclt/Boundary_ygt
ltBoundary_xgtPeriodiclt/Boundary_xgt
ltFlipNeighborMaxDistancegt1.75lt/FlipNeighborMaxDist
ancegt lt/Pottsgt
23Setting for Cell type and Contact energy
ltPlugin Name"CellType"gt ltCellType
TypeName"Medium" TypeId"0"/gt
ltCellType TypeName"Foam" TypeId"1"/gt
lt/Plugingt ltPlugin Name"Contact"gt
ltEnergy Type1"Foam" Type2"Foam"gt20lt/Energygt
ltEnergy Type1"Medium" Type2"Medium"gt100lt/E
nergygt ltEnergy Type1"Medium"
Type2"Foam"gt100lt/Energygt
ltDepthgt1.5lt/Depthgt lt/Plugingt
24PIF File
ltSteppable Type"PIFInitializer"gt
ltPIFNamegtFoam_1.piflt/PIFNamegt lt/Steppablegt
1 Foam 1 5 1 5 0 0 2 Foam 1 5 6 10 0 0 3 Foam 1 5
11 15 0 0 4 Foam 1 5 16 20 0 0 5 Foam 1 5 21 25 0
0 6 Foam 1 5 26 30 0 0 7 Foam 1 5 31 35 0 0 8
Foam 1 5 36 40 0 0 9 Foam 1 5 41 45 0 0
25PIF Generator
./FoamInit.pl -r5 -i60 -ofoaminit1.pif -z2
-m10 Lattice dimension x_max301 y_max301
z_max1
ltDimensions x"301" y"301" z"1"/gt
26Change temperature
5
500
ltPottsgt ltDimensions x"101" y"101"
z"1"/gt ltAnnealgt0lt/Annealgt
ltStepsgt1000lt/Stepsgt ltTemperaturegt500lt/Temper
aturegt ltFlip2DimRatiogt1lt/Flip2DimRatiogt
ltBoundary_ygtPeriodiclt/Boundary_ygt
27Change Contact energy
Mcs 100
Mcs 50
Mcs 0
ltPlugin Name"Contact"gt ltEnergy
Type1"Foam" Type2"Foam"gt200lt/Energygt
ltEnergy Type1"Medium" Type2"Medium"gt1lt/Energygt
ltEnergy Type1"Medium" Type2"Foam"gt1lt/Energ
ygt ltDepthgt1.5lt/Depthgt
lt/Plugingt
28Order of Neighbor
ltPottsgt ltDimensions x"101" y"101"
z"1"/gt ltAnnealgt0lt/Annealgt
ltStepsgt100lt/Stepsgt ltTemperaturegt5lt/Temperatu
regt ltFlip2DimRatiogt1lt/Flip2DimRatiogt
ltBoundary_ygtPeriodiclt/Boundary_ygt
ltBoundary_xgtPeriodiclt/Boundary_xgt
ltFlipNeighborMaxDistancegt1.75lt/FlipNeighborMaxDist
ancegt lt/Pottsgt ltPlugin
Name"Contact"gt ltEnergy Type1"Foam"
Type2"Foam"gt20lt/Energygt ltEnergy
Type1"Medium" Type2"Medium"gt100lt/Energygt
ltEnergy Type1"Medium" Type2"Foam"gt100lt/Energygt
ltDepthgt1.5lt/Depthgt
lt/Plugingt
29Order of Neighbor
1.5
2.7
1.1
ltPlugin Name"Contact"gt ltEnergy
Type1"Foam" Type2"Foam"gt20lt/Energygt
ltEnergy Type1"Medium" Type2"Medium"gt200lt/Energygt
ltEnergy Type1"Medium" Type2"Foam"gt200lt/E
nergygt
ltDepthgt1.1lt/Depthgt lt/Plugingt
30Temperature effect on Low Order of Neighbor
ltDepthgt1.1lt/Depthgt
Temperature 5
Temperature 20
ltPottsgt ltDimensions x"101" y"101"
z"1"/gt ltAnnealgt0lt/Annealgt
ltStepsgt100lt/Stepsgt ltTemperaturegt5lt/Temperatu
regt ltFlip2DimRatiogt1lt/Flip2DimRatiogt
ltBoundary_ygtPeriodiclt/Boundary_ygt
ltBoundary_xgtPeriodiclt/Boundary_xgt
ltFlipNeighborMaxDistancegt1.1lt/FlipNeighborMaxDista
ncegt lt/Pottsgt
31Cell Sorting
Initial
32XML file for Cell Sorting
ltCompuCell3Dgt ltPottsgt ltDimensions x"70"
y"70" z"1"/gt ltAnnealgt10lt/Annealgt
ltStepsgt10000lt/Stepsgt ltTemperaturegt5lt/Temperatur
egt ltFlip2DimRatiogt1lt/Flip2DimRatiogt
ltFlipNeighborMaxDistancegt1.75lt/FlipNeighborMaxDist
ancegt lt/Pottsgt ltPlugin Name"Volume"gt
ltTargetVolumegt9lt/TargetVolumegt
ltLambdaVolumegt3.0lt/LambdaVolumegt lt/Plugingt
ltPlugin Name"Surface"gt ltTargetSurfacegt16lt/Targ
etSurfacegt ltLambdaSurfacegt0.5lt/LambdaSurfacegt
lt/Plugingt ltPlugin Name"CellType"gt ltCellType
TypeName"Medium" TypeId"0"/gt ltCellType
TypeName"Condensing" TypeId"1"/gt ltCellType
TypeName"NonCondensing" TypeId"2"/gt lt/Plugingt
ltPlugin Name"Contact"gt ltEnergy Type1"Medium"
Type2"Medium"gt0lt/Energygt ltEnergy
Type1"NonCondensing" Type2"NonCondensing"gt14lt/En
ergygt ltEnergy Type1"Condensing"
Type2"Condensing"gt2lt/Energygt ltEnergy
Type1"NonCondensing" Type2"Condensing"gt11lt/Energ
ygt ltEnergy Type1"NonCondensing"
Type2"Medium"gt16lt/Energygt ltEnergy
Type1"Condensing" Type2"Medium"gt16lt/Energygt
ltDepthgt1.75lt/Depthgt lt/Plugingt ltPlugin
Name"CenterOfMass"/gt ltSteppable
Type"OutputData"/gt ltSteppable
Type"BlobInitializer"gt ltGapgt0lt/Gapgt
ltWidthgt2lt/Widthgt ltCellSortInitgtyeslt/CellSortIni
tgt ltRadiusgt20-lt/Radiusgt lt/Steppablegt lt/Comp
uCell3Dgt
1
2
3
4
33Energy setting
ltPlugin Name"Volume"gt ltTargetVolumegt9lt/TargetV
olumegt ltLambdaVolumegt3.0lt/LambdaVolumegt
lt/Plugingt ltPlugin Name"Surface"gt
ltTargetSurfacegt16lt/TargetSurfacegt
ltLambdaSurfacegt0.5lt/LambdaSurfacegt
lt/Plugingt ltPlugin Name"CellType"gt ltCellType
TypeName"Medium" TypeId"0"/gt ltCellType
TypeName"Condensing" TypeId"1"/gt ltCellType
TypeName"NonCondensing" TypeId"2"/gt lt/Plugingt
ltPlugin Name"Contact"gt ltEnergy Type1"Medium"
Type2"Medium"gt0lt/Energygt ltEnergy
Type1"NonCondensing" Type2"NonCondensing"gt14lt/En
ergygt ltEnergy Type1"Condensing"
Type2"Condensing"gt2lt/Energygt ltEnergy
Type1"NonCondensing" Type2"Condensing"gt11lt/Energ
ygt ltEnergy Type1"NonCondensing"
Type2"Medium"gt16lt/Energygt ltEnergy
Type1"Condensing" Type2"Medium"gt16lt/Energygt
ltDepthgt1.75lt/Depthgt lt/Plugingt
34Initial structure setting
ltSteppable Type"BlobInitializer"gt
ltGapgt0lt/Gapgt ltWidthgt2lt/Widthgt
ltCellSortInitgtyeslt/CellSortInitgt
ltRadiusgt20-lt/Radiusgt lt/Steppablegt
35Future Plans
- We want to hear from you
- Shell language interface
- As matlab, FemLab
- Parallelizing