We present a comparative genomics approach for inferring ancestral genome organization and evolutionary scenarios, based on present-day genomes represented as ordered gene sequences with duplicates. We develop our methodology for a model of evolution restricted to duplication and loss, and then show how to extend it to other content-modifying operations, and to inversions. From a combinatorial point of view, the main consequence of ignoring rearrangements is the possibility of formulating the problem as an alignment problem. On the other hand, duplications and losses are asymmetric operations that are applicable to one of the two aligned sequences. Consequently, an ancestral genome can directly be inferred from a duplication-loss scenario attached to a given alignment. Although alignments are a priori simpler to handle than rearrangements, we show that a direct approach based on dynamic programming leads, at best, to an efficient heuristic. We present an exact pseudo-boolean linear programming algorithm to search for the optimal alignment along with an optimal scenario of duplications and losses. Although exponential in the worst case, we show low running times on real datasets as well as synthetic data. We apply our algorithm* in a phylogenetic context to the evolution of stable RNA (tRNA and rRNA) gene content and organization in Bacillus genomes. Our results lead to various biological insights, such as rates of ribosomal RNA proliferation among lineages, their role in altering tRNA gene content, and evidence of tRNA class conversion.
1. Introduction
During evolution, genomes continually accumulate mutations. In addition to base mutations and short insertions or deletions, genome-scale changes affect the overall gene content and organization of a genome. Evidence of these latter kinds of changes are observed by comparing the completely sequenced and annotated genomes of related species. Genome-scale changes can be subdivided into two categories: (1) the rearrangement operations that shuffle gene order such as inversion, and (2) the content-modifying operations that affect the number of gene copies, such as gene insertion, loss and duplication. In particular, gene duplication is a fundamental process in the evolution of species (Ohno 1970), especially in eukaryotes (Blomme et al., 2006; Cotton and Page, 2005; Eichler and Sankoff, 2003; Hahn et al., 2007; Lynch and Conery, 2000; Wapinski et al., 2007), where it is believed to play a leading role for the creation of novel gene function. In parallel, gene losses through pseudogenization and segmental deletions, appear generally to maintain a minimum number of functional gene copies (Blomme et al., 2006; Cotton and Page, 2005; Demuth et al., 2006; Eichler and Sankoff, 2003; Hahn et al., 2007; Lynch and Conery, 2000; Ohno, 1970). Transfer RNAs (tRNAs) are typical examples of gene families that are continually duplicated and lost (Bermudez-Santana et al., 2010; Rogers et al., 2010; Tang et al., 2009; Withers et al., 2006). Indeed, tRNA clusters (or operons in microbial genomes) are highly dynamic and unstable genomic regions. In Escherichia coli for example, the rate of tRNA gene duplication/loss events has been estimated to be about one event every 1.5 million years (Bermudez-Santana et al., 2010; Withers et al., 2006).
One of the main goals of comparative genomics is to infer evolutionary histories of gene families, based on the comparison of the genomic organization of extant species. Having an evolutionary perspective of gene families is a key step towards answering many fundamental biological questions. For example, tRNAs are essential to establishing a direct link between codons and their translation into amino-acids. Understanding how the content and organization of tRNAs evolve is essential to the understanding of the translational machinery, and in particular, the variation in codon usage among species (Dong et al., 2006; Kanaya et al., 1999).
In the genome rearrangement approach to comparative genomics, a genome is modeled as one or many (in case of many chromosomes) linear or circular sequences of genes (or other building blocks of a genome). When each gene is present exactly once in a genome, sequences can be represented as permutations. In the most realistic version of the rearrangement problem, a sign is associated with a gene, representing its transcriptional orientation. The pioneering work of Hannenhalli and Pevzner (Hannenhalli and Pevzner, 1995, 1999) has led to efficient algorithms for computing the inversion and/or translocation distance between two signed permutations. Since then, many other algorithms have been developed to compare permutations subject to various rearrangement operations and based on different distance measures. These algorithms have then been used from a phylogenetic perspective to infer ancestral permutations (Bourque and Pevzner, 2002; Chauve and Tannier, 2008; Ma et al., 2007; Moret et al., 2001; Sankoff and Blanchette, 1997) and evolutionary scenarios on a species tree. An extra degree of difficulty is introduced in the case of sequences containing multiple copies of the same gene, as the one-to-one correspondence between copies is not established in advance. A review of the methods used for comparing two ordered gene sequences with duplicates can be found in El-Mabrouk (2005) and Fertin et al. (2009). They can be grouped into two main classes. The “Match-and-Prune” model aims at transforming strings into permutations, so as to minimize a rearrangement distance between the resulting permutations. On the other hand, the “Block Edit” model consists of performing the minimum number of “allowed” rearrangement and content-modifying operations required to transform one string into the other. Most studied distances and ancestral inference problems in this category are NP-complete (Fertin et al., 2009).
In this paper, we focus on comparing two ordered gene sequences with duplicates. We develop our methodology for a model of evolution restricted to content-modifying operations, more specifically to duplication and loss, and then show how to extend it to other content-modifying operations, and to non-overlapping inversions. From a combinatorial point of view, the main consequence of ignoring rearrangement operations is the fact that gene organization is preserved, which allows us to reformulate the problem of comparing two gene orders as an alignment problem. Notice however that only the most recent events that have not been obscured by subsequent events are visible in such an alignment. Another advantage of a model restricted to duplication and loss is that a unique ancestral genome can directly be inferred from a duplication-loss scenario attached to a given alignment, as duplications and losses are asymmetrical operations that are applicable to one of the two aligned sequences.
Although alignments are a priori simpler to handle than rearrangements, there is no direct way of inferring optimal alignments together with a related duplication-loss scenario for two gene orders, as detailed in Section 4. Even our simpler goal of finding an alignment is fraught with difficulty as a naive branch-and-bound approach to compute such an alignment is non-trivial; trying all possible alignments with all possible duplication and loss scenarios for each alignment is hardly practicable. As it is not even clear how, given an alignment, we can assign duplications and losses in a parsimonious manner, we present in Section 4.1 a pseudo-boolean linear programming (PBLP) approach to search for the optimal alignment along with an optimal scenario of duplications and losses. The disadvantage of the approach is that, in the worst case, an exponential number of steps could be used by our algorithm. On the other hand, we show in Section 6.2 that for real data, and larger simulated genomes, the running times are quite reasonable. Further, the PBLP is flexible in that a multitude of weighting schemes for losses and duplications could be employed to, for example, favor certain duplications over others, or allow for gene conversion.
In Section 5, we extend our initial model of evolution to handle additional content-modifying operations, as well as non-overlapping inversions, and we show how to relax some constraints regarding the visible (i.e., non-intersecting) nature of operations. In Section 6.1, we apply our algorithm in a phylogenetic context to infer the evolution of stable RNA (tRNA and rRNA) gene content and organization in various genomes from the genus Bacillus, a so-called “low G+C” gram-positive clade of Firmicutes that includes the model bacterium B. subtilis as well as the agent of anthrax. Stable RNA operon organization in this group is interesting because it has relatively fewer operons that are much larger and contain more segmental duplicates than other bacterial groups. We obtained results leading to various biological insights, such as more accurate quantification of ribosomal RNA operon proliferation, their role in altering tRNA gene content, and evidence of tRNA gene class conversion.
2. Research Context
The evolution of g genomes is often represented by a phylogenetic (or species) tree T, binary or not, with exactly g leaves, each representing a different genome. When such a species tree T is known for a set of species, then we can use the gene order information of the present-day genomes to infer gene order information of ancestral genomes identified with each of the internal nodes of the tree. This problem is known in the literature as the “small” phylogeny problem, in contrast to the “large” phylogeny problem which is one of finding the actual phylogenetic tree T.
Although our methods may be extended to arbitrary genomes, we consider single chromosomal (circular or linear) genomes, represented as gene orders with duplicates. More precisely, given an alphabet Σ where each character represents a specific gene family, a genome or string is a sequence of characters from Σ where each character may appear many times. To simplify our explanation we ignore the orientation (sign) of the genes. However, our methodology is easily extendable to inclusion of this information. For example, given Σ = {a, b, c, d, e}, A = “ababcd” is a genome containing two gene copies from the gene family identified by a, two genes from the gene family b, and a single gene from each family c and d. A gene in a genome A is a singleton if it appears exactly once in A (for example c and d in A), and a duplicate otherwise (a and b in A above).
Let \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$${\cal O}$$
\end{document} be a set of “allowed” evolutionary operations. The set \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$${\cal O}$$
\end{document} may include organizational operations such as Reversals (R) and Transpositions (T), and content-modifying operations such as Duplications (D), Losses (L) or Insertions (I). For example, \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$${\cal O}$$
\end{document} = {R, D, L} is the set of operations in an evolutionary model involving reversals, duplications and losses. In the next section, we will formally define the operations involved in our model of evolution.
Given a genome A, a mutation on A is characterized by an operation O from \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$${\cal O}$$
\end{document}, the substring of A that is affected by the mutation, as well as possibly other characteristics such as the position of the re-inserted removed (in case of transposition) or duplicated substring. For simplicity, consider a mutation O(k) to be characterized solely by the operation O from \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$${\cal O}$$
\end{document}, and the size k of the substring affected by the mutation. Consider c(O(k)) to be a cost function defined on mutations. Finally, given two genomes A and X, an evolutionary historyOA→X from A to X is a sequence of mutations (possible of length 0) transforming A into X.
Let A, X be two strings on Σ with A being a potential ancestor of X, meaning that there is at least one evolutionary history \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$$O_{A \rightarrow X} = \{O_1 (k_1) , \ldots , O_l (k_l) \} $$
\end{document} from A to X. Then the cost of OA→X is:
\documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
\begin{align*}C (O_{A \rightarrow X}) = \sum_{i = 1}^l \; c (O_i (k_i))\end{align*}
\end{document}
Now let \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$${\cal O}_{A \rightarrow X}$$
\end{document} be the set of possible histories transforming A into X. Then we define:
\documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
\begin{align*}C (A \rightarrow X) = \min_{O_{A \rightarrow X} \in {\cal O}_{A \rightarrow X}} C (O_{A \rightarrow X})\end{align*}
\end{document}
Then, the small phylogeny problem can be formulated as one of finding strings at internal nodes of a given tree T that minimize the total cost:
\documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
\begin{align*}C (T) = \sum_{\hbox {all branches} \; b_i \; \hbox{of} \; T} C (X_{i , 1} \rightarrow X_{i , 2})\end{align*}
\end{document}
where Xi,1, Xi,2 are the strings labeling the nodes of T adjacent to the branch bi, with the node labeled Xi,1 being the parent of the node labeled Xi,2.
For most restrictions on genome structure and models of evolution, the simplest version of the small phylogeny problem—the median of three genomes—is NP-hard (Caprara, 1999; Pe'er and Shamir, 1998; Tannier et al., 2009). When duplicate genes are present in the genomes, even finding minimum distances between two genomes is almost always an NP-Hard task (Jiang, 2010). In this paper, we focus on cherries of a species tree (i.e., on subtrees with two leaves). The optimization problem we consider can be formulated as follows:
Two Species Small Phylogeny Problem:
Input: Two genomes X and Y.
Output: A potential common ancestor A of X and Y minimizing C(A → X) + C(A → Y).
Solving the Two Species Small Phylogeny Problem (2-SPP) can be seen as a first step towards solving the problem on a given phylogenetic tree T. The most natural heuristic to the Small Phylogeny Problem, that we will call the SPP-heuristic, is to traverse T depth-first, and to compute successive ancestors of pairs of nodes. Such a heuristic can be used as the initialization step of the steinerization method for SPP (Sankoff and Blanchette, 1997; Blanchette et al., 1997). The sets of all optimal solutions output by an algorithm for the 2-SPP applied to all pairs of nodes of T (in a depth-first traversal) can alternatively be used in an iterative local optimization method, such as the dynamic programming method developed in Kovac et al. (2011).
3. The Duplication And Loss Model Of Evolution
Our evolutionary model accounts for two operations, Duplication (denoted D) and Loss (denoted L). In other words \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$${\cal O} = \{D , L \} $$
\end{document}, where D and L are defined as follows. Let \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$$X [i \ldots i + k]$$
\end{document} denote the substring \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$$X_{i} X_{i + 1} \cdots X_{i + k}$$
\end{document} of X.
− D: A Duplication of size k+1 on \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$$X = X_1 \cdots X_{i} \cdots X_{i + k} \cdots X_j X_{j + 1} \cdots X_n$$
\end{document} is an operation that copies a substring \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$$X [i \ldots i + k]$$
\end{document} to a location j of X outside the interval [i, i + k] (i.e., preceding i or following i + k). In the latter case, D transforms X into
\documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
\begin{align*}X^{\prime} = X_1 \cdots \underline{X_{i} \cdots X_{i + k}} \cdots X_{j - 1} \underline{X_{i} \cdots X_{i + k}} X_{j + 1} \cdots X_n\end{align*}
\end{document}
We call the original copy \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$$X [i \ldots i + k]$$
\end{document} the origin, and the copied string the product of the duplication D.
− L: A Loss of size k is an operation that removes a substring of size k from X.
Notice that gene insertions could be considered in our model as well. In particular, our linear programming solution is applicable to an evolutionary model involving insertions, in addition to duplications and losses. We ignore insertions for two main reasons: (1) insertions and losses are two symmetrical operations that can be interchanged in an evolutionary scenario. Distinguishing between insertions and losses may be possible on a phylogeny, but cannot be done by comparing two genomes; (2) gene insertions are usually due to lateral gene transfer, which may be rare events compared to nucleotide-level mutations that eventually transform a gene into a pseudogene.
As duplication and loss are content-modifying operations that do not shuffle gene order, the Two Species Small Phylogeny Problem can be posed as an alignment problem. However, the only operations that are “visible” on an alignment are the events on an evolutionary history that are not obscured by subsequent events. Moreover, as duplications and losses are asymmetrical operations, an alignment of two genomes X and Y does not reflect an evolutionary path from X to Y (as operations going back to a common ancestor are not defined), but rather two paths going from a common ancestor to both X and Y. A precise definition follows.
Definition 1. Let X and Y be two genomes. A visible history of X and Y is a triplet (A, OA→X, OA→Y) where A is a potential ancestor of both X and Y, and OA→X (respectively OA→Y) are evolutionary histories from A to X (respectively from A to Y) verifying the following property: Let D be a duplication in OA→X or OA→Y copying a substring S. Let S1 be the origin and S2 be the product of D. Then D is not followed by any other operation inserting (by duplication) genes inside S1 or S2, or removing (by loss) genes from S1 or S2. We call a visible ancestor of X and Y a genome A belonging to a visible history (A, OA→X, OA→Y) of X and Y.
We now define an alignment of two genomes.
Definition 2. Let X be a string on Σ, and let Σ− be the alphabet Σ augmented with an additional character “−”. An extension ofA is a string A− on Σ− such that removing all occurrences of the character “−” from A− leads to the string A.
Definition 3. Let X and Y be two strings on Σ. An alignment of size α of X and Y is a pair (X−, Y−) extending (X, Y) such that |X−| = |Y−| = α, and for each i, 1 ≤ i ≤ α, the two following properties hold:
− If Xi−≠“−” and Yi−≠“−” then \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$$X_i^{-} = Y_i^{-}$$
\end{document} ;
− \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$$X_i^{-}$$
\end{document} and \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$$Y_i^{-}$$
\end{document} cannot be both equal to “−”.
Let \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$${\cal A} = (X^{-} , Y^{-})$$
\end{document} be an alignment of X and Y of size α. It can be seen as a 2 × α matrix, where the ith column \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$${\cal A}_i$$
\end{document} of the alignment is just the ith column of the matrix. A column is a match iff it does not contain the character ‘−’, and a gap otherwise. A gap \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$$\left[{X_i \atop -} \right]$$
\end{document} is either part of a loss in Y, or part of a duplication in X (only possible if the character Xi is a duplicate in X). The same holds for the column \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$$\left[{- \atop Y_j} \right]$$
\end{document}. An interpretation of \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$${\cal A}$$
\end{document} as a sequence of duplications and losses is called a labeling of \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$${\cal A}$$
\end{document}. The cost of a labeled alignment is the sum of costs of all underlying operations.
As duplications and losses are asymmetric operations that are applied explicitly to one of the two strings, each labeled alignment \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$${\cal A}$$
\end{document} of X and Y leads to a unique common ancestor A for X and Y. The following theorem shows that this, and the converse is true (Fig. 1).
Left: a labeled alignment between two strings X = ababacd and Y = abaad. Right: the ancestor A and two histories respectively from A to X and from A to Y obtained from this alignment. The order of operations in the history from A to Y is arbitrary.
Theorem 1.Given two genomes X and Y, there is a one-to-one correspondence between labeled alignments of X and Y and visible ancestors of X and Y.
Proof. Let A be a visible ancestor of X and Y and (A, OA→X, OA→Y) be a visible history of X and Y. Then construct a labeled alignment \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$${\cal A}$$
\end{document} of X and Y as follows: ■
1. Initialization: Define the two strings X− = Y− = A on Σ−, and define \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$${\cal A}$$
\end{document} as an alignment with all matches between X− and Y− (i.e., self-alignment of A).
2. Consider each operation of OA→X in order.
− If it is a duplication, then add the inserted string at the appropriate position in X−, and add gaps (“−” characters) at the corresponding positions in Y−. Label the inserted columns of \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$${\cal A}$$
\end{document} as a duplication in X, coming from the columns of the alignment representing the origin of the duplication.
− If it is a loss, then replace the lost characters in X− by gaps. Label the modified columns as a loss in X.
3. Consider each operation of OA→Y and proceed in a symmetrical way.
As (A, OA→X, OA→Y) is a visible history of X and Y, by definition the origins and products of duplications remain unchanged by subsequent operations on each of OA→X and OA→Y. Therefore, all intermediate labellings remain valid in the final alignment. Therefore, the constructive method described above leads to a labeled alignment of X and Y.
On the other hand, a substring \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$$X_i \cdots X_j$$
\end{document} (resp. \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$$Y_i \cdots Y_j$$
\end{document}) that is labeled as a duplication in X (resp. Y) should not be present in A, as it is duplicated on the branch from A to X (resp. from A to Y). Also, a substring \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$$X_i \cdots X_j$$
\end{document} (resp. \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$$Y_i \cdots Y_j$$
\end{document}) that is labeled as a loss in Y (resp. X) should be present in A, as it is lost on the branch from A to Y (resp. from A to X). This implies an obvious algorithm to reconstruct a unique ancestor. ■
In other words, Theorem 1 states that the Two Species Small Phylogeny Problem reduces in the case of the Duplication-Loss model of evolution to the following optimization problem.
Duplication-Loss Alignment Problem:
Input: Two genomes X and Y on Σ.
Output: A labeled alignment of X and Y of minimum cost.
4. Method
Although alignments are a priori simpler to handle than rearrangements, a straightforward way to solve the Duplication-Loss Alignment Problem is not known. We show in the following paragraphs, that a direct approach based on dynamic programming leads, at best, to an efficient heuristic, with no guarantee of optimality.
Let X be a genome of size n and Y be a genome of size m. Denote by \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$$X [1 \ldots i]$$
\end{document} the prefix of size i of X, and by \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$$Y [1 \ldots j]$$
\end{document} the prefix of size j of Y. Let C(i, j) be the minimum cost of a labeled alignment of \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$$X [1 \ldots i]$$
\end{document} and \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$$Y [1 \ldots j]$$
\end{document}. Then the problem is to compute C(m, n).
DP: A natural idea would be to consider a dynamic programming approach (DP), computing C(i, j), for all 1 ≤ i ≤ n and all 1 ≤ j ≤ m. Consider the variables M(i, j), DX(i, j), DY (i, j), LX(i, j) and LY (i, j) which reflect the minimum cost of an alignment \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$${\cal A}_{i , j}$$
\end{document} of \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$$X [1 \ldots i]$$
\end{document} and \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$$Y [1 \ldots j]$$
\end{document} satisfying respectively, the constraint that the last column of \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$${\cal A}_{i , j}$$
\end{document} is a match, a duplication in X, a duplication in Y, a loss in X, or a loss in Y. Consider the following recursive formulae.
\documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
\begin{align*} - M (i , j) = \begin{cases} \begin{matrix} C (i - 1 , j - 1) \quad {\rm if} \ X [i] = Y [j] \\ + \infty \hfill \quad \quad \quad{\rm otherwise} \hfill \end{matrix} \end{cases} \end{align*}
\end{document}\documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
\begin{align*}- L_X (i , j) = \min \nolimits_{0 \leq k \leq i - 1} [C (k , j) + c (L (i - k))]\end{align*}
\end{document}
(the corresponding formula holds for LY (i, j))
\documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
\begin{align*} - D_X (i , j) = \begin{cases} \begin{matrix} + \infty \hfill\quad\quad\qquad\qquad\qquad\qquad\qquad\qquad {\rm if} \ X [i] {\hbox {is a singleton}} \\ \min \nolimits_{l \leq k \leq i - 1} [C (k , j) + c (D (i - k))] \quad{\rm otherwise ,}\hfill \end{matrix} \end{cases} \end{align*}
\end{document}
where \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$$X [l \ldots i]$$
\end{document} is the longest suffix of \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$$X [1 \ldots i]$$
\end{document} that is a duplication
(the corresponding formula holds for DY (i, j)).
The recursions for DX and DY imply that duplicated segments are always inserted to the right of the origin. Unfortunately, such an assumption cannot be made while maintaining optimality of the alignment. For example, given the cost c(D(k)) = 1 and c(L(k)) = k, the optimal labeled alignment of S1 = abxabxab and S2 = xabx aligns ab of S2 with the second ab of S1, leading to an optimal history with two duplications inserting the second ab of S1 to its left and to its right. Such an optimal scenario cannot be recovered by DP.
DP-2WAY: As a consequence of the last paragraph, consider the two-way dynamic programming approach DP-2WAY that computes DX(i, j) (resp. DY (i, j)) by looking for the longest suffix of \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$$X [1 \ldots i]$$
\end{document} (resp. \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$$Y [1 \ldots j]$$
\end{document}) that is a duplication in the whole genome X (resp. Y). Unfortunately, DP-2WAY may lead to invalid cyclic evolutionary scenarios, as the same scenario may involve two duplications: one with origin S1 and product S2, and one with origin S2 and product S1, where S1 and S2 are two duplicated strings. This is described in more detail in Section 4.1.
DP-2WAY-UNLABELED: The problem mentioned above with the output of DP-2WAY is not necessarily the alignment itself, but rather the label of the alignment. As a consequence, one may think about a method, DP-2WAY-UNLABELED, that would consider the unlabeled alignment output by DP-2WAY, and label it in an optimal way (e.g., find an evolutionary scenario of minimum cost that is in agreement with the alignment). Notice first that the problem of finding a most parsimonious labeling of a given alignment, is not a priori an easy problem, and there is no direct and simple way to do it. Moreover, although DP-2WAY-UNLABELED is likely to be a good heuristic algorithm to the Duplication-Loss Alignment Problem, it would not be an exact algorithm, as an optimal cyclic alignment is not guaranteed to have a valid labeling leading to an optimal labeled alignment. Figure 2 shows such an example; an optimal cyclic duplication and loss scenario can be achieved by both alignments (5 operations), while the optimal acyclic scenario can only be achieved by the alignment of Figure 2b.
Alignments for strings X = “zxyzxyaxbwaxb” and Y = “zxyxwb”. We consider the following cost: c(D(k)) = 1 and c(L(k)) = k for any integer k. Matches are denoted by a vertical bar, losses denoted by an “L”, and duplications denoted by bars, brackets, and arrows. Alignment (a) yields 6 operations (3 duplications and 3 losses) and implies ancestral sequence “zxyxwaxbz”, while (b) yields 5 operations (3 duplications and 2 losses) and implies ancestral sequence “zxyaxwbz”.
4.1. The Pseudo-Boolean Linear Program
Consider genome X of length n and genome Y of length m. We show how to compute a labeled alignment of X and Y by use of pseudo-boolean linear programming (PBLP). The alignment that we compute is guaranteed to be optimal. While in the worst case our program could take an exponential number (in the length of the strings) of steps to find the alignment, our formulation has a cubic number of equations variables, and is far more efficient than scoring all possible alignments along with all possible duplication/loss scenarios. We show that practical running times can be achieved on real data in Section 6.2.
For any alignment, an element of the string X could be considered a loss (this corresponds to gaps in the alignment), a match with an element of Y, or a duplication from another element in X (these also appear as gaps in the alignment). Thus, in a feasible solution, every element must be “covered” by one of those three possibilities. The same holds for elements of Y. Figure 2 shows two possible alignments for a given pair of strings, along with the corresponding set of duplications and losses. In the alignment of Figure 2a, character x8 is covered by the duplication of x12, character a11 is covered by a loss, and character x5 is covered by a match with character x4 in Y.
Let \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$$M_j^i$$
\end{document} signify the match of character Xi to character Yj in the alignment. Say character Xi could be covered by matches \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$$M^i_1 , M^i_2 , \ldots , M^i_{p_i}$$
\end{document} or by duplications \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$$DX^i_1 , DX^i_2 , \ldots , DX^i_{s_i}$$
\end{document}. If we consider each of those to be a binary variable (can take value 0 or 1) and take the binary variable LXi as corresponding to the possibility that Xi is a loss, then we have the following equation to ensure that character Xi is covered by exactly one operation:
\documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
\begin{align*}LX^i + M^i_1 + M^i_2 + \cdots + M^i_{p_i} + DX^i_1 + DX^i_2 + \cdots + DX^i_{s_i} = 1 , \tag{1}\end{align*}
\end{document}
where pi and si are the number of matches and duplications that could cover character Xi. A potential duplication in X (\documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$$DX_l^i$$
\end{document} for some l) corresponds to a pair of distinct, but identical, substrings in X. Each pair of such substrings yields two potential duplications (substring A was duplicated from substring B or substring B was duplicated from substring A). Each of the possible O(n3) duplications gets a variable. Each position in Y gets a similar equation to Equation 1.
The order of the matches with respect to the order of the strings must be enforced. For example, in Figure 2 it is impossible to simultaneously match w10 and x12 from X with w5 and x4 of string Y; the assignment of variables corresponding to this case must be forbidden in the program. Thus, we introduce equations enforcing the order of the matches. Recall that \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$$M_j^i$$
\end{document} is the variable corresponding to the match of the ith character from X with the jth character from Y. The existence of match \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$$M_j^i$$
\end{document} implies that any match \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$$M_l^k$$
\end{document} where k ≥ i and l ≤ j (or k ≤ i and l ≥ j) is impossible, so must be forbidden by the program. The constraints can be written as:
\documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
\begin{align*}M^i_j + M^{k_1}_{l_1} \leq 1 , \ M^i_j + M^{k_2}_{l_2} \leq 1 , \ldots , \ M^i_j + M^{k_{t_i}}_{l_{t_i}} \leq 1 \tag{2}\end{align*}
\end{document}
where ti is the number of matches conflicting with \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$$M_j^i$$
\end{document}, and for any \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$$M_{lu}^{ku}$$
\end{document} we have either ku ≥ i and lu ≤ j, or ku ≤ i and lu ≥ j. There are at most a linear number of inequalities for each of the possible O(n2) matches.
Equality 1 ensures that each character will be covered by exactly one D, M, or L. Our objective function minimizes some linear combination of all Ls and all Ds:
\documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
\begin{align*}min \ c_1LX^1 + \cdots + c_nLX^n + c_{n + 1}LY^1 + \cdots + c_{n + m}LY^m + c_{n + m + 1}D_1 + \cdots + c_{n + m + q}D_q \tag{3}\end{align*}
\end{document}
where cl is a cost of the lth operation and q is the total number of duplications for all positions of X and Y (i.e., \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$$D_l = DX^i_s$$
\end{document} or \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$$D_l = DY^j_r$$
\end{document} for some i, j, s, and r). The full PBLP (excluding the trivial integrality constraints) is then:
\documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
\begin{align*} \min \ & c_1LX^1 + \cdots + c_nLX^n + c_{n + 1}LY^1 + \cdots + c_{n + m}LY^m \\ & + c_{n + m + 1}D_1 + c_{n + m + 2}D_2 + \cdots + c_{n + m + q}D_q \\ {\rm s.t.} \ & {LX^i + M^i_1 + M^i_2 + \cdots + M^i_{p_i} + DX^i_1 + \cdots + DX^i_{s_i} = 1} , \ {0 \leq i \leq n} \\ & {LY^j + M^1_j + M^2_j + \cdots + M^{q_j}_j + DY^j_1 + \cdots + DY^j_{r_j} = 1} , \ {0 \leq j \leq m} \\ & {M^i_j + M^{k_1}_{l_1} \leq 1 , \ M^i_j + M^{k_2}_{l_2} \leq 1 , \ldots , M^i_j + M^{k_{t_i}}_{l_{t_i}} \leq 1} , \quad \,\;{\forall i , j} \ {\rm s.t.} \ X_i = Y_j \ {\rm and} \\ & \qquad \qquad \qquad \qquad \qquad \qquad \qquad \qquad \qquad \qquad \,\; (k_m \geq i \ {\rm and} \ l_m \leq \,j) , {\rm or} \\ & \qquad \qquad \qquad \qquad \qquad \qquad \qquad \qquad \qquad \qquad \,\; (k_m \leq i \ {\rm and} \ l_m \geq \,j) \end{align*}
\end{document}
In the example illustrated in Figure 2—where X = “zxyzxyaxbwaxb” and Y = “zxyxwb”—there are 17 variables corresponding to matches, 20 variables corresponding to losses, and 24 variables corresponding to duplications.
Cyclic Duplications: Recall the definition of the product of a duplication; in Figure 2b, the product of the leftmost duplication is z4, x5, and y6. Consider a sequence of duplications \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$$D_1 , D_2 , \ldots , D_l$$
\end{document} and characters \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$$a_1 , a_2 , \ldots , a_l$$
\end{document} such that character ai is in the product of Di and is the duplication of a character in the product of Di−1 (a1 is the duplication of some character a0). We call this set of duplications cyclic if D1 = Dl. Consider the set of duplications {D1, D2} where D1 duplicates the substring X1X2 to produce the substring X3X4 and D2 duplicates the substring X4X5 to produce the substring X1X2. This implies the sequence of characters X2, X4, X1, X3 corresponding to the cyclic duplication D1, D2, D1.
Theorem 2.A solution to the PBLP of Section 4.1 that has no cyclic set of duplications is an optimal solution to the Duplication-Loss Alignment problem.
Proof.Equation 1 ensures that each character of X is either aligned to a character of Y, aligned to a loss in Y, or the product of a duplication. The similar holds for each character of Y. Since there exists no cyclic set of duplications, then the solution given by the PBLP is a feasible solution to the Duplication-Loss Alignment problem. The minimization of Formula 3 guarantees optimality. ■
However, if there does exist a cyclic duplication set, the solution given by the PBLP is not a feasible solution since the cycle implies a scenario that is impossible; the cycle implies a character that does not exist in the ancestor but does appear in X. A cyclic duplication set \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$$\{D_1 , D_2 , \ldots , D_l \} $$
\end{document} can be forbidden from a solution of the PBLP by the inclusion of the following inequality:
\documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
\begin{align*}D_1 + D_2 + \cdots + D_l \leq l - 1. \tag{4}\end{align*}
\end{document}
The following algorithm guarantees an acyclic solution to the PBLP.
PBLP ← PBLP plus constraint\documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$$D_1 + D_2 + \cdots + D_l \leq l - 1$$
\end{document}
end for
get solution S to the PBLP
end whileS
end
It simply runs the PBLP and each time it finds a cyclic set of duplications, it adds the corresponding constraint to forbid the set and reruns the PBLP. It is clear that Algorithm 1 guarantees an acyclic solution:
Theorem 3.Algorithm 1 returns an optimal solution to the Duplication-Loss Alignment problem.
Note that the constraints to forbid all possible cyclic sets of duplications, given a particular X and Y, could be added to the PBLP from the start, but in the worst case there is an exponential number of such constraints. We will see in Section 6.2 that in practice we do not have to rerun the PBLP many times to find an acyclic solution.
5. Extended Models Of Evolution
This section shows how the PBLP may be adapted to handle additional content-modifying operations, as well as some rearrangement events. We will also consider the possibility of applying general distance methods to specific substrings for which we may want to consider less visible events. For any considered set \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$${\cal O}$$
\end{document} of allowed operations, the goal will be to add the appropriate equations to the PBLP in order to output an alignment reflecting a most parsimonious visible history.
Before describing our new operations, we need to define the notion of a visible history in a more general context, as Definition 1 is restricted to visible duplications. Definition 4 given bellow is general. Recall that a duplication operation has an origin and a product. In the case of rearrangement operations and losses, we consider the origin to be the empty string, and the product to be the resulting string. So in the case of inversions, the product is the inverted string, and in the case of losses both the origin and product are empty.
Definition 4. Let X and Y be two genomes. A visible history of X and Y is a triplet (A, OA→X, OA→Y) where A is a potential ancestor of both X and Y, and OA→X (respectively OA→Y) are evolutionary histories from A to X (respectively from A to Y) verifying the following property: Let O be an operation in OA→X. Let S1 be the origin and S2 be the product of O. Then O is not followed by any other operation modifying (by insertion, deletion, substitution or rearrangement) S1 or S2.
5.1. Substitution
For the sake of generality, in addition to duplication, loss, and insertion (horizontal gene transfer discussed in Section 3), it seems natural to include substitution which is another content-modifying operation representing the conversion of a gene from one function to another.
− S: A Substitution is an operation that replaces a character Xi at a given position i of a string X by another character Yi.
Interestingly, applying our algorithm to the tRNA gene content in Bacillus (see Section 6) revealed misaligned positions that are likely to be substitutions representing tRNA functional shift.
The PBLP naturally generalizes to substitutions. In this case, a character Xi can be covered by any one of the characters of Y (i.e., there are exactly m match variables in Equation 1). However, the cost attached to a variable \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$$M_j^i$$
\end{document} has to be positive in case of a substitution (Xi ≠ Yj). Instead of attributing a constant cost for substitution it seems reasonable to allow for a cost which is dependent upon the aligned characters, corresponding to the likelihood of the particular gene conversion. It follows that the objective function of the PBLP has to be augmented with m × n terms of the form \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$$c_{ij}M^{i}_j$$
\end{document}.
Notice that the convenient property of asymmetry that holds for the Duplication and Loss model of evolution, which allows for the one-to-one correspondence between labeled alignments and visible ancestors (Theorem 1), does not hold anymore for the generalized model with substitution. Indeed, an alignment of character Xi with Yj can be either interpreted as a substitution from Xi to Yj or from Yj to Xi, leading respectively to an ancestor with character Xi or Yj.
5.2. Inversion
Although, in general, comparing two genomes based on genome rearrangement events can not be done with an alignment approach, non-overlapping inversions in a context of a visible history can be handled by our approach. Notice however that, similar to substitutions, inversions are symmetrical operations that can be applied to either one of the two genomes being considered; we lose the one-to-one correspondence between labeled alignments and visible ancestors (Theorem 1).
− I: An Inversion is an operation that transforms a proper substring \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$$X [i + 1 \ldots i + k] = X [i + 1] X [i + 2] \cdots X [i + k]$$
\end{document} of X into its reverse substring\documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$$X [i + 1 \ldots i + k] = X [i + k] \cdots X [i + 2] X [i + 1].$$
\end{document}
− ID: An Inverted Duplication of size k is an operation that copies the reverse of a substring \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$$X [i + 1 \ldots i + k]$$
\end{document} to a location j of X outside the interval [i + 1, i + k].
In order to handle inversions, Equation 1 is augmented with variables \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$$IX^{i}_1 , IX^{i}_2 , \cdots IX^{i}_{u_i}$$
\end{document}. A potential inversion (\documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$$IX^{i}_l$$
\end{document} for some l) corresponds to a pair (X′, Y′), where X′ is a substring of X covering position i, and Y′ is a substring of Y such that Y′ is the reverse of X′. There are O(n3) such possible pairs, and thus O(n3) variables corresponding to an inversion operation for each i.
In order to handle inverted duplication, Equation 1 is augmented with variables \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$$IDX_{l}^{i}$$
\end{document} corresponding to all pairs (X′, X″) of disjoint substrings of X such that X′ covers position i and X″ is the reverse of X′. There are also O(n3) such pairs.
5.3. Relaxing the visibility criterion
The main restriction of our methodology imposed by the alignment strategy is the fact that only the most recent operations in a history, namely those that have not been obscured by subsequent operations, can be detected as visible in the alignment. More precisely, a duplication or inversion that is followed in the history by an operation affecting its origin or product is not detectable by our base method. In this section, we show that some relaxation of this restriction is possible.
The idea is that any substring of X can be covered by another substring Xo of X by a duplication of Xo followed by a series of operations. Alternatively, any substring of X can be covered by any substring of Y through some series of operations. For example, the substring ac of S3 = acabc could be covered by the duplication of abc before a loss of b. Alternatively, ac from S3 could be covered by the inversion of the substring ca in S4 = caabc.
In general we could create O(n4) variables, each corresponding to covering a substring of X with another substring, the coefficient of the variable in the objective function being the cost of such a scenario. In practice, only certain pairs of substrings under certain sets of operations may be interesting. In this section we outline a few of the possible cases.
The DupLoss operation: Consider a duplication that has been followed by a sequence of losses reducing the number of copied genes. We introduce a new operation representing such a sequence of events.
− DL: A DupLossDL(k, l) of duplication size k and loss size l on a string X, is an operation that copies a substring \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$$X [i + 1 \ldots i + k]$$
\end{document} of X to a location j of X outside the interval [i + 1, i + k], and removes l < k characters from the copied substring.
The most natural way to compute the cost for a DupLoss DL(k, l) is to sum up the cost of the duplication with that of the loss events. For example, in case of a size independent loss cost, c(DL(k, l)) = c(D(k)) + l × c(L).
The generalization of the PBLP requires additional binary variables corresponding to the possibility that a character is covered by a DupLoss. More precisely, Equation 1 should be augmented with variables \documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$$DLX_{1}^{i} , DLX_{2}^{i} , \ldots , DLX_{t_i}^{i}$$
\end{document}. A potential DupLoss in X (\documentclass{aastex}\usepackage{amsbsy}\usepackage{amsfonts}\usepackage{amssymb}\usepackage{bm}\usepackage{mathrsfs}\usepackage{pifont}\usepackage{stmaryrd}\usepackage{textcomp}\usepackage{portland, xspace}\usepackage{amsmath, amsxtra}\pagestyle{empty}\DeclareMathSizes{10}{9}{7}{6}\begin{document}
$$DLX_{l}^{i}$$
\end{document} for some l) corresponds to origin A and product B where B is a subsequence of A, and B spans the index i. In this case, there are O(n4) possible pairs, and thus O(n4) variables corresponding to a DupLoss operation for each i.
The Inversion operation: The previous section allows us to align genomes in the presence of non-overlapping inversions where the content of the inverted substring is identical in the two genomes. In this section, we introduce a relaxation on this constraint by allowing the detection of a consecutive sequence of possibly intersecting inversions.
− IB: An Inversion Bloc of size k on a string X is a sequence of k consecutive inversions acting on X.
− IDB: An Inverted Duplication Bloc of size k is a duplication D followed by an inversion bloc of size k acting on the product of D.
The most natural cost for an inversion bloc is simply the number of inversions in the bloc, while the most natural cost for an inverted duplication bloc is the cost of the duplication plus the number of inversions.
We use the notion of common interval considered in the genome rearrangement literature (Bergeron et al., 2008; Bergeron and Stoye, 2003; Landau et al., 2005).
A pair of common intervals (A, B) is a pair of strings with the exact same gene content (same alphabet with the same number of copies for each character). Clearly, given two strings A and B, there is an inversion bloc transforming A into B if and only if (A, B) is a pair of common intervals.
The idea will be to interpret the alignment between a pair of common intervals (X′, Y′), where X′ is a substring of genome X and Y′ a substring of genome Y, as resulting from an inversion bloc, with cost corresponding to the inversion distance (i.e., the minimum number of inversions transforming X′ into Y′). Similarly, we will interpret a pair of common intervals (X′, X″), where X′ and X″ are two disjoint substrings of X, as an inverted duplication bloc.
In the case of X′ and Y′ being two permutations, computing the inversion distance between the two strings can be done in linear time (Bader et al., 2001). Although the problem is NP-complete in the general case of substrings with multiple gene copies (Angibaud et al., 2007; Blin et al., 2007; Chauve et al., 2006), many heuristics exist for approximating the inversion distance (Chen et al., 2006; Sankoff, 1999; Shi et al., 2010; Swenson et al., 2005).
6. Applications
6.1. Evolution of stable RNA gene content and organization in Bacillus
The stable RNAs are chiefly transfer RNAs (tRNAs) and ribosomal RNAs (rRNAs), which are essential in the process of translating messenger RNAs (mRNAs) into protein sequences. They are usually grouped in the genome within clusters (or operons in the case of microbial genomes), representing highly repetitive regions, causing genomic instability through illegitimate homologous recombination. In consequence, stable RNA families are rapidly evolving by duplication and loss (Bermudez-Santana et al., 2010; Rogers et al., 2010; Withers et al., 2006).
We applied Algorithm 1 (without the extensions of Section 5) in a phylogenetic context, using the SPP-heuristic described at the end of Section 2, to analyze the stable RNA content and organization of 5 Bacillus lineages: Bacillus cereus ATCC 14579 (NC4722), Bacillus cereus E33L (NC6274), Bacillus anthracis (NC7530), Bacillus licheniformis ATCC 14580 (NC6322) and Bacillus subtilis (NC964). The overall number of represented RNA families in these genomes is around 40, and the total number of RNAs in each genome is around 120. Our PBLP algorithm processes each pair of these genomes in a few seconds. We used the following cost for duplications and losses: c(D(k)) = 1 and c(L(k)) = k, for any integer k representing the size of an operation. The phylogeny in Figure 3 reflects the NCBI taxonomy. Each leaf is labeled by a block representation of the corresponding genome. Details on each colored block is given in Figure 4.
An inferred evolutionary history for the five Bacillus lineages identified with each of the five leaves of the tree. Circular bacterial genomes have been linearized according to their origin of replication (e.g., the endpoints of each genome is its origin of replication). Bar length is proportional to the number of genes in the corresponding cluster. A key for the bars is given in Figure 4, except for white bars that represent regions that are perfectly aligned inside the two groups (cereus, anthracis) and (licheniformis, subtilis), but not between the two groups. More specifically, the 27 duplications and losses reported on the top of the tree are obtained from the alignment of these white regions. Finally, each Δ represents a loss and each ∇ is an insertion.
The RNA gene clusters represented by each colored bar of Figure 3. Ribosomal RNAs are identified by their families' names: 16S, 23S, 5S. Each tRNA is identified by its anticodon preceded by the letter corresponding to the corresponding amino-acid. The symbol ’,’ (respectively ’;’) separates two genes that are inside (resp. not inside) the same operon.
The costs and evolutionary scenarios given in Figure 3 are those output by our algorithm after interpretation. In particular, the five Bacillus genomes all show a large inverted segment in the region to the left of the origin of replication (the right part of each linearized representation in Figure 3). As the algorithm without extensions has been used, we preprocessed the genomes by inverting this segment. The genome representations given in Figure 3 are, however, the true ones. Signs given below the red bars represent their true orientations. Consequently, the duplication of the right-most red bar to the left-most position should be interpreted as an inverted duplication that occurred around the origin of replication. On the other hand, some duplications of the red bar have been reported by our algorithm as two separate duplications of two segments separated by a single gene. After careful consideration, these pairs of duplications are more likely a single duplication obscured by subsequent substitution, functional shift or loss of a single tRNA gene. Also, when appropriate (e.g., when a lone gene is positioned in a lone genome), we interpreted some of the losses in our alignments as insertions.
The ancestral genomes given in Figure 3 are those output by our algorithm. They reflect two separate inverted duplications that would have occurred independently in each of the two groups (cereus, anthracis) and (licheniformis, subtilis). We could alternatively infer that the ancestral Bacillus genome already contained both the origin and product of the inverted duplication. The consequence would be the simultaneous loss of the leftmost red bar in three of the five considered genomes. Moreover, nucleotide sequence alignment of the red bars in subtilis and cereus ATCC reveal a higher conservation of pairs of paralogous bars versus orthologous ones, which may indicate that inverted duplications are recent. Whatever the situation is, our inference of a duplication around the origin of replication is in agreement with the observation that has been largely reported in the literature that bacterial genomes have a tendency to preserve a symmetry around the replication origin and terminus (Eisen et al., 2000; Tillier and Collins, 2000; Ajana et al., 2002). The results also show independent proliferation of ribosomal RNA gene-containing operons in Bacillus, which has been associated to selection for increased growth rate (Ardell and Kirsebom, 2005). They also show that in Bacillus, growth-selection on ribosomal RNA operon expansions may significantly alter tRNA gene content as well. The results given in Figure 5 also suggest that some tRNA genes may have been affected by substitutions leading to conversions of function. Such tRNA functional shifts have been detected in metazoan mitochondrial genomes (Rawlings et al., 2003) and bacteria (Saks and Conery, 2007).
(a) Genomes of Figure 3 restricted to their red bars; (b) An alignment of all red bars, reflecting one gene insertion (or alternatively 5 gene losses) and substitutions, indicated by ‘*’.
6.2. Execution time
Running times were recorded using a 12-core AMD 2.1-GHZ processor, with 256 GB of RAM, and the (multithreaded) IBM CPLEX solver under the default settings. Note that a significant amount of memory (>1 GB) was required only for sequences of several thousand genes; all tests reported here could be run on a standard laptop with 2 GB of memory. Alignments of all pairs of genomes for each of three sets of stable RNA gene orders were computed. The average computation time for the Bacillus pairs was under thirty seconds. The average computation time for pairs from 13 Staphylococcus was under a second. Pairs from a dataset of Vibrionaceae which had a very high number of paralogs and a large number of rearrangements took a couple of days.
6.3. Simulations
Simulations were run in order to explore the limits of our method (full results not shown due to space limitations). A random sequence R was drawn from the set of all sequences of length n and alphabet size a. l moves were then applied to R to obtain the ancestral sequence A. To obtain the extant sequences X and Y, l more moves were applied to A for each. The set of moves were segmental duplications and single gene losses. The length of a duplication was drawn from a Gaussian distribution with mean 5 and standard deviation 2; these lengths were consistent with observations on Bacillus and Staphylococcus. Average running times for sequences with a fixed ratio of 2l/n = 1/5 and a/n = 1/2 (statistics similar to those observed in Bacillus) were always below 6 minutes for n < 800. Sequences of length 2000 took less than 2 hours and sequences of length 5000 took a couple of days. When varying l, n, and a the most telling factor for running time was the ratio a/n. This explains the high running times for the set of Vibrionaceae which had, on average, nearly 100 moves for a sequence of length 140.
The distance of our computed ancestor to the simulated ancestor was found by computing an alignment between the two. For values of n = 120, a = 40, and l = 15 (values that mimic the statistics of more distant pairs of the Bacillus data) we compute ancestors that are, on average, 5 moves away from the true ancestor. In general, for sequences with ratios 2l/n = 1/5 and a/n = 1/2, the average distance to the true ancestor stays at about 15% of l.
7. Conclusion
We have considered the two species small phylogeny problem for an evolutionary model reduced to non-overlapping (visible) content-modifying operations. We provided some extensions to the model by incorporating overlapping operations, and inversions. Although exponential running times are possible in the worst case, our pseudo-boolean linear programming algorithm turns out to be fast on real datasets, such as the RNA gene repertoire of bacterial genomes. We have also explored avenues for developing efficient non-optimal heuristics. As described in Section 4, a dynamic programming approach can be used to infer a reasonable, though not necessarily optimal unlabeled alignment of two genomes, or a labeled but possibly cyclic alignment. A recent investigation on the complexity of these problems has revealed that the minimum labeling alignment problem is APX-hard [Dondi and El-Mabrouk(2012)]. In future work the apparently easy “core” of finding a possibly cyclic alignment may be leveraged to use the Lagrangian relaxation technique—in this case each constraint against a cyclic duplication set would correspond to a modification of the objective function in our dynamic program.
Application to the RNA gene content of five Bacillus lineages has pointed out a number of interesting biological mechanisms that have to be further investigated. Probably the most interesting observations are the substitutions occurring among the tRNAs. Indeed, as illustrated in Figure 5, some positions indicate a shift of the anticodon, and thus potentially a shift of the original function of the tRNA. Alternatively, such divergence may just be an indication that the tRNA is in the process of losing its function and becoming a pseudogene. Taking into consideration not only the anticodon but rather the entire tRNA sequence, and comparing with additional lineages, may allow to conclude to one or the other alternative. Also other investigations on sequence alignment are required to test our hypothesis that two inverted duplications around the origin of replication have occurred independently on each group (cereus, anthracis) and (licheniformis, subtilis), rather than a single duplication preceding the Bacillus ancestor, followed by losses of the same regions in each of the two monophyletic groups.
8. Alignment Details
Ribosomal RNAs are grouped in bacteria into three families: the 16S, 5S, and 23S rRNAs. As the major role of tRNAs is to serve as adapters between codons along the mRNA and the corresponding amino acids, we group them according to their anticodon. More precisely, the four-letter designation starts with one letter indicating functional class (either an IUPAC one-letter code for a charged amino acid, “X” for initiator or “J” for a special class of isoleucine tRNA) followed by an anticodon sequence in a DNA alphabet. The full alignment as given by our program is available as Supplementary Material at www.liebertpub.com/cmb/.
Footnotes
Disclosure Statement
No competing financial interests exist.
*
The code is freely available upon request.
References
1.
AjanaY., LefebvreJ., TillierE., El-MabroukN.2002. Exploring the set of all minimal sequences of reversals—an application to test the replication-directed reversal hypothesis. Lect. Notes Comput. Sci., 2452:300–315.
2.
AngibaudS., FertinG., RusuI., VialetteS.2007. A general framework for computing rearrangement distances between genomes with duplicates. J. Comput. Biol., 14:379–393.
3.
ArdellD., KirsebomL.2005. The genomic pattern of tDNA operon expression in E. coli. PLoS Comput. Biol., 1:e12.
4.
BaderD., MoretB., YanM.2001. A fast linear-time algorithm for inversion distance with an experimental comparison. J. Comput. Biol., 8:483–491.
5.
BergeronA., ChauveC., GingrasY.2008. Formal models of gene clusters. MandoiuI., ZelikovskyA.Bioinformatics Algorithms: Techniques and Applications. Wiley: New York 10.1002/9780470253441.ch8.
6.
BergeronA., StoyeJ.2003. On the similarity of sets of permutations and its applications to genome comparison. J. Comput. Biol., 13:1340–1354.
BlanchetteM., BourqueG., SankoffD.1997. Breakpoint phylogenies. Proc. Genome Informatics Workshop, 25–34.
9.
BlinG., ChauveC., FertinG., RizziR., VialetteS.2007. Comparing genomes with duplications: a computational complexity point of view. IEEE/ACM Trans. Comput. Biol. Bioinform., 4:523–534.
10.
BlommeT., VandepoeleK., BodtS.D., SilmillionC., MaereS., van de PeerY.2006. The gain and loss of genes during 600 millions years of vertebrate evolution. Genome Biol., 7:R43.
11.
BourqueG., PevznerP.2002. Genome-scale evolution: reconstructing gene orders in the ancestral species. Genome Res., 12:26–36.
12.
CapraraA.1999. Formulations and hardness of multiple sorting by reversals. Proc. RECOMB, 84–94.
13.
ChauveC., FertinG., RizziR., VialetteS.2006. Genomes containing duplicates are hard to compare. Lect. Notes Comput. Sci., 3992:783–790.
14.
ChauveC., TannierE.2008. A methodological framework for the reconstruction of contiguous regions of ancestral genomes and its application to mammalian genomes. PLoS Comput. Biol., 4:e1000234.
15.
ChenZ., FuB., ZhuB.2006. The approximability of the exemplar breakpoint distance problem. Lect. Notes Comput. Sci., 4041:291–302.
16.
CottonJ., PageR.2005. Rates and patterns of gene duplication and loss in the human genome. Proc. R. Soci. Lond. Ser. B, 272:277–283.
17.
DemuthJ., BieT.D., StajichJ., CristianiniN., HahnM.2006. The evolution of mammalian gene families. PLoS ONE, 1:e85.
18.
DondiR., El-MabroukN.2012. On the complexity of minimum labeling alignment of two genomesarXiv:1206.1877 [cs.CC]
19.
DongH., NilssonL., KurlandC.G.2006. Co-variation of tRNA abundance and codon usage in Escherichia coli at different growth rates. J. Mol. Biol., 260:649–663.
20.
EichlerE., SankoffD.2003. Structural dynamics of eukaryotic chromosome evolution. Science, 301:793–797.
21.
EisenJ., HeidelbergJ., WhiteO., SalzbergS.2000. Evidence for symmetric chromosomal inversions around the relication origin in bacteria. Genome Biol., 1research0011.1–0011.9.
22.
El-MabroukN.2005. Genome rearrangement with gene families 291–320. Mathematics of Evolution and Phylogeny. Oxford University Press: Oxford, UK.
23.
FertinG., LabarreA., RusuI., TannierE., VialetteS.2009. Combinatorics of Genome Rearrangements. MIT Press: Cambridge, MA.
24.
HahnM., HanM., HanS.-G.2007. Gene family evolution across 12 Drosophila genomes. PLoS Genet., 3:e197.
25.
HannenhalliS., PevznerP.A.1995. Transforming men into mice (polynomial algorithm for genomic distance problem)Proc. IEEE 36th Annu. Symp. Found. Comput. Sci., 581–592.
26.
HannenhalliS., PevznerP.A.1999. Transforming cabbage into turnip (polynomial algorithm for sorting signed permutations by reversals)J. ACM, 48:1–27.
27.
JiangM.2010. The zero exemplar distance problem. Proc. RECOMB-CG, 74–82.
28.
KanayaS., YamadaY., KudoY., IkemuraT.1999. Studies of codon usage and tRNA genes of 18 unicellular organisms and quantification of Bacoillus subtilis tRNAs: gene expression level and species-specific diversity of codon usage based on multivariate analysis. Gene, 238:143–155.
29.
KovacJ., BrejovaB., VinarT.2011. A practical algorithm for ancestral rearrangement reconstruction. Lect. Notes Bioinform., 6833:163–174.
30.
LandauG., ParidaL., WeimannO.2005. Gene proximity analysis across whole genomes via PQ trees. J. Comput. Biol., 12:1289–1306.
31.
LynchM., ConeryJ.2000. The evolutionary fate and consequences of duplicate genes. Science, 290:1151–1155.
32.
MaJ., ZhangL., SuhB., RaneyB., BurhansR., KentW., BlanchetteM., HausslerD., MillerW.2007. Reconstructing contiguous regions of an ancestral genome. Genome Res., 16:1557–1565.
33.
MoretB., WangL., WarnowT., WymanS.2001. New approaches for reconstructing phylogenies from gene order data. Bioinformatics, 17:S165–S173.
34.
OhnoS.1970. Evolution by Gene Duplication. Springer: Berlin.
35.
Pe'erI., ShamirR.1998. The median problems for breakpoints are NP-complete. Proc. Elec. Colloq. Comput. Complexity, 71.
36.
RawlingsT., CollinsT., BielerR.2003. Changing identities: trna duplication and remolding within animal mitochondrial genomes. Proc. Natl. Acad. Sci. USA, 100:15700–15705.
37.
RogersH., BergmanC., Griffiths-JonesS.2010. The evolution of tRNA genes in Drosophila. Genome Biol. Evol., 2:467–477.
SankoffD.1999. Genome rearrangements with gene families. Bioinformatics, 15:909–917.
40.
SankoffD., BlanchetteM.1997. The median problem for breakpoints in comparative genomics. Lect. Notes Comput. Sci., 1276:251–263.
41.
ShiG., ZhangL., JiangT.2010. MSOAR 2.0: Incorporating tandem duplications into ortholog assignment based on genome rearrangement. BMC Bioinformatics, 11:10.
42.
SwensonK., MarronM., Earnest-DeYoungJ., MoretB.2005. Approximating the true evolutionary distance between two genomes. Proc. 7th SIAM Workshop Algorithm Engineering Experiments, 121–129.
43.
TangD., GlazovE., McWilliamS., BarrisW., DalrympleB.2009. Analysis of the complement and molecular evolution of tRNA genes in cow. BMC Genomics, 10:188.
44.
TannierE., ZhengC., SankoffD.2009. Multichromosomal median and halving problems under different genomic distances. BMC Bioinformatics, 10:120.
45.
TillierE., CollinsR.2000. Genome rearrangement by replication-directed translocation. Nat. Genet., 26:134–135.
46.
WapinskiI., PfefferA., FriedmanN., RegevA.2007. Natural history and evolutionary principles of gene duplication in fungi. Nature, 449:54–61.
47.
WithersM., WernischL., ReisM.D.2006. Archaeology and evolution of transfer RNA genes in the Escherichia coli genome. Bioinformatics, 12:933–942.
Supplementary Material
Please find the following supplemental material available below.
For Open Access articles published under a Creative Commons License, all supplemental material carries the same license as the article it is associated with.
For non-Open Access articles published, all supplemental material carries a non-exclusive license, and permission requests for re-use of supplemental material or any part of supplemental material shall be sent directly to the copyright owner as specified in the copyright notice associated with the article.