dropManyTips | R Documentation |
Collapse a phylogeny by node and rename according to a clade table.
dropManyTips(orig.tree, oc.result)
orig.tree |
Phylogeny in ape format. |
oc.result |
The result of a call to optimalCollapse. Data frame with four columns: node, state, collapse (0/1), and clade. Node provides values indicating which nodes you will collapse (all nodes tipwards from the indicated node will be collapsed). Collapse indicates whether to actually collapse that node or not (allowing a user to manually override the results from optimalCollapse). Clade provides a character string which will be used to rename the collapsed clade. Initially, this is given a generic name based on the node being collapsed, but these can be replaced with a name of the user's choosing. |
This function will drop all but one taxon per clade to collapse. It is an intermediate step before binding all the taxa back in as polytomies.
A list of result. The first object is the collapsed tree, the second is a list of which tips/species descend from each collapsed node.
Eliot Miller
#start with a corHMM output and build up a states.df
#load data. these are the results of following the corHMM precursor model vignette
data(Precur_res.corHMM)
data(phy)
nodeStates <- data.frame(state=Precur_res.corHMM$states[,3]+Precur_res.corHMM$states[,4])
tipStates <- data.frame(state=Precur_res.corHMM$tip.states[,3]+Precur_res.corHMM$tip.states[,4])
#note that tip states comes first here!
states <- rbind(tipStates, nodeStates)
#binarize this. choosing to call 0.5 chance of having trait present
states$state[states$state >= 0.5] <- 1
states$state[states$state < 0.5] <- 0
#flip node 103 and all nodes towards tips from there to trait = absent
induced <- states
induced[geiger:::.get.descendants.of.node(103, phy),] <- 0
induced[103,] <- 0
#get rid of row names
row.names(induced) <- NULL
#run the function and don't flip those tips
ocResult <- optimalCollapse(orig.tree=phy, states.df=induced, flip.tips=FALSE)
#run the dropManyTips fxn
dropped <- dropManyTips(orig.tree=phy, oc.result=ocResult)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.