R/r8s.R
341b0ee8
 ##' parse output from r8s
 ##'
 ##' 
 ##' @title read.r8s
 ##' @param file r8s output log file
 ##' @return r8s instance
 ##' @export
 ##' @author Guangchuang Yu
 read.r8s <- function(file) {
     r8s <- readLines(file)
     label_idx <- grep("\\[\\w+\\sDESCRIPTION\\sof\\stree\\s.*\\]", r8s)
     tree_idx <- grep("^tree\\s.*\\s=\\s", r8s)
     if (length(label_idx) != length(tree_idx)) {
         stop("fail to parse the file...")
     }
 
     tree_text <- gsub("^tree\\s.*\\s=\\s", "", r8s[tree_idx])
     trees <- read.tree(text=tree_text)
 
     label <- gsub("^\\[(\\w+)\\s.*", "\\1", r8s[label_idx])
     names(trees) <- label
 
     new("r8s",
f2aa6adb
         file = filename(file),
341b0ee8
         fields = label,
         phylo = trees)
 }
 
 
 
 
 ##' @rdname groupClade-methods
 ##' @exportMethod groupClade
 ##' @param tree which tree selected
 setMethod("groupClade", signature(object="r8s"),
           function(object, node, group_name="group", tree="TREE") {
               groupClade_(get.tree(object)[[tree]], node, group_name)
           })
 
 ##' @rdname scale_color-methods
 ##' @exportMethod scale_color
 ##' @param tree which tree selected
 setMethod("scale_color", signature(object="r8s"),
           function(object, by="bootstrap", tree="TREE") {
               scale_color_(get.tree(object)[[tree]], by)
           })
 
 
 ##' @rdname gzoom-methods
 ##' @exportMethod gzoom
 ##' @param tree which tree selected
 setMethod("gzoom", signature(object="r8s"),
           function(object, focus, subtree=FALSE, widths=c(.3, .7), tree="TREE") {
               gzoom.phylo(get.tree(object)[[tree]], focus, subtree, widths)
           })
 
 
 ##' @rdname get.tree-methods
 ##' @exportMethod get.tree
 setMethod("get.tree", signature(object="r8s"),
           function(object,...) {
               object@phylo
           }
           )
 
 
 ##' @rdname get.fields-methods
 ##' @exportMethod get.fields
 setMethod("get.fields", signature(object="r8s"),
           function(object, ...) {
               get.fields.tree(object)
           }
           )