Modeling cell to cell communication

107 views
Skip to first unread message

Deepa

unread,
Oct 13, 2021, 7:58:42 AM10/13/21
to Morpheus users

Hi All,

I am trying to build a simple model to understand cell to cell communication. I was looking for libraries that focus on modelling , I came across Morpheus in the literature and also got to know more about Morpheus during the FitMultiCell presentation at the COMBINE conference.

To start with, I want to model the diffusion of a drug molecule from one cell to an adjacent cell. While reading through  Walter's  thesis I found the  illustration shown below. In my model , I don't want to model the extracellular medium , instead I want to model the  intercellular communication i.e. reaction-diffusion between cells.

(ref

Untitled.png


 If there are examples of such a system that is already set up and simulated in Morpheus, could someone please direct me to the examples available on GitHub repository?

I would also like to know where I can locate the Morpheus model file  of the figure displayed in  table 3.1 (3D cell shapes imported from TIFF images (image courtesy of Zerial lab, MPI-CBG).) of Walter's thesis.  (Unfortunately, I couldn't find it here Supplementary Online Material under http://walter.deback.net/thesis)

Untitled.png

Thanks a lot for your time and kind attenton,

Deepa

Lutz Brusch

unread,
Oct 13, 2021, 1:08:01 PM10/13/21
to Morpheus users
Hi Deepa,
welcome to Morpheus!
Yes, modeling cell-cell communication is very well supported by Morpheus. The closest example to your idea of coupled reactions and exchange between cells is in this online course "From PDE to tissue": https://morpheus.gitlab.io/courses/from-pde-to-tissue/
You can download the xml files for the 1D, 2D and 3D wave propagation from cell to cell from within the course pages.
If you need anything beyond these examples, please let us know.
The particular image/model from Walter's table 3.1 was not stored in the repo back then (the repo was started later) and we do not have it.
Best,
Lutz

Deepa

unread,
Oct 14, 2021, 7:30:42 AM10/14/21
to Lutz Brusch, wal...@deback.net, morpheu...@googlegroups.com
Hi Lutz and Walter,

Are there other 3D model files similar to

the figure displayed in  table 3.1 (3D cell shapes imported from TIFF images (image courtesy of Zerial lab, MPI-CBG).) of Walter's thesis.  (Unfortunately, I couldn't find it here Supplementary Online Material under http://walter.deback.net/thesis)
 
 available in the repository?

--
You received this message because you are subscribed to a topic in the Google Groups "Morpheus users" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/morpheus-users/QAl-I1RV0Cc/unsubscribe.
To unsubscribe from this group and all its topics, send an email to morpheus-user...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/morpheus-users/1423d1f4-5820-41cf-b6b0-1ef55ad5dab9n%40googlegroups.com.

Deepa

unread,
Oct 15, 2021, 12:54:40 PM10/15/21
to Lutz Brusch, morpheu...@googlegroups.com
Hi Lutz,

I'm sorry, I have a few more questions.

1. Could you please clarify what `length of the contact interface`  means? Is it the contact length between two cells ? Would that be area in case of 3D?
 
ContactLogger records the all aspects of cell-cell contacts, such as the cell ids of both cells and the length of the contact interface.

time cell.id cell.type neighbor.id neighbor.type length
1640 1 0 2 0 15.2
1640 2 0 1 0 15.2
1660 1 0 2 0 17.6
1660 2 0 1 0 17.6
...

2. In the model_graph.dot file generated after running PlanarCellPolarity_Voronoi.xml I could find the coordinate positions of the voronoi cells. I am not sure how to export the geometry for visualization in other tools like Paraview. I found vtk options are available but I couldn't find how to export this 2D lattice in vtk format.

3. "NodeLength specifies the physical length of a lattice node." -- can we relate the node length/physical length to the diameter of each voronoi cell


Thank you,
Deepa

On Fri, Oct 15, 2021 at 8:37 PM Deepa <deepama...@gmail.com> wrote:
Thanks a ton, Lutz. The tutorial videos are helping me a lot in understanding how a system is set up in Morpheus. 

On Fri, Oct 15, 2021 at 5:51 PM Lutz Brusch <lutz....@tu-dresden.de> wrote:
You received this message because you are subscribed to the Google Groups "Morpheus users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to morpheus-user...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/morpheus-users/CAGchuN7ExLwQEgLCoDtZhtgmfqxzmfZVB197c59hFi3hgo2GWQ%40mail.gmail.com.

--
Dr. Lutz Brusch
Research Group Leader, PI of Morpheus.lab
Center for Information Services and High Performance Computing (ZIH)
Technische Universität Dresden
D-01062 Dresden
Germany
email: lutz....@tu-dresden.de

www: https://tu-dresden.de/zih and https://digs-bb.de/brusch
Tel: +49 (0) 351 463 38553

Lutz Brusch

unread,
Oct 15, 2021, 4:07:35 PM10/15/21
to Morpheus users
Hi Deepa,

1. yes, `length of the contact interface` to specifically polarized neighbors is important for PCP propagation and incorporated in the model via MembraneProperties. You are right, these are contact areas in 3D and the ContactLogger can report them. Most models use the NeighborhoodReporter which computes statistics over the signals from all neighbor cells and you may select the weighting as 'cell' (independent of contact interface length) vs. 'length' (proportional to contact interface length).

2. No, model_graph.dot stores the topology of the model, the model graph that is displayed below the model description in the GUI. You can export the cell configuration to ...xml.gz (such that you can load it later and reproducibly run models on the same cell configuration. To visualize it in Paraview, add the plugin VtkPlotter to the Analysis section of the model.

3. Yes, the NodeLength acts like a spatial unit. Your cells have extensions of multiple lattice nodes in each direction and each lattice node has one NodeLength. You may use the preset symbol 'cell.length' to get the length of the long axis of a cell in number of lattice nodes.

Best,
Lutz

Deepa

unread,
Oct 16, 2021, 9:22:00 AM10/16/21
to Lutz Brusch, morpheu...@googlegroups.com
Hi Lutz,
I set `SaveInterval` to 0 in `Time` and the .xml.gz file is generated after the run.

The last cell id present in the uncompressed xml file is Cell id="223" (also specified in the size attribute Population type="cells" size="223" of the Cell Population node).
When I check  CellPopulations node `InitPoissonDisc number-of-cells="350"`. So I am slightly confused here. Could you please explain how to relate
cell size in the xml and number-of-cells defined in CellPopulations node.

Thanks so much for your time and kind attention,
Deepa

 

Deepa

unread,
Oct 16, 2021, 11:46:05 AM10/16/21
to Lutz Brusch, morpheu...@googlegroups.com

Sorry for the naive questions again
I don't understand what Nodes are. As per the documentation `list of lattice nodes occupied by the cell (lattice coordinates!)` . Example: <Nodes> 68, 75, 0; .... </Nodes>
68 and 75 here corresponds to lattice index? How can we find the position of these nodes? Do these nodes define the size of the Voronoi cell  (i.e <Cell id="1"> in this case)

<Cell id="1">
<Center>72.076388889,81.409722222,0</Center>
<Nodes>68, 75, 0;69, 75, 0;70, 75, 0;71, 75, 0;67, 76, 0;68, 76, 0;69, 76, 0;70, 76, 0;71, 76, 0;72, 76, 0;73, 76, 0;74, 76, 0;75, 76, 0;76, 76, 0;67, 77, 0;68, 77, 0;69, 77, 0;70, 77, 0;71, 77, 0;72, 77, 0;73, 77, 0;74, 77, 0;75, 77, 0;76, 77, 0;77, 77, 0;78, 77, 0;79, 77, 0;66, 78, 0;67, 78, 0;68, 78, 0;69, 78, 0;70, 78, 0;71, 78, 0;72, 78, 0;73, 78, 0;74, 78, 0;75, 78, 0;76, 78, 0;77, 78, 0;78, 78, 0;66, 79, 0;67, 79, 0;68, 79, 0;69, 79, 0;70, 79, 0;71, 79, 0;72, 79, 0;73, 79, 0;74, 79, 0;75, 79, 0;76, 79, 0;77, 79, 0;78, 79, 0;67, 80, 0;68, 80, 0;69, 80, 0;70, 80, 0;71, 80, 0;72, 80, 0;73, 80, 0;74, 80, 0;75, 80, 0;76, 80, 0;77, 80, 0;78, 80, 0;67, 81, 0;68, 81, 0;69, 81, 0;70, 81, 0;71, 81, 0;72, 81, 0;73, 81, 0;74, 81, 0;75, 81, 0;76, 81, 0;77, 81, 0;78, 81, 0;67, 82, 0;68, 82, 0;69, 82, 0;70, 82, 0;71, 82, 0;72, 82, 0;73, 82, 0;74, 82, 0;75, 82, 0;76, 82, 0;77, 82, 0;67, 83, 0;68, 83, 0;69, 83, 0;70, 83, 0;71, 83, 0;72, 83, 0;73, 83, 0;74, 83, 0;75, 83, 0;76, 83, 0;77, 83, 0;68, 84, 0;69, 84, 0;70, 84, 0;71, 84, 0;72, 84, 0;73, 84, 0;74, 84, 0;75, 84, 0;76, 84, 0;68, 85, 0;69, 85, 0;70, 85, 0;71, 85, 0;72, 85, 0;73, 85, 0;74, 85, 0;75, 85, 0;76, 85, 0;68, 86, 0;69, 86, 0;70, 86, 0;71, 86, 0;72, 86, 0;73, 86, 0;74, 86, 0;75, 86, 0;76, 86, 0;69, 87, 0;70, 87, 0;71, 87, 0;72, 87, 0;73, 87, 0;74, 87, 0;75, 87, 0;76, 87, 0;69, 88, 0;70, 88, 0;71, 88, 0;72, 88, 0;73, 88, 0;74, 88, 0;75, 88, 0;70, 89, 0;71, 89, 0;72, 89, 0</Nodes>

Deepa

unread,
Oct 18, 2021, 12:42:22 PM10/18/21
to Lutz Brusch, morpheu...@googlegroups.com
Hello Lutz,

Could you please share some example Morpheus models which study multicell communication in 3D?

Thanks a lot,
Deepa

Lutz Brusch

unread,
Oct 26, 2021, 6:15:45 AM10/26/21
to Morpheus users
Hi Deepa,
1. Regarding "size" vs. "volume": CellPopulation/Population/size gives the minimum size of the cell population, i.e. the minimum number of cells that you expect to be generated upon initialization. One or multiple generators may add such cells below the Population element and each specifies its own contributed "number-of-cells". During simulation, the symbol "celltype.<name>.size" (where <name> is your chosen name of a CellType) will provide the up-to-date size of the cell population of the chosen cell type. So all the above "size" options refer to the population size, not the cell size. For cell size, you have to use the symbol "cell.volume" which automatically measures the size of each considered single cell during simulation, this is an observable and has number of lattice nodes as its unit. Most CPM models control the emerging sizes of cells through the plugin "VolumeConstraint" and its attribute "target". The value of "target" is again in number of lattice nodes and is subject to stochastic CPM updates, hence fluctuates, and potentially competes with other plugins. Please open the GUI/Examples/CPM/CellSorting_2D model and therein change the target value of one of the two cell types from 200 to other values and observe the result.
2. Regarding "Nodes", these are the triples x1,y1,z1;x2,y2,z2;... of the discrete lattice nodes=coordinates=voxels that are occupied by the cell (and define its geometric shape in 3D or 2D when all zi=0).
3. Regarding multicell communication in 3D, the communication model is identical in any dimension. The plugin "NeighborhoodReporter" will automatically sample from the correct parts of the n-dimensional lattice around each considered cell. As an example, you may start from the built-in GUI/Examples/CPM/CellSorting_3D model and use the NeighborhoodReporter for "b" (for each cell, counting the neighbor cells of the opposite type) to trigger the plugin ChangeCellType to flip a cell that has sorted into a 3D patch of like cells and thereby disturb cell sorting (as visible in the jumps of the attached time course of the cumulative area between all contacting cells of different types). You may first do these small model edits yourself and then compare to the attached model which has the ChangeCellType flip in ct1 and in ct2. Note, the Analysis/Gnuplotter visualizes just a 2D slice through the 3D system and the model is run in 3D (the TiffPlotter in parallel gives the 3D visualization).
Best,
Lutz
Example_3D_multicell_communication.png
Example_3D_multicell_communication.xml

Deepa

unread,
Nov 1, 2021, 12:56:15 AM11/1/21
to Lutz Brusch, Morpheus users
Hi Lutz,

Thanks a lot for the explanation.

Unfortunately, I am facing the same problem as before while trying to visualize the contents of the tif file generated after running the model
Example_3D_multicell_communication.xml. I faced the same issue while trying to visualize the tif file generated from 3D cell sorting model via TiffPlotter.

image.png


I also tried to load the same tif file in another visualizer but I find only a blank volume.
image.png




On Thu, Oct 28, 2021 at 2:25 AM Lutz Brusch <lutz....@tu-dresden.de> wrote:
Hi Deepa,

1. Yes, you as the modeler decide for the spatial unit (often 1 micrometer is appropriate, so let us here choose 1 micrometer) and the time unit (often 1 minute is appropriate) of your model. If Lattice/Nodelength is kept at 1, then a lattice node will be 1 micrometer wide. You then have to scale all parameters that you know from measurements or literature sources to these same units. Then all results can be interpreted with these same units. Hence you pick a lattice size and target volume that correspond to your chosen units and then cell.volume in a 3D model will have the unit µm^3 (cubic micrometers). In 2D, cell.volume will give the area of the cell in µm^2 (square micrometers). The surface in 3D or circumference in 2D of the cell will get the unit µm^2 (square micrometers) or µm, respectively. The shape of the cell is internally smoothed such that you do not get artifacts from lattice anisotropy. The degree of this smoothing is controlled by the parameter CPM/Shape/Neighborhood/Order or Distance (see the CellSorting example). This is also described in the GUI/Documentation when you click on CPM/Shape/Neighborhood. The volume and surface are then calculated from the smoothed cell shape instead of counting all edges of the voxels that you see in the visualization.

2. The visualization of the GUI/Example/CellSorting is determined by Analysis/Gnuplotter/Plots and that has three Plot sections. The first gives the CellType ct1 vs. ct2, the second counts the number of neighbors of a different type and the third plot sums the contact lengths with all neighbors of a different CellType. These Properties b and b2 are calculated for each cell as defined by NeighborhoodReporters in each CellType.

Please also use the GUI/Documentation and click on each line in all model sections. The documentation should explain a lot of these (but not yet all) aspects. There is also a navigation panel above the documentation panel and you may walk through parts of it. We'll also further extend that documentation.

Best,
Lutz

On 27.10.21 18:26, Deepa wrote:
Hi Lutz, 
Thanks a lot for the detailed explanation. This clarifies a lot of my doubts. 

Kindly excuse me for asking a few more questions 

1. Can we translate the cell size (given by cell.volume = number of lattice nodes) to physical dimensions?
e.g. if I want to compute the area of a cell (composed of several lattice nodes) how can we compute it? From what I understand the cell.surface symbol
gives the cell's perimeter in lattice nodes; would it be right to retrieve the coordinates of the lattice nodes that form the boundary of each cell to compute the area in physical units?
Likewise, I would like to know how we can compute the volume of a cell in physical units.


2. Could you please explain a bit about what the id's (0, 2, 17) on the cells (yellow, white, red regions in the center and right plots) denote?
cp.png

Thanks a lot for your time and kind attention,
Deepa

Lutz Brusch

unread,
Nov 1, 2021, 12:11:07 PM11/1/21
to Morpheus users
Hi Deepa,

the built-in preview of 3D results files from the TiffPlotter is not complete yet, please use the separate viewer Fiji (https://fiji.sc = powerful, free and open source) for visualization.

As is, the TiffPlotter was set to export the entire time-series of 3D stacks into one Tiff-file. After opening that in Fiji, you need to click Image/Hyperstack/Stack-to-Hyperstack/xyztc to separate the time axis and skip through time or play movies in Fiji's 3D-Viewer (just done with one channel, worked as expected). To set that workflow up, maybe first reduce to 8-bit format in TiffPlotter and switch off the "timelapse" attribute and export only one channel instead of two and then switch on one after the other as needed.

As the first exported time point (t=0) just has a single voxel per nascent cell, as initialized, that time point may not be displayed by some rendering modes and appear empty. So you may export a later time point with "timelapse" switched off to see it with other 3D viewers. We test with and recommend Fiji.

Best,
Lutz

Note, a separate 3D visualization workflow exists with VTKPlotter and ParaView. That always writes one file per time-point.

Deepa

unread,
Nov 5, 2021, 1:09:31 PM11/5/21
to Lutz Brusch, Morpheus users
Hi Lutz,

Thanks so much for the clarification.


 Hence you pick a lattice size and target volume that correspond to your chosen units and then cell.volume in a 3D model will have the unit µm^3 (cubic micrometers).

image.png

To generate cells with volume of 1000 um^3 per cell, in CellType > Volume Constraint > target = 1000 is set as the value (which is
1000 number of lattice nodes and each lattice node is assumed to be 1 um in length). 

I would like to confirm if my understanding is right.  I hope this is the only parameter that has to be defined by the user to constrain the size/volume of cells.

Thanks a lot again for the great support,
Deepa

Lutz Brusch

unread,
Nov 5, 2021, 2:06:28 PM11/5/21
to Morpheus users
Hi Deepa,

yes, this is correct.

And now the next level: Depending on what else your model does, the 3D simulation may appear slow. One way to speed up would then be to reduce the spatial resolution, e.g. by setting Space > Lattice > NodeLength to 2 (then a lattice node spans 2 µm along each axis) and reduce the CellType > VolumeConstraint > target = 125 (which gives the same physical cell size of 125*2^3=1000µm^3).

Best,
Lutz

Deepa

unread,
Nov 6, 2021, 12:07:12 PM11/6/21
to Lutz Brusch, Morpheus users

Thanks a lot, Lutz.

I am confused between the options available for defining the number of cells/(cell population size). Like you have explained in the previous emails

CellPopulation/Population/size gives the minimum size of the cell population, i.e. the minimum number of cells that you expect to be generated upon initialization. One or multiple generators may add such cells below the Population element and each specifies its own contributed "number-of-cells".


While the user has the option to specify the number of cells for each cell type in cell population, I am not sure how the  Space > Lattice > Size ( I am using Cubic lattice and size 100,100,100)
option has to be defined.  Once the target cell size and Lattice >Size is defined by the user, would this fix the number of cells in the system ( if the target size of single cell is 
125 lattice nodes then can we compute the number-of-cells to be total number of lattice nodes 100x100x100 in cubic volume/ no. of lattice nodes occupied by each cell i.e 10^6/125 cells).
I am confused between this and the CellPopulation/Population/size available for directly defining the number-of-cells.  Could you please clarify this?


In the documentation available for Lattice> Size 
NOTE: Contrary to other places, size is given in nodes.
If my understanding is right, size here again refers to the number of lattice nodes that for the 3D cubic lattice.



Looking forward to hear from you,
Thanks,
Deepa


 

Deepa

unread,
Nov 7, 2021, 12:10:28 PM11/7/21
to Lutz Brusch, Morpheus users
Hi Lutz,
I am not sure how to add the cell.length option in the results


<Cell id="26">
...............
<PropertyVectorData symbol-ref="polC" value="0.11138074965,0.086910955042,0"/>
<PropertyData symbol-ref="orientation" value="0.2"/>
<PropertyData symbol-ref="sumC" value="26.875437853"/>
<Center>51.285714286,79.185714286,0</Center>
<Nodes>54, 73, 0;52, 74, 0;53, 74, 0;54, 74, 0;50, 75, 0;51, 75, 0;52, 75, 0;53, 75, 0;54, 75, 0;48, 76, 0;49, 76, 0;50, 76, 0;51, 76, 0;52, 76, 0;53, 76, 0;54, 76, 0;48, 77, 0;49, 77, 0;50, 77, 0;51, 77, 0;52, 77, 0;53, 77, 0;54, 77, 0;48, 78, 0;49, 78, 0;50, 78, 0;51, 78, 0;52, 78, 0;53, 78, 0;54, 78, 0;48, 79, 0;49, 79, 0;50, 79, 0;51, 79, 0;52, 79, 0;53, 79, 0;54, 79, 0;48, 80, 0;49, 80, 0;50, 80, 0;51, 80, 0;52, 80, 0;53, 80, 0;54, 80, 0;48, 81, 0;49, 81, 0;50, 81, 0;51, 81, 0;52, 81, 0;53, 81, 0;54, 81, 0;48, 82, 0;49, 82, 0;50, 82, 0;51, 82, 0;52, 82, 0;53, 82, 0;54, 82, 0;49, 83, 0;50, 83, 0;51, 83, 0;52, 83, 0;53, 83, 0;54, 83, 0;49, 84, 0;50, 84, 0;51, 84, 0;52, 84, 0;53, 84, 0;54, 84, 0</Nodes>
</Cell>

In the XML file present in the output folder, I could view the attributes of cell such as cell center. I would like to know
how to add cell. length (cell's length in lattice nodes) attribute in the results. I couldn't add the Symbol directly to the analysis tab.

Could you please explain how to add and save this attribute?

Many thanks,
Deepa

Lutz Brusch

unread,
Nov 10, 2021, 11:54:29 AM11/10/21
to Morpheus users
Hi Deepa,

Regarding lattice size vs. cell number: you have all the freedom to control cell density incl. "empty" space between cells that is typically filled by fluid medium in an experiment and automatically filled by the (default) CellType "medium" in a CPM model.
1. Hence number-of-cells is not predefined by lattice size and target volume. You can independently set the size of the 3D space (Space > Lattice > Size) in which cells (CellPopulation > Population > Init... > number-of-cells) are modeled. All the empty lattice nodes upon initialization are automatically set to medium which can later get replaced by growing and proliferating cells. 2. To fill the whole lattice with cells, you may adjust number-of-cells as you proposed. You need to add a Constant "target_volume" to either CellType or Global and insert this Constant into CellType/VolumeConstraint/target. Then you can start calculating expressions anywhere with that Constant, e.g. CellPopulation > Population > Init... > number-of-cells set to the expression "size.x*size.y*size.z/target_volume" instead of a number. You may also calculate this number inside CellType or Global as another Constant and insert this other Constant in number-of-cells and then in parallel report that Constant in a Logger to track how may cells should be there.
3. If you additionally want to densely pack your cells right from the start, then add CellPopulation > Population > InitVoronoi (if all cells are of the same CellType but there are further ways to achieve this).

Regarding cell.length output: you have two options.
4. The xml that you output at StopTime (as you have Time > SaveInterval = 0) contains all the occupied lattice nodes and Properties per cell, this is all the information that is needed to restart and seamlessly continue the simulation. You may add a dummy process to your CellType in which a new Property "cell_length" (just write it different than the pre-existing Symbol cell.length) gets set to the current value of the internally calculated and automatically provided Symbol "cell.length". You will then find this Property in the xml output. You may trigger this dummy process at the time point when it is needed for output (e.g. by adding an Event with Condition "time == ...." and Rule "cell_length = cell.length") or you keep track continuously by putting the Rule into a System in that CellType.
5. However, the typical way would be to add a Logger to Analysis and add the Symbol "cell.length" under Input. This would write a csv file (by default and you can customize the format) with time (you choose the log interval in Logger) and cell.id and cell.length. This logger output will be easy to post-process. To test it, please see the GUI > Examples > CPM > CellSorting_3D.xml which uses Logger for three observables and replace the Symbol "b" by "cell.length".
Both options will output each cell's long axis length in number of lattice nodes.

Best,
Lutz

Deepa

unread,
Jan 27, 2022, 12:32:27 PM1/27/22
to Lutz Brusch, Morpheus users
Hi Lutz ,

I'm sorry for the really late post.

I tried setting up the system but I faced a problem.

Before setting up the equations, I would like to visualize the initial configuration of the cell population and see whether the properties are set right
by checking the contact logger and cell.length in the output csv file. But currently these are not written to the output csv. 

Error: Can't open file: ''!
Reading the output of simulation not possible!

Could you please have a look at the file? 

test.xml

Deepa

unread,
Jan 28, 2022, 2:28:02 AM1/28/22
to Lutz Brusch, Morpheus users
Dear Lutz,

I tried creating the model in a new file and it ran without any issue (25 cells were generated and I could also view the cell length output). When I try running the model again
I get the same error message reported in the previous email.

Error: Can't open file: ''!
Reading the output of simulation not possible!

I've attached the model file for your kind reference. Please have a look, I am not sure why I am not able to run it.

Also, in the results that were generated

time cell.id cell.type neighbor.id neighbor.type length

contact logger was empty (please see the png file attached, the cells aren't closely packed for the input specified, I am not sure if I made a mistake).

image.png

and the cell.length attribute in logger.csv is 1 for all cell-ids. I was expecting the no.of lattice nodes returned by cell.length attribute >1, since this would
translate to radius of the biological cell in physical units.


Thank you,
Deepa

contact_logger.txt
Example_3D.xml
logger.csv
plot_00000.png

Lutz Brusch

unread,
Jan 29, 2022, 12:57:58 PM1/29/22
to Morpheus users
Dear Deepa,

thanks for sharing your model.

There may have been a misunderstanding of the size attribute for Population/InitRectangle. This defines the size of the rectangular subdomain within which the requested number of cells get seeded but each cell with just ONE lattice node. Hence your disconnected cells and correctly empty contact_logger.txt and correctly short cell.length of 1. Your settings of size.x/2, size.y/2, size.z/2 have limited the single-node cells to the bottom-lower-left octant. Then you would need a transient CPM to expand those cells towards their target volumes or the InitVoronoi Plugin added or a different Init... Plugin.

- In the attached model "...new.xml", I've filled your 3D lattice with 25 cubes of your chosen target volume by means of the InitCellObjects Plugin. This cell configuration is confirmed by the output: Gnuplotter/Plot has a slice attribute that by default =0 and draws the bottom slide, you may reset this to =2 for the center slice or copy/paste the Plots to draw multiple slices. Your TiffPlotter may not be needed but also works and ImageJ-3DViewer can render the cell.id for instance as intensity of red, as attached. The ContactLogger lists for each cell the properties of its neighboring cells. The cell.length comes out as 6.3 which is the long axis of an ellipsoid along the cube diagonal. Note, this is not the radius for a spherical cell but the diameter.

- In the attached model ...new2.xml, I've used your Population/InitRectangle with a spatial random-offset=3 (nodes) together with InitVoronoi to generate variable cell sizes and contacts. The corresponding plots "...new2..." are attached as well.

- So far, Time/StopTime = 0 (this is the default to at least launch all model components and let you check for bugs, yet to make it obvious that you still need to select a meaningful duration of the actual simulation). When you add dynamics, make sure to increase StopTime as needed.

- Note, even with high Time/StopTime, your VolumeConstraint will not affect cell shapes as long as you don't activate the CPM section of your model (double-click on CPM in the GUI) and select a suitable temperature (=1 by default). Keeping CPM off, Morpheus will use the initial cell configuration and run all other processes on top of that static geometry.

- I could not reproduce your error message "...Can't open file...". The new model runs again and again.

Best,
Lutz

DeepaMahm_Example_3D_new2_logger.csv
DeepaMahm_Example_3D_new2.xml
DeepaMahm_Example_3D_new2_contact_logger.txt
DeepaMahm_Example_3D_new_plot.png
DeepaMahm_Example_3D_new_tiff.png
DeepaMahm_Example_3D_new.xml
DeepaMahm_Example_3D_new2_plot.png
DeepaMahm_Example_3D_new_logger.csv
DeepaMahm_Example_3D_new_contact_logger.txt

Deepa

unread,
Feb 4, 2022, 6:52:25 AM2/4/22
to Lutz Brusch, Morpheus users
Dear Lutz,

This defines the size of the rectangular subdomain within which the requested number of cells get seeded but each cell with just ONE lattice node

I failed to understand this from the description given in the documentation.  Thanks so much for the clarification.

In Example3D_new.xml, 
InitCellObjects/Arrangement/Displacements 5,5,1

From what I understand, (x,y,z)  defines the distance between cell centers in lattice units. If this is correct, I 
am not sure how to infer the z-axis. The dimensions defined in Lattice/Size (25,25,5) sets 5 lattice nodes along the z-direction (to generate
a single layer of cell in the z-direction). 

So I was confused if InitCellObjects/Arrangement/Displacements 5,5,1
should be InitCellObjects/Arrangement/Displacements 5,5,2.5.

Please correct me if I am wrong.


Thank you so much for all the wonderful explanations.

Deepa

unread,
Feb 4, 2022, 12:16:14 PM2/4/22
to Lutz Brusch, Morpheus users
Dear Lutz,

If you don't mind, could you please share the brightness and contrast settings that you used to visualize the 3D volume image that was shared in the previous email?

I couldn't see the rectangular subdomains when I tried Plugins> 3D viewer in ImageJ. Then I adjusted the brightness and contrast of the slices in the 
tif stack (file attached for your kind reference)  that was loaded. This too didn't give me the expected result (similar to the image shared by you). Instead, I could only see the below (generated after running --Example3D_new.xml).

image.png

Also, could you please have a look at my other question posted here
?

Thanks,
Deepa
cell.id.tif

Lutz Brusch

unread,
Feb 4, 2022, 2:18:47 PM2/4/22
to Morpheus users
Dear Deepa,

the Attributes of InitCellObjects/Arrangement control the loop around the (repeatedly placed) object. The object is a cube (Box) in our case and the placement relative to z does not concern the loop over rows and columns in the x-y plane but the z-value of Box/Origin (which is the corner of the cube at 0,0,0) and the Size of this prototypical cube (5,5,5). So you define the Origin position and not the center position, hence no 2.5 needed here.

The loop in InitCellObjects/Arrangement should then generate 25 copies and this requires InitCellObjects/Arrangement/Displacements 5,5,0 as no further layers are needed along z. There was a bug in the earlier Example3D_new.xml which wrongly set 5,5,1 - sorry.

Regarding Fiji, I simply pressed the Auto button in Image/Adjust/BrightnessContrast and then Apply (to all slices).

Best,
Lutz

Deepa

unread,
Feb 5, 2022, 3:13:36 AM2/5/22
to Lutz Brusch, Morpheus users
Dear Lutz,

Thanks a lot for the clarification.

Regarding visualization in ImageJ,

image.png
I saved the tif stack in 32-bit format and loaded the tif file in ImageJ, using default brightness and contrast I could view the below.


image.png
But there appears to be a problem in the second image of the stack (slice 1) (in both 8-bit and 32-bit formats; rest of the slices appear fine)

image.png
I think as a result of this when the volume is rendered cubic subdomains aren't visible for me.
image.png



I tried to check the second slice GnuPlotter>Plot>slice 1  and I don't find any issue
image.png

Could you please let me know if you faced a similar issue? I am not sure how to get the right rendering in ImageJ.


Thanks a lot for your time
Deepa

--
You received this message because you are subscribed to a topic in the Google Groups "Morpheus users" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/morpheus-users/QAl-I1RV0Cc/unsubscribe.
To unsubscribe from this group and all its topics, send an email to morpheus-user...@googlegroups.com.

Lutz Brusch

unread,
Feb 7, 2022, 7:48:00 AM2/7/22
to Morpheus users
Dear Deepa,

true and same for me, the OME header data seems to interfere with that single slice. Please set the Analysis/TiffPlotter/OME-header to false, then it works for now. We'll fix the OME header in a forthcoming release.

Best,
Lutz
Reply all
Reply to author
Forward
0 new messages