Persistent Identifier

Use this permanent link to cite or share this Morpheus model:


This example shows self-organized collective motion of cells as a result of persistence (‘cellular inertia’). A similar model has recently been used by Czirók et al. (2013).

Persistence of individual cells causes self-organized collective motion.
Persistence of individual cells causes self-organized collective motion.


The model uses the Persistence plugin that causes cells to prefer to move in their current direction. The direction is stored in a PropertyVector that is used to plot the color and arrows in Gnuplotter.

The model is simulated in a circular domain with constant boundary conditions, which can be set up in Lattice/Domain/Circle. The value for the constant boundary is specified in CPM/BoundaryValue.

Things to try

  • Place static obstacles on the lattice and observe the flow pattern around the obstacle(s). The model included in the Morpheus-GUI has a corresponding CellType obstacle defined and already initializes a rectangular obstacle. To obtain the symmetric circular flow pattern in the video above, simply disable the initialization of the obstacle under CellPopulations.
  • Change the boundary conditions from circular$\ = \ $constant to $x/y = \ $periodic and observe the resulting collective motion.
  • Change the decay-time of Persistence (specifying the ‘memory’).


A. Czirók, K. Varga, E. Méhes, A. Szabó: Collective cell streams in epithelial monolayers depend on cell adhesion. New J. Phys. 15 (7): 075006, 2013.


Get this model via:

  • Morpheus-Link or
  • Morpheus GUI: ExamplesCPMPersistence_2D.xml or
  •  Download: Persistence_2D.xml
  • XML Preview

    <MorpheusModel version="3">
            <VariableVector symbol="d" value="0.0, 0.0, 0.0" name="Moving direction"/>
            <Constant symbol="density" value="0.012"/>
            <Lattice class="square">
                <Size symbol="size" value="200, 200, 0"/>
                <Domain boundary-type="constant">
                    <Circle diameter="200"/>
            <SpaceSymbol symbol="space"/>
            <TimeSymbol symbol="time"/>
            <StartTime value="0"/>
            <StopTime value="5000"/>
            <RandomSeed value="4"/>
            <CellType class="biological" name="obstacle">
            <CellType class="biological" name="ct1">
                <PropertyVector symbol="d" value="0.0, 0.0, 0.0" name="Moving direction"/>
                <Property symbol="s" value="5"/>
                <VolumeConstraint target="100" strength="1"/>
                <SurfaceConstraint target="0.9" mode="aspherity" strength="1"/>
                <PersistentMotion protrusion="true" decay-time="50" strength="s"/>
                <MotilityReporter time-step="50">
                    <Velocity symbol-ref="d"/>
            <CellType class="medium" name="medium"/>
                <Contact type1="ct1" type2="medium" value="16"/>
                <Contact type1="ct1" type2="ct1" value="1"/>
            <MonteCarloSampler stepper="edgelist">
                <MCSDuration value="1"/>
                <MetropolisKinetics temperature="10"/>
            <ShapeSurface scaling="norm">
            <Population size="1" type="obstacle">
                <InitCellObjects mode="distance">
                    <Arrangement repetitions="1, 1, 1" displacements="1, 1, 1">
                        <Box size="20,30,0" origin="130,100,0"/>
            <Population size="0" type="ct1">
                <InitCircle mode="regular" number-of-cells="400">
                    <Dimensions radius="100" center="100, 100, 0"/>
            <Gnuplotter time-step="100">
                <Terminal size="1000 600 0" name="png"/>
                    <Cells value=""/>
                    <!--    <Disabled>
            <CellArrows style="1" orientation="3 * d / d.abs"/>
                    <Cells value="d.phi" min="0.0" max="6.28">
                            <Color value="6.28" color="red"/>
                            <Color value="3.14" color="blue"/>
                            <Color value="0.0" color="red"/>
                    <CellArrows style="1" orientation="3 * d / d.abs"/>
            <Logger time-step="10">
                    <Symbol symbol-ref=""/>
                    <Symbol symbol-ref=""/>
                    <TextOutput file-separation="cell"/>
                    <Plot time-step="50">
                        <Style style="lines" line-width="2.0"/>
                        <Terminal terminal="png"/>
                        <X-axis minimum="0.0" maximum="size.x">
                            <Symbol symbol-ref=""/>
                        <Y-axis minimum="0.0" maximum="size.y">
                            <Symbol symbol-ref=""/>
                            <Symbol symbol-ref="time"/>
                            <Time mode="history" history="50"/>


    Files associated with this model: