dropManyTips: Drop all tips but one per named clade

View source: R/dropManyTips.R

dropManyTipsR Documentation

Drop all tips but one per named clade

Description

Collapse a phylogeny by node and rename according to a clade table.

Usage

dropManyTips(orig.tree, oc.result)

Arguments

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.

Details

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.

Value

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.

Author(s)

Eliot Miller

Examples

#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)

eliotmiller/shiftPlot documentation built on March 30, 2023, 4:26 a.m.