Skip to main content
Bioinformatics logoLink to Bioinformatics
. 2018 Sep 8;34(17):i671–i679. doi: 10.1093/bioinformatics/bty589

SPhyR: tumor phylogeny estimation from single-cell sequencing data under loss and error

Mohammed El-Kebir 1,
PMCID: PMC6153375  PMID: 30423070

Abstract

Motivation

Cancer is characterized by intra-tumor heterogeneity, the presence of distinct cell populations with distinct complements of somatic mutations, which include single-nucleotide variants (SNVs) and copy-number aberrations (CNAs). Single-cell sequencing technology enables one to study these cell populations at single-cell resolution. Phylogeny estimation algorithms that employ appropriate evolutionary models are key to understanding the evolutionary mechanisms behind intra-tumor heterogeneity.

Results

We introduce Single-cell Phylogeny Reconstruction (SPhyR), a method for tumor phylogeny estimation from single-cell sequencing data. In light of frequent loss of SNVs due to CNAs in cancer, SPhyR employs the k-Dollo evolutionary model, where a mutation can only be gained once but lost k times. Underlying SPhyR is a novel combinatorial characterization of solutions as constrained integer matrix completions, based on a connection to the cladistic multi-state perfect phylogeny problem. SPhyR outperforms existing methods on simulated data and on a metastatic colorectal cancer.

Availability and implementation

SPhyR is available on https://github.com/elkebir-group/SPhyR.

Supplementary information

Supplementary data are available at Bioinformatics online.

1 Introduction

Cancer is a genetic disease that results from an evolutionary process, where somatic mutations accumulate in a population of cells (Nowell, 1976). These mutations arise during the lifetime of an individual and vary in genomic scale, ranging from single-nucleotide variants (SNVs) that affect a single base to copy-number aberrations (CNAs) that affect large genomic regions. Many generations of cell division, mutation and selection yield a highly heterogeneous tumor, composed of different groups of cancerous cells, where each group is characterized by a different complement of somatic mutations. This phenomenon is known as intra-tumor heterogeneity, and has important implications for both our understanding of cancer progression and for treatment outcome (Tabassum and Polyak, 2015). Knowledge on the evolutionary history of the cells of a tumor enables one to understand the mechanisms that result in intra-tumor heterogeneity. Unfortunately, DNA sequencing data alone do not describe the evolutionary history of a tumor. Rather, they only give us mutational information about a subset of tumor cells present at the time of sequencing.

Similarly to the evolution of species and languages, the evolutionary history of tumor cells can be appropriately modeled by a phylogenetic tree. We consider a character-based phylogenetic tree T, whose leaves, or taxa, correspond to cells sequenced at the present time, and whose internal nodes correspond to ancestral cells. Each node of T is labeled by the set of characters, or mutations, it contains. The root node is a non-mutated, normal cell. To reconstruct T from sequencing data, we require a generative model for the sequencing data and an evolutionary model for T.

Most cancer sequencing studies use bulk DNA sequencing, where one obtains short reads from hundreds of thousands of cells that are sequenced in bulk. These mixed measurements must be deconvolved to quantify intra-tumor heterogeneity. More recently, single-cell sequencing (SCS) has been proposed as alternative to bulk sequencing in cancer (Navin, 2014). Contrary to bulk sequencing, individual tumor cells are sequenced in SCS and thus one directly observes the leaves of T. However, current SCS technology is very error-prone and suffers from elevated rates of false positives, false negatives and missing data (Fig. 1). These errors can be corrected by estimating the phylogenetic tree T, describing the evolutionary history of all mutations. This task requires an evolutionary model.

Fig. 1.

Fig. 1.

Tumor phylogeny estimation from single-cell sequencing (SCS) data. Heterogeneous tumors are composed of distinct cellular populations with distinct complements of somatic mutations, including single-nucleotide variants (SNVs) and copy-number aberrations (CNAs). During cancer progression, SNVs are frequently lost due to copy-number aberrations, but rarely introduced more than once. Here, single-cell sequencing of a tumor yields an input matrix D, whose m rows are cells and n columns are SNVs. Matrix D has incorrect and/or missing entries. We aim to simultaneously correct errors in matrix D and infer the evolutionary history of the m cells, yielding output matrix B and the corresponding phylogenetic tree T. The evolutionary model employed by our method SPhyR is the k-Dollo parsimony model, where each SNV can only be gained once but lost at most k times. SPhyR is based on a combinatorial characterization of k-Dollo phylogenetic trees T as k-Dollo completions A of a binary matrix B

Evolutionary models constrain changes of characters along the edges of T. A character can either be gained or lost on each edge of T. Multiple gains of the same character indicate parallel evolution, whereas losses indicate back mutation. A tree T whose characters do not exhibit parallel evolution or back mutation/loss is said to be homoplasy-free. The infinite sites model or perfect phylogeny model requires that T is homoplasy-free. This model has been used extensively in cancer genomics for both bulk sequencing data (Dang et al., 2017; Deshwar et al., 2015; El-Kebir et al., 2015; Malikic et al., 2015; Nik-Zainal et al., 2012; Popic et al., 2015; Yuan et al., 2015) and single cell sequencing data (Jahn et al., 2016; Ross and Markowetz, 2016). Importantly, while parallel evolution of SNVs is rare in cancer, losses of SNVs are ubiquitous due to wide-spread copy-number loss of large genomic regions (Kuipers et al., 2017). Thus, less restrictive evolutionary models are essential to accurately model the somatic mutational process of SNVs in cancer. Recently, Zafar et al. (2017) introduced a phylogeny estimation algorithm that is based on the finite sites model. In this model, a character may change state more than once, and thus parallel evolution and mutation loss may occur. The Dollo parsimony model (Dollo, 1893) is a slightly more restrictive evolutionary model: a character may only be gained once but lost multiple times. That is, the Dollo parsimony model allows back mutation/loss but does not allow for parallel evolution. This model has been applied recently in the context of tumor phylogeny estimation from bulk sequencing data (Bonizzoni et al., 2017b). As the main source of homoplasy in cancer evolution is due to loss of SNVs caused by copy-number aberrations, the Dollo parsimony model provides a good evolutionary model for the evolution of SNVs in cancer.

Here, we consider the k-Dollo parsimony model, which restricts the Dollo parsimony model to at most k losses per character. We show that the problem of inferring a k-Dollo phylogeny given an error-free binary matrix B is a variant of the cladistic multi-state perfect phylogeny problem (Fernández-Baca, 2000). We prove that solutions to this problem are constrained integer matrix completions of the input matrix B (Fig. 1), allowing us to derive an efficient integer linear programming formulation that solves practical problem instances in seconds. We introduce SPhyR (Single-cell Phylogeny Reconstruction), a coordinate-ascent based approach that infers a k-Dollo phylogeny from single-cell sequencing data with errors. On simulated data, we show that SPhyR outperforms existing methods, that are either based on the infinite sites or the finite sites evolutionary model, in terms of solution quality and run time. On real data, we show that SPhyR provides a likelier explanation of the evolutionary history of a metastatic colorectal cancer. In summary, SPhyR enables detailed evolutionary analyses of single-cell cancer sequencing data.

2 Problem statement

We consider a tumor composed of m cells that contain n SNVs. In the following, we refer to SNVs as mutations. We model the mutation state of an SNV locus as a binary character, where the 1-state denotes the presence of the mutation at the genomic locus and the 0-state its absence. We represent the cell division and mutation history of the m tumor cells by a character-based phylogenetic tree T, which is a rooted, node-labeled tree. Each node v of T is labeled by a binary vector bv{0,1}n, indicating the mutation state of each character. As the root node r of T is a non-mutated, normal cell, we have that br,c=0. for all characters c[n], where [n]={1,,n}. Each leaf of T corresponds to exactly one of the m cells. Here, our goal is to reconstruct a phylogenetic tree T when only given its leaves. That is, as input, we are given a binary matrix B{0,1}m×n that defines the character states of the m leaves of T. This task requires an evolutionary model.

An edge (v, w) where bv,c=0 and bw,c=1 corresponds to a gain of character c—multiple gains of the same character indicate parallel evolution. On the other hand, an edge (v, w) of T where bv,c=1 and bw,c=0 corresponds to a loss or back mutation of character c. In the Dollo parsimony model (Dollo, 1893), a character may only be gained once but lost multiple times. Here, we consider the k-Dollo parsimony model, which restricts the Dollo parsimony model to at most k losses per character. We call a tree whose characters evolve under the k-Dollo parsimony model, a k-Dollo phylogeny, which we formally define as follows.

Definition 1 —

A k-Dollo phylogeny T is a rooted, node-labeled tree subject to the following conditions.

  1. Each node v of T is labeled by a vector bv{0,1}n.

  2. The root r of T is labeled by vector br=[0,,0]T.

  3. For each character c[n], there is exactly one gain edge (v, w) in T such that bv,c=0 and bw,c=1.

  4. For each character c[n], there are at most k loss edges (v, w) in T such that bv,c=1 and bw,c=0.

Let B{0,1}m×n. A tree T is a k-Dollo phylogeny for B if and only if T is a k-Dollo phylogeny with m leaves such that each row of B labels exactly one leaf of T. We call B a k-Dollo phylogeny matrix provided there exists a k-Dollo phylogeny T for B. Thus, we have the following problem.

k-Dollo Phylogeny problem (k-DP) —

Given a binary matrix B{0,1}m×n and parameter kN, determine whether there exists a k-Dollo phylogeny for B, and if so construct one.

The k-DP problem assumes error-free data. In real data, however, the error-prone whole-genome amplification step in single-cell sequencing results in an input matrix D with false positives (incorrect 1-entries), false negatives (incorrect 0-entries), and missing data (‘?’-entries). To correct these errors, we assume an evolutionary model without parallel evolution and at most k losses per character, i.e. the k-Dollo parsimony model. The task is thus to fill in the missing entries and fix incorrect entries of matrix D{0,1,?}m×n, yielding matrix B{0,1}m×n and a k-Dollo phylogeny T for B. The false positive rate α[0,1] and the false negative rate β[0,1] can be estimated from sequencing data of normal cells. Thus, the probability of observing matrix D given matrix B, false positive rate α and false negative rate β is:

Pr(D|B,α,β)=p=1mc=1nPr(dp,c|bp,c,α,β), (1)

where

Pr(dp,c|bp,c,α,β)={α,dp,c=1 and bp,c=01α,dp,c=1 and bp,c=1,β,dp,c=0 and bp,c=1,1β,dp,c=0 and bp,c=0,1,dp,c=? (2)

The clonal evolution theory of cancer posits that only a small number of mutations are beneficial to the tumor and result in clonal expansions (Nowell, 1976). That is, a driver mutation that leads to a clonal expansion is often preceded by many passenger mutations that do not confer an evolutionary advantage to the tumor. As such, groups of mutations either are all present or absent in a tumor cell, and thus cluster on distinct branches of the phylogenetic tree. Moreover, cells originate from a small number of clones. Hence, we expect the output matrix B to contain multiple sets of repeated columns and repeated rows, which each correspond to a distinct branch and distinct clone, respectively. This leads to the following problem.

k-Dollo Phylogeny Flip and Cluster problem (k-DPFC) —

Given matrix D{0,1,?}m×n, error rates α,β[0,1], integers k,s,tN, find matrix B{0,1}m×n and tree T such that: (i) B has at most s unique rows and at most t unique columns; (ii) Pr(D|B,α,β) is maximum and (iii) T is a k-Dollo phylogeny for B.

3 Materials and methods

3.1 Combinatorial structure and complexity

We will show that the k-DP problem is a variant of the cladistic multi-state perfect phylogeny problem with an unknown subset of incorrect 0-entries. A perfect phylogeny is defined as follows.

Definition 2 (Estabrook et al. 1975; Gusfield 1991) —

A rooted, node-labeled tree T is a perfect phylogeny provided the following conditions hold.

  1. Each node v of T is labeled by a vector av{0,,k+1}n.

  2. The root r of T is labeled by vector ar=[0,,0]T.

  3. Nodes labeled with state i for character c form a connected subtree T(c,i) of T.

Each character state (c,i)[n]×[k+1] corresponds to the root node v(c,i) of the subtree T(c,i). For each character c[n], character states (c,0) correspond to the root node r of T. Thus, each of v(1,0),,v(n,0) denote the root node r. We write (c,i)T(d,j) if and only if node v(c,i) is on the unique path from the root of T to node v(d,j). Note that T is reflexive.

Given an integer matrix A{0,,k+1}m×n, we say that a tree T is a perfect phylogeny T for A if and only if T is a perfect phylogeny with m leaves such that each row of A labels exactly one leaf of T. We call an integer matrix A a perfect phylogeny matrix provided there exists a perfect phylogeny T for A. The problem of constructing a perfect phylogeny from a given matrix A is known as the perfect phylogeny problem.

For k = 0, i.e. the two-state case, solutions to the perfect phylogeny problem are fully characterized as follows.

Theorem 1 [Perfect Phylogeny Theorem (Gusfield, 1991)] —

A binary matrix A{0,1}m×n is a perfect phylogeny matrix if and only if no two columns of A contain the three pairs (1, 0); (0, 1) and (1, 1).

The above condition is known as the three gamete condition and can be constructively checked in linear time O(mn) (Gusfield, 1991). For any constant k, the perfect phylogeny problem is solvable in time polynomial in m and n (Agarwala and Fernández-Baca, 1994; Kannan and Warnow, 1997). However, if none of m, n or k are fixed, the perfect phylogeny decision problem is NP-complete (Bodlaender et al., 1992).

We consider a restriction of the fixed k0 perfect phylogeny phylogeny problem, where, in addition to matrix A, we are given a state tree S for each character. This problem is known as the cladistic perfect phylogeny problem, where for each character the given state tree imposes an ordering on the states of that character.

Definition 3 [Fernández-Baca (2000)] —

A state tree S is a rooted, node-labeled tree, whose root node is labeled by state 0, and whose other nodes are uniquely labeled by states {1,,k+1}.

We write iSj if and only if for the two nodes vi and vj of S, labeled by i and j, respectively, it holds that vi is on the unique path from the root of S to vj. A perfect phylogeny T is consistent with state tree S for character c provided: iSj if and only if (c,i)T(c,j) for all states i,j{0,,k+1}. We now review a connection between the cladistic multi-state perfect phylogeny problem and the two-state perfect phylogeny problem. Given matrix A{0,,k+1}m×n and state trees S={S1,,Sn}, the m×n(k+1) binary factor matrix B of (A,S) is defined as follows (Supplementary Fig. S1).

Definition 4 [Fernández-Baca (2000)] —

Let A{0,,k+1}m×n and let S={S1,,Sn} be a set of state trees for each character. The binary factor matrixB=[bp,e] of (A,S) has dimensions m×n(k+1), and entries

bp,e={0, if iScap,c,1, if iScap,c. (3)

where c=e/(k+1)+1,i=(emod(k+1))+1 and Sc is the state tree of character c.

Formally, the cladistic perfect phylogeny problem asks to construct a perfect phylogeny T for A whose characters are consistent with their corresponding state tree. Unlike the general problem, this problem is solvable in time O(mnk) using the binary factor matrix B, as shown by Fernández-Baca (2000).

Theorem 2 [Fernández-Baca (2000)] —

Matrix A has a perfect phylogeny consistent with states trees S={S1,,Sn} if and only if the binary factor matrix B of (A,S) is a perfect phylogeny matrix.

We will use the above result to introduce a characterization of k-Dollo phylogenies as a subset of multi-state perfect phylogenies whose characters are consistent with the k-Dollo state tree, defined as follows (Supplementary Fig. S1).

Definition 5 —

The k-Dollo state treeS[k] is a state tree with nodes {0,,k+1} and edges {(0,1)}{(1,i)|i{2,,k+1}}.

Intuitively, the k-Dollo state tree encodes that there is exactly one gain modeled by the edge (0, 1), and that there at most k losses modeled by edges {(1,i)|i{2,,k+1}} that each must occur after the gain. To decide whether a binary matrix B=[bp,i] is a k-Dollo phylogeny matrix, we need to decide for each entry bp,i=0 whether it is a loss or not. States {2,,k+1} denote losses, and state 0 denotes that the mutation has not occurred. Thus, we define a k-completion A of the 0-entries of a given matrix B as follows.

Definition 6 —

Let B{0,1}m×n. Matrix A{0,,k+1}m×n is a k-completion of B provided (1) ap,c{0,,k+1}{1} if and only if bp,c=0; and (2) ap,c=1 if and only if bp,c=1.

We now define a restricted subset of k-completions that correspond to k-Dollo phylogenies (Fig. 1 and Supplementary Fig. S1).

Definition 7 —

Let I(i)={i,,k+1}. Matrix A{0,,k+1}m×n is a k-Dollo completion provided there exist no two columns and three rows in A of the following form:

(i100j1i1j1) or (i1j10j2i1j2) or (i20i1j1i2j1) or (i2j1i1j2i2j2)

where i1,i1,j1,j1I(1),i2,j2I(2),i1I(1){i2} and j1I(1){j2}.

Thus, the number of forbidden 3 × 2 submatrices is (k+1)4+2k2(k+1)2+k4. Supplementary Table S1 lists all forbidden submatrices for k = 1. Given B{0,1}m×n, we say that a matrix A{0,,k+1}m×n is a k-Dollo completion of B if and only if A is a k-Dollo completion and A is a k-completion of B. We now prove that solutions to the k-DP problem are k-Dollo completions of input matrix B.

Theorem 3 —

Let B{0,1}m×n. The following statements are equivalent.

  1. There exists a k-Dollo phylogeny T for B.

  2. There exists a k-Dollo completion A of B.

  3. There exists a k-completion A of B such that the binary factor matrix B of (A,S[k]) is a perfect phylogeny matrix.

  4. There exists a k-completion A of B, and perfect phylogeny T for A whose characters are consistent with S[k].

Proof —

We refer to Supplementary Section S.2 for the full proof. □

In the above theorem, we established a connection between the k-Dollo phylogeny problem and the cladistic multi-state perfect phylogeny problem. This allows us to constructively determine whether a k-completion A of B is a k-Dollo completion, as stated in the following corollaries.

Corollary 1 —

Let B{0,1}m×n. We can decide in O(mnk) time if matrix A{0,,k+1}m×n is a k-Dollo completion of B.

Corollary 2 —

Let B{0,1}m×n. Given a k-Dollo completion A of B, we can construct a k-Dollo phylogeny for B in O(mnk) time.

Note that the k = 0 case of the k-DP problem corresponds to the two-state perfect phylogeny problem. In fact, the condition for a 0-Dollo completion is precisely the three gamete condition. The k = 1 case is known as the persistent phylogeny problem. An elegant reduction to a binary matrix completion problem was introduced in (Bonizzoni et al., 2012) and formed the basis of the integer linear program (ILP) introduced by Gusfield (2015). In subsequent work, Bonizzoni et al. (2017b) extended their binary matrix completion reduction to allow for k > 1 losses. We note that the binary matrix used in these papers is precisely the binary factor matrix obtained from the multi-state matrix A and state trees S[k]. While a restricted variant of the k = 1 case was recently shown to be solvable in polynomial time (Bonizzoni et al., 2017a), the hardness for k1 remains an open question.

We now consider the k-DPFC problem. We prove that this problem is NP-hard even for k = 0.

Theorem 4 —

The k-DPFC is NP-hard even for k = 0.

Proof —

We show this by reduction from the Flip problem (Chen et al., 2002), where one is given a binary matrix D{0,1}m×n and integer cN and asked to decide whether there exists a matrix B{0,1}m×n such that: (1) at most c entries in B differ from D; and (2) no two columns of B contain the three pairs (1, 0); (0, 1) and (1, 1). A matrix B is said to be conflict free if it satisfies condition (2). Let (D, c) be an instance of the Flip problem. The corresponding instance of the k-DPFC problem has the same input matrix D, has error rates α=β<0.5, does not constraint the number s = m of unique rows and the number t = n of unique columns, and requires k = 0 losses for each character.

We claim that there exists a conflict-free matrix B with at most c distinct entries if and only if there exist a 0-Dollo phylogeny matrix B{0,1}m×n with likelihood

Pr(D|B,α,β)αc·(1α)mnc. (4)

() Let B{0,1}m×n be a conflict-free matrix with at most c distinct entries. It is easy to verify that Pr(D|B,α,β)=αc·(1α)mnc. Moreover, by the perfect phylogeny theorem (Theorem 1), we have that B is a perfect phylogeny matrix and thus a 0-Dollo phylogeny matrix.

() Let B{0,1}m×n be a 0-Dollo phylogeny matrix with likelihood Pr(D|B,α,β)αc·(1α)mnc. Assume for a contradiction that B has d > c entries that differ from matrix D. As α=β<0.5, we have that

Pr(D|B,α,β)=αd·(1α)mnd<αc·(1α)mnc, (5)

which yields a contradiction. Hence, any matrix B with likelihood at least αc·(1α)mnc must have at most c entries distinct from D.

3.2 Cutting plane and column generation for k-DP

In this section, we introduce an integer linear program (ILP) for the k-DP problem. Let B=[bp,c] be an m × n binary input matrix and let kN be the maximum number of losses per character.

We model each entry ap,c of the m × n output matrix A by binary variables ap,c,0,,ap,c,k+1{0,1} such that ap,c,i=1 if and only ap,c=i. To that end, we introduce the following constraints.

ap,c,i{0,1}p[m],c[n],i{0,,k+1} (6)
i=0k+1ap,c,i=1p[m],c[n] (7)

We introduce the following constraints to ensure that A is a k-completion of B.

ap,c,1=0p[m],c[n] s.t. bp,c=0 (8)
ap,c,1=1p[m],c[n] s.t.bp,c=1 (9)

In addition, we introduce the following symmetry breaking constraints.

p=1mc=1nap,c,ip=1mc=1nap,c,i1i{3,,k+1} (10)

Recall that I(i)={i,,k+1}. For all distinct taxa p,q,r[m], distinct characters c,d[n] and states i1,i1,j1,j1I(1),i2,j2I(2),i1I(1){i2} and j1I(1){j2}, the following constraints ensure that A does not contain one of the forbidden submatrices given in Definition 7.

ap,c,i1+ap,d,0+aq,c,0+aq,d,j1+ar,c,i1+ar,d,j15 (11)
ap,c,i1+ap,d,j1+aq,c,0+aq,d,j2+ar,c,i1+ar,d,j25 (12)
ap,c,i2+ap,d,0+aq,c,i1+aq,d,j1+ar,c,i2+ar,d,j15 (13)
ap,c,i2+ap,d,j1+aq,c,i1+aq,d,j2+ar,c,i2+ar,d,j25 (14)

Given k allowed losses per character, we aim to minimize the maximum number of losses across all characters. To that end, we use an objective function such that a single entry of A with state j > 2 incurs a cost that is greater than the cost incurred when all entries of A have states at most j − 1. We have the following integer linear program.

minp=1mc=1ni=2k+1ap,c,i(1mn)k+1i s.t.(6)(14) (15)

In our ILP, the number of variables is O(mnk) and the number of constraints is O(m3n2k4). As such, a naive implementation of this ILP does not scale to practical problem instance sizes where typically m = 50, n = 100 and k = 1. To scale the ILP to large instances, we use column and cutting plane generation, introducing variables and constraints only as needed. More specifically, we use a slight variation of classic column generation, and include all variables ap,c,i (where p[m],c[n],i{0,,k+1}) in the model, but alter their respective domains during the procedure. First, observe that the minimum value of the objective function (15) is 0, and is only attained in the absence of loss, i.e. when ap,c,i=1 if bp,c=i, and ap,c,i=0 if bp,ci. Initially, we set ap,c,i{0} if bp,ci and ap,c,i{0,1} if bp,c=i. In addition, we add constraints (7), (8), (9) and (10) to the model. We then solve the model. The resulting minimum-cost solution might not be a k-Dollo completion and thus violate constraints (1114). For each pair c, d of distinct characters, we identify violated constraints in O(mk3) time, along the same lines as described in (Chimani et al., 2010). More specifically, we consider each of the four forbidden submatrices in Definition 7 separately, and scan the m rows for the presence of one of O(k3) forbidden pairs. Let

(ap,c,i1ap,d,j1aq,c,i2aq,d,j2ar,c,i3ar,d,j3) (16)

be an identified forbidden submatrix for distinct characters c, d and distinct taxa p, q, r. We introduce the associated violated constraint (which is one of (1114)). In addition, we evaluate each variable ap,c,i of the identified forbidden submatrix. If i = 0, we extend the domain of variable ap,c,2 such that ap,c,2{0,1}. If 2i<k+1, we set ap,c,i+1{0,1}. In other words, when possible, we allow the ILP to resolve violations that involve a variable with a 0-state or a fixed loss state by enabling the use of (additional) loss states. Upon introducing violated constraints and extending variable domains, we restart the ILP and repeat the same procedure. We terminate if no violated constraints are identified or if the ILP solver proves the model to be infeasible. This procedure will either determine that no solution exists or it will result in a k-Dollo completion with optimal cost. To see this, observe that additional loss states can be introduced in an incremental fashion, as the objective function guarantees that setting ap,c,i=1 for a single entry, where i > 2, results in a greater cost than any assignment of entries restricted to states {0,2,,i1}. We refer to Supplementary Section S.3 for additional details and pseudocode of the column generation procedure and the cut separation step.

3.3 Coordinate ascent for k-DPFC

We introduce a heuristic to solve the k-DPFC problem, where we are given as input a matrix D{0,1,?}m×n, a false positive rate α, a false negative rate β and natural numbers k, s, t. We are asked to infer a maximum likelihood m × n k-Dollo phylogeny matrix B with at most s unique rows and t unique columns. Essentially, the k-DPFC problem involves three sets of constraints. That is, we wish to (i) find a clustering π:[m][s] of the m rows (taxa) of D into s clusters, (ii) find a clustering ψ:[n][t] of the n columns (characters) of D into t clusters and (iii) find a k-Dollo phylogeny matrix B with dimensions s × t. These constraints are connected by the objective function logPr(D,π,ψ|B,α,β), which equals:

p=1mc=1nlogPr(dp,c|bπ(p),ψ(c),α,β), (17)

where Pr(dp,c|bπ(p),ψ(c),α,β) is defined in (2). Here, we propose to optimize these three sets of constraints separately using coordinate ascent.

Algorithm 1: SPhyR(D,α,β,k,s,t)

Input: Matrix D{0,1,?}m×n, a false positive rate α[0,1], a false negative rate β[0,1] and natural numbers k, s, t

Output: k-Dollo completion A{0,,k+1}m×n with at most s unique rows and at most t unique columns

  1. ED

  2. Set ep,c0.5 for each entry dp,c=?

  3. π kMeans(ET,s)

  4. ψ kMeans(E,t)

  5. L,Δ

  6. whileΔ>0do

  7. (A,B) SolveAB(D,α,β,s,t,k,π,ψ)

  8. forp1 to mdo

  9.   π[p]argmaxh[s]c=1nlogPr(dp,c|bh,ψ(c),α,β)

  10. forc1 tondo

  11.   ψ[c]argmaxf[t]p=1mlogPr(dp,c|bπ(p),f,α,β)

  12. Lp=1mc=1nlogPr(dp,c|bπ(p),ψ(c),α,β)

  13. ΔLL

  14. LL

  15. Expand A according to π and ψ

  16. returnA

Computing π.

We start with the problem of finding a maximum likelihood row clustering π given a k-Dollo phylogeny matrix B and a column clustering ψ of input matrix D. For each taxon p[m], we want to find the row π(p) of B with maximum likelihood

π(p)=argmaxh[s]c=1nlogPr(dp,c|bh,ψ(c),α,β). (18)

Computing π given B and ψ thus takes O(mns) time.

Computing ψ.

Similarly, we can compute the maximum likelihood column clustering ψ given B and π in O(mnt) time:

ψ(c)=argmaxf[t]p=1mlogPr(dp,c|bπ(p),f,α,β). (19)

Computing B.

To compute the maximum likelihood k-Dollo phylogeny matrix B given row clustering π and column clustering ψ, we use the same ideas as for the k-DP problem. That is, in addition to computing B we also compute a k-Dollo completion A of B. As such, for each taxon cluster h[s] and character cluster f[t], we introduce binary variables ah,f,0,,ah,f,k+1 and the following constraints.

ah,f,i{0,1}h[s],f[t],i{0,,k+1} (20)
i=0k+1ah,f,i=1h[s],f[t] (21)

We have the same set of symmetry breaking constraints (10) and Dollo phylogeny constraints (1114)—however, note that we adjust these constraints for use with s taxon clusters and t character clusters (instead of m taxa and n characters). In contrast to the previous formulation, matrix A may change the entries of matrix D and thus we do not include constraints (8) and (9). Let X=[m]×[n]. We have the following objective function and ILP.

graphic file with name bty589um1.jpg

This ILP has O(stk) variables and O(s3t2k4) constraints. Again, we use column generation to solve the ILP. To begin, we omit constraints (1114). To initialize the column generation procedure, we need to determine an initial assignment of variables ah,f,i that maximizes the objective function. In other words, for each taxon cluster h[s] and character cluster f[t], we need to determine whether ah,c,1=1 or ah,c,1=0 maximizes the likelihood (22). This involves a simple computation, which can be performed in O(mn) time for all pairs (h,f)[s]×[t]. For each pair (h, f) where ah,f,1=1 has greater likelihood than ah,f,1=0, we set the domain of ah,f,1 to {0, 1} and the domains of the remaining variables ah,f,i, where i{0,2,,k+1}, to {0}. On the other hand, if ah,f,1=0 has greater likelihood than ah,f,1=0, we set the domain of ah,f,1 to {0} and the domains of the remaining variables ah,f,i, where i{0,2,,k+1}, to {0, 1}. Similarly to the column generation procedure for k-DP, we solve the model and identify for each pair f, g of character clusters whether there exists a forbidden submatrix in O(sk3) time. Upon finding such a forbidden submatrix, we introduce the violated constraints and extend the domains of the involved variables. More specifically, for each involved variable ah,f,i we extend the domain of variable ah,f,1 to {0, 1} if i1; and if i = 1, we extend the domains of variables ah,f,j to {0, 1} where j{0,2,,k+1}. We subsequently restart the ILP, and repeat the same procedure. We terminate when no violated constraints are identified. See Supplementary Section S.3 for additional details and pseudocode.

SPhyR.

We initialize π and ψ using the k-Means algorithm. More specifically, we replace the? -entries of matrix D by 0.5, yielding a matrix E. To obtain π, we cluster the columns of matrix E using k-Means with k = s. Similarly, we obtain ψ by clustering the rows of matrix E using k-Means with k = t. We then compute k-Dollo phylogeny matrix B and its k-Dollo completion A given π and ψ, followed by updating π and then ψ. We repeat these steps until convergence (Algorithm 1) and allow the user to specify a number of restarts. In each restart, a different random number generator seed is used, yielding a different initial taxon and character clustering. We call the resulting algorithm Single-cell Phylogeny Reconstruction (SPhyR, pronounced ‘sapphire’). SPhyR is implemented in C++ and uses the IBM ILOG CPLEX v12.8 library. SPhyR is open source and available on https://github.com/elkebir-group/SPhyR.

4 Results

4.1 SPhyR solves practical k-DP instances in seconds

We used the ms package (Hudson, 2002) to simulate two-state perfect phylogeny trees. We set the recombination parameter to 0, and used varying number m{25,50,100} of taxa and number n{25,50,100} of characters. For each combination of m and n, we simulated 20 two-state perfect phylogeny matrices B*{0,1}m×n. For each simulated matrix B*, we reconstructed its unique node-labeled perfect phylogeny tree T*, contracting internal vertices with out-degree 1. Let bv*{0,1}n be the states for each character at node v of T. We subsequently introduced losses in T* and B* with a loss rate λ and maximum number k of losses per character. More specifically, we performed a pre-order tree traversal: for each edge (u, v) in T* and character c[n] that has been lost at most k − 1 times and where bu,c*=1, we introduced a loss for that character with probability λ. That is, we set bv,c*:=0 and bw,c*:=0 for all descendants w of v. We used varying number k{1,2,3} of maximum losses per character and loss rates λ{0.1,0.2,0.4}. Thus, for each combination of m, n and k, we generated 60 k-Dollo phylogenies.

We ran SPhyR in k-DP mode using a single thread on machines with 2.6 GHz AMD Opteron 6276 CPUs and 64 GB of RAM. We used a run time limit of five hours for each instance. We show results for square input matrices in Figure 2; results for all input instances are shown in Supplementary Table S2. Our algorithm successfully solved all instances with dimensions up to 100 × 100 and at most k = 2 losses per character in only a few seconds. For k = 3 character losses and the same dimensions, SPhyR solved 75% of instances within the time limit (Fig. 2a). We find that the running time increased with increasing dimensions m × n and number k of character losses (Fig. 2b). The complexity of k-DP instances is mainly due to the (relative) number of 0-entries in the input matrix B, which increased with increasing dimensions m × n and number k of character losses (Fig. 2c). Our cutting plane and column generation procedure introduced only a tiny fraction of variables (Fig. 2d) and constraints (Fig. 2e) into the model. Remarkably, the fraction of generated variables and constraints decreased with increasing k, which is due to the incremental fashion in which our method considers character losses. Furthermore, our algorithm only required a small number of iterations (Fig. 2f). We note that instances solved in a single iteration correspond to perfect phylogeny instances.

Fig. 2.

Fig. 2.

Cutting plane and column generation enables SPhyR to efficiently solve practical k-DP instances. We show results for m × n binary matrices B=[bp,c] where m = n. (a) The number of solved instances for varying dimensions and maximum number k of character losses. For each k and m × n, there are 60 simulated instances. SPhyR solved all k = 1 instances (blue) to optimality, but exceeded the run time limit for k = 3 instances (red) with dimensions 100 × 100. (b) The run time in seconds (logarithmic scale) increased with increasing k and m × n. (c) The fraction of entries bp,c=0. (d) The percentage of model variables ap,c,i instantiated during column generation. (e) The percentage of model constraints (logarithmic scale) added during separation. (f) The number of column generation iterations. Only a single iteration is required if B is a perfect phylogeny matrix

In summary, despite the large fraction of 0-entries in practical problem instances, our algorithm quickly identifies a small fraction of variables (and constraints) that are relevant for solving the instance. As such, SPhyR is able to solve practical k-DP problem instances with varying loss rates in seconds.

4.2 SPhyR outperforms existing methods on simulated single-cell sequencing data

We now consider the problem of phylogeny estimation from an input matrix with incorrect entries. We generate such input matrices D=[dp,c] from the k-Dollo phylogeny matrices B*=[bp,c] previously simulated with m=n=50 and k = 1 (Fig. 3a). We perturb each matrix B* using false positive rate α*=0.001 and false negative rate β*=0.2 (Fig. 3b). That is, if bp,c*=0, we set dp,c=1 with probability α*=0.001, otherwise we set dp,c=0. If bp,c*=1, we set dp,c=0 with probability β*=0.2, otherwise we set dp,c=1. Thus, we have 60 simulated instances with varying loss rate λ{0.1,0.2,0.4}.

Fig. 3.

Fig. 3.

Simulation setup and comparison measures. (a) Given the number m of taxa and n of characters, we use the ms package (Hudson, 2002) to simulate a perfect phylogeny tree. Subsequently, we introduce at most k losses per character using a rate λ, yielding the simulated phylogenetic tree T* and matrix B*. (b) We then perturb the entries of B*=[bp,c*] given a false positive rate FPR(D)=α* and false negative rate FPNR(D)=β*, yielding the input matrix D=[dp,c]. Entry dp,c=0 is a true negative (TN) if bp,c*=0 and a false negative (FN) if bp,c*=1. Conversely, dp,c=1 is a false positive (FP) if bp,c*=0 and a true positive (TP) if bp,c*=1. (c) Given D, α* and β*, a phylogeny estimation method yields output matrix B=[bp,c]. (d) In addition, such a method outputs a phylogenetic tree T whose leaves form the rows of output matrix B. (e) To compare T and T*, we compute the recall in terms of pairs of character states that are ancestral (A), on distinct branches (incomparable, I), or on the same edge (clustered, C). A recall of 1 for all three measures implies that (the internal nodes of) T and T* are identical. To compare B and B*, we compute FPR(B) and FNR(B)—if both are 0 then B=B*

We compared SPhyR to SCITE (Jahn et al., 2016) and SiFit (Zafar et al., 2017). While SCITE uses the infinite sites model and disallows homoplasy, SiFit uses a finite sites model allowing for parallel evolution and mutation loss. Our method SPhyR is based on the k-Dollo parsimony model, and thus disallows parallel evolution and restricts the number of losses of each character to at most k. We provided all three methods the simulated false positive rate α*=0.001 and false negative rate β*=0.2. For SPhyR, we set the maximum number k of character losses to 1, the number s of taxa clusters to 10, and the number t of distinct branches to 35. We used default parameters and 100 restarts for each method. Supplementary Section S.5 provides additional details.

Given the same input matrix D=[dp,c], each method infers an output matrix B=[bp,c]. We compared each output matrix B to the simulated matrix B*=[bp,c*] as follows. A false positive (FP) is a 1-entry in B that is a 0-entry in B*. The false positive rate (FPR) is the fraction of false positives among the 1-entries of B. Conversely, a false negative (FN) is a 0-entry in B that is a 1-entry in B*. The false negative rate (FNR) is the fraction of false negatives among the 0-entries of B. We note that, by construction, each matrix D has an expected FPR α=0.001 and expected FNR β=0.2—thus, a straw-man algorithm that leaves the input matrix unperturbed, i.e. B = D, would achieve these rates. Moreover, note that an FPR and FNR of 0 implies that B=B*. We find that all three methods outperformed the straw-man algorithm, significantly reducing the fraction of false positives with only a slight increase in the fraction of false negatives (Fig. 4a–c). Among the three methods, SPhyR achieved the lowest FNR while maintaining a low FPR (median FNR: 0.038; median FPR: 0.010) compared to SCITE (FNR: 0.065; FPR: 0.009) and SiFit (FNR: 0.119; FPR: 0.002). SiFit achieved the lowest FPR and the highest FNR.

Fig. 4.

Fig. 4.

SPhyR more accurately recovers the simulated matrices B* and trees T* than SCITE and SiFit. Given the same input matrix D, each method inferred an output matrix B and phylogenetic tree T. (a–c) The tradeoff between the false negative rate (FNR) and the false positive rate (FPR) for each matrix B output by each method. (d–f) Three different measures that assess similarity between T* and T in terms of character states occurring on the same branch (d), on distinct branches (e) and on the same edge (f) in both T* and T

To explore the effect of these differences in FPR and FNR, we compared each output phylogenetic tree T to the simulated phylogenetic tree T*. We used three different measures that consider pairs of character states (Fig. 3e). First, the ancestral pair recall is given by |A(T)A(T*)|/|A(T*)|, where the multi-set A(T) is composed of ordered pairs ((c,i),(d,j)) of character states that are introduced on distinct edges of the same branch of T. Second, the incomparable pair recall is defined as |I(T)I(T*)|/|I(T*)|, where the multi-set I(T) is composed of unordered pairs {(c,i),(d,j)} of character states that are introduced on edges from distinct branches of T. Third, the clustered pair recall is defined as |C(T)C(T*)|/|C(T*)|, where the multi-set C(T) is composed of unordered pairs {(c,i),(d,j)} of character states that are introduced on the same edge of T. If all three measures equal 1 then the output tree T and the simulated tree T* are identical (when restricted to their internal nodes). We find that SiFit’s low FPR at the expense of the FNR significantly reduced its ability to accurately recover the simulated tree. In contrast, the more balanced FPR and FNR of SCITE and SPhyR led to more accurate output trees. Moreover, SPhyR’s evolutionary model and combinatorial coordinate-ascent algorithm, enabled our method to more accurately recover the simulated trees than SCITE and SiFit in each of the three recall measures (Fig. 4d–f), at a fraction of the run time (Supplementary Fig. S8).

In Supplementary Section S.5, we show that SPhyR is robust to varying α and β. In addition, we find that with k = 0 the output tree quality decreased, whereas the quality remained the same with k = 2, highlighting the importance of the k-Dollo parsimony model.

4.3 SPhyR reconstructs evolutionary history of a metastatic colorectal cancer with larger data likelihood

We considered metastatic colorectal cancer patient CRC1 from (Leung et al., 2017). The authors sequenced 178 cells from this patient using a cancer gene panel composed of 1000 genes. Subsequent mutation calling identified 16 single-nucleotide variants (SNVs). This yielded an 178 × 16 input matrix D with 191 missing ‘?’-entries, 614 1-entries and 2043 0-entries. Leung et al. (2017) ran SCITE on matrix D, and obtained a perfect phylogeny tree TSCITE and matrix BSCITE with α=1.52% and β=7.89% (Supplementary Fig. S10). In a subsequent paper, Zafar et al. (2017) ran their method SiFit on the same matrix D with the same α and β, and obtained phylogenetic tree TSiFit and matrix BSiFit (Supplementary Fig. S11). We compared these two trees and two matrices to the tree and matrix inferred by SPhyR using the same α and β. In addition, we used the same number s = 10 of taxa clusters as in the simulations, and number t = 15 of character clusters. We varied the number k{0,1} of losses.

Supplementary Figure S9 shows the output matrices of each method and is summarized in Table 1. We find that BSCITE has fewer edits from D (278) and consequently larger data likelihood (−447.66) than BSiFit (301 edits and likelihood −471.62). Inspection of the corresponding tree TSiFit of BSiFit reveals that 15 SNVs were introduced more than once and underwent parallel evolution (Supplementary Fig. S11), which is uncommon in the evolution of SNVs in cancer. With k = 0, i.e. no loss of mutation, SPhyR achieved similar likelihood as SCITE. By allowing each character to be lost once, i.e. k = 1, SPhyR yielded matrix BSPhyR with the same number of edits but a larger likelihood than BSCITE. Supplementary Figure S12 shows the corresponding tree TSPhyR. Unlike TSiFit, the tree TSPhyR does not exhibit parallel evolution, which is by definition of the k-Dollo parsimony model. In TSCITE, 24 cells formed a separate clade (red leaves in Supplementary Fig. S10). These cells were obtained from the liver metastasis by Leung et al. (2017). In addition to the same 24 cells (red leaves in Supplementary Fig. S12), tree TSPhyR assigns six additional cells to the metastatic clade (blue leaves in Supplementary Fig. S12). SPhyR inferred that these six cells have undergone loss of mutation. Five of the six cells (MD_1, MD_5, MD_6, MD_10 and MD_20) were obtained by Leung et al. (2017) from the liver metastasis, corroborating the metastatic clade in TSPhyR. SCITE was unable to assign the original 24 metastatic cells and these five additional cells to the same clade due to the infinite sites assumption; the five additional cells appeared close to the root in TSCITE (blue leaves in Supplementary Fig. S10). Thus, the k-Dollo parsimony model employed by SPhyR led to more accurate reconstruction of the evolutionary history of this metastatic colorectal cancer.

Table 1.

SPhyR reconstructs a phylogenetic tree for patient CRC1 from (Leung et al., 2017) with larger data likelihood than existing methods

Method logPr(D|B,α,β) 10 01 ?0 ?1 # edits # losses # par. evo.
SCITE −447.66 33 54 142 49 278 0 0
SiFit −471.62 14 96 126 65 301 14 15
SPhyR (k = 0) −450.70 19 79 138 53 289 0 0
SPhyR (k = 1) −413.38 13 74 137 54 278 14 0

Note: The input matrix D=[dp,c] has m = 178 taxa (cells) and n = 16 characters (single-nucleotide variants). For each method, we show the data likelihood, the number of 10 changes, the number of 01 changes, the number of ?0 changes, the number of ?1 changes, the total number of changes, the number of losses, and the number of times a character is introduced more than once (parallel evolution).

5 Discussion

We introduced SPhyR, a method for tumor phylogeny estimation from single-cell sequencing data. Copy-number aberrations are ubiquitous in solid tumors and affect large genomic regions. As such, homoplasy of single-nucleotide variants in cancer is mainly due to mutation loss caused by copy number aberrations. Based on this observation, SPhyR employs the k-Dollo parsimony model, where a mutation may only be gained once but lost k times. We studied the error-free case and derived a combinatorial characterization of solutions as constrained integer matrix completions. This characterization formed the basis for our integer linear program, which we solved efficiently using column and cutting plane generation. We introduced a coordinate-ascent approach for solving the real data case with errors in the input matrix. On simulated data, we showed that SPhyR outperformed existing methods, that are either based on the infinite sites or the finite sites evolutionary model, in terms of solution quality and run time. On real data, we showed that SPhyR provided a likelier explanation of the evolutionary history of a metastatic colorectal cancer.

Our findings show that while there is a need for more realistic evolutionary models in tumor phylogeny estimation beyond the infinite sites model, evolutionary models that are too permissive, such as the finite sites model, lead to incorrect inferences. By disallowing parallel evolution but allowing for mutation loss, the k-Dollo parsimony model employed by SPhyR strikes a balance between being realistic and yet, sufficiently constrained.

There are a number of avenues for future research. From a theoretical perspective, the hardness of the k-DP problem, where k1, remains open. It would be interesting to investigate whether the graph sandwich approach used by Pe’er et al. (2004) for incomplete directed perfect phylogeny problem can be extended to the k-DP problem. From a practical perspective, inclusion of additional data sources and information might yield additional constrains that improve phylogeny reconstruction. For instance, for metastatic cancers the inclusion of a multi-state location character might result in evolutionary scenarios that minimize migrations, as described in (El-Kebir et al., 2018) for bulk DNA sequencing data. Moreover, inclusion of copy-number information might allow one to restrict the subset of characters that have undergone losses. Finally, one could consider joint phylogeny estimation from bulk and single-cell sequencing data of the same tumor.

Supplementary Material

Supplementary Data

Acknowledgements

This research is part of the Blue Waters sustained-petascale computing project, which is supported by the National Science Foundation (awards OCI-0725070 and ACI-1238993) and the state of Illinois. Blue Waters is a joint effort of the University of Illinois at Urbana-Champaign and its National Center for Supercomputing Applications.

Conflict of Interest: none declared.

References

  1. Agarwala R., Fernández-Baca D. (1994) A polynomial-time algorithm for the perfect phylogeny problem when the number of character states is fixed. SIAM J. Comput., 23, 1216–1224. [Google Scholar]
  2. Bodlaender H.L., et al. (1992) Two strikes against perfect phylogeny. In: Kuich W. (ed.) Automata, Languages and Programming. ICALP 1992. Lecture Notes in Computer Science. Springer, Berlin, Heidelberg: Vol 623. [Google Scholar]
  3. Bonizzoni P., et al. (2012) The binary perfect phylogeny with persistent characters. Theor. Comput. Sci., 454, 51–63. [Google Scholar]
  4. Bonizzoni P., et al. (2017a) A colored graph approach to perfect phylogeny with persistent characters. Theor. Comput. Sci., 658, 60–73. [Google Scholar]
  5. Bonizzoni P., et al. (2017b) Beyond perfect phylogeny: multisample phylogeny reconstruction via ilp. In: Proceedings of the 8th ACM International Conference on Bioinformatics, Computational Biology, and Health Informatics ,ACM-BCB ‘17, ACM, New York, NY, USA. pp. 1–10. [Google Scholar]
  6. Chen D., et al. (2002) Supertrees by Flipping. In: Ibarra O.H., Zhang L. (eds) Computing and Combinatorics. COCOON 2002. Lecture Notes in Computer Science; Springer, Berlin, Heidelberg: Vol 2387. [Google Scholar]
  7. Chimani M., et al. (2010) Exact ILP solutions for phylogenetic minimum flip problems. In: Proceedings of the First ACM BCB. [Google Scholar]
  8. Dang H.X., et al. (2017) ClonEvol: clonal ordering and visualization in cancer sequencing. Ann. Oncol., 28, 3076–3082. [DOI] [PMC free article] [PubMed] [Google Scholar]
  9. Deshwar A.G., et al. (2015) PhyloWGS: reconstructing subclonal composition and evolution from whole-genome sequencing of tumors. Genome Biol., 16, 35. [DOI] [PMC free article] [PubMed] [Google Scholar]
  10. Dollo L. (1893) Le lois de l’évolution. Bull. Soc. Belge Géol. Paléontol.Hydrol., VII, 164–166. [Google Scholar]
  11. El-Kebir M., et al. (2015) Reconstruction of clonal trees and tumor composition from multi-sample sequencing data. Bioinformatics, 31, i62–i70. [DOI] [PMC free article] [PubMed] [Google Scholar]
  12. El-Kebir M., et al. (2018) Inferring parsimonious migration histories for metastatic cancers. Nat. Genet., 50, 718–726. [DOI] [PMC free article] [PubMed] [Google Scholar]
  13. Estabrook G.F., et al. (1975) An idealized concept of the true cladistic character. Math. Biosci., 23, 263–272. [Google Scholar]
  14. Fernández-Baca D. (2000) The perfect phylogeny problem. In: Zu D.Z., Cheng X. (eds.) Steiner Trees in Industries .Kluwer Acedemic Publishers, the Netherlands. [Google Scholar]
  15. Gusfield D. (1991) Efficient algorithms for inferring evolutionary trees. Networks, 21, 19–28. [Google Scholar]
  16. Gusfield D. (2015) Persistent phylogeny: a galled-tree and integer linear programming approach. In: BCB 2015—6th ACM Conference on Bioinformatics, Computational Biology, and Health Informatics, New York, New York, USA. ACM Press, UC Davis, Davis, United States, pp. 443–451. [Google Scholar]
  17. Hudson R.R. (2002) Generating samples under a Wright–Fisher neutral model of genetic variation. Bioinformatics, 18, 337–338. [DOI] [PubMed] [Google Scholar]
  18. Jahn K., et al. (2016) Tree inference for single-cell data. Genome Biol., 17, 86. [DOI] [PMC free article] [PubMed] [Google Scholar]
  19. Kannan S., Warnow T. (1997) A fast algorithm for the computation and enumeration of perfect phylogenies. SIAM J. Comput., 26, 1749–1763. [Google Scholar]
  20. Kuipers J., et al. (2017) Single-cell sequencing data reveal widespread recurrence and loss of mutational hits in the life histories of tumors. Genome Res., 27, 1885–1894. [DOI] [PMC free article] [PubMed] [Google Scholar]
  21. Leung M.L., et al. (2017) Single cell DNA sequencing reveals a late-dissemination model in metastatic colorectal cancer. Genome Res., 27, 1287–1299. [DOI] [PMC free article] [PubMed] [Google Scholar]
  22. Malikic S., et al. (2015) Clonality inference in multiple tumor samples using phylogeny. Bioinformatics, 31, 1349–1356. [DOI] [PubMed] [Google Scholar]
  23. Navin N.E. (2014) Cancer genomics: one cell at a time. Genome Biol., 15, 452. [DOI] [PMC free article] [PubMed] [Google Scholar]
  24. Nik-Zainal S., et al. (2012) The life history of 21 breast cancers. Cell, 149, 994–1007. [DOI] [PMC free article] [PubMed] [Google Scholar]
  25. Nowell P.C. (1976) The clonal evolution of tumor cell populations. Science, 194, 23–28. [DOI] [PubMed] [Google Scholar]
  26. Pe’er I., et al. (2004) Incomplete directed perfect phylogeny. SIAM J. Comput., 33, 590–607. [Google Scholar]
  27. Popic V., et al. (2015) Fast and scalable inference of multi-sample cancer lineages. Genome Biol., 16, 91. [DOI] [PMC free article] [PubMed] [Google Scholar]
  28. Ross E.M., Markowetz F. (2016) OncoNEM: inferring tumor evolution from single-cell sequencing data. Genome Biol., 17, 69. [DOI] [PMC free article] [PubMed] [Google Scholar]
  29. Tabassum D.P., Polyak K. (2015) Tumorigenesis: it takes a village. Nat. Rev. Cancer, 15, 473–483. [DOI] [PubMed] [Google Scholar]
  30. Yuan K., et al. (2015) BitPhylogeny: a probabilistic framework for reconstructing intra-tumor phylogenies. Genome Biol., 16, 36. [DOI] [PMC free article] [PubMed] [Google Scholar]
  31. Zafar H., et al. (2017) SiFit: inferring tumor trees from single-cell sequencing data under finite-sites models. Genome Biol., 18, 178. [DOI] [PMC free article] [PubMed] [Google Scholar]

Associated Data

This section collects any data citations, data availability statements, or supplementary materials included in this article.

Supplementary Materials

Supplementary Data

Articles from Bioinformatics are provided here courtesy of Oxford University Press

RESOURCES