require(gplots) # ribplot_printunit <- function(val) { # if (is.na(val)) { # res <- val; # } else { # val <- as.numeric(val); # if (val != 0 && (val %% 1024 == 0)) { # if (val %% (1024*1024) == 0) { # res <- paste(val / (1024*1024), "M", sep=""); # } else { # res <- paste(val / 1024, "k", sep=""); # } # } else { # res <- val; # } # } # res; # } # # ribplot_pngname <- function(cols) { # res = ""; # first = 1; # for (c in names(cols)) { # if (first == 1) { # ss = ""; # first = 0; # } else ss = ","; # res = paste(res, ss, cols[[c]], sep=""); # } # res; # } # # ribplot_sub <- function(cols, xlab) { # res = "param\n"; # first = 1; # second = 1; # for (c in names(cols)) { # if (first == 1) { # ss = "bench: "; # first = 0; # } else { # ss = ","; # } # if (substr(c, 1, 2) == "T_") { # col = substr(c,3,50); # if (second) { # second = 0; # ss = "\ntrash: "; # } # } else { # col = c; # } # res = paste(res, ss, col, "=", ribplot_printunit(cols[[c]]), sep=""); # } # res; # } # # ribplot_default_int <- function(tbl, param_tbl, param, factors, result) { # fact <- as.factor(tbl[[param]]) # if (length(levels(fact)) > 1) { # medians <- tapply(as.vector(tbl[[result]]), fact, median) # png_name=ribplot_pngname(tbl[1,factors]) # png(file.path("png", result, paste(param, "-", png_name, ".png", sep="")), width=1024, height=768) # boxplot(as.vector(tbl[[result]]) ~ fact, pch=".", ylim=c(min(medians), max(medians)*1.05), # main=paste(param, "plot of", result), xlab="", ylab=result, sub=ribplot_sub(tbl[1,factors], param)) # dev.off(); # } # a = 0; # } # # ribplot_default <- function(tbl, param_names) { # dir.create("png", showWarnings = FALSE); # all_names <- names(tbl) # all_factors <- c(param_names, "run", "sample") # result_names <- all_names[!all_names %in% all_factors] # for (result in result_names) { # dir.create(file.path("png", result), showWarnings = FALSE); # for (param in param_names) { # factors <- param_names[!param_names %in% param]; # frameApply(tbl, by=factors, on=c(param_names, result), fun=ribplot_default_int, param=param, factors=factors, result=result) # } # } # } # ############## ribplot_printunit <- function(val) { if (is.na(val)) { res <- val; } else { val <- as.numeric(val); if (val != 0 && (val %% 1024 == 0)) { if (val %% (1024*1024) == 0) { res <- paste(val / (1024*1024), "M", sep=""); } else { res <- paste(val / 1024, "k", sep=""); } } else { res <- val; } } res; } ribplot_pngname <- function(cols) { res = ""; first = 1; for (c in names(cols)) { if (first == 1) { ss = ""; first = 0; } else ss = ","; res = paste(res, ss, cols[[c]], sep=""); } res; } ribplot_sub <- function(cols, xlab) { res = paste(xlab, "\n", sep=""); first = 1; second = 1; for (c in names(cols)) { if (first == 1) { ss = "bench: "; first = 0; } else { ss = ","; } if (substr(c, 1, 2) == "T_") { col = substr(c,3,50); if (second) { second = 0; ss = "\ntrash: "; } } else { col = c; } res = paste(res, ss, col, "=", ribplot_printunit(cols[[c]]), sep=""); } res; } ribplot_result_name <- function(tbl, param, value) { res = "results/"; first = 1; second = 1; for (c in names(tbl)) { if (c == param) { val = value; } else { val = tbl[[c]][1]; } if (substr(c, 1, 2) == "T_") { if (second == 1) { second = 0; prefix = paste("-", thrash_name, "_", sep=""); } else { prefix = ","; } } else { if (first == 1) { prefix = paste(bench_name, "_", sep=""); first = 0; } else { prefix = ","; } } res = paste(res, prefix, val, sep=""); } res; } ribplot_readtable <- function(name) { print("reading") tbl <- read.table(name, header=TRUE, nrows=1); what = list(); for (col in names(tbl)) what[[col]] = as.integer(0); print("coercing") res <- as.data.frame(scan(name, what=what, skip=1)); print("coerced") res } ribplot_default_int_int <- function(tbl, param_tbl, param, factors, result) { fact <- as.factor(tbl[[param]]) # print("int_int"); medians <- tapply(as.vector(tbl[[result]]), fact, median) png_name=ribplot_pngname(param_tbl[1,factors]) png(file.path("png", paste(result,"-",param, "-", png_name, ".png", sep="")), width=1024, height=768) boxplot(as.vector(tbl[[result]]) ~ fact, pch=".", ylim=c(min(medians), max(medians)*1.05), main=paste(param, "plot of", result), xlab="", ylab=result, sub=ribplot_sub(param_tbl[1,factors], param)) dev.off(); } ribplot_default_int <- function(param_tbl, param, factors) { # print("int"); i = 1; for (param_val in param_tbl[[param]]) { print(paste("result", i, "of", length(param_tbl[[param]]))); tbl2 <- ribplot_readtable(ribplot_result_name(param_tbl, param, param_val)); tbl2[[param]] <- param_val; if (exists("tbl")) { tbl <- rbind(tbl, tbl2[,!names(tbl2) %in% c("run", "sample")]) } else { tbl <- tbl2[,!names(tbl2) %in% c("run", "sample")] } i = i + 1; } for (result in result_names) { ribplot_default_int_int(tbl, param_tbl, param, factors, result); } a = 0; } ribplot_default <- function(param_tbl, result_names) { dir.create("png", showWarnings = FALSE); # for (result in result_names) { # dir.create(file.path("png", result), showWarnings = FALSE); # } param_names <- names(param_tbl) param_by = vector() for (param in param_names) { if (length(levels(as.factor(param_tbl[[param]]))) > 1) { param_by = c(param_by, param); } } param_by; for (param in param_by) { print(param); # factors <- param_by[!param_by %in% param]; factors=param_names[!param_names %in% param] frameApply(param_tbl, by=factors, on=param_names, fun=ribplot_default_int, param=param, factors=param_names[!param_names %in% param]) } }