1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
# Automated string generation and comparison
# Used to verify no errors and focus on max.diffs limited ones.
M <- 10
n <- seq_len(M+1)-1
d <- 0:5 * 2
i <- 50
alph <- c('G','A','T','C')
dat <- expand.grid(n, d)
dat <- do.call(rbind, replicate(i, dat, simplify=FALSE))
set.seed(1)
res <- lapply(
seq_len(nrow(dat)),
function(i) {
m <- dat[i,1]
n <- M - m
max.diffs <- dat[i,2]
a <- sample(alph, m, replace=TRUE)
b <- sample(alph, n, replace=TRUE)
warn.dat <- ""
res <- try(withCallingHandlers(
ses_dat(a, b, max.diffs=max.diffs),
warning=function(e) {
warn.dat <<- paste0(
sub(".*?(\\d+ vs \\d+).*", "\\1", conditionMessage(e), perl=TRUE),
collapse=""
)
}
))
if(inherits(res, 'try-error')) {
writeLines(deparse(list(a=a, b=b, max.diffs=max.diffs)))
stop('failed at ', i)
}
list(res, param=c(m=m, n=n, max.diffs=max.diffs), warn=warn.dat, a=a, b=b)
}
)
diffdisp <- function(x) {
ses <- x[[1]]
print(ses)
writeLines(
c(
"",
paste0("a: ", paste0(deparse(x[['a']]), collape="\n")),
paste0("b: ", paste0(deparse(x[['b']]), collape="\n")),
x[['warn']]
) )
}
set.seed(1)
res.warn <- vapply(res, function(x) nzchar(x[['warn']]), TRUE)
# res2 <- res[res.warn]
res2 <- res
i <- sample(seq_along(res2))
for(j in i) {
readline("-------------------------------------")
diffdisp(res2[[j]])
}
|