Rev Language Reference


mvMPQTree - Tree proposals for reversible and non-reversible substitution analyses

Proposes tree updates in analyses using the reversible and non-reversible nucleotide models implemented by `dnNucleotideRateMatrixMixture`, optionally updating root position.

Usage

mvMPQTree(Tree tree, Bool updateRoot, RealPos weight)

Arguments

tree : Tree (<stochastic> pass by reference)
The phylogeny.
updateRoot : Bool (pass by value)
Should the position of the root be updated? Set this to FALSE whenever an outgroup has been assigned. The move cannot work this out for itself: the tree prior does not enforce the outgroup once the MCMC is running (RevBayes issue #157), so a root move would walk the root off the outgroup and nothing would object.
Default : TRUE
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

Details

`tree` should be a stochastic, non-clock tree parameterized by branch lengths, as produced by `dnUniformTopologyBranchLength`. `updateRoot` defaults to TRUE and allows proposals that change root position. Set it to FALSE when the root must remain on a specified outgroup branch. This move does not automatically detect an assigned outgroup or enforce that root constraint. Root position can affect the likelihood under a non-reversible model. Under the stationary time-reversible model, the likelihood is unchanged by moving the root on a fixed unrooted tree with fixed branch lengths; the root must nevertheless be handled consistently with the tree prior. This move does not take a rate-matrix argument. Connect the tree and the rate matrix through the phylogenetic likelihood, using `dnPhyloCTMC`.

Example

taxa <- v(taxon("A"), taxon("B"), taxon("C"), taxon("D"))

tree ~ dnUniformTopologyBranchLength(
    taxa=taxa, branchLengthDistribution=dnExp(10.0), rooted=TRUE)

moves = VectorMoves()
moves.append(mvMPQTree(tree=tree, updateRoot=TRUE, weight=4))

# If the root must stay on an assigned outgroup branch, instead
# construct the move with updateRoot=FALSE.

See Also