Nothing
##' @importFrom tidytree MRCA
##' @method MRCA ggtree
##' @export
MRCA.ggtree <- function(.data, .node1, .node2 = NULL, ...) {
MRCA(.data$data, .node1, .node2 = .node2, ...)[["node"]]
}
## ##' Find Most Recent Common Ancestor among a vector of tips
## ##'
## ##'
## ##' @title MRCA
## ##' @param obj supported tree object or ggplot object
## ##' @param tip a vector of mode numeric or character specifying the tips
## ##' @return MRCA of two or more tips
## ##' @importFrom ape getMRCA
## ##' @export
## ##' @author Guangchuang Yu
## MRCA <- function(obj, tip) {
## if (is(obj,"gg")) {
## return(getMRCA.df(obj$data, tip))
## }
## getMRCA(as.phylo(obj), tip)
## }
## getMRCA.df <- function(data, tip) {
## if (length(tip) <= 1)
## return(NULL)
## anc <- getMRCA.df_internal(data, tip[1], tip[2])
## if (length(tip) == 2) {
## return(anc)
## }
## for (i in 3:length(tip)) {
## anc <- getMRCA.df_internal(data, tip[i], anc)
## }
## return(anc)
## }
## getMRCA.df_internal <- function(data, node1, node2) {
## node1 <- which(node1 == data$label | node1 == data[, "node"])
## node2 <- which(node2 == data$label | node2 == data[, "node"])
## anc1 <- getAncestor.df(data, node1)
## anc2 <- getAncestor.df(data, node2)
## if (length(anc1) == 0L) {
## warning("getMRCA.df_internal(): node1 is root")
## }
## if (length(anc2) == 0L) {
## warning("getMRCA.df_internal(): node2 is root")
## }
## # Return common ancestors.
## intersect(c(node1, anc1), c(node2, anc2))[1]
## }
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.