MembraneProperties: Cell polarization and chemotaxis


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

  • A cellular Potts model,
  • a PDE model, solved on the membrane of the cell and
  • an external gradient.

The cell membrane polarizes in response to the external gradient. Chemotactic cell motility depends on the polarity of the cell and the external gradient.

Cell dynamically re-polarizes in response to switching external gradient.

Model description

This example implements two models of cell polarity: Meinhardt’s substrate-depletion model and Edelstein-Keshet’s wave-pinning model. The user can switch polarity model by Disabling/Enabling the relevant System.

The model defines a one-dimensional reaction-diffusion system (MembraneProperty) representing membrane-bound molecules, and is mapped to a cellular Potts model defining a discrete shaped cell. An external gradient, specified in a PDE, provides a signal for the polarization of the cell. In turn, the polarity of the cell influences its chemotaxic behavior.

After a switch in direction of the gradient, the cell re-polarizes in the new direction and starts to move up the gradient, if the wave pinning model has been selected.


In Morpheus GUI: Examples 🠒 Multiscale 🠒 CellPolarity.xml.

<MorpheusModel version="3">
        <Details>Chemotaxis of polarized cell
Show feedback between cell motility, cell polarization and external gradient.
Two simple polarization models can be enabled/disabled:
- Substrate-depletion model: no repolarization
- Wave-pinning model: repolarization
PDE Equation:
- Switch on/off and change gradients </Details>
        <Field symbol="U" value="l.x / lattice.x">
            <Diffusion rate="0.0"/>
        <!--    <Disabled>
        <Equation symbol-ref="U">
            <Expression>l.x / lattice.x +
0*if( t > 500 and t &lt; 1500, l.x / lattice.x, 0)</Expression>
        <Constant symbol="c" value="0.0"/>
        <!--    <Disabled>
        <Constant symbol="A" value="0.0"/>
        <Lattice class="cubic">
            <Size symbol="lattice" value="150 75 50"/>
                <Condition boundary="x" type="noflux"/>
                <Condition boundary="y" type="periodic"/>
            <NodeLength value="1.0"/>
        <SpaceSymbol symbol="l"/>
            <Resolution symbol="memsize" value="50"/>
            <SpaceSymbol symbol="m"/>
        <StartTime value="0"/>
        <StopTime value="2000"/>
        <SaveInterval value="0"/>
        <RandomSeed value="0"/>
        <TimeSymbol symbol="t"/>
        <CellType class="biological" name="cells">
            <Chemotaxis field="U" strength="100*(A)" retraction="true"/>
            <VolumeConstraint target="5000" strength="0.1"/>
            <SurfaceConstraint target="1" mode="aspherity" strength="0.05"/>
            <MembraneProperty symbol="A" value="0.5" name="A">
                <Diffusion rate="0.05"/>
            <MembraneProperty symbol="B" value="0.5" name="B">
                <Diffusion rate="1"/>
            <MembraneProperty symbol="c" value="0" name="chemotactic strength">
                <Diffusion rate="0"/>
            <MembraneProperty symbol="s" value="0" name="signal">
                <Diffusion rate="0"/>
            <Property symbol="l_U" value="0"/>
            <!--    <Disabled>
        <System solver="runge-kutta" time-step="1.0" name="Substrate-Depletion">
            <Rule symbol-ref="c">
            <DiffEqn symbol-ref="A">
                <Expression>(rho*A^2) / B - mu_a * A + rho_a + 0.001*s</Expression>
            <DiffEqn symbol-ref="B">
                <Expression>(rho*A^2) - mu_i * B</Expression>
            <Constant symbol="rho_a" value="0.01"/>
            <Constant symbol="mu_i" value="0.03"/>
            <Constant symbol="mu_a" value="0.02"/>
            <Constant symbol="rho" value="0.001"/>
            <System solver="runge-kutta" time-step="1.0" name="WavePinning">
                <Constant symbol="k_0" value="0.067"/>
                <Constant symbol="gamma" value="1"/>
                <Constant symbol="delta" value="0.25"/>
                <Constant symbol="K" value="1"/>
                <Constant symbol="sigma" value="5.0" name="spatial-length-signal"/>
                <Constant symbol="n" value="4" name="Hill coefficient"/>
                <Intermediate symbol="F" value="B*(k_0+ s + (gamma*A^n) / (K^n + A^n) ) - delta*A"/>
                <DiffEqn symbol-ref="A">
                <DiffEqn symbol-ref="B">
                <Rule symbol-ref="c">
                <Input value="U"/>
                <Output symbol-ref="s" mapping="average"/>
        <CellType class="medium" name="medium">
            <Property symbol="l_U" value="0"/>
        <Interaction default="0.0">
            <Contact type1="cells" type2="medium" value="-10"/>
            <Contact type1="cells" type2="cells" value="-20"/>
        <MonteCarloSampler stepper="edgelist">
            <MCSDuration value="1"/>
            <MetropolisKinetics temperature="1" yield="0.05"/>
        <ShapeSurface scaling="norm">
        <Population size="0" type="cells">
            <!--    <Disabled>
        <InitRectangle mode="regular" number-of-cells="1">
            <Dimensions size="150, 75, 50" origin="0.0, 0.0, 0.0"/>
            <Cell id="1" name="1">
                <Nodes>25 37 25</Nodes>
        <Gnuplotter time-step="50">
            <Terminal name="png"/>
                <Field symbol-ref="U"/>
                <Cells value="A" slice="25"/>
        <TiffPlotter format="8bit" OME-header="false" time-step="100">
            <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"/>