## ##' read rst and mlb file from baseml output
## ##'
## ##'
## ##' @title read.baseml
## ##' @param rstfile rst file
## ##' @param mlbfile mlb file
## ##' @return A \code{paml_rst} object
## ##' @export
## ##' @author Guangchuang Yu \url{http://ygc.name}
## ##' @examples
## ##' rstfile <- system.file("extdata/PAML_Baseml", "rst", package="ggtree")
## ##' mlbfile <- system.file("extdata/PAML_Baseml", "mlb", package="ggtree")
## ##' read.baseml(rstfile, mlbfile)
## read.baseml <- function(rstfile, mlbfile) {
##     res <- read.paml_rst(rstfile)
##     ## res@tip_seq <- read.tip_seq_mlb(mlbfile)
##     set.paml_rst_(res)
## }

## ##' read rst file from paml output
## ##'
## ##' 
## ## @importFrom Biostrings readBStringSet
## ## @importFrom Biostrings toString
## ##' @title read.paml_rst
## ##' @param rstfile rst file
## ##' @return A \code{paml_rst} object
## ##' @export
## ##' @author Guangchuang Yu \url{http://ygc.name}
## ##' @examples
## ##' rstfile <- system.file("extdata/PAML_Baseml", "rst", package="ggtree")
## ##' read.paml_rst(rstfile)
## read.paml_rst <- function(rstfile) {
##     ms <- read.ancseq_paml_rst(rstfile, by="Marginal")
##     phylo <- read.phylo_paml_rst(rstfile)
##     ## class(phylo) <- "list"
##     type <- get_seqtype(ms)
##     fields <- c("marginal_subs", "joint_subs")
##     if (type == "NT") {
##         fields <- c(fields, "marginal_AA_subs", "joint_AA_subs")
##     }
##     res <- new("paml_rst",
##                fields          = fields,
##                treetext        = read.treetext_paml_rst(rstfile),
##                phylo           = phylo, 
##                seq_type        = type,
##                marginal_ancseq = ms,
##                joint_ancseq    = read.ancseq_paml_rst(rstfile, by = "Joint"),
##                rstfile = filename(rstfile)
##                )
##     ## if (!is.null(tip.fasfile)) {
##     ##     seqs <- readBStringSet(tip.fasfile)
##     ##     tip_seq <- sapply(seq_along(seqs), function(i) {
##     ##         toString(seqs[i])
##     ##     })
##     ##     res@tip_seq <- tip_seq
##     ##     res@tip.fasfile <- tip.fasfile
##     ## }
##     res@tip_seq <- ms[names(ms) %in% phylo$tip.label]
    
##     set.paml_rst_(res)
## }



## ##' @rdname groupClade-methods
## ##' @exportMethod groupClade
## setMethod("groupClade", signature(object="paml_rst"),
##           function(object, node, group_name="group") {
##               groupClade_(object, node, group_name)
##           }
##           )


## ##' get tipseq
## ##'
## ##' 
## ##' @rdname get.tipseq-methods
## ##' @exportMethod get.tipseq
## setMethod("get.tipseq", signature(object="paml_rst"),
##           function(object, ...) {
##               if (length(object@tip_seq) == 0) {
##                   warning("tip sequence not available...\n")
##               } else {
##                   object@tip_seq
##               }
##           })


## ##' @rdname get.fields-methods
## ##' @exportMethod get.fields
## setMethod("get.fields", signature(object = "paml_rst"),
##           function(object) {
##               if (length(object@tip_seq) == 0) {
##                   warning("tip sequence not available...\n")
##               } else {
##                   get.fields.tree(object) 
##               }
##           }
##           )

## ##' @rdname get.tree-methods
## ##' @exportMethod get.tree
## setMethod("get.tree", signature(object = "paml_rst"),
##           function(object) {
##               object@phylo
##           }
##           )


## ##' get substitution information
## ##'
## ##' 
## ##' @rdname get.subs-methods
## ##' @exportMethod get.subs
## setMethod("get.subs", signature(object = "paml_rst"),
##           function(object, type, ...) {
##               get.subs_paml_rst(object, type)
##           }
##           )