Rev Language Reference


mvSPR - Subtree Prune and Regraft (SPR) move.

Tree topology move that performs a Subtree Prune and Regraft (SPR) on an unrooted tree.

Usage

mvSPR(BranchLengthTree tree, RealPos weight, Probability tuneTarget)

Arguments

tree : BranchLengthTree (<stochastic> pass by reference)
The tree variable this move operates on.
weight : RealPos (pass by value)
The weight determines the relative frequency with which this move will be attempted. For details, see the description of the 'moveschedule' parameter on the documentation page for 'mcmc()'.
Default : 1
tuneTarget : Probability (pass by value)
The acceptance probability targeted by auto-tuning.
Default : 0.44

Details

`mvSPR` changes tree topology by cutting off a subtree and reattaching it elsewhere in the original tree using the same subtree branch that was originally cut. Every unrooted tree of n taxa has 2(n - 3)(2n - 7) SPR "neighbors" that are one SPR move away (Allen & Steel 2001). This neighborhood is larger than, and inclusive of, the neighborhood induced by Nearest-Neighbor Interchange (`mvNNI`). As a result, `mvSPR` is more computationally demanding than `mvNNI` and may exhibit lower acceptance rates, but explores a broader range of different topologies and is less likely to get stuck in local optima. The `mvSPR` move can be applied only to `BranchLengthTreee` objects. An analogous move for `TimeTree` objects (Fixed Node-height Prune and Regraft; FNPR) is implemented in `mvFNPR`.

Example

taxa <- v(taxon("A"), taxon("B"), taxon("C"), taxon("D"), taxon("E"), taxon("F"))
moves = VectorMoves()

topology ~ dnUniformTopology(taxa)
moves.append( mvSPR(topology, weight=taxa.size()) )

See Also