8. Gallery¶
8.1. Embryo set assessment¶
8.1.1. Temporal alignment of embryo development¶
Embryo development can be temporally aligned. Alignment is computed from the cell count during development, ie the linear time warping that superimposed the cell counts of two embryos during their development is computed. Mathematically speaking, it comes to compute \((\hat{a},\hat{b}) = \arg \min_{a,b} \sum_n \left( a t_f(n) +b - t_r(n)\right)^2\) where \(n\) is a cell count, \(t_f(n)\) is the acquisition time where the floating embryo has \(n\) cells while \(t_r(n)\) is the acquisition time where the reference embryo has \(n\) cells.
Running
ascidian_embryo -p parameters-atlas.py
with the following parameter file
atlasEmbryos = ['Pm1.pkl', 'Pm3.pkl', 'Pm4.pkl', 'Pm5.pkl', 'Pm7.pkl', 'Pm8.pkl', 'Pm9.pkl']
generate_figure = ['temporal-alignment']
generates a python file allowing to generate the following figure. The reference embryo
is either specified with the variable referenceEmbryo or it is
the first element of the list atlasEmbryos.
Fig. 8.1 Cell count wrt acquisition time point (ie image indices) and developemental time (ie after temporal alignment).¶
Fig. 8.2 Cell count wrt acquisition time point (ie image indices) and developemental time (ie after temporal alignment).¶
Using the count of all cells implicitly assumes that the development is not perturbed. When adding the MEK inhibitor U0126, that impeach the invagination, the development is no more following a normal scheme. Since U0126 is not perturbing the epidermis cell, the temporal normalization can be done with the count of epidermis cells only as exemplified here.
Running
ascidian_embryo -p parameters-atlas.py
with the following parameter file
atlasEmbryos = ['Pm1.pkl', 'Pm3.pkl', 'Pm4.pkl', 'Pm5.pkl', 'Pm7.pkl', 'Pm8.pkl', 'Pm9.pkl']
generate_figure = ['temporal-alignment-epidermis']
generates a python file allowing to generate the following figures.
Fig. 8.3 Epidermis cell count wrt acquisition time point (ie image indices) and developemental time (ie after temporal alignment). Temporal alignment is done wrt epidermis cell counts.¶
Fig. 8.4 All cell and epidermis cell count wrt acquisition time point (ie image indices) and developemental time (ie after temporal alignment). Temporal alignment is done wrt epidermis cell counts.¶
Fig. 8.5 Temporally aligned cell count wrt acquisition time point for different cell fates. Temporal alignment is done wrt epidermis cell counts.¶
Note that the temporal alignment based on epidermis cells
can be achieved by setting the variable temporal_alignment_fate
to 'Epidermis' in a parameter file, ie by adding the line
temporal_alignment_fate = 'Epidermis'
in the parameter file.
8.1.2. Volume normalization of embryos¶
The embryo volume slightly decreases during the development, and embryos may have different volumes. To compare morphometric features across embryos, their size have to be homogenized/normalized. A robust linear fit is done on embryo volumes to get a scaling correction (that varies with time). Normalization is achieved by setting the same target volume for all embryos.
Running
ascidian_embryo -p parameters-atlas.py
with the following parameter file
atlasFiles = ['Pm1.pkl', 'Pm3.pkl', 'Pm4.pkl', 'Pm5.pkl', 'Pm7.pkl', 'Pm8.pkl', 'Pm9.pkl']
generate_figure = ['volume-fitting']
generates a python file allowing to generate the following figures.
Fig. 8.6 Embryo volume temporal variation with linear fit (left and middle: without and with temporal alignment). Right: volume normalization to the same target volume.¶
Fig. 8.7 Embryo external surface temporal variation (left and middle: without and with temporal alignment). Right: surface normalization computed from the volume normalization.¶
8.1.3. Cell composition¶
The variability of cell composition (ie cell names) indirectly measures the heterochrony of cell division. It is assessed by computing the cells that have the same name across the set of embryos and the cells that have different names, after temporal alignment of all embryos.
Running
ascidian_embryo -p parameters-atlas.py
with the following parameter file
atlasFiles = ['Pm1.pkl', 'Pm3.pkl', 'Pm4.pkl', 'Pm5.pkl', 'Pm7.pkl', 'Pm8.pkl', 'Pm9.pkl']
generate_figure = ['cell-composition']
generates a python file allowing to generate the following figures.
Fig. 8.8 Temporally aligned cell count and cell variability in one plot¶
Fig. 8.9 Temporally aligned cell count and cell composition difference in different plots. Cell composition difference also indicates the round of division.¶
8.1.4. Cell neighbor count¶
The following figures assessed whether the neighbor count is stable during development.
Running
ascidian_embryo -p parameters-atlas.py
with the following parameter file
atlasFiles = ['Pm1.pkl', 'Pm3.pkl', 'Pm4.pkl', 'Pm5.pkl', 'Pm7.pkl', 'Pm8.pkl', 'Pm9.pkl']
generate_figure = ['neighbors-wrt-cell-number']
generates a python file allowing to generate the following figures.
Fig. 8.10 Box plots of cell neighbor counts¶
Fig. 8.11 Average and standard deviation of cell neighbor counts¶
8.1.5. Division time differences¶
We study here whether the division are more synchronized within an embryo (between the left and the right part) than between different embryos.
Running
ascidian_embryo -p parameters-atlas.py
with the following parameter file
atlasFiles = ['Pm1.pkl', 'Pm3.pkl', 'Pm4.pkl', 'Pm5.pkl', 'Pm7.pkl', 'Pm8.pkl', 'Pm9.pkl']
generate_figure = ['division-time-difference']
generates a python file allowing to generate the following figure.
Fig. 8.12 Left: (developmental) time difference between the division of the right cell and the left one (intra-embryo difference); Right: time difference between the division of the same cell, or right and left cells, from different embryos (inter-embryo difference). Since generation 10 cell divisions are mostly in Pm1, there are not many measurements for generation 10 inter-embryo differences.¶
8.1.6. Division time mis-ordering: couple of division view¶
We study here whether the order of division is preserved across embryos. To do so, we first compute a “natural” division order (from the average developmental division time computed from all embryos), and then compute a probability that this natural order is not respected.
Running
ascidian_embryo -p parameters-atlas.py
with the following parameter file
atlasFiles = ['Pm1.pkl', 'Pm3.pkl', 'Pm4.pkl', 'Pm5.pkl', 'Pm7.pkl', 'Pm8.pkl', 'Pm9.pkl']
generate_figure = ['division-time-couple-misordering']
generates a python file allowing to generate the following figures
Fig. 8.13 Joint division time distribution for the couple of cells a7.0003 and a7.0004.
Left: couple of division times for the different embryos (‘*’ denotes
the right part, while ‘_’ denotes the left part); right:
kernel based joint density estimation. Here, the probability of mis-ordering is low.¶
Fig. 8.14 Joint division time distribution for the couple of cells b7.0007 and b7.0020.
Left: couple of division times for the different embryos (‘*’ denotes
the right part, while ‘_’ denotes the left part); right:
kernel based joint density estimation. Here, the probability of mis-ordering is high,
due to the bimodal division time distribution of b7.0007.¶
Fig. 8.15 Joint division time distribution for the couple of cells b7.0007 and b7.0020,
together with division time distribution for each cell.
It exemplifies the bimodal division time distribution of b7.0007.¶
8.1.7. Division time mis-ordering: global view¶
We study here whether the order of division is preserved across embryos. To do so, we collect the probabilty of mis-ordering (see above) and present a global view of it.
Running
ascidian_embryo -p parameters-atlas.py
with the following parameter file
atlasFiles = ['Pm1.pkl', 'Pm3.pkl', 'Pm4.pkl', 'Pm5.pkl', 'Pm7.pkl', 'Pm8.pkl', 'Pm9.pkl']
generate_figure = ['division-time-global-misordering']
generates a python file allowing to generate the following figures
Fig. 8.16 Probabilities of mis-ordering divisions with respect to “natural” order
from division of cell a6.0004 to b9.0050.¶
Fig. 8.17 Probabilities of mis-ordering divisions with respect to “natural” order
from division of cell a7.0008 to a7.0006, ie from the 64-cells
stage tp the 112-cells stage.¶
Fig. 8.18 Temporally aligned cell counts + cell counts from a virtual embryo whose cells divide at their average division time, in the normalized (developmental) time interval [-10, 50].¶
8.2. Embryo symmetry assessment¶
8.2.1. Detection of the symmetry axis¶
Symmetry axis was first investigated by G. Michelin [MGF+15] (see also [Mic16]) where the symmetry axis (the left-right symmetry) is computed as a mode in the distribution of (orthogonal) directions of cell-to-cell membranes (issued from images). Mimicking this approach with data issued from the property file did not performed well (see [ML24]).
However, using the contact surfaces of a cell as its signature offers a means to recognize its symmetrical cell. The symmetry axis can then be as a mode of the distribution of vectors joining a pair of symmetrical cells [ML24].
We investigated two cell signatures between cells \(c_k\) and \(c_\ell\) from the same embryo, inspired by the cell distance introduced for embryo naming (equation (8.3)).
However, we do not have the cell names to build the pairing \(P\). Then, to compare
two cells, we use the optimal pairing, ie the one giving the minimal cell-to-cell distance:
it comes to pair the largest contact surface of cell \(c_k\) with the
largest contact surface of cell \(c_\ell\) and so on and so forth.
We denote this cell similarity as 'sorted-contact'.
Running
ascidian_embryo -p parameters-atlas.py
with the following parameter file
atlasEmbryos = ['Pm1.pkl', 'Pm3.pkl', 'Pm4.pkl', 'Pm5.pkl', 'Pm7.pkl', 'Pm8.pkl', 'Pm9.pkl', 'U0126-Pm1.pkl', 'U0126-Pm2.pkl']
temporal_alignment_fate = 'Epidermis'
generate_figure = ['symmetry-axis-assessment']
cell_similarity = 'sorted-contact'
generates a python file allowing to generate the following figures
Fig. 8.19 The Y axis is the developmental time (aligned acquisition times).
Notice temporal_alignment_fate = 'Epidermis' that
allows to properly align cell counts for U0126 embryos.
Symmetrical cells are computed with only the
cell contact surfaces (cell_similarity = 'sorted-contact').
Left: cell counts. Middle: symmetry axis error, ie angle between
ground truth, and the closest distribution mode.
Right: rank of the closest mode.
See [ML24] for details.¶
However the 'sorted-contact' cell similarity does not take into account the
neighbor spatial ordering. Considering now the unit vector
\(\mathbf{n}_{k, k_i}\) from cell \(c_k\) to cell \(c_{k_i}\)
(eg derived from the cell centers of mass), the above cell similarity can be
complexified into
The optimal pairing comes to solve the minimum weight matching problem in a bipartite graph, also known as linear assignment problem. To that end, we use the scipy linear_sum_assignment() function.
When it comes to detect symetrical cells, it has to be adapted to effectively
compare a cell with its potential symmetrical counterpart
(see [ML24] for details).
We denote this cell similarity as 'winged-contact'.
Running
ascidian_embryo -p parameters-atlas.py
with the following parameter file
atlasEmbryos = ['Pm1.pkl', 'Pm3.pkl', 'Pm4.pkl', 'Pm5.pkl', 'Pm7.pkl', 'Pm8.pkl', 'Pm9.pkl', 'U0126-Pm1.pkl', 'U0126-Pm2.pkl']
temporal_alignment_fate = 'Epidermis'
generate_figure = ['symmetry-axis-assessment']
cell_similarity = 'winged-contact'
generates a python file allowing to generate the following figures
Fig. 8.20 The Y axis is the developmental time (aligned acquisition times).
Notice temporal_alignment_fate = 'Epidermis' that
allows to properly align cell counts for U0126 embryos.
Symmetrical cells are computed with the
cell contact surfaces and the contact vectors
(cell_similarity = 'winged-contact').
Left: cell counts. Middle: symmetry axis error, ie angle between
ground truth, and the closest distribution mode.
Right: rank of the closest mode.
See [ML24] for details.¶
8.2.2. Detection of symmetrical cells¶
The detection of the symmetry axis is based on the recognition of pairs of symmetrical cells (apart of mimicking G. Michelin’s method [MGF+15]).
This recognition is founded on a similarity measure between
cell neighborhood, based either
solely on contact surfaces
(cell_similarity = 'sorted-contact')
or on contact surfaces and vectors
(cell_similarity = 'winged-contact') with a
little bit higher computational cost.
These two measures can be assessed by running
ascidian_embryo -p parameters-atlas.py
with the following parameter file
atlasEmbryos = ['Pm1.pkl', 'Pm3.pkl', 'Pm4.pkl', 'Pm5.pkl', 'Pm7.pkl', 'Pm8.pkl', 'Pm9.pkl', 'U0126-Pm1.pkl', 'U0126-Pm2.pkl']
temporal_alignment_fate = 'Epidermis'
generate_figure = ['symmetrical-cell-percentage']
that generates a python file allowing to generate the following figures
(one per embryo)
Fig. 8.21 Symmetrical cell detection estimation for embryo Pm1.¶
Fig. 8.22 Symmetrical cell detection estimation for embryo Pm4.¶
Fig. 8.23 Symmetrical cell detection estimation for embryo Pm8.¶
Fig. 8.24 Symmetrical cell detection estimation for embryo Pm1 pertubed with U0126.¶
8.3. Naming one time point¶
8.3.1. Naming one time point by embryo co-registration¶
To name an embryo at a given time point, atlases (embryos already named) are co-registered with the embryo to be named, cell-to-cell correspondences (by pairing closest cell centers of mass together) are established after registration, and a final voting procedure allows to set names.
The cell-to-cell correspondences implies implicitly that the cell composition is identical through the embryo population, thus it is preferable to choose a time point at 64, 76 or 112 cells.
Running
ascidian_naming_timepoint -p parameters-atlas.py
with the following parameter file
atlasEmbryos = ['Pm1.pkl', 'Pm3.pkl', 'Pm4.pkl', 'Pm5.pkl', 'Pm7.pkl', 'Pm8.pkl']
cell_number = 64
generate_figure = ['naming_timepoint_wrt_atlases']
generates a python file allowing to generate the following figure,
depicting the results of naming where one embryo is named after a set built
from the other embryos (for a time point where embryos have 64 cells).
Results seem to improve with the number of atlases. However, using adding symmetrical atlases
do not seem to bring improvement.
Fig. 8.25 Box plots of right named cells and wrong named cells wrt the number of atlases (leave-one-out tests) for registration-based naming at 64 cells.¶
Modifying the above parameter file ( and adding the 'Pm9.pkl' embryo)
allows to get the following figures for the 76 and 112 cell counts:
some (few) cells remain unnamed (figures depicting the number
of unnamed cells are also generated, but not shown here).
Fig. 8.26 Box plots of right named cells and wrong named cells wrt the number of atlases (leave-one-out tests) for registration-based naming at 76 cells.¶
Fig. 8.27 Box plots of right named cells and wrong named cells wrt the number of atlases (leave-one-out tests) for registration-based naming at 112 cells.¶
Running
ascidian_naming_timepoint -p parameters-atlas.py
with the following parameter file
atlasEmbryos = ['Pm1.pkl', 'Pm3.pkl', 'Pm4.pkl', 'Pm5.pkl', 'Pm7.pkl', 'Pm8.pkl']
generate_figure = ['naming_timepoint_wrt_cellcounts']
generates a python file allowing to generate the following figure,
depicting the results of naming where one embryo is named after a set built
from all the other available (at the given cell count) embryos
for different cell counts. It illustrates the difficulty to name,
with the implemented registration-based procedure, an embryo at time points
where the cell composition is heteregeneous.
Fig. 8.28 Box plots of right named cells and wrong named cells wrt cell counts (leave-one-out tests) for registration-based naming.¶
Fig. 8.29 Box plots of right named cells and unnamed cells wrt cell counts (leave-one-out tests) for registration-based naming.¶
8.3.2. Naming one time point by cell signature¶
Cell signatures are efficient to characterize the symmetrical counter-part of a cell within the same embryo (Detection of symmetrical cells). It can then be questioned whether they can be used to recognize the same cell across embryos. Indeed, the registration strategy does not work for perturbed development (U0126 embryos).
Equation (8.1) can be used to compare cells across embryos (according that embryo volumes have been normalized, so that contact surfaces are comparable).
Running
ascidian_naming_timepoint -p parameters-atlas.py
with the following parameter file
atlasEmbryos = ['Pm1.pkl', 'Pm3.pkl', 'Pm4.pkl', 'Pm5.pkl', 'Pm7.pkl', 'Pm8.pkl', 'Pm9.pkl']
add_symmetric_embryo = True
matching_cell_similarity = 'sorted-contact'
generate_figure = ['cell-signature']
generates a python file allowing to generate the following figure,
that assesses whether the cell signature is able to retrieve the same cell
across embryos.
For a given embryos, each cell is compared to all other cells in all
other embryos (including symmetrized ones), cells are sorted according to
the distance, and the rank of the same cell is plotted (1 is the best).
depicting the results of naming where one embryo is named after a set built from all the other available (at the given cell count) embryos for different cell counts. It illustrates the difficulty to name, with the implemented registration-based procedure, an embryo at time points where the cell composition is heteregeneous.
Fig. 8.30 While comparing cells across embryos, rank of the corresponding cell (cell of same name)
in other embryos with the 'sorted-contact' cell-to-cell distance.¶
However, the 'sorted-contact' cell-to-cell distance do not allow to differentiate between
left and right cells, while the 'winged-contact' one
(see equation (8.2))
could do so. However, to compare vectors, one have to express them in the same referential, as in
Here, the (local) registration between vectors issued from cells \(c_k\) and \(c_\ell\) is achieved by the rotation matrix \(\mathbf{R}_{sym} \mathbf{R}(\theta)\) where the rotation matrix \(\mathbf{R}_{sym}\) aligns the symmetry axis of both embryos and \(\mathbf{R}(\theta)\) is a 2D rotation along one symmetry axis. The optimal pairing is then computed for each 2D rotation and the final distance is the minimal one over the angle of 2D rotations.
Running
ascidian_naming_timepoint -p parameters-atlas.py
with the following parameter file
atlasEmbryos = ['Pm1.pkl', 'Pm3.pkl', 'Pm4.pkl', 'Pm5.pkl', 'Pm7.pkl', 'Pm8.pkl', 'Pm9.pkl']
add_symmetric_embryo = True
matching_cell_similarity = 'winged-contact'
z_rotation_angle_increment = 15
generate_figure = ['cell-signature']
generates a python file allowing to generate the following figure,
that assesses whether the cell signature is able to retrieve the same cell
across embryos.
Fig. 8.31 While comparing cells across embryos, rank of the corresponding cell (cell of same name)
in other embryos with the 'winged-contact' cell-to-cell distance.¶
Fig. 8.32 While comparing cells from Pm1 to other embryos, angle of the optimal angle \(\theta\).¶
Running
ascidian_naming_timepoint -p parameters-atlas.py
with the following parameter file
atlasEmbryos = ['Pm1.pkl', 'Pm3.pkl', 'Pm4.pkl', 'Pm5.pkl', 'Pm7.pkl', 'Pm8.pkl']
cell_number = 64
minimal_consensus = 60
naming_by_transfer = 'assignment'
matching_cell_similarity = 'sorted-contact'
generate_figure = ['naming_timepoint_wrt_atlases']
generates a python file allowing to generate the following figure,
depicting the results of naming where one embryo is named after a set built
from the other embryos (for a time point where embryos have 64 cells), where
cell pairings is issued from linear assignment (minimum weight matching problem in a bipartite graph)
with a cost matrix built from 'sorted-contact' similarity. Note that
Fig. 8.33 Box plots of right named cells and wrong named cells wrt the number of atlases (leave-one-out tests) for assignment-based naming at 64 cells (‘sorted-contact’) similarity.¶
Changing the similarity for the ‘winged-contact’ does improve the naming. Indeed, running
ascidian_naming_timepoint -p parameters-atlas.py
with the following parameter file
atlasEmbryos = ['Pm1.pkl', 'Pm3.pkl', 'Pm4.pkl', 'Pm5.pkl', 'Pm7.pkl', 'Pm8.pkl']
cell_number = 64
minimal_consensus = 60
naming_by_transfer = 'assignment'
matching_cell_similarity = 'winged-contact'
generate_figure = ['naming_timepoint_wrt_atlases']
generates a python file allowing to generate the following figure,
depicting the results of naming where one embryo is named after a set built
from the other embryos (for a time point where embryos have 64 cells), where
cell pairings is issued from linear assignment (minimum weight matching problem in a bipartite graph)
with a cost matrix built from 'winged-contact' similarity. Note that
Fig. 8.34 Box plots of right named cells and wrong named cells wrt the number of atlases (leave-one-out tests) for assignment-based naming at 64 cells (‘sorted-contact’) similarity.¶
8.4. Contact surface based cell-to-cell distance¶
We introduce a distance between two cells, \(c_k\) and \(c_\ell\), as a L1 norm between the two cell contact surface vectors, paired by \(P\), and normalized by the sum of the two cell surfaces.
Because of the normalization, this is not a distance in a mathematical sense (the triangular inequality is not verified). On the other hand, thanks to the normalization this distance lives in \([0, 1]\). When embryos are named, the pairing \(P\) is built after the neighboring cell names.
8.4.1. Cell-to-cell distance along branches¶
For a given embryo, we can compute the distance between the same cell at two consecutive time points.
Running
ascidian_embryo -p parameters-atlas.py
with the following parameter file
atlasEmbryos = ['Pm1.pkl', 'Pm3.pkl', 'Pm4.pkl', 'Pm5.pkl', 'Pm7.pkl', 'Pm8.pkl', 'Pm9.pkl']
generate_figure = ['cell-to-cell-distance-along-branch']
generates a python file allowing to generate the following figure,
Fig. 8.35 Cell-to-cell distances along branches, from thhe cell appearance (after a division) to its disappearance (when the cell divides, or at the end of the time series).¶
It demonstrates that this distance stabilizes a few timepoints after the division.
8.4.2. Cell-to-cell distance for same, sister or other cells¶
To assess whether the contact surfaces can be considered as a aignature of a cell, we compute the distances between the same cell (cell of same name) between embryos, or between a cell and its sister cells (mostly inter-embryo, but one measure is within the same embryo), or between a cell and other (than the same and the sister) cells.
Running
ascidian_naming_propagation -p parameters-atlas.py
with the following parameter file
atlasEmbryos = ['Pm1.pkl', 'Pm3.pkl', 'Pm4.pkl', 'Pm5.pkl', 'Pm7.pkl', 'Pm8.pkl', 'Pm9.pkl']
add_symmetric_embryo = True
generate_figure = ['cell-to-cell-distance-histogram']
generates a python file allowing to generate the following figures. Note
the line add_symmetric_embryo = True: symmetrized embryos are built and included
in the analysis.
Fig. 8.36 Cell-to-cell distance histograms for same cells (cell of same name), sister cells and other cells. The peak at 1.0 corresponds to cells that do not share any neighbors.¶
Fig. 8.37 Cell-to-cell distance histograms for same cells (cell of same name) and sister cells.¶
8.5. Contact surface based division-to-division distance¶
We introduce a distance between two divisions, a division being represented here by a couple or ordered cells, \((c_k,c_m)\) and \((c_\ell, c_n)\). This distance is built after the cell-to-cell distance, where the ordered cells are paired (ie \(c_k\) and \(c_m\) are respectively paired with \(c_\ell\) and \(c_n\)) as a L1 norm between the two cell contact surface vectors of paired cells, normalized by the sum of the cell surfaces.
Because of the normalization, this is not a distance in a mathematical sense (the triangular inequality is not verified). On the other hand, thanks to the normalization this distance lives in \([0, 1]\). When embryos are named, pairings \(P_{k,\ell}\) and \(P_{m,n}\) are built after the neighboring cell names.
8.5.1. Division-to-division distance for right/wrong cell pairings¶
The purpose of the division-to-division distance is to name the daughter cells after a cell division. In Conklin nomenclature [Con5.], cells are named as \([a,b]p.q[\_,*]\) where \([a,b]\) indicates a anterior or posterior position, \(p\) denotes the generation, \(q\) allows to individualize the cell within a generation, and \([\_,*]\) indicates whether the cell is in the left or right hemisphere. When dividing, the \([a,b]\) and \([\_,*]\) descriptors are kept from the mother cell name to the daughter cell, and the descriptors \([p,q]\) yield a couple of descriptors \([p+1,2q-1]\) and \([p+1,2q]\), where \(p+1\) denotes the next generation. Then, naming the two daughter cells after a cell division comes to decide which one will inherit from the \(2q-1\) identifier and which one will inherit from the \(2q\) identifier.
To assess whether the contact surfaces can distinguish between right and wrong pairings of the daughter cells (after) division, we compute the distances between the same division (across embryos) with either the right pairing of daughter cells, or the wrong one.
Running
ascidian_naming_propagation -p parameters-atlas.py
with the following parameter file
atlasEmbryos = ['Pm1.pkl', 'Pm3.pkl', 'Pm4.pkl', 'Pm5.pkl', 'Pm7.pkl', 'Pm8.pkl', 'Pm9.pkl']
add_symmetric_embryo = True
generate_figure = ['division-to-division-distance-histogram']
generates a python file allowing to generate the following figures. Note
the line add_symmetric_embryo = True: symmetrized embryos are built and included
in the analysis.
Fig. 8.38 Division-to-division distance histograms. Distances are computed between the division of the same cell across atlases, while making the right pairing of daughter cells or the wrong ones.¶
Fig. 8.39 Division-to-division distance histograms. Distances are computed between the division of the same cell across atlases, while making the right pairing of daughter cells or the wrong ones. One histogram is done per generation.¶
Fig. 8.40 Division-to-division distance difference histograms. This is the difference between the distance with a wrong pairing minus the distance with the right pairing.¶
8.5.2. Dendrograms from division-to-division distances¶
Dendrograms can be used to represent a hierarchical clustering of the divisions (issued from several embryos), clustering that can be based on the division-to-division distances (see also Hierarchical clustering from scipy).
Running
ascidian_naming_propagation -p parameters-atlas.py
with the following parameter file
atlasEmbryos = ['Pm1.pkl', 'Pm3.pkl', 'Pm4.pkl', 'Pm5.pkl', 'Pm7.pkl', 'Pm8.pkl', 'Pm9.pkl']
add_symmetric_embryo = True
generate_figure = ['division-dendrograms']
generates a python file, here named figure_division_dendrogram.py
allowing to generate the dendrograms. Note
the line add_symmetric_embryo = True: symmetrized embryos are built and included
in the analysis.
Running
python figure_division_dendrogram.py
will generate dendrograms for all divisions, which may be pretty long. Alternatively, dendrograms for chosen divisions may be generated by giving cell names as arguments as in
python figure_division_dendrogram.py 'b7.0002_' 'a7.0002_'
There are four figures generated by division, here are the ones for the division of cell 'b7.0002_':
'division_dendrogram_b7_0002U_HC028_BAL008_single.png': dendrograms of cell divisions, the cost function being the division-to-dision distance.b7_0002Urepresents the cell name (Ustands for_(ie right cells),Sfor*()ie left cells) In the dendrogram, embryos prefixed by'sym-'designated the symmetric cell (cell from the other hemisphere)'division_dendrogram_b7_0002U_HC028_BAL008_single_SW.png': id as'division_dendrogram_b7_0002U_HC028_BAL008_single.png'but with additional (fake) divisions are added, where the daughter names are switched (prefixed by switched). It allows to assess whether daughter name couples are consistent.'division_dendrogram_HC028_b7_0002U_single.png': id as'division_dendrogram_b7_0002U_HC028_BAL008_single.png', only the name has changed. The prefix'HC028'indicates the highest value of the dendrogram (the higher, the more likely there are several division geometry modes).'division_dendrogram_HC028_b7_0002U_single_SW.png': id as'division_dendrogram_b7_0002U_HC028_BAL008_single_SW.png'
Fig. 8.41 Cell division dendrogram of cell b7.0002_¶
Fig. 8.42 Cell division dendrogram of cell b7.0002_, with fake switched daughters division¶
In addition, to the cell division dendrograms, some other figures are generated
Fig. 8.43 Histograms of merge and last merge values. The higher the last merge value, the more separated are the two last clusters.¶
Fig. 8.44 Histogram of balance values. Balance in [0, 1] reflects the balance between the two last cluster. 1.0 means the two last clusters have the same number of original observations.¶
Fig. 8.45 Scatter plot of large merge versus balance values. A division with both large last merge and balance values (with a large size of observation) is more likely to exhibit several division geometry modes.¶