Generates a starting tree by adding each taxon in turn to the most parsimonious location.

AdditionTree(dataset, concavity = Inf, constraint, sequence)



A phylogenetic data matrix of phangorn class phyDat, whose names correspond to the labels of any accompanying tree.


Numeric specifying concavity constant for implied step weighting. The most appropriate value will depend on the dataset, but values around 10--15 often perform well (Goloboff et al. 2018; Smith 2019) . The character string "profile" employs an approximation of profile parsimony (Faith and Trueman 2001) . Set as Inf for equal step weights, which underperforms step weighting approaches (Goloboff et al. 2008; Goloboff et al. 2018; Goloboff and Arias 2019; Smith 2019) .


An object of class phyDat; returned trees will be perfectly compatible with each character in constraint. See ImposeConstraint() and vignette for further examples.


Character or numeric vector listing sequence in which to add taxa. Randomized if not provided.


AdditionTree() returns a tree of class phylo, rooted on sequence[1].

See also

Impose a constraint: TreeTools::ImposeConstraint()

Neighbour-joining trees: TreeTools::NJTree(); TreeTools::ConstrainedNJ()

Other tree generation functions: RandomMorphyTree()


data('Lobo', package = 'TreeTools')
AdditionTree(Lobo.phy, concavity = 10)
#> Addition tree ■■■■■■■■■■■■                      37% | ETA:  3s
#> Addition tree ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■  100% | ETA:  0s
#> Phylogenetic tree with 48 tips and 47 internal nodes.
#> Tip labels:
#>   Tubiluchus_Priapulida, Antennacanthopodia, Carbotubulus, Paucipodia, Leanchoilia, Jianshanopodia, ...
#> Rooted; no branch lengths.