lack of cell motion in persistence2D example

30 views
Skip to first unread message

Ian Wong

unread,
Nov 25, 2022, 5:41:37 PM11/25/22
to Morpheus users
Dear All:
I just started with Morpheus and have been trying out persistence_2D in the built-in examples. Surprisingly, the cells seem to be stuck in place and are not moving much. I think this code is probably different from what was used to generate the example video, especially since there's an additional obstacle placed in the upper right


Any thoughts? Thanks! Ian

Morpheus users

unread,
Dec 5, 2022, 2:14:42 PM12/5/22
to Morpheus users
Dear Ian,

thank you for pointing out that the obstacle object in the Persistence_2D model was not described on the model page. We want to keep the movie with the symmetric flow pattern and have added the explanation "Things to try: Place static obstacles on the lattice and observe the flow pattern around the obstacle(s). The model included in the Morpheus-GUI has a corresponding CellType obstacle defined and already initializes a rectangular obstacle. To obtain the symmetric circular flow pattern in the video, simply disable the initialization of the obstacle under CellPopulations."

This model file on the repo page as well as the model included in the GUI menu do both run well on our machines. Random cell movement is visible after 100 time steps and swirls form by time 1000 as in this plot of cell trajectories over the past 40 time steps (the obstacle around x=140, y=110 causes the void in trajectories):
 
logger_plot_cell.center.x_cell.center.y_time_01000.png

Please use Morpheus version 2.3.2 (https://morpheus.gitlab.io/download/2.3.2/) and let us know what happens. There have been issues with versions 2.3.0 and 2.3.1 on some combinations of OS/processor architecture - these have been fixed in 2.3.2.

Best,
Lutz
for the Morpheus team

Lutz Brusch

unread,
Jan 15, 2023, 6:29:13 AM1/15/23
to Morpheus users
Dear Ian,

good questions, thank you.

Yes, regarding motion initialization, the attached model file "Persistence_2D_with_initialization.xml" is such an extension of your Persistence-2D model. We've added one line under CellType:

<DirectedMotion strength="(time&lt;time_init)" direction="(cell.center.y-size.y/2), -(cell.center.x-size.x/2), 0.0"/>

to enforce the direction of motion during an initial transient time (you may lower these 100 time steps by changing the Constant time_init under Global).

With the choice
direction="(cell.center.y-size.y/2), -(cell.center.x-size.x/2), 0.0"/>
you will initialize clockwise rotation around the center of the lattice. For counter-clockwise rotation change that to
direction="-(cell.center.y-size.y/2), (cell.center.x-size.x/2), 0.0"/>
and you may construct arbitrary vector fields under Global or even load them from a file and then use the symbol of such a vector field as direction attribute for DirectedMotion.

For more advanced models, you may also completely replace PersistentMotion by DirectedMotion and add your own submodel for the dynamics of the direction vector in each cell.

To initialize a confluent cell configuration, you can add InitVoronoi.

And for different boundary geometries, you may reset Lattice/Domain to a binary image file,
To change the boundary shape dynamically, you need to initialize "boundary cells" at defined locations near the domain boundary, let them adhere to the domain boundary and then shrink or grow their target volume during the simulation.

Best,
Jörn and Lutz

PS. A new Morpheus release 2.3.3 with parallelized CPM is available: https://morpheus.gitlab.io/download/latest/


On 13.01.23 08:00, Ian Wong wrote:
> Hi Lutz
> Thanks! My persistence_2D simulations now show collective rotational motion consistent with the example.
>
> Is there a way to initialize the simulation so that cells start out with confluent shape and steady state rotational velocity field, but in a different confining boundary condition? Right now it takes some time for cells to establish highly coordinated behaviors, which is slower than the effect of the boundary
>
> A more interesting case would be to gradually perturb the confining boundary and determine the effect on collective migration, but I think this is a bit more involved
>
> Thanks again for your help, Ian

Persistence_2D_with_initialization.xml
Reply all
Reply to author
Forward
0 new messages