Skip to main content
Fig. 2 | Algorithms for Molecular Biology

Fig. 2

From: Unifying duplication episode clustering and gene-species mapping inference

Fig. 2

An example of the dynamic programming algorithm (from Sect. Episode Feasibility Problem) execution. The partial gene tree is \(G=((\bot ,(b,((\bot ,\bot ),(\bot ,\bot )))),(d,(c,a)))\), which contains five unknown labels. The species tree, denoted as S, is represented as ((ac), (bd)). The marked nodes in S indicate episode candidates from X: the root of S (abcd) and the leaf node a. By applying dynamic programming, we obtain a feasible solution, depicted in the bottom-right corner. The resulting extension of the partial gene tree G is \(G^*\), where the valid mapping between \(G^*\) and S is the lowest common ancestor (LCA) mapping. In \(G^*\), each duplication node is marked with a triangle or a square denoting their corresponding episode in S. Each node in G is decorated with an array that represents the values of DP formulas, where each row corresponds to a node in S, starting from abcd, bd, and so on as indicated in the first column. The next columns have the values of \(\delta\), \(\delta ^\downarrow\), \(\sigma\), and \(\epsilon\), respectively, for the gene tree node and the corresponding species tree node. For example, considering the root of G and the root of S, the top row of the array contains the following values: \(\delta (\textsf{root} (G), \textsf{root} (S)) = \delta ^\downarrow (\textsf{root} (G), \textsf{root} (S)) = \epsilon (\textsf{root} (G), \textsf{root} (S)) = \textsf{True}\), while \(\sigma (\textsf{root} (G), \textsf{root} (S)) = \textsf{False}\)

Back to article page