MembraneProperties: Cell Polarization and Chemotaxis

Open in Morpheus

Persistent Identifier

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


This model of cell polarity shows the coupling of three model formalisms:

  • A cellular Potts model with DirectedMotion that responds to cell polarity (but not directly to the external signal gradient),
  • a co-moving PDE model on the membrane of the cell (to let cell polarity emerge from distributed receptor-signal interactions) and
  • an external signal gradient (implemented as a global field with random fluctuations).

The cell membrane polarizes in response to the external signal U that is sensed as a pattern (of receptor activation) s along the cell membrane.

Cell dynamically repolarizes in response to switching external gradient.
Cell dynamically repolarizes in response to switching external gradient.


This example implements two models of cell polarity formation: Meinhardt’s substrate-depletion model (ASDM) and Edelstein-Keshet’s wave-pinning (WP) model. The user can switch the polarity model by disabling/enabling the relevant System under CellType. Equations and parameter values are copied from Mori et al..

Each model defines a two-component reaction-diffusion system (of MembraneProperty A and B) representing membrane-bound molecules, and is mapped to and co-moves with a cell. Cell motility and cell shape dynamics are given by the cellular Potts model. An external gradient with random fluctuations, specified in Global, provides a signal for the polarization of the cell. In turn, the pattern of the MembraneProperty A gives the polarity vector of the cell. The polarity vector then controls the DirectedMotion behavior of the cell. A TiffPlotter exports the full 3D plus time data set.

After a switch in direction of the gradient, the cell re-polarizes in the new direction and starts to move in the new direction, if the wave pinning model has been selected (see video below). A GnuPlotter visualizes the gradient, cell shape and MembraneProperty A at a horizontal slice through 3D space (shown below) and a Logger visualizes the (phi, theta)-dependency of the MembraneProperty A (not shown).

The alternative ASDM maintains its previous polarity for much longer and does not re-polarize during the runtime (see video below). On a longer time scale, the ASDM may eventually re-polarize the 3D cell by rotating the activator maximum over the cell membrane. The cell would take a U-turn with a large radius. The same behaviours are observed for any other strength of the gradient’s fluctuations as well as for a smooth gradient.


This model reproduces a published result, originally obtained with a different simulator:

Y. Mori, A. Jilkine and L. Edelstein-Keshet: Wave-Pinning and Cell Polarity from a Bistable Reaction-Diffusion System.. Biophysical Journal 94(9): 3684-3697, 2008.


Get this model via:

  • Morpheus-Link or
  • Morpheus GUI: ExamplesMultiscaleCellPolarity.xml or
  •  Download: CellPolarity.xml
  • XML Preview

    <MorpheusModel version="4">
            <Details>Chemotaxis of polarized cell
    Show feedback between cell motility, cell polarization and external gradient.
    Two cell polarization models are taken from the original publication:
    Y. Mori, A. Jilkine and L. Edelstein-Keshet (2008). Wave-Pinning and Cell Polarity from a Bistable Reaction-Diffusion System. Biophysical Journal 94(9), 3684-3697. DOI:10.1529/biophysj.107.120824
    and can be enabled/disabled for a cell in 3D through the respective System in the Celltype 'cells':
    - Substrate-depletion model: no repolarization
    - Wave-pinning model: repolarization (as studied in detail in the above publication)
    Events in Global:
    - Switch on/off and change gradients (noise through global constant)</Details>
            <Field symbol="U" value="noisy(l.x / lattice.x)">
                <Diffusion rate="0.0"/>
            <Event trigger="on-change" time-step="100">
                <Rule symbol-ref="U">
            <Event trigger="on-change" time-step="100">
                <Rule symbol-ref="U">
                    <Expression>noisy((lattice.x-l.x) / lattice.x)</Expression>
            <Constant symbol="l_U" value="0.0"/>
            <Constant symbol="lengthscale" value="3"/>
            <Constant symbol="noise" value="0.2"/>
            <Function symbol="noisy">
                <Parameter symbol="v" name="value"/>
            <Lattice class="cubic">
                <Size symbol="lattice" value="150, 75, 30"/>
                    <Condition type="noflux" boundary="x"/>
                    <Condition type="periodic" boundary="y"/>
                    <Condition type="constant" boundary="z"/>
                <NodeLength value="1.0"/>
            <SpaceSymbol symbol="l"/>
                <Resolution symbol="memsize" value="50"/>
                <SpaceSymbol symbol="m"/>
            <StartTime value="0"/>
            <StopTime value="2500"/>
            <SaveInterval value="0"/>
            <RandomSeed value="0"/>
            <TimeSymbol symbol="time"/>
            <CellType name="cells" class="biological">
                <VolumeConstraint target="5000" strength="0.1"/>
                <SurfaceConstraint target="1" strength="0.02" mode="aspherity"/>
                <MembraneProperty symbol="A" name="A" value="1.5 + rand_uni(-0.1,0.1)">
                    <Diffusion rate="0.05*lengthscale^2"/>
                <MembraneProperty symbol="B" name="B" value="0.8">
                    <Diffusion rate="10*lengthscale^2"/>
                <MembraneProperty symbol="c" name="chemotactic strength" value="0">
                    <Diffusion rate="0"/>
                <MembraneProperty symbol="s" name="signal" value="0">
                    <Diffusion rate="0"/>
                <System time-step="0.05" name="WavePinning" solver="Dormand-Prince [adaptive, O(5)]">
                    <Constant symbol="k_0" value="0.067"/>
                    <Constant symbol="gamma" value="1"/>
                    <Constant symbol="delta" value="1"/>
                    <Constant symbol="K" value="1"/>
                    <!--    <Disabled>
            <Constant symbol="sigma" name="spatial-length-signal" value="5.0"/>
                    <Constant symbol="n" name="Hill coefficient" value="2"/>
                    <Intermediate symbol="F" value="B*(k_0+ 0.2*(s-U.mean) + (gamma*A^n) / (K^n + A^n) ) - delta*A"/>
                    <DiffEqn symbol-ref="A">
                    <DiffEqn symbol-ref="B">
                    <Rule symbol-ref="c">
                <Mapper name="Sensing the field">
                    <Input value="U"/>
                    <Output symbol-ref="s" mapping="average"/>
                <PropertyVector symbol="p" name="polarity" value="0.0, 0.0, 0.0"/>
                <Mapper name="Polarity extraction from membrane">
                    <Input value="A"/>
                    <Polarity symbol-ref="p"/>
                <DirectedMotion strength="0.04" direction="p"/>
                <!--    <Disabled>
            <System time-step="0.05" name="Substrate-Depletion(ASDM)" solver="Dormand-Prince [adaptive, O(5)]">
                <Rule symbol-ref="c">
                <DiffEqn symbol-ref="A">
                    <Expression>B*(s.norm*A^2/(1+s_a*A^2)) - r_a * A</Expression>
                <DiffEqn symbol-ref="B">
                    <Expression>b_b - B*(s.norm*A^2/(1+s_a*A^2)) - r_b*B</Expression>
                <Constant symbol="s_a" value="0.1"/>
                <Constant symbol="r_a" value="0.1"/>
                <Constant symbol="b_b" value="0.15"/>
                <Constant symbol="r_b" value="0.0"/>
                <Function symbol="s.norm">
                    <Constant symbol="s.norm" value="0.1"/>
                <Property symbol="U.mean" value="0.0"/>
                <Mapper name="scalar signal average over whole cell">
                    <Input value="U"/>
                    <Output symbol-ref="U.mean" mapping="average"/>
            <Interaction default="0.0"/>
            <MonteCarloSampler stepper="edgelist">
                <MCSDuration value="1"/>
                <MetropolisKinetics yield="0.05" temperature="1"/>
            <ShapeSurface scaling="norm">
            <Population type="cells" size="0">
                <InitCellObjects mode="distance">
                    <Arrangement repetitions="1, 1, 1" displacements="1, 1, 1">
                        <Sphere center="25 37 15" radius="10"/>
            <Gnuplotter time-step="50">
                <Terminal name="png"/>
                <Plot slice="15">
                    <Field symbol-ref="U"/>
                    <Cells min="0.2" value="A"/>
                    <CellArrows orientation="p * 50"/>
            <TiffPlotter time-step="100" format="8bit" OME-header="false">
                <Channel symbol-ref="" celltype="cells"/>
                <Channel symbol-ref="c" celltype="cells"/>
                <Channel symbol-ref="U"/>
            <Logger time-step="50">
                    <Symbol symbol-ref="A"/>
                    <TextOutput file-format="matrix"/>
                    <SurfacePlot time-step="50">
                            <Symbol symbol-ref="A"/>
                        <Terminal terminal="png"/>
                    <Celltype celltype="cells"/>
            <ModelGraph include-tags="#untagged" format="svg" reduced="false"/>

    Model Graph
    Model Graph


    Files associated with this model: