Hi Randy,
true, 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) or TIFF (for pixel-based spatial layout where pixel color is interpreted as CellID, 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 snapshot model.xml and copy/paste its CellPopulations/Population from the snapshot model to your main model)
So there is a lot of flexibility for initializing the spatial configuration of cells and all this is defined in the same xml file as the model rules. So you can reproduce the exact same initialization from the model.xml.
For inspirations, you may browse the >80 models in the repo (
https://morpheus.gitlab.io/model/) and then see the CellPopulations section of interesting models. And the InApp-Docu explains all options and parameters context-sensitive when you load an interesting model and click on an initialization statement under CellPopulations.
Best,
Lutz