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) .


Either an object of class phyDat, in which case returned trees will be perfectly compatible with each character in constraint; or a tree of class phylo, all of whose nodes will occur in any output tree. 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("inapplicable.phyData", package = "TreeSearch")
AdditionTree(inapplicable.phyData[["Longrich2010"]], concavity = 10)
#> Phylogenetic tree with 20 tips and 19 internal nodes.
#> Tip labels:
#>   Psittacosaurus_spp, Texacephale_langstoni, Sphaerotholus_goodwini, Pachycephalosaurus_wyomingensis, Wannanosaurus_yansiensis, Goyocephale_lattimorei, ...
#> Rooted; no branch lengths.