## ##' parse RAxML bootstrapping analysis output ## ##' ## ##' ## ##' @title read.raxml ## ##' @param file RAxML bootstrapping analysis output ## ##' @return raxml object ## ##' @export ## ##' @author Guangchuang Yu ## read.raxml <- function(file) { ## tree.text <- readLines(file) ## tree_text <- gsub('(:[0-9\\.eE+\\-]+)\\[(\\d+)\\]', '\\@\\2\\1', tree.text) ## phylo <- read.tree(text=tree_text) ## if(any(grepl('@', phylo$node.label))) { ## bootstrap <- as.numeric(gsub("[^@]*@(\\d+)", "\\1", phylo$node.label)) ## phylo$node.label <- gsub("@\\d+", "", phylo$node.label) ## } ## if (all(phylo$node.label == "")) { ## phylo$node.label <- NULL ## } ## bootstrap <- data.frame(node = Ntip(phylo) + 1:phylo$Nnode, ## bootstrap = bootstrap) ## new("raxml", ## file = file, ## fields = "bootstrap", ## treetext = tree.text, ## phylo = phylo, ## bootstrap = bootstrap ## ) ## } ## ##' @rdname show-methods ## ##' @importFrom ape print.phylo ## ##' @exportMethod show ## setMethod("show", signature(object = "raxml"), ## function(object) { ## cat("'raxml' S4 object that stored information of\n\t", ## paste0("'", object@file, "'.\n\n")) ## cat("...@ tree: ") ## print.phylo(get.tree(object)) ## cat("\nwith the following features available:\n") ## print_fields(object) ## }) ## ##' @rdname groupOTU-methods ## ##' @exportMethod groupOTU ## setMethod("groupOTU", signature(object="raxml"), ## function(object, focus, group_name="group") { ## groupOTU_(object, focus, group_name) ## } ## ) ## ##' @rdname groupClade-methods ## ##' @exportMethod groupClade ## setMethod("groupClade", signature(object="raxml"), ## function(object, node, group_name="group") { ## groupClade_(object, node, group_name) ## }) ## ##' @rdname scale_color-methods ## ##' @exportMethod scale_color ## setMethod("scale_color", signature(object="raxml"), ## function(object, by="bootstrap", ...) { ## scale_color_(object, by, ...) ## }) ## ##' @rdname gzoom-methods ## ##' @exportMethod gzoom ## setMethod("gzoom", signature(object="raxml"), ## function(object, focus, subtree=FALSE, widths=c(.3, .7)) { ## gzoom.phylo(get.tree(object), focus, subtree, widths) ## }) ## ##' @rdname get.tree-methods ## ##' @exportMethod get.tree ## setMethod("get.tree", signature(object="raxml"), ## function(object,...) { ## object@phylo ## } ## ) ## ##' @rdname get.fields-methods ## ##' @exportMethod get.fields ## setMethod("get.fields", signature(object="raxml"), ## function(object, ...) { ## get.fields.tree(object) ## } ## )