Hi everyone,
I want to introduce a package I’ve been working on for a while now called CellularPotts.jl
(Here is the Github repo and the documention). The point of this package is to model cell behaviors like adhesion, division, and signaling to understand complex micro-environments found places like tumors or lymph nodes.
The model works on discrete integer grids where adjacent grid-points with the same number correspond to locations belonging to the same cell:
Here we have 3 “cells” of varying shapes and sizes.
The model uses a Metropolis–Hastings algorithm to randomly update grid-points to match neighboring IDs. To not end up with a jumbled mess, penalties are added to encourage cells to stick together and not grow too large.
This basic model form has been around for 30 years and is nothing new. However, what is new is combining this basic setup with other models (e.g. PDEs) to simulate complex cell behaviors. Some example from this package include:
Having one cell type patrol through another
(The dark purple color indicates where cells are trying to protrude, gray areas indicate no cell present)
Using DifferentialEquations.jl to simulate cell division
(This example works off of an example from the DifferentialEquations.jl Documentation)
Simulating molecules diffusing out of cells
The package is still far from being feature complete, but feel free to try it out and give suggestions!
Thank you!