Coupled ODE lattice: Lateral signaling

Introduction

This example model cell fate decisions during early patterning of the pancreas (de Back et al., 2012). The simple gene regulatory network of each cell is coupled to adjacent cells by lateral (juxtacrine) signaling.

Patterning as a result of lateral inhibition and lateral stabilization

Model description

The model defines a lattice of cells with a simplified hexagonal epithelial packing. This is specified in Space using a hexagonal lattice structure of size $(x,y,z)=(20,20,0)$ with periodic boundary conditions. The lattice is filled by seeding it with a Population of 400 cells.

Each cell has two basic Properties $X$ and $Y$ representing the expression levels of $\mathrm{Ngn3}$ and $\mathrm{Ptf1a}$ that are coupled in a System of DiffEqns.

The NeighborsReporter plugin is used to couple the cells to their directly adjacent neighbors. This plugin checks the values of $X$ in neighboring cells and outputs its mean value in Property $Xn$.

This model uses a number of Analysis plugins:

  • The Gnuplotter visualizes the values of $Y$ with a ColorMap that maps values to colors. It outputs to screen (interactive mode) or to PNG (local mode).
  • The Logger records the values of $X$ and $Y$ expression to file and, at the end of simulation, shows a time plot.
  • The first HistogramLogger records and plots the distribution of $X$ and $Y$ expression cells over time.
  • The second HistogramLogger records and, after simulation, plots the distribution of $\tau$, the time to cell fate decision (see reference).

Things to try

  • Explore the effect of delays by altering the DelayProperty/delay.

Model

In Morpheus GUI: Examples 🠒 ODE 🠒 LateralSignaling.xml.

<?xml version='1.0' encoding='UTF-8'?>
<MorpheusModel version="3">
    <Description>
        <Title>Example-LateralSignaling</Title>
        <Details>Reference:

Walter de Back, Joseph X. Zhou, Lutz Brusch, On the Role of Lateral Stabilization during Early Patterning in the Pancreas, Roy. Soc. Interface 10(79): 20120766, 2012.

http://dx.doi.org/10.1098/rsif.2012.0766
</Details>
    </Description>
    <Global>
        <Constant symbol="X" value="0"/>
        <Constant symbol="Y" value="0"/>
    </Global>
    <Space>
        <Lattice class="hexagonal">
            <Size symbol="size" value="20 20 0"/>
            <BoundaryConditions>
                <Condition boundary="x" type="periodic"/>
                <Condition boundary="y" type="periodic"/>
            </BoundaryConditions>
            <Neighborhood>
                <Order>1</Order>
            </Neighborhood>
        </Lattice>
        <SpaceSymbol symbol="space"/>
    </Space>
    <Time>
        <StartTime value="0"/>
        <StopTime value="30"/>
        <TimeSymbol symbol="t"/>
        <!--    <Disabled>
        <RandomSeed value="2"/>
    </Disabled>
-->
    </Time>
    <CellTypes>
        <CellType class="biological" name="cells">
            <Property symbol="X" value="0.0" name="Ngn3"/>
            <Property symbol="Xn" value="0.0" name="Ngn3-Neighbors"/>
            <Property symbol="Y" value="0" name="Ptf1a"/>
            <Property symbol="Yn" value="0" name="Ptf1a-neighbors"/>
            <System solver="heun" time-step="0.02">
                <Constant symbol="a" value="1"/>
                <Constant symbol="b" value="21"/>
                <Constant symbol="c" value="1"/>
                <DiffEqn symbol-ref="X">
                    <Expression>((th / (th + a*Xn^n)) - X) + rand_norm(0.0,noise)</Expression>
                </DiffEqn>
                <DiffEqn symbol-ref="Y">
                    <Expression>(((th + b*(Y * Yn)^n) / (th + c*X^n + b*(Y * Yn)^n))  - Y ) + rand_norm(0.0,noise)</Expression>
                </DiffEqn>
                <Constant symbol="n" value="4"/>
                <Constant symbol="th" value="1e-4"/>
                <Constant symbol="noise" value="1e-4"/>
            </System>
            <NeighborhoodReporter>
                <Input scaling="cell" value="X"/>
                <Output symbol-ref="Xn" mapping="average"/>
            </NeighborhoodReporter>
            <NeighborhoodReporter>
                <Input scaling="cell" value="Y"/>
                <Output symbol-ref="Yn" mapping="average"/>
            </NeighborhoodReporter>
            <Event trigger="on change">
                <Condition>tau == -1 and (X-Xn) > 0.05</Condition>
                <Rule symbol-ref="tau">
                    <Expression>t</Expression>
                </Rule>
            </Event>
            <Property symbol="tau" value="-1" name="time to cell fate decision"/>
        </CellType>
    </CellTypes>
    <CellPopulations>
        <Population size="0" type="cells">
            <InitCellLattice/>
        </Population>
    </CellPopulations>
    <Analysis>
        <Gnuplotter time-step="5">
            <Terminal size="800 400 0" persist="true" name="png"/>
            <Plot>
                <Cells value="X" min="0.0" max="1">
                    <ColorMap>
                        <Color value="1.0" color="blue"/>
                        <Color value="0.5" color="light-blue"/>
                        <Color value="0.0" color="white"/>
                    </ColorMap>
                </Cells>
            </Plot>
            <Plot>
                <Cells value="Y" min="0.0" max="1">
                    <ColorMap>
                        <Color value="1.0" color="red"/>
                        <Color value="0.5" color="light-red"/>
                        <Color value="0.0" color="white"/>
                    </ColorMap>
                </Cells>
            </Plot>
        </Gnuplotter>
        <Logger time-step="0.1">
            <Input>
                <Symbol symbol-ref="X"/>
                <Symbol symbol-ref="Y"/>
            </Input>
            <Output>
                <TextOutput file-separation="cell"/>
            </Output>
            <Plots>
                <Plot time-step="-1">
                    <Style style="lines" line-width="2"/>
                    <Terminal terminal="png"/>
                    <X-axis>
                        <Symbol symbol-ref="t"/>
                    </X-axis>
                    <Y-axis>
                        <Symbol symbol-ref="X"/>
                    </Y-axis>
                    <Color-bar>
                        <Symbol symbol-ref="Y"/>
                    </Color-bar>
                    <Range>
                        <Data increment="3"/>
                    </Range>
                </Plot>
            </Plots>
        </Logger>
        <HistogramLogger minimum="-0.1" normalized="true" maximum="1.1" time-step="5" number-of-bins="20">
            <Plot minimum="0" maximum="1.0" terminal="png"/>
            <Column symbol-ref="X" celltype="cells"/>
            <Column symbol-ref="Y" celltype="cells"/>
        </HistogramLogger>
        <HistogramLogger minimum="0.0" normalized="true" maximum="30" time-step="-1" number-of-bins="30">
            <Plot minimum="0" maximum="1.0" terminal="png"/>
            <Column symbol-ref="tau" celltype="cells"/>
        </HistogramLogger>
    </Analysis>
</MorpheusModel>

Reference

W de Back, J X Zhou, L Brusch, On the Role of Lateral Stabilization during Early Patterning in the Pancreas, Journal of the Royal Society Interface, 10:79, 2013.

Previous
Next