Differential Adhesion: Cell Sorting in Two Dimensions
Persistent Identifier
Use this permanent link to cite or share this Morpheus model:
Introduction
This model shows the original cellular Potts model (a.k.a. Glazier-Graner model) of cell sorting based on the Steinberg’s differential adhesion hypothesis.
Description
Two CellType
s are defined, each of which has a VolumeConstraint
specifying the cell’s target area/volume. In the CPM
element, the MetropolisKinetics
can be configured and the Interaction
energies between cell types are specified.
Results
The simulation shows two populations of spatially resolved cells that initially have organized in a mosaic fashion. Through differential adhesion, the motile cells sort out and re-organize into an distribution in which one cell type engulfes the other.
Snapshots of the simulation can be saved to files named [Title][Time].xml.gz
using the SaveInterval
component, which is by default disabled in CellSorting_2D.xml
. These files containing intermediate and result states can be opened and used as initial conditions for new simulations.
Instead of initializing cells as single points, e.g. with the InitCircle
plugin, the restored results of a previous simulation explicitely specify the Nodes
of each Cell
in the CellPopulations
.
Remember to change StartTime
and StopTime
accordingly.
Reference
F. Graner, J. A. Glazier: Simulation of biological cell sorting using a two-dimensional extended Potts model. Phys. Rev. Lett. 69 (13): 2013-2016, 1992.
Model
Examples
→ CPM
→ CellSorting_2D.xml
or
CellSorting_2D.xml
XML Preview
<MorpheusModel version="4">
<Description>
<Title>Example-CellSorting-2D</Title>
<Details>Full title: Differential Adhesion: Cell Sorting in Two Dimensions
Authors: F. Graner, J. A. Glazier
Date: 06.11.2019
Software: Morpheus (open-source). Download from https://morpheus.gitlab.io
Model ID: https://identifiers.org/morpheus/M0021
Reference: F. Graner, J. A. Glazier: Simulation of biological cell sorting using a two-dimensional extended Potts model. Phys. Rev. Lett. 69 (13): 2013-2016, 1992</Details>
</Description>
<Global>
<Variable symbol="boundary" name="Boundary length of CT1 with other cell types" value="0.0"/>
<Constant symbol="b" value="0.0"/>
<Constant symbol="b2" value="0.0"/>
</Global>
<Space>
<SpaceSymbol symbol="l"/>
<Lattice class="square">
<Size symbol="size" value="200, 200, 0"/>
<BoundaryConditions>
<Condition type="periodic" boundary="x"/>
<Condition type="periodic" boundary="y"/>
</BoundaryConditions>
<Neighborhood>
<Order>2</Order>
</Neighborhood>
</Lattice>
</Space>
<Time>
<StartTime value="0"/>
<StopTime value="2.5e4"/>
<!-- <Disabled>
<SaveInterval value="5e3"/>
</Disabled>
-->
<RandomSeed value="0"/>
<TimeSymbol symbol="time"/>
</Time>
<CellTypes>
<CellType class="biological" name="ct1">
<VolumeConstraint target="200" strength="1"/>
<NeighborhoodReporter>
<Input scaling="length" value="cell.type == celltype.ct2.id"/>
<Output symbol-ref="boundary" mapping="sum"/>
</NeighborhoodReporter>
<Property symbol="b" value="0"/>
<NeighborhoodReporter>
<Input scaling="cell" value="cell.type == celltype.ct2.id"/>
<Output symbol-ref="b" mapping="sum"/>
</NeighborhoodReporter>
<NeighborhoodReporter>
<Input scaling="length" value="cell.type == celltype.ct2.id"/>
<Output symbol-ref="b2" mapping="sum"/>
</NeighborhoodReporter>
<Property symbol="b2" name="Interface with ct2" value="0"/>
</CellType>
<CellType class="biological" name="ct2">
<VolumeConstraint target="200" strength="1"/>
<Property symbol="b" value="0"/>
<NeighborhoodReporter>
<Input scaling="cell" value="cell.type == celltype.ct1.id"/>
<Output symbol-ref="b" mapping="sum"/>
</NeighborhoodReporter>
<Property symbol="b2" name="Interface with ct1" value="0"/>
<NeighborhoodReporter>
<Input scaling="length" value="cell.type == celltype.ct1.id"/>
<Output symbol-ref="b2" mapping="sum"/>
</NeighborhoodReporter>
</CellType>
<CellType class="medium" name="medium"/>
</CellTypes>
<CPM>
<Interaction default="0.0">
<Contact type1="ct1" type2="medium" value="12"/>
<Contact type1="ct2" type2="medium" value="6"/>
<Contact type1="ct1" type2="ct1" value="6"/>
<Contact type1="ct2" type2="ct2" value="6"/>
<Contact type1="ct1" type2="ct2" value="16"/>
</Interaction>
<MonteCarloSampler stepper="edgelist">
<MCSDuration value="1"/>
<Neighborhood>
<Order>2</Order>
</Neighborhood>
<MetropolisKinetics temperature="2"/>
</MonteCarloSampler>
<ShapeSurface scaling="norm">
<Neighborhood>
<Order>6</Order>
</Neighborhood>
</ShapeSurface>
</CPM>
<CellPopulations>
<Population type="ct1" size="0">
<InitCircle number-of-cells="50" mode="random">
<Dimensions radius="size.x/3" center="size.x/2, size.y/2, 0"/>
</InitCircle>
</Population>
<Population type="ct2" size="0">
<InitCircle number-of-cells="50" mode="random">
<Dimensions radius="size.x/3" center="size.x/2, size.y/2, 0"/>
</InitCircle>
</Population>
</CellPopulations>
<Analysis>
<Gnuplotter time-step="100" decorate="false">
<Terminal name="png"/>
<Plot>
<Cells flooding="true" value="cell.type"/>
</Plot>
<Plot>
<Cells flooding="true" value="b">
<ColorMap>
<Color value="2" color="red"/>
<Color value="1" color="yellow"/>
<Color value="0" color="white"/>
</ColorMap>
</Cells>
<CellLabels fontsize="10" precision="0" value="b"/>
</Plot>
<Plot>
<Cells per-frame-range="true" value="b2">
<ColorMap>
<Color value="2" color="red"/>
<Color value="1" color="yellow"/>
<Color value="0" color="white"/>
</ColorMap>
</Cells>
<CellLabels fontsize="10" precision="0" value="b2"/>
</Plot>
</Gnuplotter>
<Logger time-step="10.0">
<Input>
<Symbol symbol-ref="boundary"/>
<Symbol symbol-ref="b"/>
<Symbol symbol-ref="b2"/>
</Input>
<Output>
<TextOutput/>
</Output>
<Plots>
<Plot time-step="500">
<Style style="linespoints"/>
<Terminal terminal="png"/>
<X-axis>
<Symbol symbol-ref="time"/>
</X-axis>
<Y-axis>
<Symbol symbol-ref="boundary"/>
</Y-axis>
</Plot>
</Plots>
</Logger>
<ModelGraph format="dot" reduced="false" include-tags="#untagged"/>
</Analysis>
</MorpheusModel>
Downloads
Files associated with this model: