diff --git a/R/GCAT/R/plot.fit.R b/R/GCAT/R/plot.fit.R index 3b796d0..e695fd2 100644 --- a/R/GCAT/R/plot.fit.R +++ b/R/GCAT/R/plot.fit.R @@ -304,6 +304,9 @@ plot_residuals = function(input.well, xlim = NULL, lowess = T, ...){ #' @return path of heatmap pdf file #' create.heatmap = function(fitted.well.array, attribute, MinMax = NA, unlog=NULL){ + # debug + #browser() + attr.name <- deparse(substitute(attribute)) pdf.name <- "" if(class(fitted.well.array) == "matrix"){ @@ -319,9 +322,9 @@ create.heatmap = function(fitted.well.array, attribute, MinMax = NA, unlog=NULL) num.dig = 3 #how many digits should be put on pdf? max = round(max(spec.growth, na.rm=T), digits=num.dig) min = round(min(spec.growth, na.rm=T), digits=num.dig) - avg = round(mean(spec.growth, na.rm=T), digits=num.dig) + avg = round(median(spec.growth, na.rm=T), digits=num.dig) heat.text = paste(toupper(sub("\\.", " ", attr.name)), ":\n", plate.ID, "\n", - paste("Max:",max ,"Min:" ,min ,"Avg:", avg, sep="")) + paste("Min:", min, "Med:", avg, "Max:", max, sep=" ")) attr.name <- sub("\\.", "_", attr.name) #do not want periods in file path letters <- attr(fitted.well.array, "dimnames")[[1]] @@ -334,16 +337,13 @@ create.heatmap = function(fitted.well.array, attribute, MinMax = NA, unlog=NULL) #heatmap(heat, Rowv=NA, Colv=NA, revC=T, scale="none", na.rm=T, main=plate.ID, col=rainbow(100), margins=c(6,6)) #mtext(paste("Max:", round(max(spec.growth, na.rm=T), digits=4),"Min:", round(min(spec.growth, na.rm=T), digits=4), "Avg:", round(mean(spec.growth, na.rm=T), digits=4)), side=1, line=3) if (length(MinMax) == 2){ - Mean = mean(MinMax) - bk = unique(c(seq(MinMax[1], Mean, length=50), seq(Mean, MinMax[2], length = 50))) - pheatmap(heat, color=colorpanel(100, "red", "orange", "yellow"), breaks = bk, - border_color="black", cell_width=2, cell_height=3, - cluster_rows=F, cluster_cols=F, scale='none', main=heat.text, fontsize=16) - } else { - pheatmap(heat, color=colorpanel(100, "red", "orange", "yellow"), - border_color="black", cell_width=2, cell_height=3, - cluster_rows=F, cluster_cols=F, scale='none', main=heat.text, fontsize=16) + # Min and max values to plot to floor and ceiling values if MinMax parameter was specified by the caller + heat[is.finite(heat) & heat < MinMax[1]] = MinMax[1] + heat[is.finite(heat) & heat > MinMax[2]] = MinMax[2] } + pheatmap(heat, color=colorpanel(100, "red", "orange", "yellow"), + border_color="black", cell_width=2, cell_height=3, + cluster_rows=F, cluster_cols=F, scale='none', main=heat.text, fontsize=16) dev.off() } else { diff --git a/R/GCAT/inst/extdata/heatmap_tests/test_heatmap_limits.R b/R/GCAT/inst/extdata/heatmap_tests/test_heatmap_limits.R new file mode 100644 index 0000000..3654b2d --- /dev/null +++ b/R/GCAT/inst/extdata/heatmap_tests/test_heatmap_limits.R @@ -0,0 +1,20 @@ +# Test that heatmaps are processed and generated correctly +# Yury V Bukhman, 01 July 2015 +# This script generates heat maps with pre-set limits. Manually check output directory to see if they make sense. + +INPUT.DIR = system.file("extdata/YPDAFEXglucoseTests_2-25-10",package="GCAT") +OUTPUT.DIR = paste(system.file("extdata/heatmap_tests",package="GCAT"),"temp",sep="/") +INPUT.FILE = "YPDAFEXglucoseTests_2-25-10.csv" + +# Run GCAT +library(GCAT) +setwd(INPUT.DIR) +time.input=1/3600 +out = gcat.analysis.main(file.list = INPUT.FILE, single.plate = T, layout.file = NULL, + out.dir = OUTPUT.DIR, graphic.dir = OUTPUT.DIR, + add.constant = 1, blank.value = NULL, start.index = 2, growth.cutoff = 0.05, + use.linear.param=F, use.loess=F, smooth.param=0.1, + points.to.remove = integer(), remove.jumps = F, time.input=time.input, + silent = F, verbose = T, return.fit = T, overview.jpgs = T, + lagRange = c(0,3), totalRange = c(0.2,0.82), specRange = c(0.04,0.13)) +