X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=R%2Fwrite.nexus.R;h=ac383f73ec0415de4e7447acb46550fdcaf4a459;hb=dfe58641d0e6fe53612710cd92401306273609f4;hp=1db2252d74b0c4d8cd63531de1510a5280a7eed1;hpb=80d1c453d63d6aec18f0b731d59918b99e189d86;p=ape.git diff --git a/R/write.nexus.R b/R/write.nexus.R index 1db2252..ac383f7 100644 --- a/R/write.nexus.R +++ b/R/write.nexus.R @@ -1,13 +1,13 @@ -## write.nexus.R (2011-03-26) +## write.nexus.R (2012-03-30) ## Write Tree File in Nexus Format -## Copyright 2003-2011 Emmanuel Paradis +## Copyright 2003-2012 Emmanuel Paradis ## This file is part of the R-package `ape'. ## See the file ../COPYING for licensing issues. -write.nexus <- function(..., file = "", translate = TRUE, original.data = TRUE) +write.nexus <- function(..., file = "", translate = TRUE) { obj <- list(...) ## We insure that all trees are in a list, even if there is a single one: @@ -21,40 +21,18 @@ write.nexus <- function(..., file = "", translate = TRUE, original.data = TRUE) cat("#NEXUS\n", file = file) cat(paste("[R-package APE, ", date(), "]\n\n", sep = ""), file = file, append = TRUE) - if (original.data) { - if (!is.null(attr(obj[[1]], "origin"))) { - if (!file.exists(attr(obj[[1]], "origin"))) { - warning(paste("the file", attr(obj[[1]], "origin"), - "cannot be found, -the original data won't be written with the tree.")) - original.data <- FALSE - } - else { - ORI <- scan(file = attr(obj[[1]], "origin"), what = character(), - sep = "\n", skip = 1) - start <- grep("BEGIN TAXA;", ORI) - ORI <- ORI[-(1:(start - 1))] - ORI <- gsub("ENDBLOCK;", "END;", ORI) - endblock <- grep("END;", ORI) - start <- grep("BEGIN TREES;", ORI) - end <- endblock[endblock > start][1] - cat(ORI[1:(start - 1)], file = file, append = TRUE, sep = "\n") - ORI <- ORI[-(1:end)] - } - } - else original.data <- FALSE - } + N <- length(obj[[1]]$tip.label) - if (!original.data) { - cat("BEGIN TAXA;\n", file = file, append = TRUE) - cat(paste("\tDIMENSIONS NTAX = ", N, ";\n", sep = ""), - file = file, append = TRUE) - cat("\tTAXLABELS\n", file = file, append = TRUE) - cat(paste("\t\t", obj[[1]]$tip.label, sep = ""), - sep = "\n", file = file, append = TRUE) - cat("\t;\n", file = file, append = TRUE) - cat("END;\n", file = file, append = TRUE) - } + + cat("BEGIN TAXA;\n", file = file, append = TRUE) + cat(paste("\tDIMENSIONS NTAX = ", N, ";\n", sep = ""), + file = file, append = TRUE) + cat("\tTAXLABELS\n", file = file, append = TRUE) + cat(paste("\t\t", obj[[1]]$tip.label, sep = ""), + sep = "\n", file = file, append = TRUE) + cat("\t;\n", file = file, append = TRUE) + cat("END;\n", file = file, append = TRUE) + cat("BEGIN TREES;\n", file = file, append = TRUE) if (translate) { cat("\tTRANSLATE\n", file = file, append = TRUE) @@ -86,12 +64,10 @@ the original data won't be written with the tree.")) for (i in 1:ntree) { if (class(obj[[i]]) != "phylo") next - if (is.rooted(obj[[i]])) - cat("\tTREE *,", title[i], "= [&R] ", file = file, append = TRUE) - else cat("\tTREE *", title[i], "= [&U] ", file = file, append = TRUE) + root.tag <- if (is.rooted(obj[[i]])) "= [&R] " else "= [&U] " + cat("\tTREE *", title[i], root.tag, file = file, append = TRUE) cat(write.tree(obj[[i]], file = ""), "\n", sep = "", file = file, append = TRUE) } cat("END;\n", file = file, append = TRUE) - if(original.data) cat(ORI, file = file, append = TRUE, sep = "\n") }