Initialize cell population from CSV
Persistent Identifier
Use this permanent link to cite or share this Morpheus model:
Population_M.csv
with the list of lattice nodes where cells shall be initialized.
Introduction
Initializing the spatial configuration of cells is a key step of every simulation and Morpheus offers all the flexibility for this:
- the model section
CellPopulations/Population
(in the GUI and xml) can declare geometrical rules incl.
InitCellObjects/Arrangement
(cell repetitions in (x,y,z), displacements in (x,y,z) and random_displacement) of different cell shapes with adjustable sizes and rotation angles (Point, Box, Sphere, Ellipsoid, Cylinder)InitCircle
(seed cells in a circular subdomain),InitDistribute
,InitHexLattice
,InitPoissonDisc
,InitRectangle
,InitVoronoi
- you can overlay multiple
CellPopulations/Population
groups with the above constructs - all these arrangements together can be masked by
Lattice/Domain
- you may specify the initial cell shapes or just set single points that will inflate into cell shapes during an initial transient of the model simulation
- you can load a
CellPopulations/Population
from files, both CSV (for lists of nodes for seeding as shown below) or TIFF (for pixel-based spatial layout where pixel color is interpreted asCellID
, so you can segment from microscopy images or draw arbitrary areas each with the same color) - you can run a helper model that distributes the cells as you need and saves a snapshot of the spatial configuration with
Time/SaveInterval
(then load the snapshotmodel.xml
and copy/paste itsCellPopulations/Population
from the snapshot model to your main model)
All these rules for initializing the spatial configuration of cells are included in the same xml file as the model rules. So you can reproduce the exact same initialization from the model.xml.
For a realistic epithelial cell arrangement, see this Blog post.
Description
Here we use the file Population_M.csv
with a list of seeding positions to initialize one of two cell populations with the shape of the letter M.
The video shows how the single nodes inflate to cell shapes during 100 Monte Carlo steps.
Model
Population_M.xml
XML Preview
<MorpheusModel version="4">
<Description>
<Title>Example-CellSorting-2D</Title>
<Details>Demo of cell population initialization from a file (here Population_M.csv).
</Details>
</Description>
<Global/>
<Space>
<SpaceSymbol symbol="l"/>
<Lattice class="square">
<Size symbol="size" value="200, 200, 0"/>
<BoundaryConditions>
<Condition type="periodic" boundary="x"/>
<Condition type="periodic" boundary="y"/>
</BoundaryConditions>
<Neighborhood>
<Order>2</Order>
</Neighborhood>
</Lattice>
</Space>
<Time>
<StartTime value="0"/>
<StopTime value="100"/>
<RandomSeed value="0"/>
<TimeSymbol symbol="time"/>
</Time>
<CellTypes>
<CellType name="ct1" class="biological">
<VolumeConstraint target="100" strength="1"/>
</CellType>
<CellType name="ct2" class="biological">
<VolumeConstraint target="100" strength="1"/>
</CellType>
<CellType name="medium" class="medium"/>
</CellTypes>
<CPM>
<Interaction default="0.0">
<Contact type2="medium" type1="ct1" value="12"/>
<Contact type2="medium" type1="ct2" value="6"/>
<Contact type2="ct1" type1="ct1" value="6"/>
<Contact type2="ct2" type1="ct2" value="6"/>
<Contact type2="ct2" type1="ct1" value="16"/>
</Interaction>
<MonteCarloSampler stepper="edgelist">
<MCSDuration value="1"/>
<Neighborhood>
<Order>2</Order>
</Neighborhood>
<MetropolisKinetics temperature="2"/>
</MonteCarloSampler>
<ShapeSurface scaling="norm">
<Neighborhood>
<Order>6</Order>
</Neighborhood>
</ShapeSurface>
</CPM>
<CellPopulations>
<Population type="ct1" size="0">
<CSVReader filename="Population_M.csv" scaling="1.0, 1.0, 1.0"/>
</Population>
<Population type="ct2" size="0">
<InitCircle mode="regular" number-of-cells="100">
<Dimensions center="size.x/2, size.y/2, 0" radius="size.x/3"/>
</InitCircle>
</Population>
</CellPopulations>
<Analysis>
<Gnuplotter time-step="10" decorate="false">
<Terminal name="png"/>
<Plot>
<Cells flooding="true" value="cell.type"/>
</Plot>
</Gnuplotter>
<ModelGraph include-tags="#untagged" format="dot" reduced="false"/>
</Analysis>
</MorpheusModel>
Population_M.csv
.
Downloads
Files associated with this model: