Search for most parsimonious trees
Source:R/CustomSearch.R
, R/IWScore.R
, R/TreeSearch_utilities.R
TreeSearch.Rd
Run standard search algorithms (NNI, SPR or TBR) to search for a more parsimonious tree.
For detailed documentation of the "TreeSearch" package, including full instructions for loading phylogenetic data into R and initiating and configuring tree search, see the package documentation.
Usage
EdgeListSearch(
edgeList,
dataset,
TreeScorer = MorphyLength,
EdgeSwapper = RootedTBRSwap,
maxIter = 100,
maxHits = 20,
bestScore = NULL,
stopAtScore = NULL,
stopAtPeak = FALSE,
stopAtPlateau = 0L,
verbosity = 1L,
...
)
TreeSearch(
tree,
dataset,
InitializeData = PhyDat2Morphy,
CleanUpData = UnloadMorphy,
TreeScorer = MorphyLength,
EdgeSwapper = RootedTBRSwap,
maxIter = 100L,
maxHits = 20L,
stopAtPeak = FALSE,
stopAtPlateau = 0L,
verbosity = 1L,
...
)
IWTreeSearch(...)
EmptyPhyDat(tree)
DoNothing(...)
Arguments
- edgeList
a list containing the following: - vector of integers corresponding to the parent of each edge in turn - vector of integers corresponding to the child of each edge in turn - (optionally) score of the tree - (optionally, if score provided) number of times this score has been hit
- dataset
A phylogenetic data matrix of phangorn class
phyDat
, whose names correspond to the labels of any accompanying tree.- TreeScorer
function to score a given tree. The function will be passed three parameters, corresponding to the
parent
andchild
entries of a tree's edge list, and a dataset.- EdgeSwapper
a function that rearranges a parent and child vector, and returns a list with modified vectors; for example
SPRSwap()
.- maxIter
Numeric specifying maximum number of iterations to perform before abandoning the search.
- maxHits
Numeric specifying maximum times to hit the best pscore before abandoning the search.
- stopAtPeak
Logical specifying whether to terminate search once a subsequent iteration recovers a sub-optimal score. Will be overridden if a passed function has an attribute
stopAtPeak
set byattr(FunctionName, "stopAtPeak") <- TRUE
.- stopAtPlateau
Integer. If > 0, tree search will terminate if the score has not improved after
stopAtPlateau
iterations. Will be overridden if a passed function has an attributestopAtPlateau
set byattr(FunctionName, "stopAtPlateau") <- TRUE
.- verbosity
Numeric specifying level of detail to display in console: larger numbers provide more verbose feedback to the user.
- ...
further arguments to pass to
TreeScorer()
, e.g.dataset =
.- tree
A fully-resolved starting tree in
phylo
format, with the desired outgroup. Edge lengths are not supported and will be removed.- InitializeData
Function that sets up data object to prepare for tree search. The function will be passed the
dataset
parameter. Its return value will be passed toTreeScorer()
andCleanUpData()
.- CleanUpData
Function to destroy data object on function exit. The function will be passed the value returned by
InitializeData()
.
Value
TreeSearch()
returns a tree, with an attribute pscore
conveying its
parsimony score.
#" Note that the parsimony score will be inherited from the tree"s
attributes, which is only valid if it was generated using the same
data
that is passed here.
EmptyPhyDat()
returns a phyDat
object comprising a single
null character, coded with state zero for every leaf in tree
.
See also
Fitch
, calculates parsimony score;RootedNNI
, conducts tree rearrangements;Ratchet
, alternative heuristic, useful to escape local optima.
Other custom search functions:
Jackknife()
,
MorphyBootstrap()
,
SuccessiveApproximations()
Examples
data("Lobo", package="TreeTools")
njtree <- TreeTools::NJTree(Lobo.phy)
## Only run examples in interactive R sessions
if (interactive()) {
TreeSearch(njtree, Lobo.phy, maxIter = 20, EdgeSwapper = NNISwap)
TreeSearch(njtree, Lobo.phy, maxIter = 20, EdgeSwapper = RootedSPRSwap)
TreeSearch(njtree, Lobo.phy, maxIter = 20, EdgeSwapper = TBRSwap)
}