Learn R Programming

phangorn (version 0.0-2)

pml: Likelihood of a tree.

Description

pml computes the likelihood of a phylogenetic tree given a sequence alignment and a model. optim.pml optimizes the different model parameters.

Usage

pml(tree, data, bf=NULL, Q=NULL, inv=0, k=1, shape=1, rate=1, ...)     
optim.pml(object, optNni=FALSE, optBf=FALSE, optQ=FALSE,
    optInv=FALSE, optGamma=FALSE, optEdge=TRUE, optRate=FALSE, 
    control = pml.control(maxit=10, eps=0.001, trace=TRUE))

Arguments

tree
A phylogenetic tree, object of class phylo.
data
The (DNA) alignment.
bf
Base frequencies.
Q
A vector containing the lower triangular part of the rate matrix.
inv
Proportion of invariable sites.
k
Number of intervalls of the discrete gamma distribution.
shape
Shape parameter of the gamma distribution.
rate
Rate.
object
An object of class pml.
optNni
Logical value indicating whether toplogy gets optimized (NNI).
optBf
Logical value indicating whether base frequencies gets optimized.
optQ
Logical value indicating whether rate matrix gets optimized.
optInv
Logical value indicating whether proportion of variable size gets optimized.
optGamma
Logical value indicating whether gamma rate parameter gets optimized.
optEdge
Logical value indicating the edge lengths gets optimized.
optRate
Logical value indicating the overall rate gets optimized.
control
A list of parameters for controlling the fitting process.
...
Further arguments passed to or from other methods.

Value

  • Returns a list of class ll.phylo
  • logLikLog likelihood of the tree.
  • siteLikSite log likelihoods.
  • rootlikelihood in the root node.
  • weightWeight of the site patterns.

Details

The input variables w0, pl0, rate are mainly for the use in mixture or partition models and are only used internally. The toppology search uses a nearest neighbour interchange (NNI) and the implenatation is similar to phyML. Here is a overview how to estimate different phylogenetic models with pml: lll{ model optBf optQ Jukes-Cantor FALSE FALSE F81 TRUE FALSE GTR TRUE TRUE }

References

Felsenstein, J. (1981) Evolutionary trees from DNA sequences: a maxumum likelihood approach. Journal of Molecular Evolution, 17, 368--376. Felsenstein, J. (2004). Inferring Phylogenies. Sinauer Associates, Sunderland. Yang, Z. (2006). Computational Molecular evolution. Oxford University Press, Oxford.

See Also

For a different implementation see mlphylo.

Examples

Run this code
example(NJ)
# Jukes-Cantor (starting tree from NJ)  
  fitJC <- pml(tree, Laurasiatherian) 
# optimise edge length parameter     
  fitJC <- optim.pml(fitJC)
  summary(fitJC)

# search for a better tree using NNI rearrangements     
  fitJC <- optim.pml(fitJC, optNni=TRUE)   
  summary(fitJC)
  plot(fitJC$tree)

# JC + Gamma + I - model
  fitJC_GI <- update(fitJC, k=4, inv=.2)
# optimise shape parameter + proportion of invariant sites     
  fitJC_GI <- optim.pml(fitJC_GI, optGamma=TRUE, optInv=TRUE)
  summary(fitJC_GI) 
# GTR + Gamma + I - model
  fitGTR <- optim.pml(fitJC_GI, optNni=TRUE, optGamma=TRUE, optInv=TRUE, optBf=TRUE, optQ=TRUE) 
  summary(fitGTR)

# 2-state data (RY-coded)  
    
  dat <- as.character(Laurasiatherian)
  # RY-coding
  dat[dat=="a"] <- "r"
  dat[dat=="g"] <- "r"
  dat[dat=="c"] <- "y"
  dat[dat=="t"] <- "y"
  dat <- phyDat(dat, levels=c("r","y"))
  fit2ST <- pml(tree, dat, k=4, inv=.25) 
  fit2ST <- optim.pml(fit2ST,optNni=TRUE, optGamma=TRUE, optInv=TRUE) 
  
  # show some of the methods available for class pml
  methods(class="pml")

Run the code above in your browser using DataLab