pratchet implements the parsimony ratchet (Nixon, 1999) and is the
preferred way to search for the best parsimony tree. For small number of taxa
the function bab can be used to compute all most parsimonious
trees.
Usage
fitch(tree, data, site = "pscore")
random.addition(data, tree = NULL, method = "fitch")
parsimony(tree, data, method = "fitch", cost = NULL, site = "pscore")
optim.parsimony(tree, data, method = "fitch", cost = NULL, trace = 1,
rearrangements = "SPR", ...)
pratchet(data, start = NULL, method = "fitch", maxit = 1000,
minit = 100, k = 10, trace = 1, all = FALSE,
rearrangements = "SPR", perturbation = "ratchet", ...)
sankoff(tree, data, cost = NULL, site = "pscore")Arguments
- tree
tree to start the nni search from.
- data
A object of class phyDat containing sequences.
- site
return either 'pscore' or 'site' wise parsimony scores.
- method
one of 'fitch' or 'sankoff'.
- cost
A cost matrix for the transitions between two states.
- trace
defines how much information is printed during optimization.
- rearrangements
SPR or NNI rearrangements.
- ...
Further arguments passed to or from other methods (e.g. model="sankoff" and cost matrix).
- start
a starting tree can be supplied.
- maxit
maximum number of iterations in the ratchet.
- minit
minimum number of iterations in the ratchet.
- k
number of rounds ratchet is stopped, when there is no improvement.
- all
return all equally good trees or just one of them.
- perturbation
whether to use "ratchet", "random_addition" or "stochastic" (nni) for shuffling the tree.
Value
parsimony returns the maximum parsimony score (pscore).
optim.parsimony returns a tree after NNI rearrangements.
pratchet returns a tree or list of trees containing the best tree(s)
found during the search. acctran returns a tree with edge length
according to the ACCTRAN criterion.
Details
parsimony returns the parsimony score of a tree using either the
sankoff or the fitch algorithm.
optim.parsimony optimizes the topology using either Nearest Neighbor
Interchange (NNI) rearrangements or sub tree pruning and regrafting (SPR) and
is used inside pratchet. random.addition can be used to produce
starting trees and is an option for the argument perturbation in
pratchet.
The "SPR" rearrangements are so far only available for the "fitch" method, "sankoff" only uses "NNI". The "fitch" algorithm only works correct for binary trees.
References
Felsenstein, J. (2004). Inferring Phylogenies. Sinauer Associates, Sunderland.
Nixon, K. (1999) The Parsimony Ratchet, a New Method for Rapid Parsimony Analysis. Cladistics 15, 407-414
See also
bab, CI, RI,
acctran, nni, NJ,
pml, getClans, ancestral.pars,
bootstrap.pml
Author
Klaus Schliep klaus.schliep@gmail.com
Examples
set.seed(3)
data(Laurasiatherian)
dm <- dist.hamming(Laurasiatherian)
tree <- NJ(dm)
parsimony(tree, Laurasiatherian)
#> [1] 9796
treeRA <- random.addition(Laurasiatherian)
treeSPR <- optim.parsimony(tree, Laurasiatherian)
#> Final p-score 9715 after 11 nni operations
# lower number of iterations for the example (to run less than 5 seconds),
# keep default values (maxit, minit, k) or increase them for real life
# analyses.
treeRatchet <- pratchet(Laurasiatherian, start=tree, maxit=100,
minit=5, k=5, trace=0)
# assign edge length (number of substitutions)
treeRatchet <- acctran(treeRatchet, Laurasiatherian)
# remove edges of length 0
treeRatchet <- di2multi(treeRatchet)
plot(midpoint(treeRatchet))
add.scale.bar(0,0, length=100)
parsimony(c(tree,treeSPR, treeRatchet), Laurasiatherian)
#> [1] 9796 9715 9713
