Correct segmentation errors
No matter how good the image stack is, there are likely to be segmentation errors, especially with samples such as Aquilegia floral meristems, that contain hundreds to thousands of cells in a stack. It is very important to correct as many errors as possible at this step, since it will greatly reduce the time that will likely be needed in future processes to correct parental labeling errors (which is relatively more time-consuming compared to correcting segmentation errors). It is also important to constantly save the newer version of the mesh (e.g., 20210207_r8_A1_s.e0.mgxm). The two processes with opposite functions, “Watershed Segmentation” and “Segmentation Clear”, are located right next to each other on the list, and it is not impossible to click the wrong button during processing. If the “Segmentation Clear” is run by accident on the whole mesh, while the newest version of the corrected mesh has not been saved, it means starting over again.
Checking segmentation errors can be done by zooming in on one part of the mesh and selecting “Vtx” under the Surface panel of the Main tab, and then accessing the Mesh panel under the “Cells” option. By toggling back and forth between the checked and unchecked options in the Mesh checkbox, you can compare the cell wall positions and segment boundaries. Correct all the possible errors in that region, then move to another part of the mesh, and repeat the process. There are a few types of common segmentation errors (Figures 5–7):
-
If a cell is over-segmented: If cell A is over-segmented into A1 and A2, select “Add label to selection
” on the left toolbar, press Alt-key, and click on A1 (or A2). Then select “Fill label (Alt+M)
” on the left toolbar, press Alt-key, and click on A2 (or A1) (Figure 5).

Figure 5. Examples of over-segmented cells.
(a) How over-segmented cells (outlined in red) look under the Surface/Cells view. (b) How over-segmented cells (outlined in red) look under the Surface/Vtx view. (c) How the mesh looks. Over-segmented cells can be easily spotted by comparing between (c) and (b). (d) How cells look after over-segmentation has been corrected.
-
If a cell is under-segmented: This is a relatively common situation for cells at the boundary of the stack (due to faint signals), and at the organ boundaries (because the cells at the boundary are much smaller than the auto-segmentation radius). Click “Select points in mesh (Alt+V)
” on the left toolbar, press Alt-Key, and select parts of the cell that need to be corrected (as long as some vertices in that cell were selected, it is fine). Then, under the Process tab, run Mesh → Selection → Extend to Whole Cells, which selects all the vertices in that target cell (Figure 6). On the left toolbar, click on “Erase selected
” to remove the labels from the cell. Labels can also be removed by running Mesh → Segmentation → Segmentation Clear under the same Process tab (Figure 6). Then choose “Add new seed (Alt+B)
” from the left toolbar, press the Alt-key and the left click of the mouse, to draw the outlines of the cells (Figure 6). Theoretically, the cells can be segmented as long as there is at least one seed inside, but drawing out the rough outlines of the cells can help with correct segmentation, because sometimes the cell boundaries are faint. Lastly, under the Process tab, run Mesh → Segmentation → Watershed Segmentation (Figure 6).

Figure 6. Examples of under-segmented cells.
(a) An under-segmented cell outlined in red. (b) Under-segmented cells can be easily spotted by comparing the segmented outlines to the original mesh. (c) The label of the under-segmented cell being cleared. (d) The two cells being re-seeded. (e) How the labels look after the under-segmentation is corrected.
-
If the boundary of a cell is incorrect: This is most likely due to a faint signal in the cell wall staining (Figure 7). On the left toolbar, click “Add label to selection
”, then press the Alt-key, and click the cell that needs to be corrected. Then choose “Add current seed (Alt+N)
” from the left toolbar, use the left click of the mouse to fill in the gaps, and draw the correct boundary (Figure 7). Then, under the Process tab, run Mesh → Segmentation → Watershed Segmentation (Figure 7).

Figure 7. Example of a cell with incorrect boundary.
(a) Red arrow pointing to the incorrect boundary of a cell. (b) How the original segmentation looked. (c) How the corrected segmentation looked.
-
Remove the cells on the boundary of the mesh: After all visible errors are corrected on the mesh, run Mesh → Cell Mesh → Fix Corners Classic, under the Process tab. Then click “Select points in mesh (Alt+V)
” on the left toolbar, press Alt-key, and select cells on the boundary of the mesh. Then, under the Process tab, run Mesh →selection → Extend to whole cells. After the cells are selected, click “Delete selected” on the left toolbar, and save the mesh as “20210207_r8_A1_s.e4.mgxm”.
This last step is important because the sizes of the cells on the boundary are likely to be inaccurate due to several reasons: 1) the confocal Z-stack may have stopped scanning at this point, without including the entire cell on the boundary; and 2) we arbitrarily trimmed off the bottom of the stack in step C6, which may have trimmed off parts of cells located on the boundary (Figure 8).
After the first layer of cells on the boundary is removed, run Mesh → Cell Mesh → Fix Corners Classic, under the Process tab again, and save the mesh again. This will be the mesh (i.e., 20210207_r8_A1_s.e4.mgxm) that is used to conduct lineage tracing.

Figure 8. Removing cells on the boundary of the mesh.
(a, b) How the labels look before removing the cells on the boundary, which had unnatural shapes. (c) How the labels looked after removing the cells on the boundary.
Parent labeling & Lineage tracing
After processing the stacks and meshes from both time-point 1 (20210207_r8_A1_s.e4.mgxm) and time-point 2 (20210209_r8_A1_s.e4.mgxm), they are ready to conduct parental labeling and lineage tracing.
-
Parental labeling
-
Go to the Main toolbar, load the segmented mesh for time point 1 on Mesh 1, and the segmented mesh for time point 2 on Mesh 2. Both meshes are now loaded as meshes of Stacks 1 and 2 under the Main tab, respectively. The main stacks (i.e., the original .tif files) can also be loaded using the Main toolbar for Stacks 1 and 2. It is a personal preference whether or not to load the main stacks, because they are not required for the lineage tracing process, but it might look nicer to have the main stack shown when taking pictures.
-
Go to the View tab, and check “Stack1” in the Control-Key-Interaction panel. This allows you to move the meshes separately. Using the right click of the mouse alone will move both meshes together, but using the right click of the mouse while pressing the Control-key on the keyboard will only move Stack 1. Use the control key and the mouse to move Stacks 1 and 2 side by side on the screen.
-
Go to the Main tab Stack 1, next to the Mesh checkbox, click Colors Editor
to change the colors of Mesh 1 and/or Mesh 2, so that they are different from each other.
-
Go to the Main tab Stack 1, make sure the checkboxes of Main, Work, and Surface panels are all unchecked, but the one for Mesh is checked. Make sure that “Cells” is selected as the view option for both the Mesh and the Surface panels, and the view option for Cells is selected as “Label”.
-
Go to the Main tab Stack 2, uncheck Main and Work, but check Surface and Mesh. The view options for Surface and Mesh should be “Label” and “Cells” as well, respectively. Then check the checkbox of Parents to the right of the Surface checkbox. The colored segmented cells in Stack 2 should disappear after this.
-
When the meshes of the meristems are first loaded, we see the front view of the meristems. Use the left click on the mouse and the Control key to adjust the orientations of both meshes, so that the side views are shown.
-
Use the left click of the mouse and the Control key to move Mesh 1 above Mesh 2. Then, use the left click of the mouse alone to rotate both meshes, so that the front views are shown again.
-
Look for a few cells on Meshes 1 and 2 that appear to be the same. Usually, the large cells at the center of the meristems are the most easily recognizable. Transfer Mesh 1 on top of Mesh 2, by pressing the Control-key and using the right click of the mouse to match those recognized cells on both meshes.
-
Adjust the orientation and angles of Mesh 1 using the left click of the mouse and the Control-key, to make more cells on both meshes overlap. If the growth between the two time points is rather large, adjust the size of Mesh 1 by going to the Main tab Stack 1, check the Scale checkbox, and increase the X values (adjusting Y or Z is also fine, since all axes are linked).
-
To transfer labels from Mesh 1 to Mesh 2, go to the Main tab Stack 2, so that Stack 2 is active. Select “Grab Label
” from the left toolbar, hold the Alt-key, and click on the cells that are aligned on both meshes. If a cell at time-point 1 appears to have divided at time-point 2, click both cells and they will appear to be the same color.
-
Transfer labels of all possible cells from Mesh 1 to Mesh 2. Because of the meristem’s 3D structure, it is impossible to grab labels of all matching cells without adjusting the angles and orientation of the meshes. We recommend that users deal with one subregion of the mesh at a time (just like when correcting the segmentation errors): start from the center of the meristem, move down from the center to one edge of the mesh, label all possible cells in that region, then move on to the adjacent region. It is also possible that different regions of the samples require independent adjustments to the mesh sizes, which will require the user to use the Scale function (step A9) repeatedly. For example, when tracing cells on the newly initiated primordia, the size of Mesh 1 will likely need to be greatly scaled up, to match the cells on Mesh 2; but when tracing cells on the boundary regions, Mesh 1 will most likely not need to be scaled. A video demonstration of lineage tracing can be found on: https://www.youtube.com/watch?v=KDiCyGrALYk&t=26s.
-
Save the parents' labels by running Mesh → Lineage Tracking → Save Parents under the Process tab. Make sure Stack 2 is active when saving the parents (otherwise, an empty file will be saved). Use caution when saving, because the Save Parents option is listed adjacent to Reset Parents, and the consequences of accidentally running the wrong process can be detrimental. Make sure to label the lineage tracing file informatively, and identify the version, since multiple versions may need to be saved when correcting lineage tracing errors (because there is no undo button!). For instance: r8-A1-0207to0209-v1.csv.
-
Correcting lineage tracing errors
Although it is not necessary to correct lineage tracing errors to generate a growth heat map, it is important to correct all errors before running any analysis, to ensure the accuracy of the results. To check the correspondence of the traced cells, make sure Stack 1 is active, and under the Process tab, run Mesh → Cell Axis → PDG → Check Correspondence. The cells with errors will be highlighted in red on both meshes. To correct the errors, the original meshes of time-point 1 and time-point 2 need to be opened in two separate MorphoGraphX windows, which is why we have recommended that users have an ultrawide monitor or a dual-monitor setup. Opening the meshes in additional windows is necessary, because the meshes in the lineage tracing window have been simplified, so that only the vertices at the junctions between cells are present. Therefore, any modification of the meshes should be done on the original mesh, rather than the mesh being checked for correspondence.
The error correction process consists of repetitive steps of 1) zoom in on one region of the meshes of the lineage tracing window, 2) identify the sources of errors, 3) correct the error on the original mesh 1 or 2, 4) save the updated versions of the original mesh and load it in the lineage tracing MorphoGraphX window again, 5) re-run “Check Correspondence” to make sure all the cells in the region are blue, and 6) move on to the next region with errors in the lineage tracing window until all the errors are corrected.
There are a few common types of errors in check correspondence:
-
Parental labeling error or segmentation error on the original meshes. If either kind of error occurs, the area on Mesh 1 will look as in Figure 9a. Turn on the checkbox for Surface for both Stacks 1 and 2, make sure Cells are selected, and the view option is set to Label. Compare the colors of the cells in that location, to determine whether a cell was wrongly labeled, or the original mesh was wrongly segmented.
-
If the cells on Mesh 2 had the wrong parental label, repeat steps 8 to 10 in Part A (Parental labeling) but only for the cells with error. Make sure Stack 2 is active and save the parents’ labels by running Mesh → Lineage Tracking → Save parents under the Process tab. We recommend saving the new version of the parental labels as a new file, no matter how trivial the modification may have seemed to be.
-
If the error is due to segmentation error on the original mesh, it would be because either a cell on Mesh 1 is under-segmented, or the cell on Mesh 2 is over-segmented. Check the original meshes as described in step 5, and save the modified mesh as a new, separate file.
-
Errors at the cell junctions. This is likely to be the most common error in Check Correspondence and the junctions in question will be indicated in Mesh 1. They are usually due to tiny differences in how neighboring cells connect to each other in Mesh 1 and 2 (Figure 9b). Zoom in on the junction in question in both Meshes 1 and 2, and compare check and uncheck the Mesh checkbox, to identify which mesh should be corrected. Then use “Add label to selection
” on the left tool bar, press the Alt-key, and click the cell that needs to be corrected. Then choose “Add current seed (Alt+N)
” from the left toolbar, and the left click of the mouse to fill in the junction. Then, under the Process tab, run Mesh → Cell Mesh → Fix Corners Classic, and save the modified mesh as a new, separate file.

Figure 9. Examples of lineage tracing errors.
(a) Two major types of errors. Left: Most likely due to incorrect parental labeling or in correct segmentation, e.g., Stack 1 is over-segmented, but only one of the cells can be mapped to Stack 2. Right: Most likely due to incorrect cell junctions. (b) An example of why junction error can occur. In Stack 1, Cell A and D were physically connected to each other, but C and B were not, while in Stack 2, C and B were physically connected to each other.
Data analysis
After all the errors are corrected, reload Meshes 1 and 2 to Stacks 1 and 2, respectively. Make sure Stack 2 is active and the Parents box is checked. Under the Process tab, run Mesh → Lineage Tracking → Load parents, and load the latest version of the parental tracing file.
For all the heat maps, the scale of the values can be changed in Process → Mesh → Heat Map → Heat Map Range; the styles can be changed by clicking the Colors Editor
next to the view option of Cells in the Surface panel; and screenshots can be taken by clicking the Save screenshot
on the main toolbar. All the original images from Min et al. (2022) were saved as .PNG in 2700 px (width) × 2500 px (height).
-
Heat maps of cell area expansion and cell proliferation
-
To create a heat map for cell area expansion, under the Process tab, run Process → Mesh → Heat Map → Heat Map Classic. Select “Area” for the heat map type and “Geometry” for the visualization. Differences in various change map options can be found on the MorphoGraphX manual. Also select the “Change map” checkbox. This tells MorphoGraphX to make a heat map comparing Stack1 and Stack2. The heat map can be visualized on either the first (typically, Stack 1) or second (Stack 2) time points. For the growth sample here, select “Increasing” if Stack 1 (i.e., time-point 1) is active or “Decreasing” if Stack 2 (i.e., time-point 2) is active.
-
To create a map of cell proliferation, make sure Stack 2 is active, and run Process → Mesh → Lineage Tracking→ Heat Map Proliferation.
-
To create images such as Figure 3 in Min et al. (2022), in which divided cells are highlighted on a cell area extension heat map, first run cell area expansion heat map on Stack 2. Check “Report to spreadsheet” so that the values of cell area expansion for each cell can be saved. Give the spreadsheet an informative name, such as “r8-A1-tp1_tp2-growth-allcells.csv”. Then create a map of cell proliferation by running Process → Mesh → Lineage Tracking→ Heat Map Proliferation. Subsequently, run Process → Mesh → Heat Map → Heat Map Select, and change the range values: Lower Threshold to 2, and Upper Threshold to 3 or higher. This step will select all the cells that have experienced cell division. Then, go to Process → Mesh → Heat Map → Heat Map Load, load “r8-A1-tp1_tp2-growth-allcells.csv” as the Heat Map file, and make sure the Column to load is set as “Value”.
-
The aesthetics of the growth heat map and cell outlines can be changed in the Main tab. To change the cell outlines, go to Main → Stack 1 → the Colors Editor
by the Mesh panel. To change the heat map styles, go to Main → Stack 2 (if heat map is displayed on Stack 2) → the Colors Editor
by the Cells in the Surface panel. Sometimes, the heatmap color scale appears to be incorrect on the screen. This is most likely to happen when both Stack 1 and Stack 2 are displaying heat maps, and the color scale of Stack 1 will cover the color scale of Stack 2. This can be simply solved by unclicking the Surface panel under Stack 1.
-
Heat maps of principle direction of growth and anisotropy
-
Make sure the parental file has been loaded to Stack 2, and then switch to Stack 1 to designate it as the active stack. Under the Process tab, run Mesh → Cell Axis → PDG → Check Correspondence, No error should show up since the meshes have been corrected. Make sure the active Stack is the stack that you want to display the heat map on, so if you want to display heat map on time-point 2, make Stack 2 as the active stack. Then run Mesh → Cell Axis → PDG → Compute Growth Directions. The PDG values can also be saved by running Mesh → Cell Axis → Cell Axis Save. Detailed explanations of the PDG parameters can be found in the MorphGraphX manual.
-
To change the display of the PDG map, go to Mesh → Cell Axis → PDG → Display Growth Directions. The PDG heat maps in Min et al. (2022) were displayed as Anisotropy, which is the ratio between StretchMax and StretchMin. A ratio of 1 means no deformation, 2 means an elongation of 100%, and 0.8 a shrinkage of 20%. The color and size of the PDG vectors can also be modified. By default, vectors corresponding to expansion (stretch ratio > 1) are displayed in white, while red is used to draw the direction of shrinkage (stretch ratio < 1). The “Threshold” parameter is used to display PDGs axis only in cells for which the anisotropy is above a given value. Since we save each image at a relatively high resolution (2700 × 2500), we found that a Line Width of at least 10 px is needed for good visualization on the final screenshot.
Perspectives
In this study, we presented the first quantitative live-imaging protocol of floral buds of A. coerulea, which offers considerable potential for application to other non-traditional plant systems. This step-by-step guide offers an important source of basic information for non-model researchers who can take the core of the protocol and adapt it according to the needs of their system. Some aspects of any live imaging project will be specific to the species and/or tissue; therefore, dissection methods, sterilization time, media recipes, and staining times are all likely to be elements that will require optimization. Additionally, there is still room for improvement to obtain higher quality quantitative data. First, our samples were stained with propidium iodide (PI), which generally gave good signal in most of the tissue, but cells in the organ boundary regions were often under-stained. Repetitive long-term staining with PI is known to become toxic to tissues and thus slow growth (Grandjean et al., 2004; Bureau et al., 2018), which was also the primary factor that restricted the length of the analyzed developmental window. Further development of transgenic markers for the plasma membrane would help to solve these issues. Second, our analysis was limited to surface reconstruction of the cells, although the behavior of cells under the epidermal layer is an indispensable part of fully understanding meristem morphogenesis. Third, due to the imaging mechanisms of the available confocal microscope, cell walls perpendicular to the focal axis of the microscope were often not detected. Combined with the fact that cells at the organ boundary were often poorly stained, we were often unable to segment and analyze cells in many boundary regions on the abaxial side of some primordia. Except for the issue with PI staining, all of the other limitations described here are, in fact, challenges faced by similar studies in the established model systems (Rambaud-Lavigne and Hay, 2020; Prunet and Duncan, 2020). Fortunately, rapid development in microscopes that allow long-term, deep-tissue, minimally invasive scanning, as well as software developments that can segment and reconstruct multiple cell layers in 3D from the imaging data, are in progress. A comprehensive understanding of "the genetics of geometry" (Coen et al., 2004) of morphogenesis in a diverse set of plant systems is hopefully underway.
Recipes
-
Culture medium
-
To make up 1 L of the culture medium, dissolve 2.375 g of Linsmaier & Skoog medium (Fisher Scientific; final strength: 0.5×) and 30 g of sucrose (final concentration: 3%) in 1 L of ddH2O. The Linsmaier & Skoog medium should provide buffering capacity such that the pH of the solution should be approximately 5.8. If the pH is too high, adjust it with 1N NaOH solution. Then, add 8 g of agar (final concentration: 0.8%), and autoclave.
-
Once the autoclaved medium has cooled to a degree that is not too hot to be touched by a bare hand, add 10-6 M kinetin (Sigma) and 10-7 M gibberellic acid (GA3, Sigma). Do not reheat the culture media once hormones have been added. Mix well and pour the plates in a fume hood, to avoid contamination. 10-6 M kinetin and 10-7 M GA3 can be diluted as follows:
10-6 M kinetin
-
Make 10-1 M stock solution: dissolve 21.52 mg kinetin in 1 mL of 1 N NaOH in an Eppendorf tube. Seal the tube tightly with parafilm. This stock solution can be stored at 4°C for a few months.
-
Add 1 µL of the stock solution in 100 µL of ddH2O, to reach the concentration of 10-3 M.
-
Add 1 µL of 10-3 M solution in every 1 mL of culture medium, to reach a concentration of 10-6 M.
10-7 M GA3:
-
Make 10-1 M stock solution: dissolve 34.64 mg GA3 in 1 mL of EtOH in a 1.6 mL Eppendorf tube. Seal the tube tightly with parafilm. This stock solution can be stored at 4°C for a few months.
-
Add 1 µL of the stock solution in 1 mL of ddH2O to reach the concentration of 10-4 M.
-
Add 1 µL of 10-4 M solution in every 1 mL of culture medium, to reach a concentration of 10-7 M.
Acknowledgments
This study was funded by the Emerging Models Grant from the Society of Developmental Biology.
Competing interests
The authors declare no conflicts of interest.
References
-
Bureau, C., Lanau, N., Ingouff, M., Hassan, B., Meunier, A. C., Divol, F., Sevilla, R., Mieulet, D., Dievart, A. and Perin, C. (2018). A protocol combining multiphoton microscopy and propidium iodide for deep 3D root meristem imaging in rice: application for the screening and identification of tissue-specific enhancer trap lines. Plant Methods 14: 96.
-
Caggiano, M. P., Yu, X., Ohno, C., Sappl, P. and Heisler, M. G. (2021). Live Imaging of Arabidopsis Leaf and Vegetative Meristem Development. Methods Mol Biol 2200: 295-302.
-
Coen, E., Rolland-Lagan, A. G., Matthews, M., Bangham, J. A. and Prusinkiewicz, P. (2004). The genetics of geometry.Proc Natl Acad Sci U S A 101(14): 4728-4735.
-
Geng, Y. and Zhou, Y. (2019). Confocal Live Imaging of Shoot Apical Meristems from Different Plant Species. J Vis Exp(145): e59369.
-
Grandjean, O., Vernoux, T., Laufs, P., Belcram, K., Mizukami, Y. and Traas, J. (2004). In Vivo Analysis of Cell Division, Cell Growth, and Differentiation at the Shoot Apical Meristem in Arabidopsis. The Plant Cell 16(1): 74-87.
-
Min, Y., Conway, S. J. and Kramer, E. M. (2022) Quantitative live-imaging of floral organ initiation and floral meristem termination in Aquilegia. Development 149 (4): dev200256
-
Prunet, N. and Duncan, K. (2020). Imaging flowers: a guide to current microscopy and tomography techniques to study flower development. J Exp Bot 71(10): 2898-2909.
-
Prunet, N., Jack, T. P. and Meyerowitz, E. M. (2016). Live confocal imaging of Arabidopsis flower buds. Dev Biol 419(1): 114-120.
-
Rambaud-Lavigne, L. and Hay, A. (2020). Floral organ development goes live. J Exp Bot 71(9): 2472-2478.
-
de Reuille, P. B., Robinson, S. and Smith, R. S. (2014). Quantifying cell shape and gene expression in the shoot apical meristem using MorphoGraphX. Methods Mol Biol 1080: 121-134.
-
Steeves, T. A. and Sussex, I. M. (1989). Patterns in plant development. Cambridge University Press.
-
Strauss, S., Sapala, A., Kierzkowski, D. and Smith, R. S. (2019). Quantifying Plant Growth and Cell Proliferation with MorphoGraphX. Methods Mol Biol 1992: 269-290.
-
Shi, B., Wang, H. and Jiao, Y. (2020). Live Imaging of Arabidopsis Axillary Meristems. Methods Mol Biol 2094: 59-65.
-
Silveira, S. R., Le Gloanec, C., Gomez-Felipe, A., Routier-Kierzkowska, A. L. and Kierzkowski, D. (2022). Live-imaging provides an atlas of cellular growth dynamics in the stamen. Plant Physiol 188(2): 769-781.