-## DNA.R (2008-02-01)
+## DNA.R (2008-06-08)
## Manipulations and Comparisons of DNA Sequences
## This file is part of the R-package `ape'.
## See the file ../COPYING for licensing issues.
+del.gaps <- function(x)
+{
+ deleteGaps <- function(x) {
+ i <- which(x == 4)
+ x[-i]
+ }
+
+ if (class(x) != "DNAbin") x <- as.DNAbin(x)
+ if (is.matrix(x)) {
+ n <- dim(x)[1]
+ y <- vector("list", n)
+ for (i in 1:n) y[[i]] <- x[i, ]
+ x <- y
+ rm(y)
+ }
+ if (!is.list(x)) return(deleteGaps(x))
+ x <- lapply(x, deleteGaps)
+ class(x) <- "DNAbin"
+ x
+}
+
as.alignment <- function(x)
{
if (is.list(x)) n <- length(x)
{
if (is.list(x)) x <- unlist(x)
n <- length(x)
- BF <- .C("BaseProportion", as.raw(x), as.integer(n),
- double(4), PACKAGE = "ape")[[3]]
+ BF <- .C("BaseProportion", x, n, double(4),
+ DUP = FALSE, NAOK = TRUE, PACKAGE = "ape")[[3]]
names(BF) <- letters[c(1, 3, 7, 20)]
BF
}
-GC.content <- function(x)
-{
- BF <- base.freq(x)
- sum(BF[2:3])
-}
+GC.content <- function(x) sum(base.freq(x)[2:3])
seg.sites <- function(x)
{
+ if (is.list(x)) x <- as.matrix(x)
n <- dim(x)
s <- n[2]
n <- n[1]
- ans <- .C("SegSites", x, as.integer(n), as.integer(s),
- integer(s), PACKAGE = "ape")
+ ans <- .C("SegSites", x, n, s, integer(s),
+ DUP = FALSE, NAOK = TRUE, PACKAGE = "ape")
which(as.logical(ans[[4]]))
}
n <- n[1]
BF <- if (is.null(base.freq)) base.freq(x) else base.freq
if (!pairwise.deletion) {
- keep <- .C("GlobalDeletionDNA", x, as.integer(n),
- as.integer(s), as.integer(rep(1, s)),
- PACKAGE = "ape")[[4]]
+ keep <- .C("GlobalDeletionDNA", x, n, s,
+ rep(1L, s), PACKAGE = "ape")[[4]]
x <- x[, as.logical(keep)]
s <- dim(x)[2]
}
var <- if (variance) double(Ndist) else 0
if (!gamma) gamma <- alpha <- 0
else alpha <- gamma <- 1
- d <- .C("dist_dna", x, as.integer(n), as.integer(s),
- as.integer(imod), double(Ndist), BF,
+ d <- .C("dist_dna", x, n, s, imod, double(Ndist), BF,
as.integer(pairwise.deletion), as.integer(variance),
- var, as.integer(gamma), alpha, PACKAGE = "ape")
+ var, as.integer(gamma), alpha, DUP = FALSE, NAOK = TRUE,
+ PACKAGE = "ape")
if (variance) var <- d[[9]]
d <- d[[5]]
if (imod == 11) {