Human Airway Infection

Persistent Identifier

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

Viral Spread within the Human Airway Epithelium (HAE)

Introduction

The spread of viral infections within tissues depends on several factors including the spatial distribution and turnover dynamics of target cells. In Raach et al. (2023), a Cellular Potts model was developed to investigate the influence of target cell heterogeneity within the human airway epithelium on SARS-CoV-2 infection dynamics. The study aims to understand how different tissue compositions and regenerative turnover throughout the respiratory tree affect the progression of SARS-CoV-2 infections. The model incorporates cell-type specific infection kinetics, tissue regeneration, and accounts for both global and local spread of infections through cell-free and cell-associated viral transmission mechanisms.

Parameterization of the model is achieved by integrating published experimental data on differentiating primary human bronchial epithelial cells within air-liquid interface cultures through approximate Bayesian computation (de Borja Callejas et al., 2014, Schamberger et al., 2015). By simulating SARS-CoV-2 infections given various tissue compositions and regenerative capacities, the model provides insights into cell-type specific infection dynamics and the impact of tissue composition on disease progression and pathology.

Description

The human airway epithelium (HAE) cell culture system is represented by a 2D individual cell-based model within a radial lattice grid. The simulation initializes a total population of $\approx 4.7 \times 10^4$ cells, with each cell occupying a target area of 60 lattice sites. The model considers three different cell types: basal (B), secretory (S), and ciliated (C) cells, which constitute the epithelium with different relative contributions. To mimic the pseudostratified 3D-morphology of the upper respiratory epithelium, the volume strength of basal cells is set to $\frac{1}{10}$ of that of secretory or ciliated cells, allowing basal cells to be ‘overgrown’ by the other cell types, i.e., being potentially compressed to only one lattice site in fully differentiated tissue.

Cellular turnover and epithelial regeneration follows a linear differentiation process with continuous proliferation of basal cells at a density-dependent rate ($\alpha$), subsequent differentiation into secretory and ciliated cells ($\lambda_\mathrm{S}$, $\lambda_\mathrm{C}$) and cell loss according to cell-type specific death rates ($\delta_\mathrm{B}$, $\delta_\mathrm{S}$, $\delta_\mathrm{C}$) (see also Fig. 1). The processes of cell proliferation, differentiation, and cell death are incorporated into the Morpheus model by translating the model system shown in Fig. 1 into a probabilistic framework (see also Raach et al., 2023).

Figure 1. A: Sketch of the linear differentiation process and cellular turnover of basal (B), secretory (S) and ciliated (C) cells within the epithelium under homeostatic conditions. Basal cells proliferate at a density-dependent rate and subsequently differentiate into secretory and ciliated cells with rate $\lambda_\mathrm{S}$ and $\lambda_\mathrm{C}$, respectively. Cell types are lost according to their individual loss rates ($\delta_\mathrm{B}$, $\delta_\mathrm{S}$, $\delta_\mathrm{C}$). B: Snapshots of the Cellular Potts model at various time points depicting the differentiation and regeneration of the human airway epithelium to mimic the pseudo-stratified epithelium of the upper respiratory tract. (Figures partly reproduced and adapted from [CC BY-NC-ND 4.0](https://creativecommons.org/licenses/by-nc-nd/4.0/): [**Raach _et al._, 2023**](#reference), [Fig. 1B, D](https://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1011356#pcbi-1011356-g001).)
Figure 1. A: Sketch of the linear differentiation process and cellular turnover of basal (B), secretory (S) and ciliated (C) cells within the epithelium under homeostatic conditions. Basal cells proliferate at a density-dependent rate and subsequently differentiate into secretory and ciliated cells with rate $\lambda_\mathrm{S}$ and $\lambda_\mathrm{C}$, respectively. Cell types are lost according to their individual loss rates ($\delta_\mathrm{B}$, $\delta_\mathrm{S}$, $\delta_\mathrm{C}$). B: Snapshots of the Cellular Potts model at various time points depicting the differentiation and regeneration of the human airway epithelium to mimic the pseudo-stratified epithelium of the upper respiratory tract. (Figures partly reproduced and adapted from CC BY-NC-ND 4.0: Raach et al., 2023, Fig. 1B, D.)

To incorporate viral infection, the model follows the standard model of viral dynamics: After infection of a cell, the cell progresses through an eclipse phase before it becomes infectious and starts to produce new virions. Each cell type can get infected through either cell-free or cell-associated transmission modes dependent on the viral concentration or the number of infectious cells in its neighborhood, respectively, as well as the cell-type specific transmission rates, $\beta_\mathrm{cf}$ and $\beta_\mathrm{cc}$ (see also Raach et al., 2023 for further details).

The model code M6296_human-airway-infection_model.xml provided here simulates viral infection within bronchial epithelium given an initial cell type distribution of $39.7\ \text{%}$ (B), $13.4\ \text{%}$ (S), and $46.9\ \text{%}$ (C), at equilibrium before infection. A simulation time step represents $0.25$ hours in real time. Infection is initialized by adding a viral load of $2.6 \times 10^6$ RNA copies at $6.25$ hours ($= 25$ time steps) post simulation start, with the epithelium being at confluence. For all individual parameters, see also Raach et al., 2023.

Results

Vid. 1 and Fig. 2 show the results of re-running the model with the parametrizations and initial cell distributions as outlined in Raach et al., 2023 over a time period of $7$ days.

Video 1. Visualization of the dynamics of the infection process in a single simulation, showing the destruction of the upper epithelial barrier by the infection. Susceptible cells: green (basal), blue (secretory) and orange (ciliated). Infected cells: brown (basal), purple (secretory) and red (ciliated).

Results reproduce the findings reported by Raach et al. with ciliated cells showing the highest fraction of infected cells (Fig. 2B). Snapshots of the Cellular Potts model (Fig. 2D) indicate the effect of heterogeneous infection patterns on tissue integrity (see also Raach et al., 2023).

Figure 2. A-C: Simulated kinetics of (A) the total cell count and (B) the fraction of infected cells for each of the different cell types, as well as (C) the viral load followed over a time course of $7$ days post infection. Lines and shaded area represent the mean and $90\ \text{\%}$ confidence band across ten repeated simulations, respectively. D: Snapshots of the Cellular Potts model at various time points of a single simulation depicting the spatial distribution of the SARS-CoV-2 infection across the human airway epithelium.
Figure 2. A-C: Simulated kinetics of (A) the total cell count and (B) the fraction of infected cells for each of the different cell types, as well as (C) the viral load followed over a time course of $7$ days post infection. Lines and shaded area represent the mean and $90\ \text{%}$ confidence band across ten repeated simulations, respectively. D: Snapshots of the Cellular Potts model at various time points of a single simulation depicting the spatial distribution of the SARS-CoV-2 infection across the human airway epithelium.

Reference

This model is the original used in the publication, up to technical updates:

B. Raach, N. Bundgaard, M. J. Haase, J. Starruß, R. Sotillo, M. L. Stanifer, F. Graw: Influence of cell type specific infectivity and tissue composition on SARS-CoV-2 infection dynamics within human airway epitheliumn. PLoS Comput. Biol. 19 (8): e1011356, 2023.

Model

Get this model via:

  • Morpheus-Link or
  •  Download: M6296_human-airway-infection_model.xml
  • XML Preview

    <?xml version='1.0' encoding='UTF-8'?>
    <MorpheusModel version="4">
        <Description>
            <Details>Model ID:		https://identifiers.org/morpheus/M6296
    Title:		Human Airway Infection
    Authors:		B. Raach, N. Bundgaard, M. J. Haase, J. Starruß, R. Sotillo, M. L. Stanifer, F. Graw
    Submitters:		P. Lukas, F. Graw
    Curators:		D. Jahn
    Date:		08.05.2024
    Software:		Morpheus (open source). Download from: https://morpheus.gitlab.io
    Units:		[time] = 0.25 h
    		[space] = 1 µm
    Reference:		This model is the original used in the publication, up to technical updates:
    		B. Raach, N. Bundgaard, M. J. Haase, J. Starruß, R. Sotillo, M. L. Stanifer, F. Graw: Influence of cell type specific
    		infectivity and tissue composition on SARS-CoV-2 infection dynamics within human airway epitheliumn. PLoS
    		Comput. Biol. 19 (8): e1011356, 2023.
    		https://doi.org/10.1371/journal.pcbi.1011356</Details>
            <Title>M6296: Human Airway Infection</Title>
        </Description>
        <Space>
            <Lattice class="square">
                <Neighborhood>
                    <Order>2</Order>
                </Neighborhood>
                <Size symbol="size" value="1204,1204,0"/>
                <BoundaryConditions>
                    <Condition type="noflux" boundary="x"/>
                    <Condition type="noflux" boundary="y"/>
                    <!--    <Disabled>
            <Condition type="noflux" boundary="-x"/>
        </Disabled>
    -->
                    <!--    <Disabled>
            <Condition type="noflux" boundary="-y"/>
        </Disabled>
    -->
                </BoundaryConditions>
                <Domain boundary-type="noflux">
                    <Circle diameter="1204"/>
                </Domain>
            </Lattice>
            <SpaceSymbol symbol="space"/>
        </Space>
        <Time>
            <StartTime value="0"/>
            <StopTime value="500"/>
            <TimeSymbol symbol="time"/>
        </Time>
        <Analysis>
            <ModelGraph format="png" reduced="false" include-tags="#untagged"/>
            <Gnuplotter time-step="96" decorate="false">
                <Plot>
                    <Cells value="cell.type">
                        <ColorMap adaptive-range="false">
                            <Color value="1" color="sea-green"/>
                            <Color value="2" color="brown4"/>
                            <Color value="3" color="brown4"/>
                            <Color value="4" color="medium-blue"/>
                            <Color value="5" color="dark-violet"/>
                            <Color value="6" color="dark-violet"/>
                            <Color value="7" color="dark-salmon"/>
                            <Color value="8" color="red"/>
                            <Color value="9" color="red"/>
                            <Color value="10" color="light-green"/>
                            <Color value="11" color="light-blue"/>
                            <Color value="12" color="gold"/>
                            <Color value="13" color="black"/>
                        </ColorMap>
                    </Cells>
                </Plot>
                <Terminal name="png" size="2000, 2000, 0"/>
            </Gnuplotter>
        </Analysis>
        <Global>
            <Constant symbol="Nmax" value="47177*1.288"/>
            <Constant symbol="timestepsize" value="0.25"/>
            <Constant symbol="init_cell_number" value="47177"/>
            <Constant symbol="alphaB" value="0.338/24*timestepsize"/>
            <Constant symbol="diffS" value="0.084/24*timestepsize*4"/>
            <Constant symbol="diffCil" value="0.162/24*timestepsize*4"/>
            <Constant symbol="deltaB" value="0.0139/24*timestepsize"/>
            <Constant symbol="deltaS" value="0.083/24*timestepsize"/>
            <Constant symbol="deltaCil" value="0.029/24*timestepsize&#xa;"/>
            <Function symbol="cell_number">
                <Expression>sum(celltype.secretory.size, celltype.secretory_infected.size, celltype.secretory_infectious.size ,celltype.ciliated.size, celltype.ciliated_infected.size, celltype.ciliated_infectious.size, celltype.basal.size, celltype.basal_infected.size, celltype.basal_infectious.size)</Expression>
            </Function>
            <Constant symbol="locality" value="15"/>
            <Constant symbol="betaB" value="10^(-9.367795)/locality*10000*timestepsize/3*(1-cc_ct_ratio)"/>
            <Constant symbol="betaS" value="10^(-9.403180)/locality*10000*timestepsize/3*(1-cc_ct_ratio)"/>
            <Constant symbol="betaC" value="10^(-9.430063)*10000/locality*timestepsize*(1-cc_ct_ratio)"/>
            <Constant symbol="kappaB" value="4*0.192848*timestepsize"/>
            <Constant symbol="kappaS" value="4*0.182802*timestepsize"/>
            <Constant symbol="kappaC" value="4*0.217471*timestepsize"/>
            <Constant symbol="rhoB" value="10^(4.376343)*timestepsize"/>
            <Constant symbol="rhoS" value="10^(4.613919)*timestepsize"/>
            <Constant symbol="rhoC" value="10^(4.689795)*timestepsize"/>
            <Constant symbol="db_I" value="4*0.080933*timestepsize"/>
            <Constant symbol="ds_I" value="4*0.077071*timestepsize"/>
            <Constant symbol="dc_I" value="4*0.074392*timestepsize"/>
            <Constant symbol="c" value="0.63*timestepsize"/>
            <Field symbol="ViralLoad" value="0.0">
                <Diffusion rate="20"/>
            </Field>
            <Variable symbol="add_infection" value="0"/>
            <System time-step="1.0" solver="Bogacki-Shampine [adaptive, O(3)]">
                <DiffEqn symbol-ref="ViralLoad">
                    <Expression>viralsecretion + add_infection - c * ViralLoad</Expression>
                </DiffEqn>
            </System>
            <Event trigger="when-true">
                <Condition>time >= 25</Condition>
                <Rule symbol-ref="add_infection">
                    <Expression>0</Expression>
                </Rule>
            </Event>
            <Event>
                <Condition>time >= 24.5 and time &lt; 25.5</Condition>
                <Rule symbol-ref="add_infection">
                    <Expression>2.6*10^6/(3.14/4*1204^2)*init_cell_number/47177*800</Expression>
                </Rule>
            </Event>
            <Variable symbol="total_viral_load" value="0.0"/>
            <Mapper>
                <Input value="ViralLoad"/>
                <Output symbol-ref="total_viral_load" mapping="sum"/>
            </Mapper>
            <Constant symbol="ccbetaB" value="1.0*cc_reduced*cc_ct_ratio/cceffectivness"/>
            <Constant symbol="ccbetaS" value="1.536*cc_reduced*cc_ct_ratio/cceffectivness"/>
            <Constant symbol="ccbetaC" value="4.33*cc_ct_ratio/cceffectivness"/>
            <Constant symbol="ccrhoB" value="1*timestepsize"/>
            <Constant symbol="ccrhoS" value="0.5786*timestepsize"/>
            <Constant symbol="ccrhoC" value="0.48590*timestepsize"/>
            <Constant symbol="cceffectivness" value="20"/>
            <Constant symbol="cc_ct_ratio" value="0.9"/>
            <Constant symbol="cc_reduced" value="0.2"/>
        </Global>
        <CellTypes>
            <CellType class="medium" name="medium">
                <Property symbol="viralsecretion" value="0"/>
            </CellType>
            <CellType class="biological" name="basal">
                <VolumeConstraint target="60" strength="10"/>
                <SurfaceConstraint target=".9" strength="10" mode="aspherity"/>
                <ConnectivityConstraint/>
                <Function symbol="p_divB">
                    <Expression>1-exp(-(alphaB*((Nmax-cell_number)/Nmax)))</Expression>
                </Function>
                <Function symbol="p_deathB">
                    <Expression>1-exp(-deltaB)</Expression>
                </Function>
                <Function symbol="p_diffS">
                    <Expression>1-exp(-diffS)</Expression>
                </Function>
                <AddCell overwrite="true">
                    <Count>if(cell_number > 25000, celltype.basal.size*p_divB , 0)</Count>
                    <Distribution>1</Distribution>
                    <Triggers>
                        <Rule symbol-ref="Compartment">
                            <Expression>0.0</Expression>
                        </Rule>
                    </Triggers>
                </AddCell>
                <CellDivision division-plane="minor">
                    <Condition>rand_uni(0,1)&lt;p_divB  and (cell_number&lt;= 25000)</Condition>
                    <Triggers>
                        <Rule symbol-ref="Compartment">
                            <Expression>0.0</Expression>
                        </Rule>
                    </Triggers>
                </CellDivision>
                <ChangeCellType time-step="1.0" name="to_secr" newCellType="secretory">
                    <Condition>Compartment==5</Condition>
                    <Triggers>
                        <Rule symbol-ref="Compartment">
                            <Expression>0</Expression>
                        </Rule>
                    </Triggers>
                </ChangeCellType>
                <CellDeath>
                    <Condition>rand_uni(0,1)&lt; p_deathB
    </Condition>
                </CellDeath>
                <Property symbol="Compartment" value="rand_int(0,4)"/>
                <Event trigger="when-true" time-step="1.0">
                    <Condition>rand_uni(0,1)&lt;p_diffS</Condition>
                    <Rule symbol-ref="Compartment">
                        <Expression>Compartment + 1</Expression>
                    </Rule>
                </Event>
                <Property symbol="viralsecretion" value="0"/>
                <ChangeCellType time-step="0.0" newCellType="basal_infected">
                    <Condition>rand_uni(0,1)&lt;p_infBas</Condition>
                </ChangeCellType>
                <Function symbol="p_infBas">
                    <Expression>1-exp(-betaB*internal_load)</Expression>
                </Function>
                <Mapper time-step="1.0" name="internal viral load">
                    <Input value="ViralLoad"/>
                    <Output symbol-ref="internal_load" mapping="sum"/>
                </Mapper>
                <Property symbol="internal_load" value="0.0"/>
                <NeighborhoodReporter time-step="1.0">
                    <Input scaling="cell" value="ccbetaB*((cell.type == celltype.basal_infectious.id)*ccrhoB + (cell.type == celltype.secretory_infectious.id)*ccrhoS + (cell.type == celltype.ciliated_infectious.id)*ccrhoC)"/>
                    <Output symbol-ref="infected_neighbors" mapping="sum"/>
                </NeighborhoodReporter>
                <Property symbol="infected_neighbors" value="0.0"/>
                <ChangeCellType newCellType="basal_infected">
                    <Condition>rand_uni(0,1)&lt;1-exp(-infected_neighbors)</Condition>
                </ChangeCellType>
            </CellType>
            <CellType class="biological" name="basal_infected">
                <Property symbol="t_Bbecomeinfectious" value="0.0"/>
                <Function symbol="p_Bbecomeinfectious">
                    <Expression>1-exp(-kappaB)</Expression>
                </Function>
                <ChangeCellType time-step="1.0" newCellType="basal_infectious">
                    <Condition>Compartment == 5</Condition>
                </ChangeCellType>
                <VolumeConstraint target="60" strength="10"/>
                <SurfaceConstraint target=".9" strength="10" mode="aspherity"/>
                <Property symbol="viralsecretion" value="0"/>
                <Event trigger="when-true" time-step="1.0">
                    <Condition>rand_uni(0,1)&lt;p_Bbecomeinfectious</Condition>
                    <Rule symbol-ref="Compartment">
                        <Expression>Compartment + 1</Expression>
                    </Rule>
                </Event>
                <Property symbol="Compartment" value="0.0"/>
                <ConnectivityConstraint/>
                <Property symbol="internal_load" value="0.0"/>
                <Mapper time-step="1.0" name="internal viral load">
                    <Input value="ViralLoad"/>
                    <Output symbol-ref="internal_load" mapping="sum"/>
                </Mapper>
            </CellType>
            <CellType class="biological" name="basal_infectious">
                <CellDeath>
                    <Condition>Compartment_d == 5</Condition>
                </CellDeath>
                <Function symbol="p_deathBInfectious">
                    <Expression>1-exp(-db_I)</Expression>
                </Function>
                <VolumeConstraint target="60" strength="10"/>
                <SurfaceConstraint target=".9" strength="10" mode="aspherity"/>
                <Property symbol="viralsecretion" value="rhoB/cell.volume"/>
                <Equation symbol-ref="viralsecretion">
                    <Expression>rhoB/cell.volume</Expression>
                </Equation>
                <Event trigger="when-true" time-step="1.0">
                    <Condition>rand_uni(0,1)&lt;p_deathBInfectious</Condition>
                    <Rule symbol-ref="Compartment_d">
                        <Expression>Compartment_d + 1</Expression>
                    </Rule>
                </Event>
                <Property symbol="Compartment_d" value="0.0"/>
                <ConnectivityConstraint/>
                <Property symbol="internal_load" value="0.0"/>
                <Mapper time-step="1.0" name="internal viral load">
                    <Input value="ViralLoad"/>
                    <Output symbol-ref="internal_load" mapping="sum"/>
                </Mapper>
            </CellType>
            <CellType class="biological" name="secretory">
                <VolumeConstraint target="60" strength="100"/>
                <SurfaceConstraint target=".9" strength="100" mode="aspherity"/>
                <ConnectivityConstraint/>
                <Function symbol="p_diffCil">
                    <Expression>1-exp(-diffCil)</Expression>
                </Function>
                <Function symbol="p_deathS">
                    <Expression>1-exp(-deltaS)</Expression>
                </Function>
                <CellDeath>
                    <Condition>rand_uni(0,1)&lt; p_deathS
    </Condition>
                </CellDeath>
                <ChangeCellType time-step="1.0" name="to_ cil" newCellType="ciliated">
                    <Condition>Compartment==5</Condition>
                </ChangeCellType>
                <Property symbol="Compartment" value="rand_int(0,4)"/>
                <Event trigger="when-true" time-step="1.0">
                    <Condition>rand_uni(0,1)&lt;p_diffCil</Condition>
                    <Rule symbol-ref="Compartment">
                        <Expression>Compartment + 1</Expression>
                    </Rule>
                </Event>
                <Property symbol="viralsecretion" value="0"/>
                <ChangeCellType time-step="1.0" newCellType="secretory_infected">
                    <Condition>rand_uni(0,1)&lt;p_infSec</Condition>
                </ChangeCellType>
                <Function symbol="p_infSec">
                    <Expression>1-exp(-betaS*internal_load)</Expression>
                </Function>
                <Mapper time-step="1.0" name="internal viral load">
                    <Input value="ViralLoad"/>
                    <Output symbol-ref="internal_load" mapping="sum"/>
                </Mapper>
                <Property symbol="internal_load" value="0.0"/>
                <NeighborhoodReporter time-step="1.0">
                    <Input scaling="cell" value="ccbetaS*((cell.type == celltype.basal_infectious.id)*ccrhoB + (cell.type == celltype.secretory_infectious.id)*ccrhoS + (cell.type == celltype.ciliated_infectious.id)*ccrhoC)"/>
                    <Output symbol-ref="infected_neighbors" mapping="sum"/>
                </NeighborhoodReporter>
                <Property symbol="infected_neighbors" value="0.0"/>
                <ChangeCellType time-step="1.0" newCellType="secretory_infected">
                    <Condition>rand_uni(0,1)&lt;1-exp(-infected_neighbors)</Condition>
                </ChangeCellType>
            </CellType>
            <CellType class="biological" name="secretory_infected">
                <Property symbol="t_Sbecomeinfectious" value="0.0"/>
                <Function symbol="p_Sbecomeinfectious">
                    <Expression>1-exp(-kappaS)</Expression>
                </Function>
                <ChangeCellType newCellType="secretory_infectious">
                    <Condition>Compartment == 5</Condition>
                </ChangeCellType>
                <VolumeConstraint target="60" strength="100"/>
                <SurfaceConstraint target=".9" strength="100" mode="aspherity"/>
                <Property symbol="viralsecretion" value="0"/>
                <Event trigger="when-true" time-step="1.0">
                    <Condition>rand_uni(0,1)&lt;p_Sbecomeinfectious</Condition>
                    <Rule symbol-ref="Compartment">
                        <Expression>Compartment + 1</Expression>
                    </Rule>
                </Event>
                <Property symbol="Compartment" value="0.0"/>
                <ConnectivityConstraint/>
                <Property symbol="internal_load" value="0.0"/>
                <Mapper time-step="1.0" name="internal viral load">
                    <Input value="ViralLoad"/>
                    <Output symbol-ref="internal_load" mapping="sum"/>
                </Mapper>
            </CellType>
            <CellType class="biological" name="secretory_infectious">
                <CellDeath>
                    <Condition>Compartment_d == 5</Condition>
                </CellDeath>
                <Function symbol="p_deathSInfectious">
                    <Expression>1 - exp(-ds_I)</Expression>
                </Function>
                <VolumeConstraint target="60" strength="100"/>
                <SurfaceConstraint target=".9" strength="100" mode="aspherity"/>
                <Property symbol="viralsecretion" value="rhoS/cell.volume"/>
                <Equation symbol-ref="viralsecretion">
                    <Expression>rhoS/cell.volume </Expression>
                </Equation>
                <Property symbol="Compartment_d" value="0.0"/>
                <Event trigger="when-true" time-step="1.0">
                    <Condition>rand_uni(0,1)&lt;p_deathSInfectious</Condition>
                    <Rule symbol-ref="Compartment_d">
                        <Expression>Compartment_d + 1</Expression>
                    </Rule>
                </Event>
                <ConnectivityConstraint/>
            </CellType>
            <CellType class="biological" name="ciliated">
                <ConnectivityConstraint/>
                <SurfaceConstraint target=".9" strength="100" mode="aspherity"/>
                <VolumeConstraint target="60" strength="100"/>
                <CellDeath>
                    <Condition>rand_uni(0,1)&lt; p_deathCil
    </Condition>
                </CellDeath>
                <Function symbol="p_deathCil">
                    <Expression>1-exp(-deltaCil)</Expression>
                </Function>
                <Property symbol="viralsecretion" value="0"/>
                <ChangeCellType time-step="1.0" newCellType="ciliated_infected">
                    <Condition>rand_uni(0,1)&lt;p_infCil</Condition>
                </ChangeCellType>
                <Function symbol="p_infCil">
                    <Expression>1-exp(-betaC*internal_load)</Expression>
                </Function>
                <Mapper time-step="1.0" name="internal viral load">
                    <Input value="ViralLoad"/>
                    <Output symbol-ref="internal_load" mapping="sum"/>
                </Mapper>
                <Property symbol="internal_load" value="0.0"/>
                <NeighborhoodReporter time-step="1.0">
                    <Input scaling="cell" value="ccbetaC*((cell.type == celltype.basal_infectious.id)*ccrhoB + (cell.type == celltype.secretory_infectious.id)*ccrhoS + (cell.type == celltype.ciliated_infectious.id)*ccrhoC)"/>
                    <Output symbol-ref="infected_neighbors" mapping="sum"/>
                </NeighborhoodReporter>
                <Property symbol="infected_neighbors" value="0.0"/>
                <ChangeCellType time-step="1.0" newCellType="ciliated_infected">
                    <Condition>rand_uni(0,1)&lt;1-exp(-infected_neighbors)</Condition>
                </ChangeCellType>
            </CellType>
            <CellType class="biological" name="ciliated_infected">
                <Function symbol="p_Cbecomeinfectious">
                    <Expression>1-exp(-kappaC)</Expression>
                </Function>
                <ChangeCellType time-step="1.0" newCellType="ciliated_infectious">
                    <Condition>Compartment == 5</Condition>
                </ChangeCellType>
                <SurfaceConstraint target=".9" strength="100" mode="aspherity"/>
                <VolumeConstraint target="60" strength="100"/>
                <Property symbol="t_birth_cil_inf" value="0.0"/>
                <Property symbol="viralsecretion" value="0"/>
                <Event trigger="when-true" time-step="1.0">
                    <Condition>rand_uni(0,1)&lt;p_Cbecomeinfectious</Condition>
                    <Rule symbol-ref="Compartment">
                        <Expression>Compartment + 1</Expression>
                    </Rule>
                </Event>
                <Property symbol="Compartment" value="0.0"/>
                <ConnectivityConstraint/>
                <Property symbol="internal_load" value="0.0"/>
                <Mapper time-step="1.0" name="internal viral load">
                    <Input value="ViralLoad"/>
                    <Output symbol-ref="internal_load" mapping="sum"/>
                </Mapper>
            </CellType>
            <CellType class="biological" name="ciliated_infectious">
                <CellDeath>
                    <Condition>Compartment_d == 5</Condition>
                </CellDeath>
                <Function symbol="p_deathCInfectious">
                    <Expression>1 - exp(-dc_I)</Expression>
                </Function>
                <SurfaceConstraint target=".9" strength="100" mode="aspherity"/>
                <VolumeConstraint target="60" strength="100"/>
                <Property symbol="t_birth_cil" value="0.0"/>
                <Property symbol="viralsecretion" value="rhoC/cell.volume"/>
                <Equation symbol-ref="viralsecretion">
                    <Expression>rhoC/cell.volume </Expression>
                </Equation>
                <Event trigger="when-true" time-step="1.0">
                    <Condition>rand_uni(0,1)&lt;p_deathCInfectious</Condition>
                    <Rule symbol-ref="Compartment_d">
                        <Expression>Compartment_d + 1</Expression>
                    </Rule>
                </Event>
                <Property symbol="Compartment_d" value="0.0"/>
                <ConnectivityConstraint/>
                <Property symbol="internal_load" value="0.0"/>
                <Mapper time-step="1.0" name="internal viral load">
                    <Input value="ViralLoad"/>
                    <Output symbol-ref="internal_load" mapping="sum"/>
                </Mapper>
            </CellType>
        </CellTypes>
        <CellPopulations>
            <Population type="basal" name="basal" size="0">
                <InitCircle number-of-cells="0.397*init_cell_number" mode="random">
                    <Dimensions radius="size.x/2" center="size.x/2,size.y/2,0"/>
                </InitCircle>
            </Population>
            <Population type="secretory" name="secretory" size="0">
                <InitCircle name="secretory" number-of-cells="0.134*init_cell_number" mode="random">
                    <Dimensions radius="size.x/2" center="size.x/2,size.y/2,0"/>
                </InitCircle>
            </Population>
            <Population type="ciliated" name="ciliated" size="0">
                <InitCircle name="ciliated" number-of-cells="0.469*init_cell_number" tags="" mode="random">
                    <Dimensions radius="size.x/2" center="size.x/2,size.y/2,0"/>
                </InitCircle>
            </Population>
            <Population type="basal_infectious" name="basal infectious" size="0">
                <InitCircle name="" number-of-cells="0" tags="" mode="random">
                    <Dimensions radius="size.x/2" center="size.x/2,size.y/2,0"/>
                </InitCircle>
            </Population>
            <Population type="ciliated_infectious" name="ciliated infectious" size="0">
                <InitCircle name="" number-of-cells="0" tags="" mode="random">
                    <Dimensions radius="size.x/2" center="size.x/2,size.y/2,0"/>
                </InitCircle>
            </Population>
            <Population type="secretory_infectious" name="secretory infectious" size="0">
                <InitCircle name="" number-of-cells="0" tags="" mode="random">
                    <Dimensions radius="size.x/2" center="size.x/2,size.y/2,0"/>
                </InitCircle>
            </Population>
        </CellPopulations>
        <CPM>
            <Interaction>
                <Contact type1="ciliated" type2="secretory" value="-20"/>
                <Contact type1="ciliated" type2="ciliated" value="10"/>
                <Contact type1="secretory" type2="secretory" value="50"/>
                <Contact type1="ciliated" type2="medium" value="-10"/>
                <Contact type1="secretory" type2="medium" value="-10"/>
                <Contact type1="basal" type2="basal" value="50"/>
                <Contact type1="basal" type2="ciliated" value="-30"/>
                <Contact type1="basal" type2="secretory" value="-30"/>
            </Interaction>
            <ShapeSurface scaling="norm">
                <Neighborhood>
                    <Order>6</Order>
                </Neighborhood>
            </ShapeSurface>
            <MonteCarloSampler stepper="edgelist">
                <MCSDuration symbol="mcs_duration" value="1"/>
                <MetropolisKinetics temperature="37"/>
                <Neighborhood>
                    <Order>2</Order>
                </Neighborhood>
            </MonteCarloSampler>
        </CPM>
    </MorpheusModel>
    
    

    Model Graph
    Model Graph

    Downloads

    Files associated with this model:

    Next