Perform one SPR rearrangement on a tree
SPR(tree, edgeToBreak = NULL, mergeEdge = NULL)SPRSwap(parent, child, nEdge = length(parent), nNode = nEdge/2L,
edgeToBreak = NULL, mergeEdge = NULL)
RootedSPR(tree, edgeToBreak = NULL, mergeEdge = NULL)
RootedSPRSwap(parent, child, nEdge = length(parent), nNode = nEdge/2L,
edgeToBreak = NULL, mergeEdge = NULL)
A tree of class phylo
.
the index of an edge to bisect, generated randomly if not specified.
the index of an edge on which to merge the broken edge.
the first column of the edge matrix of a tree of class phylo
, i.e. tree$edge[, 1]
the second column of the edge matrix of a tree of class phylo
, i.e. tree$edge[, 2]
(optional) integer specifying the number of edges of a tree of
class phylo
, i.e. dim(tree$edge)[1]
(optional) Number of nodes.
This function returns a tree in phyDat
format that has undergone one SPR iteration.
a list containing two elements, corresponding in turn to the rearranged parent and child parameters
a list containing two elements, corresponding in turn to the rearranged parent and child parameters
SPRSwap
: faster version that takes and returns parent and child parameters
RootedSPR
: Perform SPR rearrangement, retaining position of root
RootedSPRSwap
: faster version that takes and returns parent and child parameters
Equivalent to phangorn's kSPR, but faster.
Note that rearrangements that only change the position of the root WILL be returned by
SPR
. If the position of the root is irrelevant (as in Fitch parsimony, for example)
then this function will occasionally return a functionally equivalent topology.
RootIrrelevantSPR
will search tree space more efficiently in these cases.
Branch lengths are not (yet) supported.
The SPR algorithm is summarized in Felsenstein2004TreeSearch
RootedSPR useful when the position of the root node should be retained.
TBR
NNI
# NOT RUN {
{
tree <- ape::rtree(20, br=FALSE)
SPR(tree)
}
# }
Run the code above in your browser using DataLab