### Can there be two different cell types simultaneously residing in the same pixel?

61

views

2

Hi,

So what I observed from the movement of CC3D generalized cells is that they all move around each other, and not over each other. Is is possible to implement, say the phenomena where tumor cell moves along collagen fibers in the extracellular matrix? From my current knowledge of CompuCell3D, in order for this phenomenon to be possible, two different cell types must be on the same pixel at the same simulation step. Is this possible in CompuCell3D simulation? Also, in my simulation, I treat fibers as discrete generalized cells (I also freeze them) instead of chemical field.

Sincerely,

So what I observed from the movement of CC3D generalized cells is that they all move around each other, and not over each other. Is is possible to implement, say the phenomena where tumor cell moves along collagen fibers in the extracellular matrix? From my current knowledge of CompuCell3D, in order for this phenomenon to be possible, two different cell types must be on the same pixel at the same simulation step. Is this possible in CompuCell3D simulation? Also, in my simulation, I treat fibers as discrete generalized cells (I also freeze them) instead of chemical field.

Sincerely,

Community: CompuCell3D

### 2 Answers

6

CC3D can't have the same pixel as part of two cells, indeed biology and physics don't allow that either. The only time you would need that is if you model a 3D system (e.g., real life) in 2D (not real life). So, if you do your model in 3D there isn't any problem of overlapping cells and one cell can crawl along another cell (or pseudo cell).

If you really want 2D (perhaps because of the much faster calculation speed) then you can;

1. Have a cell crawl along one side of the fiber (easy), cells can't cross the fiber and you'll be limited to a simple fiber topology (what does the cell do when it reaches a point where two fibers cross?).

2. With a fair amount of fiddling get it to cross over the fiber by basically taking control of the identity of individual pixels (you can arbitrarily assign any pixel to any cell in Python).

3. You could treat the crawling cell as two separate cells, one on each side of the fiber, then link the two across the fiber with a focal point plasticity (or a spring) link.

4. If you really want 2D and a complex fiber topology with things like fibers crossing, then treating the fiber as a field is probably the way to go. There are two ways to do this;

4a. As a CC3D field, you can define a field that doesn't diffuse (set the diffusion constant to zero) and you can directly poke values into a field from python so you can generate an arbitrarily complex layout of fibers. This will work but even with the diffusion constant set to zero I believe the diffusion calculations will still be done and that might slow things down somewhat.

4b. Create a python (or numpy) 2D array with the same dimensions as the CC3D model and keep the fiber network in that array. No diffusion calculations are done. You can then use python to have that array interact with your cells by having the cell movement being a function of the interaction between the CC3D cell pixels and the separate matrix mapping the fibers.

In 3D things would be more straight forward, but also much slower.

Think about how you want to do things and let us know if you need help.

If you really want 2D (perhaps because of the much faster calculation speed) then you can;

1. Have a cell crawl along one side of the fiber (easy), cells can't cross the fiber and you'll be limited to a simple fiber topology (what does the cell do when it reaches a point where two fibers cross?).

2. With a fair amount of fiddling get it to cross over the fiber by basically taking control of the identity of individual pixels (you can arbitrarily assign any pixel to any cell in Python).

3. You could treat the crawling cell as two separate cells, one on each side of the fiber, then link the two across the fiber with a focal point plasticity (or a spring) link.

4. If you really want 2D and a complex fiber topology with things like fibers crossing, then treating the fiber as a field is probably the way to go. There are two ways to do this;

4a. As a CC3D field, you can define a field that doesn't diffuse (set the diffusion constant to zero) and you can directly poke values into a field from python so you can generate an arbitrarily complex layout of fibers. This will work but even with the diffusion constant set to zero I believe the diffusion calculations will still be done and that might slow things down somewhat.

4b. Create a python (or numpy) 2D array with the same dimensions as the CC3D model and keep the fiber network in that array. No diffusion calculations are done. You can then use python to have that array interact with your cells by having the cell movement being a function of the interaction between the CC3D cell pixels and the separate matrix mapping the fibers.

In 3D things would be more straight forward, but also much slower.

Think about how you want to do things and let us know if you need help.

4

In principle we could implement this feature but it would take a bit of code refactoring. Modeling ECM is somewhat challenging because the granularity of fibers is much finer than the way we represent cells on a fairly coarse lattice. I think that modelling ECM using external module where we model fibers as a e.g. vector field could be a better approach. You could "translate" deformation in the cell field into forces acting on fibers and vice-versa, translate stresses in the ECM fields into forces acting on cells ( in the the CC3D cell field). The "integration" of the ECM model with the cell-based model could fairly easily be done in Python . The advantage of such approach is that you would not have to modify existing CCC3D code but rather add external ECM modeling module that could be more sophisticated than anything you could currently mimic in CC3D

Please login to add an answer/comment or follow this question.